Eggnob Switch Lives!
Ahhh... There she blows! Eggnob is running on the Nintendo Switch! And the port was incredibly simple, once I worked out how to get access to the SDL3 Switch Sku. (Derp) Massive thanks to Ryan and co…
Style guide: every element this site can set
Every block and inline element build.py can render, in one page, so a regression in style.css or the markdown pipeline is visible at a glance.
Simply Remember It 2.2.8: Logging Without Opening the App
What started with the same subscription fix as the rest of my apps rapidly grew into two new Shortcuts actions and a handful of sharing fixes.
How to Find an Exact Gmail Thread with Codex or Claude
Use Gmail’s Message-ID to point Codex or Claude at one exact email and retrieve the complete conversation rather than a plausible result.
My Gitconfig
The global git config I carry to every machine
Browser automation with Pydantic AI + Playwright
When we build agents, we often want to give them the ability to browse the web: open webpages, navigate from one page to the other, and read the content of a webpage. By combining Pydantic AI with…
Debugging Little Memory 2.0 Diary View Scrolling
I was working on fixing a bug in Lilmem 2.0 where switching from the diary’s Calendar mode to Memories mode caused a bug where the diary’s content “stuck” in a specific day.…
Will Embedded Software Remain an Afterthought?
20 August 2026 by Phillip JohnstonI have been thinking about this quote from Patterns in the Machine: Software is complex, challenging, and time consuming and requires skilled professionals—no matter…
The Polyglot's Dilemma: Conformance Testing a Dozen Specs in as Many Languages
MongoDB engineers juggling many implementations of many specs. At MongoDB, we develop a dozen client libraries (“drivers”) in a dozen programming languages. A few wrap shared cores…
Updating a side project with AI in 275 commits
I used an AI agent to make a big update to my GiftyWeddings.com website, taking it from a gift registry to a full website builder in 275 commits.
AI code comments are getting unbearable
AI’s have appeared to learn a new trick to help them with context. It looks like this was done to help an agent returning to a code base for improvements. What they do is to add a lot of verbose…
Vibe coding and quality
When you hear that some app was “vibe coded”, how much quality do you expect? As recently as last year, vibe coding seemed like nothing more than a toy to me. Sure, it was cool that you could tell a…
TermSurf 0.2.0: Graphical Apps Inside the Terminal
TermSurf 0.2.0: Graphical Apps Inside the Terminal
The engineer gets its own machine
The architect/engineer split from the last post became an actual CLI, and the engineer role moved off my laptop onto a machine of its own.
Grug Speak, Grug Outside, Grug Happy
Before my thinkboi days I used to be a developer. Writing code instead of words, all day every day. Like most developers, I eventually joined a team, and various startups, and so on and so forth. I…
Cheap code is changing how I debug
Do you remember when software was expensive to make? When you couldn’t just snap your fingers and make some code appear with a full test suite? Crafting code this way was hard, but it was…
Thinking Piece: Is Creative Coding with AI still Creative Coding?
There are semantic landslides happening right now. In the last few months I have observed that the term “Creative Coding” […] The post Thinking Piece: Is Creative Coding with AI…
Framing Photos With Python
How to frame your photos with python with all the data you want
pg_statviz 1.2 released with PostgreSQL 19 support and new features
Extension pg_statviz for time series analysis & visualization of Postgres internal statistics has released version 1.2 with PostgreSQL 19 support, a new blocking locks analysis module, and an…
Emacs Chat with Sacha and Prot
Today I participated in the Emacs Chat series hosted by Sacha Chua and Protesilaos as a co-host. We explored my Emacs configuration . It was a very nice opportunity to share workflows and learn new…
Include Full Content in RSS with Hugo
RSS is a web-standard for subscribing to blogs. You, a reader, can enter this web-site’s URL into a RSS feed reader program and it’ll fetch updates. That’s how you subscribe to a…
How to delete recurring tasks in solid queue?
This article explains how to delete recurring tasks from Solid Queue.
Running the FyshOS desktop on Surface Pro
I have been putting a load of my time into polishing the Fyne based desktop – and it is becoming a very productive system that I use day to day. I have presented the topic at a few events…
ESP32-Swindle 0.3 is out
Now that the new esp idf and associated rust binding (esp-idf, esp-svc,..) are out, time to update esp32-swindle with S3, C3 and C6 support You'll need to use the Espressif BLE provisioning tool to…
The Wix Studio Image Overwrite Problem (And the CMS Workaround)
Updating images in Wix Studio can be frustrating when re-uploading identical filenames creates duplicate clutter instead of replacing the asset. Learn how to use the Wix Studio CMS to build a…
💭 I Smell Emacs and Smalltalk on DSH (DeepSeek Harness)
Last week, Deepseek released DSH, an agent harness with very interesting approach.The same pitch used by VS Code and Eclipse RPC (2024): “everything is a plugin” but this time it’s a bit different.…
Call is a Terrible Method Name
You see it all the time…in Rails codebases – developers frequently using the method name call to invoke an action.
A2A: Adversary to Adversary?
When do you choose Agent2Agent over MCP or subagents? It all has to do with administrative boundaries.
Re-Launching InvoiceMore
I re-built and re-launched InvoiceMore, my own time-tracking and invoicing software. Since I am doing a lot of consulting lately, I am back to billing for services, time, and sending invoices to be…
Harbor Is Live: Why We Built Our Own Evernote
On August 1st, Harbor went live. It's a private, own-it-for-life note-taking and document app — notes, scans, photos, PDFs, recordings, web clips — built by Cloudmanic Labs, the company I founded and…
Tab completion after colon
Volume 10 , Issue 28 ; 20 Aug 2026 Tab completion is great. But it doesn’t work by default after a colon. Unless you do this. Since long before my time, the Saxon products have used a colon to…
Speculative Decoding Across My Fleet: Gains From +200% to -80%, and No Single Setting Fits Every Model
Speculative decoding swept across the fleet: three draft mechanisms, per-model sweet spots from depth 3 to 5, one model that triples, and one that breaks.
A year of databases: how I fell in love with programming again.
NOTE: LLM is not involved, typos and others mistakes are original.
Nexo Is Evolving Along With the Series
Eight posts of this series are published. Post 8 is drafted and sitting in my queue. Somewhere between writing post 1 and today, nexo_ai went from whatever it was in July to 0.11.0, and nexo_mail…
What an AI-First Programming Language Would Look Like
Current programming languages are full of syntax that AI doesn't really need. If AI is the one writing the code, why bother with brackets and commas? I explore two ways we could redesign languages…
Making a notes app feels simple, Until it’s not.
Making a notes app feels simple, Until it’s not.
Getting the Steam Deck LCD working on a Raspberry Pi
The BOE TV070WXM-TV0 LCD used in the original Steam Deck can be had for around $30. It's a serviceable 7" touchscreen with 400 nits of brightness and a resolution of 1280x800 (for a sharp 216…
Extending CircuitPython with Native Modules - Part 2
As described last time , for CircuitPython Day 2026 , I wanted to get closer to the metal and write a module in C that I could call from CircuitPython. I had hoped this would be a single article, but…
Clojure Vs Rust - Waiting for clj.rs
Notes Clojure Vs Rust - Waitiing for https://clj.rs Special case The problem .jar loading unloading thousands of times GNU Parallel https://www.gnu.org/software/parallel/ If there way to spawn lot of…
OCI Resource Manager Drift Detection: Alerts Without Events
OCI Resource Manager drift detection emits no Events service event, so the obvious alert rule never fires. Build a polling sentinel with OCI Functions.
replacing my screentime with reading
This week my goal is for my Kindle to be at the top of my phone's screen time report. The last year, I've been working to replace my scrolling habit with reading. And recently started vibe coding…
Going freestanding
Porting Go's standard library to platform-agnostic C.
Sharding pytest by file cut collection time from 3 minutes to 40 seconds
When your pytest CI unit test workflow starts taking longer and longer, you’ll want to speed it up. We don’t like to wait for tests to complete in CI, and while you can run them locally, eventually…
Run Claude Code on DeepSeek Models in a Single Command
I’ve probably mentioned that I’ve been trying to stop paying Opus prices for work that does not deserve it. I wrote a whole cheapskate’s guide about it , and since then I split my rig so the…
Go 1.27: The Release That Makes Development Feel Smoother
A new Go release usually arrives without making much noise. There is no collection of new keywords to memorize, and no official framework trying to replace everything you already use.
How do I make a live mapping system for the Longest Journey?
When I attempt the Longest journey in the EU, I want to keep people online informed where I am and how the trip is progressing, and do this automatically if I can. There is a sort of racing element…
Handing side quests to a second Claude session
TL;DR Claude Code sessions on the same machine can now list and message each other. That is the right tool for a session already mid-task, and the wrong one for starting a new task: a session that…
Introduction Finger
Introduction Today I stumbled on an article about the Finger protocol (Finger: the 1971 social network that never died, written by Andros Fenollosa at en.andros.dev) and learned there was a social…
介绍下Finger
简介 今天刷到一篇讲 Finger 协议的文章(Finger: the 1971 social network that never died,en.andros.dev 的 Andros Fenollosa 写的),才知道原来 1971 年就有社交网络了,而且我的 Mac 上一直自带它的客户端。文章里提到的 happynetbox.com 是个把 Finger…
Rendering Maps in Terminals
I’ve been working for years with geospatial data, the ecosystem is vibrant (thanks to DuckDB), but I’ve always missed some tools in the terminal to visually look at geometries in context.…