All posts
Manage deprecations with Python warnings in a Django project
November 22, 2024 • 5 min readPython has a module in its standard library that can be very helpful tool to manage deprecations. It’s commonly used by libraries but can…
Keep uv.lock file up-to-date with Dependabot updates
October 02, 2024 • 2 min readIn the past couple of weeks, there has been a lot of interest in the Python community for what started as a new Python package manager, but…
Narrow state of a Django model using Python TypeGuard
August 31, 2024 • 4 min readToday, I came across a problem with type checking in a Django project which led me to use for the first time. I’ve heard about them in…
Attest build provenance for a Python package in GitHub actions
August 08, 2024 • 4 min readAs you may have noticed, supply chain attacks ae on the rise. These attacks usually target a small piece of software infrastructure that the…
Bulk updating multiple repos with all-repos
July 10, 2023 • 7 min readI like the open source communities and all the developments that they enable. As a developer, I like to have the ability to solve my own…
Nested ViewSets with Django REST Framework
May 05, 2023 • 6 min readI’ve been using Django REST Framework for a while now but mainly in old projects where lots of code have been written. In most cases, these…
Migrate my site design system to Chakra UI with ChatGPT
April 27, 2023 • 7 min readA short story on how I migrated this site from a custom design system to Chakra UI with the help of ChatGPT. Wasn’t a complicated migration,…
Enabling sudo via TouchID using Ansible
November 25, 2022 • 2 min readI discovered fairly recently in a blog post that it was possible to enable sudo mode in the terminal via Touch ID instead of having to type…
Specify docs dependency groups with Poetry and Read the Docs
November 21, 2022 • 3 min readI wrote a while back on how to migrate a project to Poetry. One of the gotcha was how to specify the dependencies to build the project…
Convert a Poetry package to the src layout
January 19, 2022 • 3 min readThe layout is commonly used in Python ecosystem nowadays (even the pytest docs recommend it), but I’m not really using it on my projects. I…
Convert Python requirements to Poetry format
January 07, 2021 • 2 min readI recently wrote about migrating a Python project to Poetry, however, this guide is quite manual process. I recently came across dephell, wh…
Migrating a project to Poetry
October 18, 2020 • 9 min readPoetry is a tool solving the problem of Python packaging. It was started back in February 2018 by Sébastien Eustace (also the author of pend…
Auto-update pre-commit hooks with GitHub Actions
July 12, 2020 • 3 min readPre-commit hooks are great to reduce the feedback loop for things like linting and auto-formatting. Git supports them out of the box, but…
Mastering flexbox with Flexbox Zombies
May 03, 2020 • 2 min readFlexbox is not exactly new, and I’ve played with it a few times, but as a developers who spends most of my time in the back-end building API…
Self-host your Typography.js fonts with Gasby
January 05, 2020 • 3 min readProblem I recently added a CSP to this blog, and one of the tricky parts when implementing this was that the fonts were coming from from…
Setting up a Content Security Policy with Gatsby
November 14, 2019 • 5 min readThis is a quick story telling how I set up a content security policy on my personal blog which is powered by Gatsby. I’ve been keen to try…
Making Celery work nicely with Django transactions
June 25, 2019 • 5 min readI’ve been using Celery in my Django projects for about 5 years now. Along the way, I made some mistakes, learned from them and picked up a…
Static vs. Media files in Django
June 18, 2019 • 6 min readDjango is a great Web framework for building Web applications in Python. It comes with a lot of batteries included that you’ll most likely…
Add cache-control header to an entire S3 Bucket using Boto3
May 01, 2019 • 2 min readI recently came across a task which seem pretty generic, but for which I couldn’t find an existing solution online: update the header for…
How I made 1000's of websites more secure with one line of code
April 24, 2019 • 3 min readOr at least a lot of them… Learning about a new security header Last week, I attended the London Django meetup. Among a very interesting…
New year, new laptop
January 14, 2018 • 3 min readA couple of days ago, I accidentally dropped my old laptop on the floor. It was an old Macbook Pro from mid 2010, which I’ve upgraded a…
Hello World!
November 29, 2017 • 1 min readSetting up my blog using the Jekyll static site generator and Github pages. This is using the remote theme feature and is I’m trying to get…