NOAA's National Blend of Models: What It Is and Why We Switched to It
A practical breakdown of NOAA's National Blend of Models — what it is, how it works, and why we stopped hand-rolling a worse version of it.
Lamb 0.13.0
Originally written on lamb-releases : Lamb 0.13.0 is a large maintenance and hardening release: importers and a full site export, tighter Micropub handling, faster feeds and listings on big sites,…
Estimates
Estimates (() => { const theme = localStorage.getItem("theme") ?? (matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"); if (theme === "dark")…
Rogallo v1.12.0
I've released v1.12.0 of Rogallo . This version contains a number of internal changes, as well as some user-facing improvements. Improved navigation history For a wee while now I've been wanting to…
PatchLogic Updates
My first mobile game, PatchLogic , has been a bit neglected lately. Sure, there's some behind the scenes things going on to make sure it's running well, but overall, not much has changed. Today I set…
This Week in Package Management: 22 August 2026
Releases, advisories, and articles from across the package management world
Buy the plumbing, vibe the rest
AI makes it tempting to cancel SaaS tools and prompt your own internal platforms into existence, but that often creates brittle systems that are “a mile wide and an inch deep.” Performance, security,…
Hermes, OpenClaw, NanoClaw, ZeroClaw, and IronClaw: Choosing the Right Agent Architecture
A practical and architectural comparison of Hermes, OpenClaw, NanoClaw, ZeroClaw, and IronClaw—and why the best answer may be a layered system rather than one winning agent.
The new Age of Developer Experience Tools
LLMs make producing code cheaper, but they do not make changing production systems cheaper. In order to keep production running a Developer Experience revolution will need to take place.
An animated FAQ accordion in pure HTML
Delete every line of accordion JavaScript. Three lines of CSS replace it.
Merged Is Not Shipped: Why a Year-Old Fix Never Reached You
There is a version of a bug that is more frustrating than an unfixed one. It is a bug that was fixed, correctly, and then sat behind glass for a year while the people it was hurting kept reporting…
Living at the hinge of history
Wanderer above the Sea of Fog, Caspar David Friedrich (1818) As a software engineer, I’m at the pointy end of watching AI automate me out of a job (perhaps just behind mathematicians, who are…
Setup pr agent on Azure DevOps with managed identity
I tried out to follow the PR Agent Azure installation . Normally you would use managed identity in order to avoid running things in user account, so I after a few sessions of edit, Claude, ChatGPT…
Two File Descriptors?
Yes, you can have two file descriptors referencing the same open file. It's weird, and potentially useful. Continue reading →
You Keep Trying Every New Tool and Calling It Research
Michael Truell posted that they were opening Grok Bot to a small set of companies this weekend. Slack lit up in under a minute. People asked if we could drop our template if it loaded skills and…
Small Language Models (350M Parameters)
I have had good results with small language models (such as 1.2B parameters) for interacting with my MCP server. I decided to try to see how small I could go—if 1.2B worked, would 350M work,…
Announcing RangeMenu
Right-click inside a Froala editor and you get the browser’s menu. Spell check suggestions, Inspect, Translate to English. Nothing to do with the document you’re editing. That’s…
The Elephant in the Brownfield
In recent weeks, I met several talented, driven, experienced engineers and leaders working hard to bootstrap their ideas into startups. I call them brownfield refugees — people who left or were…
Runtime validation is a boundary concern
Runtime validation belongs where external data becomes application data. Parse every ingress once so the happy zone can trust its own types.
Defining a schema management system
In what might be the biggest example of The optimisation-procrastination trap ever I'm building the Schema manager plugin to manage the interaction between Quantum OS Properties, Quantum OS Templates…
Agile AI Development Lifecycle
A framework and methodology for transforming pre-AI software development lifecycle into AI-native development at scale.
Post #90: Today, More Shaders
Learning more about shaders and the seven different processor functions… ( link )
A Colecovision Emulator for the Fruit Jam (Or, How to Create a Game Emulator using Claude in 7 days)
After finishing my Colecovision game cartridge shield for the Adafruit Fruit Jam, my next quest was to find a Colecovision game emulator for the Fruit Jam. Unfortunately, I could not find any so I…
#475 packRectangles
Using rust to pack boxes; cassidoo's interview question of the week (2026-08-16).
Souping up my blog
For a long time I thought it’d be nice if there was a simple way for people to interact with my posts. When you write something it’s nice to know that someone took the time to read what you wrote and…
FreeToken: running models which are too big...
I ran a 35‑billion‑parameter mixture‑of‑experts model on my modest desktop using a hybrid of GPU VRAM and system RAM, thanks to a new model engine that activates just a few experts per token. The…
When Agents Call Agents
Calls to agents increasingly come from other agents, as general-purpose assistants route work to specialists. On the wire, these are ordinary tool calls, but if you zoom out and look at them…
Unsubscribe links without a login: Django signing
Django has a signing module that makes it easy to build an unsubscribe link that works with no login and no session: token = signing.dumps(recipient.pk, salt=UNSUBSCRIBE_SALT). The token itself is…
the inverse of the hammer
Entry one of ten in “the end of the wire,” a series on the terminal. Each one stands alone. Maslow’s law says a tool shapes what you see. The shell has no shape to impose, which…
Find Git Commits by Commit Message Text
TIL that you can reference git commits by providing (parts of) the commit message
Fast and Hard Code
One of the memes on Twitter is that “programming is solved now.” I’m not sure to what degree it is, but one thing is pretty clear: the act of familiarizing yourself with a language no longer matters…
God Packages and Other Slow Failures
Function-level lint cannot see a god package. gocyclo at 10, funlen at 80, revive’s argument limits: all of those look inside one function. Two hundred methods of complexity 8 on one type is…
Refactoring NoiseApp: Adding Multi-Language Support & Feature Upgrades
Building a public-interest project to address urban noise pollution sounds rewarding on paper. You write the code, gather incident data, and give your community a voice to demand accountability.
T is for time-machine - Python A to Z
Python A-Z is a blog series about Python. Each day, I share insights, ideas and examples for different parts of Python development that match with the letter of the day. Blaugust is an annual…
A Perfect SimCity
After 35 years of playing SimCity, I still could not say what makes a "Perfect" city. An evaluation screen displays a Score of 0 to 1000, and I struggled to reach 900 and never understood…
Just a rumour of a bug is enough to find a security exploit these days
I released a security fix for OCaml's cohttp 6.3.0 today, fixing a path traversal issue . The patch itself was straightforward and in normal times, the security procedure would have been to fix it…
Do I Need an IDE Anymore?
I've managed to convince my work to let me swap my 16" M4 Pro MBP to a 14" model[1], which means I've now got the tedious task of migrating all my data, applications, and configurations,…
Does Python Still Need to Be Async-First?
If you are building APIs in Python that handle a lot of concurrent I/O, the standard answer today is often asyncio or a framework built around it. As a result, application code increasingly looks…
235 Billion Tokens Later: Auditing What The AI Agents Really Did
In the last post I presented my multi agent decompilation setup for MW2, almost framed as a scream for help. I received great suggestions that I will gradually implement over the next few days.…
An Agent Can't Offer an MCP Tool It Can't See
MCP discovery tells an agent how to authenticate, not what a tool does. When a tool sits behind per-user login, static metadata is the fix, not a smarter model.
Why aren't my two Cortex-A9 cores cache coherent?
One of my favourite things to do when I have some down time is to grab a random devkit from my pile of random devkits, and try and write some code that will run on it. I generally try and avoid…
SwiftUI geometryGroup() - Isolate View Geometry for Smooth Animations
SwiftUI automatically propagates geometry changes through the view hierarchy. This behavior usually produces smooth animations with minimal…
How Enemies Decide to Dodge
How to implement enemy dodges with GAS and behavior trees: a probability attribute per reaction type, a roll-under check in a decorator, and a stacking gameplay effect that makes enemies harder to…
Perl's Data::Checks and Tagged Types, of a Sort
Introduction Data::Checks and its associated ecosystem of attributes allows for convenient definition of runtime value constraint assertions. An example provided in its documentation offers a nice,…
Vim's UserGettingBored autocmd
In short: Vim has a joke autocmd called UserGettingBored that doesn’t do anything. Vim’s automatic commands feature, usually shortened to “autocmd”, lets you run code when…
From 17ms to 0.04ms: How to Design the Right SQL Index
What does a good SQL index look like? I seeded Postgres with 1 million comments and measured every indexing decision with EXPLAIN ANALYZE: a 17ms sequential…
A formal degree and algorithmic problem-solving is the answer. Always has been.
Have you ever handled a surgical scalpel? It’s an incredible tool - small, light and sharper than anything of its size and purpose. It takes thousands of hours of practice before someone is…
Breaking Changes in Dracula Pro for Vim
PSA: If you use Dracula Pro, the filenames were changed recently.
A LinkedIn Cover That Isn’t Stock
One line of math, one curve: a LinkedIn cover from geometric Brownian motion, in the same palette as this blog. Why it's grey, where the text went, and the 3x-then-downscale fix for crisp HTML-to-PNG.
Eliminating branches in C++ loops
A for loop that returns false from a branch and true at the end is easy to read, but the branch can be expensive. In this post I show how to remove it with bitwise operations, a 256-byte table, SWAR,…