Hang on, loading more…
Hang on, loading more…
A few months ago, an email from my good friend Gerrit showed up in my inbox. Gerrit made a new “Pottoriginale” movie, and he needed a website for his film tour. I knew that it will only take me an evening to do, I had the feeling that I’d enjoy the challenge, and I knew that I have some time in the coming week. And a few days later, pottoriginale.de was live.
Read moreIn programming, we often deal with things being in a state. Users being verified, Modals being open, Posts being published. Yesterday I had an interesting chat with Daniel about rules to decide when you should store state as an enum1 or as a boolean. We both know that it’s always better to use enums instead of booleans. It’s a common advice and nothing new, just search it on the internet and you’ll see countless articles recommending the use of enums.
But how can we tell that a boolean should rather be an enum?
Read moreA few months ago, an email from my good friend Gerrit showed up in my inbox. Gerrit made a new “Pottoriginale” movie, and he needed a website for his film tour. I knew that it will only take me an evening to do, I had the feeling that I’d enjoy the challenge, and I knew that I have some time in the coming week. And a few days later, pottoriginale.de was live.
Read moreIn programming, we often deal with things being in a state. Users being verified, Modals being open, Posts being published. Yesterday I had an interesting chat with Daniel about rules to decide when you should store state as an enum1 or as a boolean. We both know that it’s always better to use enums instead of booleans. It’s a common advice and nothing new, just search it on the internet and you’ll see countless articles recommending the use of enums.
But how can we tell that a boolean should rather be an enum?
Read moreIn my last post I covered my decision to use GitHub Discussions as CMS for my posts. I’m going to build it using Next.js, because that’s what I already use a lot, and it has some features which will become quite useful. Let’s get cracking!
Read moreIn my last post I covered my decision to use GitHub Discussions as CMS for my posts. I’m going to build it using Next.js, because that’s what I already use a lot, and it has some features which will become quite useful. Let’s get cracking!
Read more

When I was a teen, I learned how to build WordPress themes. During holidays or when school was out, I vividly remember how I sometimes sat in front of my computer for a few days and nights, and created new themes for my blog. Of course I had no blog, but having one was a cool thought. But this stuck to me, and I was really never happy with how my blogs work. Until now!
Read moreIn his blog post Take Care of Your Blog, Robin Rendle wrote some career advice:
Blog your heart! Blog about something you’ve learned, blog about something you’re interested in. Blog about cameras or HTML or that one browser bug you’ve noticed this morning […]
Ignore the analytics and the retweets though. There will be lonely, barren years of no one looking at your work. There will be blog posts that you adore that no one reads and there’ll be blog posts you spit out in ten minutes that take the internet by storm.
That’s exactly the philosophy I want to follow here. And that’s also the reason why I focused on building a blog which allows me to publish content as frictionless as possible.1
Chris’ blog inspired me to finally start blogging again. His blog is a mixture of smaller and larger development topics, mixed with other thoughts and stories from his life. Sometimes I messaged him with some small development thoughts or things I learned that day, and he often responded with “that would be a nice little blog post”.
And he’s right! You just need to overcome the thoughts “that’s not worthy of publishing” and “nobody cares”. At least I had to overcome them.
When I published my new site last week, I continued to still see my old site. Initially I thought it was just DNS, but after a short while it dawned on me, that my old site used a Service Worker which cached everything and made it offline available. When you visited my old site, it automatically installed the Service Worker, and continued to serve it from cache. And now, if you visited my new site, it still served my old site. Great.
Read moreWhen I was a teen, I learned how to build WordPress themes. During holidays or when school was out, I vividly remember how I sometimes sat in front of my computer for a few days and nights, and created new themes for my blog. Of course I had no blog, but having one was a cool thought. But this stuck to me, and I was really never happy with how my blogs work. Until now!
Read moreIn his blog post Take Care of Your Blog, Robin Rendle wrote some career advice:
Blog your heart! Blog about something you’ve learned, blog about something you’re interested in. Blog about cameras or HTML or that one browser bug you’ve noticed this morning […]
Ignore the analytics and the retweets though. There will be lonely, barren years of no one looking at your work. There will be blog posts that you adore that no one reads and there’ll be blog posts you spit out in ten minutes that take the internet by storm.
That’s exactly the philosophy I want to follow here. And that’s also the reason why I focused on building a blog which allows me to publish content as frictionless as possible.1
Chris’ blog inspired me to finally start blogging again. His blog is a mixture of smaller and larger development topics, mixed with other thoughts and stories from his life. Sometimes I messaged him with some small development thoughts or things I learned that day, and he often responded with “that would be a nice little blog post”.
And he’s right! You just need to overcome the thoughts “that’s not worthy of publishing” and “nobody cares”. At least I had to overcome them.
When I published my new site last week, I continued to still see my old site. Initially I thought it was just DNS, but after a short while it dawned on me, that my old site used a Service Worker which cached everything and made it offline available. When you visited my old site, it automatically installed the Service Worker, and continued to serve it from cache. And now, if you visited my new site, it still served my old site. Great.
Read more.gitignore (and what doesn’t)There’s a high chance that your .gitignore file includes a bunch of stuff which doesn’t belong in there. In my opinion, it should only include paths which belong to your software project. For example build artifacts, 3rd party packages, and specifics to the language or runtime of your software.
I’ve always found Productivity Apps ✨ cool ✨. Nice-looking Apps for Todos and Notes, as a single source of truth for everything going on in my life. But I learned that I don’t work like that. Those Apps always felt wrong. I’m very organized without them. For some reason, I’m still envious of people when they show how they use some App to organize their life, but I don’t try them out anymore.
I mainly use Emails, my Desktop, Calendar, and Post-It’s. I know it sounds ridiculously oldschool, but it works pretty well for me. Let me explain:
Read more.gitignore (and what doesn’t)There’s a high chance that your .gitignore file includes a bunch of stuff which doesn’t belong in there. In my opinion, it should only include paths which belong to your software project. For example build artifacts, 3rd party packages, and specifics to the language or runtime of your software.
I’ve always found Productivity Apps ✨ cool ✨. Nice-looking Apps for Todos and Notes, as a single source of truth for everything going on in my life. But I learned that I don’t work like that. Those Apps always felt wrong. I’m very organized without them. For some reason, I’m still envious of people when they show how they use some App to organize their life, but I don’t try them out anymore.
I mainly use Emails, my Desktop, Calendar, and Post-It’s. I know it sounds ridiculously oldschool, but it works pretty well for me. Let me explain:
Read more







Last week I got a new sofa, and it’s one of the most stressful changes I had in the past.
Big changes are not an issue for me. 10 years ago, when I moved into my very first apartment and lived alone for the first time: no worries at all. It was exciting!
But I struggled so hard with buying a new sofa. It took me a year to get myself to buy a new one. It’s big and comfortable, looks nice, it’s exactly what I wanted. But all the consequences of that change:
Changing everything? Not an issue.
Changing a small minor detail? Oof.
Last week I got a new sofa, and it’s one of the most stressful changes I had in the past.
Big changes are not an issue for me. 10 years ago, when I moved into my very first apartment and lived alone for the first time: no worries at all. It was exciting!
But I struggled so hard with buying a new sofa. It took me a year to get myself to buy a new one. It’s big and comfortable, looks nice, it’s exactly what I wanted. But all the consequences of that change:
Changing everything? Not an issue.
Changing a small minor detail? Oof.


git rebase --ontogit rebase --onto is one of my absolute favorite git features. I don’t use it every day, but when I use it, it’s super helpful. For all those situations where you branched off a branch before it got merged, and then you need to rebase your branch onto main without handling dozens of conflicts.
git rebase --ontogit rebase --onto is one of my absolute favorite git features. I don’t use it every day, but when I use it, it’s super helpful. For all those situations where you branched off a branch before it got merged, and then you need to rebase your branch onto main without handling dozens of conflicts.