Hi there đź‘‹

I am a consulting web developer working with various technologies on all kinds of projects. I am researching ways to build software products faster without sacrificing maintainability. Don’t hesitate to reach out 📡

Building a PageSpeed monitoring service using Remix, Kysely and Litestream

Performance90 is a service for PageSpeed monitoring. It notifies the page owner once the PageSpeed drops below 90 via email. The tech stack is Remix with Kysely on SQLite with Litestream and fly.io. ...

Ergodox EZ ignores keys when typing fast

Edit (2023-02-06): The problem persisted and I found the real fix. I have an “original” Ergodox EZ but the configurator defaulted to “glow”. Choosing the “original” model fixed all issues. Old fix (which I still kept): It’s the first time I was using my Ergodox EZ with my new MacOS setup. After flashing the keyboard with a slightly adjusted layout, I started experiencing issues. The Ergodox EZ ignored keypresses of the same key when twice in a row....

Plausible proxy for fly.io using NGINX

NGINX is a very efficient forward proxy and the ideal tool for this job. The goal is to set up a proxy in front of Plausible that consumes very little memory. You can find the code below as repo, ready to deploy. The Dockerfile is pretty basic: FROM nginx COPY nginx.conf /etc/nginx/nginx.conf RUN mkdir -p /var/cache/nginx CMD ["nginx", "-g", "daemon off;"] We need to fetch the tracking script from Plausible:...

January 19, 2023 1 min

From NixOS on Thinkpad to MacBook Pro M1

Half a year ago, I replaced my Thinkpad T14 with a 14" MacBook Pro M1. I was a happy Linux and Thinkpad user for over 7 years. This is how it went. Previous setup My previous setup was NixOS with i3wm and XFCE as the desktop manager on a Lenovo Thinkpad T14 Gen2. I reviewed it in detail. The AMD CPU didn’t get hot and the fans didn’t make any noise....

Error handling for web developers

Error handling is a broad topic. How to do it right is not always obvious. The unsatisfying answer in general is “it depends”. Let’s have a look at a specific example using TypeScript in the context of web development. ...

Django + fly.io = ❤️

Fly.io is not advertising itself as a Django-first hosting platform. However, it provides all the building blocks for a sweet Django setup. ...

Release: Schablone 2.0.0 - A Django starter template for simplicity

The release of version 2.0.0 of schablone, a cookiecutter starter template, makes everything even simpler. ...

Running multiple services on Dokku

Dokku makes it very easy to deploy and run simpler web apps. Recently, I had to deploy a slightly more complex web app with multiple non-web worker services talking to each other. It’s surprisingly simple to get make this work. ...

Django 4 form rendering using Tailwind without Node or crispy

Since Django 4, form rendering with Tailwind can be used to render beautiful forms without using Node or any other packages like django-crispy-forms. All you need is the Tailwind CLI binary and django-widget-tweaks. ...

Migrating from Next.js to Remix

I recently migrated a Next.js project to Remix in order to improve performance and maintainability. These are 8 reasons why you should and should not use Remix. ...

July 21, 2022 6 min

OCaml and Reason on Emacs using lsp-mode

This year I started consolidating all the major modes by using lsp-mode and apheleia for all the programming language I use. The switch from OCaml’s merlin-mode was surprisingly painless. ...

How to auto-reload the Django shell

The Django shell python manage.py shell is a very powerful tool that increases developer productivity if used correctly. With a few lines of configuration, you don’t have to leave the shell anymore to apply code changes. ...

April 22, 2022 1 min

Deploy a Django app automatically to Dokku

This is the script I am using to deploy a dokkuzied app to Dokku. ...

How Google Search is making me a better programmer

It hit me that the recent decline of the Google Search result quality is making me a better programmer. Year old habits are changing. The title should be read as “How lack of Google Search is making me a better programmer”. ...

March 23, 2022 5 min

Update NixOS packages individually

This is how you can selectively install packages from a specific commit or branch. ...

March 18, 2022 1 min

Fix Autostart On XFCE

It took me three months and five attempts to fix this issues. Upon reboot two terminal panes and one Emacs instance auto started and I didn’t know why. ...

January 23, 2022 2 min

Reloading Flycheck After Loading Virtualenv

When I open Emacs to edit a Python project, the first command I run is pyvenv-activate to activate the virtualenv. If I have a Python file open of that project before running pyvenv-activate, flycheck won’t work because I install my development dependencies (which are needed by the checkers) in the local virtualenv. Luckily pyvenv provides a hook that runs whenever a virtualenv was activated. (defun clear-flycheck-auto-disabled-checkers () "Clears any automatically disabled flycheck checkers....

How To Bypass Cloudflare Access For WebPageTest

Improving the performance of a website can be hard. Using solid performance analysis tools is a must. ...

January 1, 2022 1 min

Associated Press Stylebook Title Capitalization

I am a native German speaker who reads English articles on a daily basis. Whenever I write an English title myself, I struggle with the correct capitalization. ...

December 25, 2021 1 min

Schablone - A Lightweight Alternative to cookiecutter-django

I am happy to announce Schablone. Schablone is a minimal boilerplate project for Django with strong opinions and little options for customization. ...