Caching Strategies, Explained Like You're Building It Yourself
So, what is a cache? A cache is a small, fast place where you keep copies of things you’ll probably need again soon. Think about your kitchen. Your rice, spices and oil live in the pantry, but…
OpenSpec and the Missing Flow from the User’s Perspective
OpenSpec describes very precisely what a system must do. But nowhere does it show, in one piece, how a user moves through the application step by step. This is not a bug in the tool. It is a…
ASR Model Cascade for Russian Speech Transcription
How I compared 32 speech recognition configurations and combined GigaAM with Parakeet to transcribe Russian meetings locally, reducing WER from 27.0% to 21.7%.
Peeking at Data Stored in a Union
What you see in a union is based on how the data is interpreted. Continue reading →
Fail the build when a translation goes stale
A missing Dutch string should fail the build on the machine that introduced the English one. A catalog entry Xcode has marked stale should fail it too. So should a %d that survived in English and…
Python 3.15 vs 3.14, 3.13, 3.12 and Earlier Versions: Speed Comparison
How much has Python performance changed from version 3.6 to 3.15? A comparison of ten Python versions across 122 benchmarks shows substantial reductions in execution time for many workloads,…
Sequence Points Are About Establishing Dominance Relation Among Expressions
This program has no unsafe block. It compiles on stable Rust 1.95, and it prints a number from the wrong vector. pub fn main() { let mut a: Vec<u64> = vec![1]; let mut b: Vec<u64> =…
Decoding base64 in Python at 10 gigabytes per second
We sometimes need to convert binary data to text. For example, your emails must be stored as text files. Naïvely, you could just use a string of 0 and 1, but it would mean using one character per…
Who holds the theory when no one reads the code?
When no one reads the code, Naur would say said project is dead. And yet businesses are building their future on dead code.
Flow Control Without a Broker: Overlooked Fallacies of Distributed Computing
Backpressure, AIMD concurrency, and store-and-forward for actors with only local resources. TL;DR: The classic fallacies of distributed computing cover the network miss critical two fallacies: that…
Swift Logging - Use OSLog Instead of print()
is the first debugging tool most Swift developers reach for, and it works fine until an app ships. Then it quietly keeps running. Every…
Let there be pixels
Just like my Linux desktop, I want this website to have perfect visual consistency. Each element must match the color palette and they all must fit together. Images, however, have 16 bajillion colors…
Violet - A Slop-free Static Site Generator
#AI #Tools
Parser Combinators
Better than regex!
Eight bytes in one register
Eight host bytes fit in one register. The usual has-zero test treats "./" as a clean host, so Ada forces the high bit before it subtracts. A clean kilobyte goes from 1.6 GB/s to 33 GB/s on the tab…
OpenJDK Bug Fixing, JavaOne, and JDK 28 - Inside Java Newscast #116
A critical bug in JDK 27 and how it was fixed, some conference news, and how JDK 28 is shaping up
One Hash Bloom Filters
A foray in to a data structure that is probably fun
Weeknotes #102 (October 17, 2026)
Things I found, read, did, and produced this past week. Things I worked on I try to follow updates from T3 Code but with their "nightly" release actually being 3-4 times a day, my email was…
An online-first version control system in this agentic era
Anthropic recently shared an article explaining a version control system (VCS) that they have been using internally to surmount their own limitations around managing their humongous monorepo.
CT's eldritch horror search and chat design
I've written about benchmarking Voyage and Cohere embeddings and about using Jev in my authoring agent , but I never wrote down how the search and chat in Shoalrun actually fit together, or why I…
Zero Touch Agent-Powered Development
I tried a fully autonomous, zero-human-touch software development pipeline using Google Antigravity and Claude Code agents to build my latest side project.
protonctl: a local, read-only MCP server for Proton
protonctl is a local, read-only MCP server and command-line tool in Rust that lets Claude Code, Claude Desktop, and Cowork search and read your Proton Mail, Proton Drive, and Proton Calendar on macOS…
Software Design
Shifting left on the hard stuff: what good design is, why you’d write it down, and how I design with AI while keeping the decisions my own.
Off-Menu video editing: the agent writes the functions the editor lacks
OpenScreen 2.1 introduces Off-Menu. The built-in functions stay; next to them, a low-level layer where a coding agent writes the function the editor lacks, through MCP and inside guardrails. Visual…
Search and Command Palette
Finding things, actioning things. Getting on with it.
How to Learn ML in 2026 interview
I had the pleasure of being interviewed by Yacine of Deep Learning with Yacine. He posed a lot of very thoughtful questions and I had a great time. Please check it out! The lightly edited transcript…
The 'generic' service circular dependency problem
How to tackle your overburdened 'notification' or 'comment' services when they start accumulating everyone else's cruft.
Lilly perf vs neovim (and others)
lilly is a terminal text editor written in V, built as an alternative to Neovim. We timed it against Neovim, Helix, Sublime Text and Zed on the same machine. These are the numbers, including the ones…
On README-driven development
Tom Preston-Werner's article on README-driven development has aged well in the era of LLMs. AI tools offer powerful automations, but still require quite a bit of steering to produce an acceptable…
Thirteen Criteria for Evaluating a Programming Language
Most language choices are made for bad reasons. The last project used it, a conference talk was persuasive, the job description said so, or someone liked the syntax. A language outlasts the…
The algebraic structure of regular expressions
Converting NFAs to regular expressions by solving linear systems of equations
EvoGrain: Algorithmic Sound Design with L-Systems and Granular Synthesis
Grain Set #6 from further down this article. A few years back I wrote an article here on L-systems with granular synthesis. I was rather unsatisfied with it at the time, and today I wince even…
Nezha: Aiki's Smaller, Tougher Sibling.
Nezha: smaller, tougher, and less patient with baggage. Nezha is Aiki's smaller, tougher sibling. The name comes from the youthful warrior of Chinese mythology: formidable despite his size,…
Git Time Machine: Browsing a Repository Through Time.
Git Time Machine: a filesystem with a past. I have been working on a tool called Git Time Machine (GTM). The idea is simple: instead of thinking of a Git repository as a sequence of commits, treat it…
How Not to Build a Five-in-a-Row Game Engine
Building slap5, a five-in-a-row engine in Rust and WebAssembly, and finding out how much work lies between working code and a strong opponent.
Claude Code Hooks Can Now Fail Closed: onFailure Block for PHP Guardrails
Claude Code 2.1.295 adds onFailure "block" to hooks, so a broken guard script stops the action instead of waving it through. Here is a PHP setup.
Bazelizing a Custom RISC CPU with 4x4 Systolic Matrix Accelerator
Open-source digital signal processing and machine learning accelerators are frequently published as student or research projects. While the RTL architecture is often innovative, the surrounding build…
Simplifying Sorting Filtering And Pagination In Swiftui Using Hotelquery
Simplifying Sorting, Filtering, and Pagination in SwiftUI Using HotelQuery
NixOS on the OpenWRT one
Preface 1.1. Porting Porting NixOS to embedded, or more correctly, non x86_64 devices, can be a difficult task. The difficulty of a port is mainly influenced by these 4 primary factors: The Linux…
Stop adding spaces to Chinese text
Spacing is typesetting's job, not the writer's. This blog lets CSS handle the gap between Chinese and English, and now NetNewsWire does too.
How to multiply polynomials in Θ(n log n) time
The information in this post is taken from the sources listed in the Sources section at the end of it. If you don’t care about understanding the algorithm and need an implementation now , skip to the…
Contest writeup: Murcia qualifiers 2015
This is a writeup of the problems my team solved in the Murcia contest, which we were participating in as preparation for SWERC. Those people are way better than us, but we will not give up! The…
Making websites shouldn't seem so hard
When I think about how to introduce "making a website" to others, the guides that I find all look confusing as fuck!
Request Deadlines Need an End-to-End Budget
Make queue time, downstream attempts, retry delays, and cleanup share one deadline, with an explicit contract for cancellation and propagation.
Python Game - Cleaver
I'm currently working on a game that my friend, Wilson, started a while back but never finished. We're trying to recreate a game his uncle used to play…
Remote control
Remote controlToday’s free time coding addiction brings the last piece of the flow remote control puzzle: a unix socket client/server control interface that allows lots of new party tricks.First of…
Math 2.0 Gets an Operating System: Can Open Math OS Build Mathematics Beyond the Theorem Factory?
An architectural and evidence-bounded analysis of Open Math OS as a possible foundation for Math 2.0.
Talk to Your Tasks: Todour Now Has an MCP Server
I've been thinking about the intersection of AI assistants and personal task management for a while. We have these powerful language models that can understand context, summarize information, and…