Did you know that you can run unit tests for your Django app, in GitHub Actions, using PostgreSQL?
Remember the brilliant webcomic Spamusement.com? It ran from 2004 to 2007, but sadly the website went offline in 2020. I missed it so much that I put online an archive.
Django’s generic class-based views often clash with the Zen of Python. Here’s why the base View class feels more Pythonic.
How I use the just command runner to create a simple, unified interface for running, testing, linting, and formatting all my projects, regardless of the tech stack.
A reflection on 25 years of web development, from simplicity to complexity and back.
Why I only use Django's base View class instead of generic class-based views or function-based views.
A modern, flexible rewrite of django-generic-notifications is here. Easily send website and email notifications, create digests, group similar messages, and much more.
I maintain a handful of Python packages. Here’s how I automate creating new releases, both on PyPI and GitHub.
A dive into why Django's DATETIME_FORMAT setting seems to do nothing, and how to actually force the 24-hour clock in the admin, even when your locale says otherwise.
Celebrating Django's 20th birthday by looking back at 16 years of personal Django usage, how it evolved, favorite packages, and what I'd love to see in the future.
Let’s solve the challenge of serving media files for your Coolified Django site.
I often get my best coding inspiration late at night, and when I go to bed with an unsolved problem, I literally write lines of code in my dreams. It's exhausting but I usually wake up with the solution!
How I moved my Django projects from a manual server setup to Coolify for easier, zero-downtime deployments.
I'm a big fan of the django-tailwind-cli package, but I ran into problems deploying it to production. Here’s how to make sure you cache-bust tailwind.css.
Yesterday I installed the iOS 26 beta on my iPhone and today, for the first time ever, I’ve downgraded my iPhone back to the stable release.
I recently ported my static site generator Saga from Swift to both Python and TypeScript. It was a fascinating exercise in cognitive dissonance, especially when it came to their type systems. This is a tale of that experience.
Luckily for us, good developers are still necessary in the age of LLMs. You can't just say "make an app", you still need to know how to build a good app.
A robust, two-part solution for showing dates and times in your visitor’s local timezone, handling the tricky first-visit problem.
Ditch the complex SPA. Learn how to build modern, server-rendered Django apps using Alpine AJAX and the power of hypermedia.
With WWDC around the corner, I'm reflecting on why I've fallen out of love with Apple. After more than a decade of iOS development, the company's anti-developer stance, Swift's growing complexity, and the eroding software quality led me back to the open web.
An easy way to use different serializers for different actions and request methods in Django REST Framework.
Webservers get hit by hundreds of thousands of requests to random (non-existing) PHP files. Previously I dealt with this on the server level, now I’m doing it directly within CloudFlare.
Many people quickly reach for a big CMS package for Django, when often this is overkill. Here’s how to use a simple Django model with a CKEditor 5 WYSIWYG field, including embedded media like YouTube.
I love RSS feeds, but it’s not ideal that you’re stuck with all the articles that are in the feed. So I built RSSfilter.com, offering a way to filter the feed based on keywords and categories.
When you have admin users in multiple time zones, the way Django handles the input and display of dates and times is causing confusion. Here’s how you can improve things.
It’s been three months since I migrated all my Python projects over to uv. And it’s only gotten better! Let’s look at two recent major improvements.
Apple’s DocC project and the Swift Package Manager have been missing pretty crucial features for years now. It’s time that Apple gave them some love and attention.
What would Saga look like if it were written in Python or TypeScript, rather than in Swift? Is it worth the effort to port Saga to another language?
I started building Saga, my own static site generator written in Swift, four years ago. Let’s look at the state of the project.
I use django-apscheduler to run a queue of scheduled tasks. Now I also need the ability to run one-off tasks and that turned out to not be so simple.
One pattern that I love to use in my SvelteKit projects is returning writable stores from the layout’s load function. Can we migrate this to the new $state rune?
I'm very busy migrating a big SvelteKit project to Svelte 5's new runes syntax and I have to be honest... not a big fan of the increased number of lines, especially when it comes to the props.