Featured post what's this? ✨ Can Claude Read Your Website? A Live Experiment in AI Legibility — Change Log A live case study in which Claude Opus 4.6 attempted to read three websites — johnbrennan.xyz, agentweekly.ai, and aitoonup.com — revealing which design patterns make content visible to AI agents and which leave sites completely dark.
Can the MacBook Neo replace my M4 Air? Many of us wonder if the MacBook Neo is 'the one'. Because I have a faster desktop (currently a M4 Max Mac Studio), I've always used a lower-end Mac laptop, like the iBook or MacBook Air, for travel. I've used MacBook Pros in the past, but I like the port...
I don't know if I like working at higher levels of abstraction AI tools push us to higher abstraction. I'm not sure I like what that costs us.
Why Vibe Coding Won't Build More Successful Products. Why vibe coding isn't shipping more successful products. More Code ≠ More Products.
Hiding code in code - Hart Traveller You can hide arbitrary code (or any data for that matter) in self executing code. A neat example and a python package (PyPi | GitHub) are included.
Exclusive scheduled jobs using database locks Using locks implemented as rows in an SQL database enables running scheduled background jobs in an application, providing a best-effort guarantee that only one application instance at a time runs …
Beating App Store review: lessons from shipping a minimal indie game What App Store ‘Minimum Functionality’ really means, based on shipping a focused, minimal indie game and navigating multiple review rejections.
Building Better Country Selects A practical UX critique of the standard country dropdown, with guidance for better search, ordering, labeling, and implementation.
Breaking Down the Jelly Slider After the Jelly Slider implementation gained a lot of attention, I decided to write this post to explain how it works in detail and show…
The Noble Path It is a truth universally acknowledged that an indie hacker in possession of a widget must be in want of a business model... Every tool is a startup now. Every script is a SaaS product. Every neat little hack you cobbled together on a Sunday afternoon ...
Bus travel from Lima to Rio de Janeiro In 2025, I traveled by bus in South America, starting in Lima, Peru and ending in Rio de Janeiro, Brazil. Here are some details for anyone interested in doing the same.
Intent-Driven Development As software engineers, I get the feeling we’re moving almost entirely away from code. And I don’t just mean having conversations with agents where they write all the code. But even further, maintaining just a system of prompts that describes the software....
Playful leadership development in mid-career academic mentoring and coaching Matthew Beach and Joanne Yao have a bit of fun with playful approaches to mid-career academic mentoring and coaching
The Mechanics of Autonomous Software Translation 2026 started with a boom of AI-assisted autonomous translations, on 14th of January, Cursor published their post on Scaling long-running autonomous coding in which they created translations of a browser, Java LSP, Windows emulator and Excel. This was foll...
Chasing Boring at Just the Right Speed Asking the Right Questions A while back when I was looking for a fulltime gig (and when I was contracting, of course), I had the opportunity to do a bunch of interviews (including the kind of...
Introducing: Code Canary If you’ve got any kind of engineering background, you’re probably spending most of your waking hours enmeshed in a possibly unhealthy relationship with a coding agent like Claude Code. …
Parametricity, or Comptime is Bonkers Here's a puzzle. Without looking at the body, what does this Rust function do?
work_mem: it's a trap! | My DBA Notebook My friend Henrietta Dombrovskaya pinged me on Telegram. Her production cluster had just been killed by the OOM killer after eating 2 TB of RAM. work_mem was set to 2 MB. Something didn’t add up. Hetty, like me, likes playing with monster hardware. 2 TB of...
The Upfront Investment That Saves 10,000 Hours There’s a pattern in tech where people mock the setup cost of automation without accounting for the return. I spent a day building a Grunt-based WordPress bootstrapper in 2013. Fortune 500 co…
Code Quality in the Age of Coding Agents An adaptation of an internal talk I gave during a company wide ai-adoption week.
Get in Line (Part 2) - Vyukov's Queue and its specializations In the last post we got a low-latency SPSC queue. But we often need multi-producer or multi-consumer or both - for example if you want to spin-off a bunch of threads in a threadpool to do some work and then aggregate the result back in the main thread, or...
The Debt Beneath the Dream Every gambler knows that the secret to survivin’ Is knowin’ what to throw away and knowing what to keep ‘Cause every hand’s a winner and every hand’s a loser And the b…
Temporal: The 9-Year Journey to Fix Time in JavaScript JavaScript's Date object has been a source of bugs for three decades. Temporal, which just reached Stage 4, is a modern replacement with immutable types, first-class time zone and calendar support, and nanosecond precision. This is the story of how Bl...