Kevin Renskers
Netherlands
Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by Kevin Renskers
uv is fantastic, but its package management UX is a mess
May 21, 2026 • #python and #uv Astral’s uv has taken the Python world by storm, and for good reason. It is blisteringly fast, handles Python versions with ease, and replaces a half-dozen tools with a single binary. I’ve written multiple articles about it before. Getting started with a new Python project using uv and adding your first dependencies is very easy.
Coding with AI: productivity without pride or joy
April 01, 2026 • #ai and #personal I just finished my most productive quarter in a long time. Seven new open source projects, plus about forty releases to my existing projects. Fueled by a combination of too much free time (I’m still available for new projects!) and Claude Code. Looking back at all the code that I’ve released, there are two quite strong and conflicting feelings that I want to talk about.
Building modern Django apps with Alpine AJAX, revisited
March 25, 2026 • #django, #insights, #javascript and #python About nine months ago I wrote an article about my quest to simplify my web development stack. How I went from SvelteKit on the frontend and Django on the backend, to an all-Django stack for a new project, using Alpine AJAX to enable partial page updates. I’ve now been using this new stack for a while, and my approach -as well as my opinion- has changed significantly. Let’s get into what works, what doesn’t, and where I ended up.
Django's test runner is underrated
January 30, 2026 • #django, #insights and #python Every podcast, blog post, Reddit thread, and every conference talk seems to agree: “just use pytest”. Real Python says most developers prefer it. Brian Okken’s popular book calls it “undeniably the best choice”. It’s treated like a rite of passage for Python developers: at some point you’re supposed to graduate from the standard library to the “real” testing framework. I never made that switch for my Django projects.
Loopwerk
I’ve been writing code professionally for about 25 years. The first eight of those years were spent writing PHP, and then I made the switch to Python. Here’s something that still feels counter-intuitive to say out loud: I felt more like an expert after eight years of PHP than I do after seventeen years of Python. This isn’t impostor syndrome. It isn’t a lack of confidence. And it isn’t because I somehow regressed as a developer.
Safe Django migrations without server errors
How to run schema-changing Django migrations safely, avoiding schema/code mismatches and server errors during rolling deploys. Posted on December 01, 2025 in #coolify, #deployment, #django, #howto, #insights and #python One of the best features of modern container-based deployment platforms (Coolify included) is that they give you zero downtime rolling updates out of the box. When you push code, a new image is built, migrations run, and traffic only shifts to the new container when it’s healthy.
Loopwerk
October 21, 20251495 words, posted in django, insights and python A client recently asked me a seemingly simple question: If we switch our Django backend to run on an ASGI server, will it get faster? The short answer is no. The slightly longer answer is that switching the server from WSGI to ASGI does nothing on its own. To see any change, you have to start rewriting your views to be async, and even then, the benefits are marginal at best for 99% of web applications.
Django views versus the Zen of Python
September 14, 2025 • #django, #insights and #python A while ago, I wrote about how I write Django views, arguing that the base View class hits the sweet spot between the simplicity of function-based views and the often-overwhelming complexity of generic class-based views. The response to that article made it clear that I’m not alone in this thinking. It got me wondering: why does this approach feel so right? The answer, I believe, lies in the guiding principles of Python itself.
How I write Django views
August 28, 2025 • #django, #insights and #python When learning Django, one of the first major forks in the road is how to write your views. Django gives you two main options: simple functions or powerful classes. The official tutorial starts you off gently with function-based views. It begins with the basics: from django.http import HttpResponse def index(request): return HttpResponse("Hello, world.
Loopwerk
July 30, 2025753 words, posted in howto, python and workflow I maintain a handful of Python packages, such as django-generic-notifications, drf-action-serializers, django-rss-filter and django-vrot. Whenever I finish a new feature or fix a bug in one of these packages, I of course need to release a new version.
Why Django's DATETIME_FORMAT ignores you (and how to fix it)
July 18, 2025 • #django, #howto and #python When you start a new Django project, you get a handful of default settings for localization and timezones: settings.pyUSE_I18N = True LANGUAGE_CODE = "en-us" USE_TZ = True TIME_ZONE = "UTC" I’ve written before about the default timezone being a silly choice for sites with a global user base, both on the backend and the frontend. But today, I want to talk about internationalization (I18N) and language settings.
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with Kevin
Contact Kevin, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack