Every good benchmarking story starts with a hunch. Mine was that Kroxylicious is cheap to run — I’d stake my career on it, in fact — but it turns out that “trust me, I wrote it” is not a widely accepted unit of measurement. People want proof. Sensibly.
Many people would like to analyse which jobs, companies and industries are most exposed to AI, and assign scores, build charts, and map that against the progress of LLMs. I think this is mostly impossible: you don’t know how the jobs will change, you don’t know what else will change around this, an
I’m a betting man; I just enjoy making bets, even when there are no stakes at all. Examples of my enjoyment of betting And when you talk about bets, you end up talking about odds. It turns ou…
We cut middle managers across the organization because AI allows us to have more direct reports per manager while still measuring and mentoring our teams effectively. – Matthew Prince, How I Choose…
Form may follow function, but use doesn’t follow design
At this point, you have no doubt heard about GitHub’s availability woes over the past several months. In April, Mitchell Hashimoto (of Hashicorp fame) wrote a post about how he is moving his …
I have always wanted to own a Montblanc Writers Edition dedicated to Carlo Collodi, the Italian author whose real name was Carlo Lorenzini. He took his pen name from the Tuscan village where his mo…
Technical Beauty Episode 37. The reduction is conceptual: most Unix tools take flags, a verb and switches, but find takes an expression, a small query language. The arguments after the starting path are terms: primaries that test or act (-name matches a glob, -type f selects regular files, -mtime +30 means modified more than thirty days ago, -size +100M means larger than a hundred megabytes, -newer ref means changed more recently than a reference), and operators that combine them (terms next to each other are joined by an implicit logical AND, -o is OR, ! is NOT, escaped parentheses group). find walks the directory tree and evaluates the expression for each file, firing the actions where it is true. The surface is small (find . -type f -name '*.conf'; find /var/log -mtime +30 -delete; find . -size +100M -exec ls -lh {} +) and the -exec action has two forms: {} + batches matches into as few invocations as possible, {} ; runs once per file. For safe composition, find . -type f -print0 | xargs -0 cmd terminates each filename with a null byte so spaces and newlines do not corrupt the pipeline, where the naive for f in $(ls) breaks. FreeBSD ships BSD find in base, BSD-licensed and POSIX-clean; GNU findutils (GPL) grew more primaries (-printf, regex variants) and is a pkg install away as gfind. Dick Haight wrote find, along with cpio and expr, for Version 7 Unix (1979), in the Unix Support Group rather than the research room; the researchers were faintly put off by the prefix-expression syntax and kept it because it was useful. Forty-seven years on the grammar is unchanged, and the modern descendant fd (David Peter, sharkdp, Rust, 2017, MIT and Apache licensed) reproduces the same idea: a small set of predicates over a tree walk. find is the rare Unix tool that is a little language pretending to be a command.
There is a person on your team right now who knows something nobody else knows.
Maybe it is how a specific edge router was configured during an emergency two years ago, a workaround that was never documented and never properly fixed. Maybe it is which vendor's escalation path
Which age-gates should be skill-gates and vice-versa?
In the UK, it is illegal to buy alcohol if you are under 18. Similarly, in most countries, you cannot vote until you have reached a specific age. These are age-gates. You do not need to prove your competence to drink, vote, smoke, or get married; you just need to be old enough. Some things have skill-gates. If you want an amateur radio licence in the UK, you need to pass an exam. You can be…
On Second Thought Episode 09. The reflex is universal: to test a unit, first isolate it; to isolate it, fake everything it touches. The unit test was born pure: Kent Beck wrote SUnit for Smalltalk in 1994 and adapted it into JUnit with Erich Gamma in 1998, to test library code (parsers, algorithms, data structures, pure functions) with nothing to mock because there was no world to touch. The practice was carried wholesale into application code, which is nothing but world (a database, a queue, a payment API, a clock, a mailer), and to keep calling the tests unit tests we faked the world; dependency injection arrived to give every collaborator a seam through which a fake could be inserted, and the architecture was reshaped so the fakes would fit. Martin Fowler's 2007 essay Mocks Aren't Stubs named the classicist and mockist camps; the London school (Freeman and Pryce, Growing Object-Oriented Software, Guided by Tests, 2009) is coherent and disciplined, but the industry generalised it until unit test came to mean test with the dependencies mocked out. The cost arrives in three layers: daily friction (forty lines of mock setup to two of assertion; refactoring with no behaviour change turns fifty tests red because mockist tests assert on interactions, not behaviour); false confidence (four hundred green tests, broken checkout in production, because every dependency was a mock); and the hidden design cost (interfaces, seams and injection points that exist only to receive a mock). The most testable software ever written has no mocks at all: a Unix filter (grep, awk, sort in the FreeBSD base) is pure, text in, text out, isolated by construction because the kernel and the shell handle the world. Doug McIlroy's pipe (1973) was, in modern terms, a functional core with an imperative shell. Gary Bernhardt named that shape functional core, imperative shell in his 2012 talk Boundaries; Alistair Cockburn called it ports and adapters (hexagonal architecture, renamed 2005). A pure core needs no mocks; a thin shell needs only a few real integration tests. A mock is not a tool, it is a reading on a gauge of how far the logic was allowed to wander into the world.
The skeleton library ⊗ Could humans become “Sun-eaters”?
No.404 — Le mal du siècle, bis ⊗ AI Resist List and the Luddite Lab ⊗ Microcosm Industries ⊗ Narrative inheritance ⊗ Books in an age of AI ⊗ The near-term future of climate adaptation ⊗ The Neanderthal dentist
Weeknotes 390: Google I/O revealed something bigger than new features: a shift from connector to source. When the search engine becomes the author, who owns the knowledge—and who's responsible for it?
And more human-picked notions from last week’s news on physical AI and tech impact.
A GrandPerspective map of my laptop’s hard drive. The vertical green block is Apple Photos. The large yellow blocks are videos I neeeded to offload to an external movie drive. Lots of smaller…
Not cheap, but appealing Is my future portable drive one or more 8 TB strips (such as one of these) that I carry with me and plug into one of these? I laid out the problem in more detail here. Noth…
As Q&A with AI chatbots replaces search, the Web is starting to look run-down, and in some ways is being abandoned. If that continues, what happens to the Web’s architects, authors, and i…
Four streams that have taken me to the margins of every community of practice to which I belong
The Var River below the high village of Touët in France. This is going to continue the series of posts that began with The Inundated Delta, which was a response to Dave Snowden’s thoughtful p…
space-tree is a tree-based workspace manager for Emacs. Workspaces are a battle-tested UX concept across operating systems, but in Emacs and most OSes alike, th...
I’m calling it now, the adoption of AI agents into software development will be one of the most costly mistakes in the field’s history. Agents cannot program, and it’s taking longer and longer to realize that they can’t. They are a highly sophisticated statistical model designed to mimic the distribution of programming. The output is broken, but in a way that’s getting harder and harder to detect. Which is exactly what you’d expect from an increasingly accurate statistical model.
The Industry Is Normalizing Rushed, Unreviewable Code.
Tanstack got hijacked via its own CI. OpenAI wants to loan you engineers so you can stuff AI into everything. Bun just rushed its Rust rewrite with AI.