Year: 2026

The Rust ecosystem is unreasonably good

A second pass on the Rust port of my blog. I deleted the chromium PDF subprocess and replaced it with embedded Typst. Notes on axum, comrak, minijinja, and a typesetting compiler that ships as a crate.

Isaac Bythewood Isaac Bythewood
2026-05-09
Rewriting my blog in Rust
Rewriting my blog in Rust
I rewrote this blog from Flask to Rust over an afternoon. The result is a single 3.5 MB binary that uses 14x less memory and serves 10x more requests per second.
Isaac Bythewood Isaac Bythewood
2026-05-06
Self-host your fonts
Self-host your fonts
Three reasons every site should self-host fonts in 2026, and why @fontsource makes it a one-liner.
Isaac Bythewood Isaac Bythewood
2026-05-03
Cool URIs don't change, unless an AI rewrites your blog
Cool URIs don't change, unless an AI rewrites your blog
A short post-mortem on letting an AI port my blog from Django to Flask, and the URL design mistake it cheerfully shipped along the way.
Isaac Bythewood Isaac Bythewood
2026-04-29
Using Vite with Django in 2026
Using Vite with Django in 2026
I ran webpack on every Django project I had for years. In 2026 it's Vite, no wrapper package needed. Here's the whole setup.
Isaac Bythewood Isaac Bythewood
2026-04-26
Optimizing SQLite for Django in production
Optimizing SQLite for Django in production
The default SQLite settings in Django are fine for development but will hit "database is locked" errors under any concurrency. Here's the config I use in production.
Isaac Bythewood Isaac Bythewood
2026-04-18
Managing a Python project with uv in 2026
Managing a Python project with uv in 2026
How I set up and manage Python projects in 2026 using uv and ruff. Two tools and one config file replace everything.
Isaac Bythewood Isaac Bythewood
2026-04-05