Book List
Books that I'm reading and have read
Suica: twenty years ahead
No app to install, no account to make. One card from 2001 that paid for everything.
I forced a speech model onto the GPU for months. The CPU was faster.
Back in March I wanted to clean noisy speech live, from a microphone, in Rust. NVIDIA has Real-time RE-USE : a streaming Mamba model that takes one 20 ms frame of audio at a time. Small, causal, made…
openSUSE Asia Summit 2026 Yogyakarta
Awalnya saya berpikir bahwa saya tidak akan sempat mengikuti openSUSE Asia Summit 2026 yang akan diselenggarakan di Yogyakarta dikarenakan saya cukup kewalahan mengurus BlankOn, baik proyek maupun…
Overgrown, when plants invade your abandoned tabs
A fun little project that came out of a creative exercise around the word 'Overgrowth'.
Grok Bot Templates: How I’m Automating the Work I Put Off
Copy my Scout, Margin, and Phone Bot templates. Explore a 13-bot personal AI team, real app screenshots, setup prompts, and checks for work you can trust.
You're Not Writing Code. You're Running a System.
The most important change an engineer can make isn't a new language or framework — it's a single sentence about what they think they're doing. 'I am writing code' makes the diff the deliverable and…
No such thing as a website
I wrote a somewhat flippant piece for a friend’s site (sadly now defunct) some time back about my frustration with people asking for websites as a sort of off-the-shelf, finished thing. The point of…
The Contract Is the Collateral
Compute already has a large, measured market: a GPU loan book is priced on who signs the offtake. The futures everyone talks about trade almost nothing, and the return sits with whoever packages and…
MacBeeb
You can download MacBeeb from GitHub, where the source is too. MacBeeb is a BBC Micro emulator written for the Mac in Swift. I’ve spent a lot of time in the BBC Micro’s internals through…
The Accessibility Compat Data project has a homepage now, and you should support the project
Lola Odelola shared the news on Bluesky last week . I’m using my blog and web presence to signal boost it. Long story short: There currently is no Baseline or caniuse for accessibility . The…
ccfind: search all your Claude Code sessions
I remembered the conversation: transcribing a Rust cohort video with mlx-whisper. I didn't remember where I ran it. It turned out to be ~/Downloads, but I only found that out later: claude --resume…
What makes a game tick? Part 9.5 - The Curse of the Scheduler Latency
Let's talk about game simulations. Today I bring up a slightly more advanced topic and talk about OS scheduler latency and its impact on multi-threaded tick design.
Why Paseo is my daily driver
There is no shortage of agentic workspaces these days. I do really love how there are so many different takes on the problems and solutions. Ah, open source, and the beauty of choice! In some of my…
I argued IoC was pointless in JavaScript, forgetting I’d published my own container to npm
Why I built ioc-manifest: convention-based DI codegen for TypeScript and Awilix
Robots Killed My Career: Long Live Flowcharts
I don't talk about work much on here, but I work in open-source software, and we just released Strudel Flow 2 , a new version of our visual music sequencer built with React Flow and Strudel . Version…
AudioRouter's Memory Diet: From 960 MB to 30 MB in Four Steps
I noticed something odd while was running my streaming route: Task Manager showed the window using between 800 MB and 1 GB of memory. For an app whose job is to move audio from a microphone to…
How I Finally Started Using a Calendar
Calendars and notes never became habits for me. Then one small Mac app found a place in my life, and years later I began to worry about losing it.
Durable Workflows in Go with Temporal
When an HTTP handler is the wrong place for work that must retry, wait on a third-party API, and finish later — Temporal and Go.
St. Louis Field Notes
Miscellaneous notes on St. Louis slang and customs, from pronouncing Carondelet to defining a hoosier.
South Grand
International restaurants and shops along South Grand Boulevard
The Silent Crash: How to Fix Biber Dying Mid-Compile in VS Code
Nothing derails a writing session quite like a $\LaTeX$ build that fails without telling you why. You hit save, latexmk spins up, and suddenly the compiler halts with a vague Error return from 'biber…
Fuji Sun
I wanted to know if, when and where you could see the sun setting right on the peak of Mount Fuji. So I worked with Claude Code to build a Fuji Sun simulator. You get to see the cone where you can…
Custom Highlight Universal Selector ::highlight(*)
I recently added a universal selector for CSS custom highlights, ::highlight(*), to the relevant CSS Specifications (the bulk of it is actually in CSS Pseudos not CSS Custom Highlights) and…
subbed
I've created this app to share videos with my friends who don't speak English. It lets you import a Youtube video, transcribe its audio into an SRT subtitle file, then translate it into different…
I Took a Shower With My Personal Assistant
I talked through this blog post with an AI agent while taking a shower. By the time I was dried off and dressed, it was live. Seriously. I called Sandy, my ChatGPT Dot, and rambled about the…
MacOS Infostealer “adapts” to new Keychain Protection
MacOS sample adjusts behaviours to adapt to new keychain protections
When to hire Fractional: Post-funding
You've just raised your first money. Engineering now has to go quicker, professionalise, plan further ahead and keep today's customers happy, all at once, often with a founding engineer holding the…
Making a VGA Driver in SystemVerilog
One of my favorite labs in college so far has been my Digital Logic Design Lab. Two years ago the final few labs of the course involved building a VGA driver. While that might sound intimidating, it…
I'm with Linus
The Luddism is getting crazy. I follow plenty of forums and subreddits, many of them on AI. Western society was polarized before, and the recent heated discussions on AI become yet another symptom of…
Nuova postazione, Acer Nitro N50-656 ed LG 27US550
Nuova postazione nata per caso e necessità Ho sostituito da una settimana l'iMac 27 del 2009, onore alla resistenza di questa macchina, dopo 16 anni abbondanti guasto alla scheda Wi-Fi ed al…
Finding state bleed in Google Search
What happens without a search query?
Reading "Network Flow Analysis" by Michael W Lucas.
Reading “Network Flow Analysis” by Michael W Lucas. Table of Contents 1. Body 1.1. References 1.2. What is a flow? 1.3. Where to put flow sensors and collectors? 1.4. How to start using it. 1.5. A…
Bromp Saves the World
A few weeks ago, Art and I dropped my car off at the shop after work again , got skunked at the thrift store again , and wandered back home. I worked on a knitting project, ate a criminal amount of…
Homelab 2026: Ethernet over coax and a NAS that heats the room
I moved, ran Ethernet through the apartment's TV cable, and grew my homelab to four machines. Then one DNS update meant no device in the house could load a website.
前沿实验室怎么说:用 AI 提升企业效率的方法与证据
综述 Anthropic、OpenAI、xAI、Google 和各家 neo lab 的官方博客,整理企业用 AI 提效的做法;neo lab 部分只收有独立证据的案例。新增一节谈多智能体和长时间运行的智能体:何时值得用、怎么部署、怎么记账。
Guest Garage Control Page for Home Assistant
Every so often someone needs to get into our house while we’re away, like a family member dropping something off or a repair person showing up early. I didn’t want to hand out a garage remote or set…
Does Jujutsu Work with GitHub? Why the Name? 7 Questions Answered
Seven questions Git users have about Jujutsu (jj): GitHub compatibility, missing Git features, the learning curve, using it at work before v1.0, and the story behind its name.
Documenting certificate distribution pain points for the Python ecosystem
I'm writing this blog post on the same day as the eMudhra Intermediate CA compromises news was published so the memory of what was required from me and unfortunately volunteer maintainers today is…
Session #17: Forrest of Marhenda
A research trip to the enchanted forrest creatures of Marhenda. Entirely improvised and played live, nothing prerecorded. Used in this session: iPad with 7III Tap , Ableton Live . All synths stock…
Scaling to $1 million: What You Need to Do to Beat 91% of Businesses
Only 9% of small businesses reach $1 million or more in revenue.
The Rise of Highly Personal Software
I think there’s a strong desire for uniquely personalized software permeating the market these days, spurred by the commodification of cheap large language models from Anthropic, OpenAI, and Google.…
Tokenmaxxing is a Race to Nowhere
Unlimited tokens don’t buy quality. With coding agents everywhere, tokenmaxxing is a race to nowhere. The developers who win build for people.
FrankenChat
I’ve been doing some simple experiments probing what kind of persistent identities we get out of language models. Here, I’ve put together a small harness that carries on a conversation with multiple…
Inspecting RustRadio and GNU Radio streams dynamically
When building software defined radio flowgraphs it’s common to want to inspect the live data as it flows through various stages. In GNU Radio, and RustRadio, the handoff points are very clear. They…
Zoomable Serpent Ski
As you wish As a friend of mine pointed out, a fractal is more fun if you can zoom in on it! Rather than handle dragging & zooming myself, I’ll reach for Konva . A little longer this time, even with…