Simon Kagwi

2025


cover.png

How to migrate from pip-tools to uv

At Caktus, many of our projects use pip-tools for dependency management. Following Tobias’ post How to Migrate your Python & Django Projects to uv, we were looking to migrate other projects to uv, but the path seemed less clear with existing pip-tools setups. Our requirements are often spread across multiple files, like this:

How to Deploy a Hugo Site to Cloudflare Pages With Github Actions

We recently moved this website from Django to a static website made using Hugo, and decided to use Cloudflare Pages to deploy it. Cloudflare Pages offers automatic deployments, meaning it can automatically build and deploy a website when changes are pushed to a GitHub branch. This is simple to set up and works well. However, we wanted to build and deploy using GitHub Actions instead, so that the build logs would be easily accessible on GitHub. Cloudflare’s wrangler-action makes it simple to set up a GitHub Actions workflow for this.

How to Create a Helm Chart for a Django App

At Caktus, we use Helm charts to simplify our deployment process for Django projects. Helm is a package manager for Kubernetes, and using Helm charts allows us to automate the process of writing Kubernetes configuration files for our Django applications. We use it together with GitHub Actions and Ansible to streamline our deployment processes.

How to fix factory_boy post-generation deprecation warnings

We use factory_boy for bootstrapping test data on many Python and Django projects at Caktus. Recently, we encountered a deprecation warning on an older project that had been using factory_boy for some time:

2009


Testing Django Views for Concurrency Issues (Updated for Django 4.2 in 2024)

Editor's note: This post was originally published in May, 2009 and was updated in December, 2024 to incorporate changes in Django and improvements suggested by our readers. It has also been tested for compatibility as of the Django 4.2 release.