New
The latest blog posts to take off on Hacker News. 1,423 posts.
Verification debt: the hidden cost of AI-generated code
I’ve forgotten how to write code, or at least I think I have. Hard to be sure, I haven’t done it for a while. But then, I start to muse…
Some Words on WigglyPaint
In early December 2023, I wrote a drawing program called WigglyPaint and published it on Itch.io.
LLMs work best when the user defines their acceptance criteria first
One of the simplest tests you can run on a database:
C# strings silently kill your SQL Server indexes in Dapper
If you're using Dapper with anonymous objects to query varchar columns, you're probably sending nvarchar(4000) parameters — causing CONVERT_IMPLICIT on every row and defeating your indexes. Here's the fix.
TypeScript 6.0 RC
Today we are excited to announce the Release Candidate (RC) of TypeScript 6.0! To get started using the RC, you can get it through npm with the following
macOS Tahoe windows have different corner radiuses
I’m sometimes late to notice new and terrible things about macOS 26 Tahoe, because I use it only for testing, on a secondary Mac. My main Mac remains on Sequoia, as enforced by Little Snitch . I was of course aware that app windows on Tahoe have exaggerated corner radiuses, but I was unaware until now that the window…
GPL upgrades via section 14 proxy delegation
I am not a lawyer. This is provided solely for the purposes of general information and does not constitute legal advice, guidance, or counsel. No attorney-client relationship is established by the provision of this information, and no reliance should be placed on this information in lieu of seeking professional legal…
Good software knows when to stop
Good software knows what problem it solves and what needs to be tackled by another tool
Smalltalk's Browser: Unbeatable, yet Not Enough
The four-pane System Browser has shaped Smalltalk development for forty years. It’s still brilliant at providing context. But the real problem may not be the browser itself—it may be the lack of composition between the tools that surround it.
Relicensing with AI-Assisted Rewrite
Exploring the chardet v7.0.0 controversy: Can an AI rewrite legally 'launder' a library from LGPL to MIT?
My “grand vision” for Rust
I don’t think I’ve ever quite articulated my “grand vision” for Rust, despite having written a fair bit about the language and its features. There is a lot I could say here, but currently there are three directions of development which I find particularly interesting:
You need to rewrite your CLI for AI agents
Human DX optimizes for discoverability. Agent DX optimizes for predictability. What I learned building a CLI for agents first.
Making Firefox's right-click not suck with about:config
A practical about:config checklist to declutter Firefox right-click menus on macOS, disabling AI/chatbot prompts, link previews, OCR, visual search, and other low-value context menu items.
What canceled my Go context?
How Go 1.20's WithCancelCause and Go 1.21's WithTimeoutCause let you attach a reason to context cancellation, plus a gotcha with manual cancel and the stdlib pattern that covers every path.
Agentic Engineering Patterns
Patterns for getting the best results out of coding agents like Claude Code and OpenAI Codex. See my introduction for more on this project.
Log messages are mostly for the people operating your software
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Claude is an Electron App because we've lost native
Article argues that Claude is not an Electron app not because LLMs can’t do it, but because there are no advantages left for native
Nobody ever got fired for using a struct
Rust struct serialization problem caused by many nullable SQL columns.
Parallel coding agents with tmux and Markdown specs
A practical workflow for running 4–8 parallel coding agents using Claude Code, tmux, and a Markdown-based feature design system.
Process-Based Concurrency: Why Beam and OTP Keep Being Right
What makes BEAM and OTP different from async/await, threads, and actors. Process isolation, supervisors, and why Erlang's model keeps winning 40 years later.
Why does C have the best file API
Ok, the title is a tongue-in-cheek, but there's very little thought put into files in most languages. It always feels a bit out of place... except in C. In fact, what you get is usually a worse version of C.
When does MCP make sense vs CLI?
I’m going to make a bold claim: MCP is already dying. We may not fully realize it yet, but the signs are there. OpenClaw doesn’t support it. Pi doesn’t support it. And for good reason.
Ape Coding [fiction]
Ape coding is the software development practice where a human developer deliberately hand-writes source code.
RE#: how we built the fastest regex engine in F#
around a year ago, we built a regex engine in F# that not only outperformed the ones in dotnet, but went above and beyond competing with every other industrial regex engine on a large set of industry-standard benchmarks. it also supports the full set of boolean operators (union, intersection, complement) and even a…