Introducing oj: a Rust build tool that speaks Vite
oj is a from-scratch, npm-free dev server and bundler written in Rust. It reads your existing vite.config, runs your existing Vite plugins, and reimplements React and TanStack Start natively, so you…
Safety as Performance: Moves, the Borrow Checker, debug_assert!, and Cold-Path Hygiene
Safety as Performance: Moves, the Borrow Checker, debug_assert! , and Cold-Path Hygiene Part 7 of Low-Level Systems Design in Rust - a series on writing high-throughput, low-latency systems code,…
Contributing to DaxLib
How to contribute a Library to DaxLib
pi: statusline with GitHub PR link
♠ Previously. Problem statement: the @narumitw/pi-github-pr statusline entry reports much more than I care about: PR #123: checks failing (2), changes requested, 3 comments I want the clickable PR…
Adding support for remote jar fetching in Flink session clusters
I’ve submitted a Flink Improvement Proposal (FLIP) about adding support for Flink to be able to fetch remote jars for applications submitted to a session cluster. Discussion thread on…
Glean Dictionary + DuckDB
While working on Writing the Docs: 2026 Edition , I experimented a bit with updating the Glean Dictionary to incorporate some of the ideas in the essay, in particular those around reference…
Introducing SqlFlow: Building Resilient Workflows with SqlFlow (Go SDK)
This article shows how to build an Autonomous AI Agent with SqlFlow
¡Presentando Koneko Kanji!
Skip to content Home Sponsor me RSS bsky-comments { --background-color: var(--bgColor); --text-color: var(--textColor); --link-color: var(--textLinkColor); --link-hover-color:…
Four Cornerstones of Development
In the late 1990s through 2010s when working with development and product teams the four cornerstones of development were always at the tip of the tongue or as a small poster on a wall somewhere. I…
Why does <code>t.Setenv</code> panic after <code>t.Parallel</code>?
Go's `testing` package tracks whether a test is parallel or mutates global state, and panics if you do both in the same test.
Week Notes 26#34
A busy week at work, juggling a few fairly complex things that have meant I've been a bit brain busy outside of work Wrote a couple of blog posts, Why I still hand write my commit messages being the…
Next.js Notion Starter Kit
Deploy your own Notion-powered website in minutes with Next.js and Vercel.
What's new with CoreCLR GC handles in .NET 9 and .NET 10
This post explores what's new with CoreCLR GC handles in .NET 9 and .NET 10.
AI Coding Tip 033 - Protect Yourself Against AI Cheating
TL;DR: Write the failing test first and ban deletions, or the AI deletes your test, reverts your fix, and calls it done. Common Mistake ❌ You ask the AI to fix a failing test, and it deletes the test
Fixing an eMachines EL1200 BIOS bug with Claude
I’m no stranger to pushing hardware past its limits. For example, seven years ago, I tracked down an issue that prevented 16 GB of RAM being used in a motherboard that only supported 8. It…
Preventing Transitive Swift Imports with Bazel
Swift’s permissive nature when it comes to module dependencies has always annoyed me and made my life a bit harder than I expected. Of course, I’m talking about transitive module imports.…
Sidenotes in Goldmark
Back in 2024, I jumped through a lot of hoops to get sidenotes working correctly here. I find that I’m happier writing when I can add notes (either footnotes or sidenotes), and sidenotes work…
My own comment server instead of using Discus
I tried Disqus, giscus and Remark42 on my blog before writing Hilo: a self-hosted FastAPI comment backend with GitHub login and nothing else.
An MCP Server That Bridges a Resident Claude Code Session to Slack
I released slack-bridge-mcp-server, an MCP server that bridges a resident Claude Code session on my Mac to a Slack channel. I send a message from Slack, the local session picks it up, does the work,…
ChannelX
TL;DW: ChannelX translates Channel9 into a profusion of wild experiments. ChannelX.zip (545k) standalone(AU, VST2) ChannelX in Airwindows Consolidated under ‘Tone Color’ (CLAP, AU, VST3,…
actions-rust-release v1 Released
I just released v1.0.0 of my actions-rust-release action. This is a big, breaking change. See the release notes for details, but the summary is that this splits the action into two pieces. The first…
The Same Complexity. One Unit or Twenty-Two.
A series on how software architecture shapes AI-driven code degradation. An objection to the last post turned out to be right, and fixing it produced a better result than the one it demolished. Every…
The Cold Reader Understood Spring Better
A series on how software architecture shapes AI-driven code degradation. This post reports the strongest result against the position these posts have been arguing. It replicated in both runs, so here…
What commit did I branch off from?
Sometimes, you create a branch off another branch, do some work on it, and want to know what the original branch was pointing at. For instance, if you're looking to clean up your Git history, but…
Setq And The Others
James Cherti has an interesting and useful post about the relative efficiency of setq, setq-default, setopt, and customize-set-variable. Cherti justifies this concern on their effect on Emacs startup…
Vulkan Hardware Capability Viewer 4.13 with additional feature flags released
Better late the never Vulkan launched with a small set of format feature flags for images and buffers. These flags can be used to check if an image or buffer supports a given usage scenario. E.g.…
The Shelf - a searchable index of my board games
The Shelf - a searchable index of my board games We have a shelf in the living room that is full of board games. The number of board games is growing for every month and has done so for the last…
How to convert html to pdf while preserving the meta information?
Using browser’s save as pdf function will lose meta information in the html file. Instead, you may use WeasyPrint which preserves the meta information of the html file, i.e., the […]
Run Your Code Generator as a Test
At some point in a project’s life, somebody runs a code generator. Maybe they point a client generator at an OpenAPI document, or feed a .proto file to protoc, or write a small script that…
argsort(argsort(argsort(....)))
Family life has decreased my writing cadence — sorry about that. Should be getting better soon. Here's a fun thing I learned. If you have a list of numbers in Python, you can use NumPy to get…
Implementing Mouse Look in Godot 4
Once we have mouse movement, we can turn it into camera rotation. Our controller uses two separate rotations: rotate_y ( - event . relative . x * mouse_sensitivity ) camera . rotate_x ( - event .…
Emacs Spell Checker: Configuring Flyspell, Ispell, and Aspell to Minimize False Positives in Source Code and Prose
The ispell package serves as the underlying interface in Emacs for communicating with external spell checking programs. Building upon this, the flyspell package is a built-in minor mode that provides…
A deep dive into Nurb
Nurb turns a coding agent into a CAD partner. Learn how Python parts, OCCT solids, live checks, measurements, and 3MF export fit together.
Claude Code Remote Control Now Works Inside Docker Sandboxes
Docker Sandboxes 0.39 lets Claude Code's /remote-control run inside a microVM. Drive an isolated agent from your phone while your host filesystem stays out of reach. Here is how to turn it on, plus…
This is going to be so awesome brain
When you‘ve been toiling on a piece of code for a while, refactoring it, refining it, and generally spending a lot of time in the codebase, occasionally you make a major breakthrough, some kind of…
The Most Dangerous Bugs Are the Ones That Don't Throw Errors
Three silent bugs that cost real money without raising a single exception, and the defensive patterns that catch them before they do.
Semantic lightness and the rise of LLMs
If we look at using LLMs to write code and you have seen your fair share of similar technologies, there is an obvious reason why enterprise development seems suitable: semantic lightness to using…
How To Report A Bug So It Actually Gets Fixed
I wanted to make a blog post like this for a long time, because it’s something that I wish I could find more of myself. I think one of the things that helps us most in our careers as software…
Building a thermo–hygrometer using Arduino
During the heatwaves in Europe, at some point I was (unnecessarily) interested in the temperature and humidity in my house. Since buying a ready-made thermo-hygrometer is too boring, I decided I…
Cards and crypto in one checkout
One API call returns a Polygon address and a live Stripe Checkout session. Putting both rails behind one page, the bug that meant the card tab never rendered, and what ten days of realtime fraud…
Wasat v1.4.0
Another bump to Wasat , this being v1.4.0 . This release is in support of some work I want to do on Rogallo , where I intend to add proper client certificate management. While Wasat provided good…
Modern CSS colors: oklch() and color-mix()
oklch() gives perceptually uniform colors, and color-mix() blends them. Build palettes and tints with modern CSS color functions in all major browsers.
Rustograv
Turns out all you really need for automatic differentiation at compile time is to encode your tensor shenanigans, differential geometry as algebraic data types with the resulting type theory. The…
Coming Soonish: FruitMenu Redux
First, this project needs funding. Go here if you wish to help, even a little bit. Thanks so much; all help is greatly appreciated!What’s the holdup on betas?Apple. Apple’s the holdup. I can’t even…
motd: IRC App for Android
motd: IRC App for Android motd is my latest and greatest vibecoding project where I am learning how to modernly develop software [trigger warning]. It started as a bit of a joke but then got pretty…
Testing the LibreComputer Alta AML-A311D-CC NPU
A few years ago I won (!) a SBC and have been trying to figure out what to do with it ever since. The board is called LibreComputer Alta AML-A311D-CC and this post will outline how I got it’s…
Block frequency
Estimating branch probabilities says how one branch splits. BlockFrequencyInfo turns those local numbers into per-block frequencies, which nearly every profitability decision in LLVM ends up reading.…
[ Video ] How To Choose an Open Weights Model – Episode 4
In the final episode I talk about open weight model harnesses, or how to actually talk to your local AI. From llama-cpp chat to Pi, or Hermes