Three-axis motion with GRBL
getting three stepper stages to work with GRBL software and drivers
Hover Proximity with Scroll-Driven Animations
Hover proximity? It's when you affect the hovered element and a few surrounding elements. A fancy effect made possible using modern CSS. ⚠️ (Chromium-only for now) ⚠️ See the Pen Hover Proximity with…
Devbox: a pattern for development in the cloud
A post about how I do AI-assisted development in the cloud, with a link to a Github repo for setting it up yourself.
The 10x Era Is Here. Ten Times More What?
Ten times more code is the shallowest ambition for coding agents. The real leverage lies deeper.
An Accessible Theme for Oh My Posh
Microsoft's Powershell has been my favourite shell for several years now. Not only is it an extremely powerful shell on Windows, it also runs perfectly well on mac and Linux; it tends to be the first…
Detecting Claude and ChatGPT using letter counting.
Last time I built a detector that counts four-letter runs (n-grams) and tells you whether Claude Opus 5 wrote something. It works well - about 91% on text it has never read. It has one obvious hole:…
How to Make Claude Code Do Things Its Own Docs Don't Mention
A plan of mine hinged on "a startup hook can only add context". The installed Claude Code binary said otherwise, and the docs would not say so for weeks. Docs lag, omit, and describe the version the…
Benchmarking Quantized LLMs for Local Coding Agents Part 5: Do Qwen's Recommended Sampling Parameters Explain the Thinking Penalty?
In Part 1 and Part 2, I reported some peculiar behavior for quantized Qwen3.5-2B models. In Part 3 I moved to Qwen3.5-35B-A3B, and in Part…
AMTA - AI and the Future of Low-Resource Languages
Announcement, Colab. At AMTA 2026 me and Vera Senderowicz Guerra gave an overview of the state of the art of LLM usage to translate English into a selection of languages, from low-frequency ones such…
Condensing Twenty Years of Wisdom in One Markdown
I've been shipping at a genuinely ridiculous pace lately, and somewhere in there I stopped being an engineer and became the bottleneck in a twenty-person team of AI agents. Don't worry, I am working…
TIL: bash command tracing at function level
some-function () { { local - ; set -x ; } 2>/dev/null some-command " $@ " } { local -; set -x; } 2>/dev/null enables set -x (command tracing/xtrace) for just this function, without leaking that…
Set up PostHog on iOS to track exactly what you want
The PostHog iOS SDK collects a lot of properties for each event tracked. I use this piece of code to take control over what property is sent exactly.
The ECDSA tax: a field guide to threshold signing
Two vendors sell you an “MPC wallet”. Both keep the key in shares that never meet, both produce ordinary signatures, both have a whitepaper with a lock icon on it. One of them signs in…
Highlighting a range of text inside an input or textarea
Using OpaqueRange and the Custom Highlight API
Ormolu: one refactor that fixed everything
This post documents a big refactor in Ormolu that resolved all comments-related issues.
Postgres as an isolation reference model
Use PostgreSQL's transaction isolation levels as a reference model for reasoning about the guarantees and tradeoffs of other relational and non-relational databases.
Jellyfin Media Integrity Scanner: v0.1.1 Release — Update Checker and Auto-Update
v0.1.1 release article for the Jellyfin Media Integrity Scanner. Covers update checker architecture, session-aware auto-restart, package bloat fixes, Playwright E2E testing, media corruption test…
Transaction Test Protection
Automated testing is good. This is, I hope, not a controversial statement. Small, isolated tests are also good. This should also not be a controversial statement. But sometimes, tests will need to…
A Conjecture That Was False by One Exponential
We named a proof obligation about how fast a shallow exp–log expression can approach zero. It fit the lower-depth results and it looked right. It was false — and false at exactly one scale. Replacing…
Eight Circles, Except When There Are Seven
Apollonius' problem has eight solutions in generic position. While formalizing it in MachLib we assumed the obvious general-position condition — three equal circles, comfortably separated. That…
Updates: Vite 8, TypeScript 6, Storybook 10, pnpm 11
My frozen shoulder problem means I haven’t had a chance to keep dependencies up to date on my InfiniSheet project. I tried to keep applying dependabot automated updates but hit a problem with some…
Monitoring Non-interactive Terminal Sessions with Sentinel
Lately I have found myself dealing with more and more terminal sessions on my Mac. These were not just sessions where I had specific areas of work open. These were long running processes. Local…
Opus 5 doesn't use em-dashes in code comments
I’ve been using Opus 5 as my main coding for the last few days 1, and I noticed something odd: the code comments stopped using em-dashes; everything is double hyphens (--) now. Instead of going off a…
C++26: std::polymorphic
In the previous article, we looked at std::indirect — C++26’s answer to the “I need a heap-allocated member with value semantics” problem. indirect<T> always stores exactly a T. But what if you…
Changelog: Browsers, Rainbows, and an Honest Token
Two launches went out today — Save Cannes and Kairos each got their own post, so I won’t repeat them here. This is everything else since the Citadel changelog: six releases across four…
My Calendar 3.8.0 and My Calendar 3.5.0 released
I’m releasing simultaneous major updates to My Calendar and My Calendar Pro today! The My Calendar release is particularly exciting, adding a couple of commonly requested features. My Calendar…
How I lend my computer to coding agents
Last edited on August 18th, 2026. Since the end of 2025 that automatically generating useful code can be unlocked by giving large language models (LLMs) the tools and resources to work in loops,…
Characters and Conversations
Based on the requirements of two of my WIPs, I needed robust character and conversation systems. Normally these would be game-specific since the story dictates how dialogue is presented and executed.…
KCL part 3: look and feel
This post is part 3 (and probably the final part) of a multi-part series:part 0 (an intro and brief description of KCL)part 1: unitspart 2: program memorypart 3: look and feelThis post isn't about a…
Chafa
After reading What software do you use daily in 2026? on Lobster, I learned about Chafa. Described as: The premier UX of the 21st century just got a little better: With chafa, you can now view very,…
Agentic Engineering Lesson #3: Taste
I've often been asked what makes a junior developer into a senior developer. Often it's a junior developer asking me the question. And often my answer is system design skills.The best…
Когда программное обеспечение - это больше чем код
Программный код, на котором работал миссия Аполлона-11 в GitHub На человеческий язык этот код переводится как “Это один маленький шаг для человека, но гигантский скачок для всего человечества”
The Semantics of the Lambda Calculus
This post describes the semantics of the lambda calculus.
Let us begin
Thanks for visiting my blog! This post is an introduction of sorts, explaining what I'm doing, why I'm doing it and where I'm starting from. So without further ado, what am I doing? I'm going to…
Some programming code matters... forever
The Apollo 11 mission original source code on GitHub This code was behind "That's one small step for man, one giant leap for mankind"
Claude Opus 4.6 vs Google Gemma 4 on a 5-Year-Old MacBook M1 Pro
Can a five-year-old MacBook challenge Claude Opus 4.6 at code review? Google Gemma 4 takes on a real 1,322-line merge request. Discover the surprising results and two small settings that turned it…
Someone Still Has to Sign It - and the Research Says They'll Stop Reading
This is part of a pair of articles on the impacts of agent driven development - you can read thoughts on backlog here. Excitement continues around coding assistants and we’re really now at the…
Sideloading a library loan onto a Kobo without Adobe Digital Editions
TL;DR Link to heading Library lending apps hand out .acsm files, which normally need Adobe Digital Editions to turn into a readable epub. ADE doesn’t run on Apple Silicon macOS. I built…
Modular Framework for Agentic Runtime Environments
Agentic coding tools have become an extremely useful runtime beyond implementing code. Cursor and Claude Code proved that an LLM in a coding-optimized harness can not only generate useful code…
No More Rebuilding the Community Website
I’ve been building a website theme. It’s called Popular, after the song Pop!ular by Darren Hayes. A theme whose whole job is helping small communities put on a good show deserved a name…
A bundle of CLI tasks for tools.deps projects
I've just released biff.run , a very light clj -based task runner; and biff.tasks , a bunch of default CLI tasks that can be used in tools.deps projects. The tasks are mostly the same as what I've…
Experiments in markdown
This is a test post to look at how easy it is to use Markdown: int main ( void ) { return 0 ; }
Deploy an app with biff.tasks
I demonstrate how to provision a new Ubuntu server on DigitalOcean and deploy a hello-world Clojure web app to it with biff.tasks. biff.tasks
From Rage-Quit To Fully Migrated
In the interest of honesty — and mild self‑dragging — I should add a post‑script to yesterday’s rant. Despite all the swearing, the dramatic rollback, and the heartfelt threats to abandon Zola…
.NET 11 Preview - Using ZStandard Compression With A HttpClient
In a previous post, “.NET 11 Preview - Using Zstandard Decompression With A HttpClient”, we looked at how to configure a HttpClient to transparently decompress traffic compressed using the Zstandard…
Releasing On This Day 1.4 — Live Photos, Ambient Backgrounds and Add to Album
If you don't know my app On This Day Rewind yet, give it a try — it shows you the photos you took on this exact day in past years. As much as I would like to write a more detailed post for the new…
The forgotten part of being a solo game dev
Every team needs at least three people. The code person, the data person, and the manager. As a solo dev, I’m all three. And up until now, I had completely forgotten/ignored to be the manager. There…
Tests Live on the Edges
This is a follow-on to my previous post about what it looks like when a developer tests. Same project, next … More Tests Live on the Edges →
Every Program Has Infinite Bugs
Every program has infinite bugs. You can always invent a new expectation the code fails, and most of those failures will never cost anyone a dollar. Agent reviewers do not find them all, and they do…