Freshly inked
Beyond Human-in-the-Loop
If you’ve seen my YouTube channel and this blog, you’ll know that for the last few years—ever since ChatGPT first came out, really—I have written and spoken almost exclusively about the latest developments in agents and how to build systems around LLMs. But, for a while, I want to pivot …
Recent essays
How I Cut an AI Agent's Token Use by 94%
I’ve been writing about specialized agent harnesses and compiling them from task specifications for a while, and I realize the idea can sound abstract. So here’s a concrete example from a workflow I run every day.
Cognitive Debt and the Future of Programming
Geoffrey Litt recently gave a talk at AI Engineer called “Understanding is the new bottleneck”. Simon Willison boiled its central phrase down to “understand to participate”: if agents are writing more and more of our code, we still need enough understanding of …
The tension between local and cloud agents
I’ve grown to strongly prefer agents running locally on my own machine. I was doing so even before the latest crop of features from Anthropic and OpenAI that made it possible to remote-control local agents from their mobile apps — something that has made the …
From Emacs to Agents
I used to be a heavy Emacs user. Note the past tense.
The Complexity Ratchet
Recently, Jasmine Sun wrote a long op-ed in the New York Times about the notion of a permanent underclass. Everyone at the big AI labs is convinced that AI will eventually replace all human labor — all human knowledge work — and that if we don’t calibrate our …
A Tale of Two Job Markets
It was the best of times. It was the worst of times.
Everything else, year by year
- Apr 23O Moat, Where Art Thou?
- Apr 17Skills, CLIs, and MCP: What They're Actually For
- Apr 6Human-Agent Interaction Is Becoming the Bottleneck
- Apr 4Meta-Harness: Automating the Benchmaxing Loop
- Mar 16Your Agent Sessions Are Disappearing
- Mar 16Surprising a model
- Feb 9MCP Knife: A CLI Swiss Army Knife for MCP Servers
- Feb 3mcpblox: Transform and Compose MCP Servers with Unix Pipes
- Jan 31The Three Abstractions That Make AI Agents Real
- Jan 28Confessions of an AI Hype-Bro
- Jan 10Subagents, Commands and Skills Are Converging
- Dec 24The Birth of a New Platform
- Dec 20Unix Was a Love Letter to Agents
- Nov 2Coding Agents Are Outliers
- Sep 14Narrate Your Work
- Sep 13The Assembly Language of Knowledge Work
- Sep 7My Video Production Stack (for YouTube)
- Aug 16Natlang Code
- Aug 6The Mac-vs-PC Story Playing out in CLI Agents
- Jul 28AI is a Mirror
- Jul 27Plato's Cave of AI Agent Evals
- Jul 25Fixing Auth for Personal AI Agents
- Jun 7Does AI Make Programming Feel Like Factory Work?
- Jun 2The Personal Side of Jevons Paradox in the Age of AI
- Apr 26The Programmer's Climb
- Apr 11Dijkstra would’ve (incorrectly) HATED vibe-coding
- Mar 29The case against local LLMs
- Mar 28 "But LLMs are not deterministic!"
- Mar 23End-user Abstraction
- Feb 28AI coding - From Tactics to Strategy
- Feb 23Writing is building, but software is now content
- Feb 23Human evals are outsourced vibe checks
- Feb 16When Compilers Were the 'AI' That Scared Programmers
- Feb 8Spec-driven Vibe-coding
- Feb 6Don't credit AI
- Jan 30Emacs in the age of AI
- Jan 17AI resistance considered harmful (for programmers)
- Nov 26GPT Monologues
- Aug 20Metaphors for thinking about LLMs
- Jun 8Re: Why I don't use Copilot
- May 21AI doomers will doom us
- Mar 19IDEs and CAD
- Mar 15LazyPost: Programming in the age of GPT and CoPilot
- Feb 26LLMs are compilers
- Feb 14A spiritual successor to Emacs
- Feb 12Augmenting LLMs with APIs
- Jan 25Prompt LLMs for code, not arithmetic
- Jan 22Moving off Tumblr
- Apr 15Manifesto for my channel
- Aug 8Airspace
- Mar 14Church numerals in ES6
- Oct 27IDEs in the cage
- Oct 6De-skilling
- Aug 17How software grows
- Jul 22When to do a rewrite
- Jul 21Learning your life
- Jun 24Garland Words
- Jun 23Lurking Smalltalk
- Jun 15Heartbeats
- May 17Why technologists want to secede
- May 3Bleeding buffers
- Apr 13You can't run with the machines
- Apr 7More on fat vs thin clients
- Apr 5Asynchronous Learning is More Inclusive
- Mar 16The Automatic Corporation
- Mar 13Pebbles and Projects
- Mar 12Shedding
- Mar 8The tool divergence
- Feb 23The Programming Language Consensus
- Feb 19Technium
- Feb 18Hand-drawn maps
- Jan 23Star Trek vs Babylon 5
- Jan 20Fat Client, Thin Client
- Jan 19The Contours of My Attention
- Jan 11Go lang
- Jan 8The Human Resolution Threshold
- Jan 1The Distraction Addiction
- Dec 30Best of 2013
- Dec 12Generation AD
- Dec 10To tool or not to tool?
- Nov 14Automating software engineering
- Nov 10Sharp tools, dull minds
- Nov 4Malcolm Gladwell and the narrative fallacy
- Nov 2The 1964 origins of responsive design
- Oct 30What changed in 1991 in India?
- Oct 29(A tiny step towards) Automating Web Design
- Oct 23Rules for Computing Happiness
- Oct 17Should I do a PhD?
- Oct 12My review: The Year Without Pants
- Oct 7How will you read your files in a hundred years?
- Oct 1 "The Mundanity of Excellence"
- Sep 23Why you should subscribe to my newsletter
- Sep 16Research Roundup: Programming and Remote Teams
- Sep 12Is there a STEM worker shortage?
- Sep 10Rangers
- Sep 9Taking your company completely remote
- Sep 6Long form on the web
- Sep 5We are all remote workers
- Aug 28Talented Beast
- Aug 26Asset allocation is everything
- Aug 21Maintenance is not a bad word
- Aug 19The cost of memory safety
- Aug 15How Hugh MacLeod got my money
- Aug 12The difference between a herd and a crowd
- Aug 9HTTP 2.0 marks the end of an era
- Aug 1The Real New Aesthetic
- Aug 1The Organic Digital
- Jul 31Empirical Analysis of Programming Language Adoption
- Jul 30Native mobile apps are a stopgap
- Jul 23The perils of being a knowledge worker
- Jul 20C++14
- Jul 17How I do email
- Jul 10Balance
- Jul 8 "We don't do email, email does us"
- Jul 6Waiting faster
- Jul 2NPS
- Jun 29The laziness of synchronous work
- Jun 22Mindfulness sells
- Jun 7CPU pipelines and the structure of work
- Jun 3Backup in the age of the cloud
- May 22The One Thing
- May 16Games as a hook into CS
- May 15What do you think computer science is?
- May 6Future programming
- Apr 14Patterns of use
- Apr 7 Abolish the "Save" icon
- Apr 5RIP Ebert
- Mar 24Start here
- Mar 23We are all Mad Men
- Mar 22Meetings are mutexes
- Mar 20STEM jobs
- Mar 17Strong opinions, weakly held
- Mar 14Zero Knowledge
- Mar 12What I work on…
- Mar 12Addicted to work
- Mar 7Moving to Chrome OS
- Feb 28From the mouths of babes
- Feb 26Factory machines
- Feb 21The new luxury
- Feb 10Productivity isn't
- Feb 6Colorful geometry
- Feb 5Review: Close to the Machine
- Jan 31Computer Science PhD trends
- Jan 29Tackling tail latency
- Jan 28Blue collar coders
- Jan 27The void
- Jan 18Engineering, Culture and Tools
- Jan 13So Good They Can't Ignore You: Review
- Jan 8Scaling communication: email vs shared documents
- Jan 7The rise of fimperative programming
- Jan 4Grateful for technology?
- Dec 31Best of 2012
- Dec 29New theme
- Dec 26Good reads of 2012
- Dec 21Writing on a tablet
- Dec 20Quantum of Work
- Dec 12Testing Redux
- Dec 1Need to remember
- Nov 29Some advice on internships
- Nov 25The new C++
- Nov 23Treesaver-based copy of this blog
- Nov 22A Programmer's Thanksgiving
- Nov 21Interviews (and whiteboard coding)
- Nov 16 "The best minds of my generation are thinking about how to make people click ads"
- Nov 9MOOCs will eat academia
- Nov 4A rare retrospective on a decade-long research project
- Oct 31Deep Shelling
- Oct 26Why you would want to program at fifty (or any other age)
- Oct 21Coaching and review
- Oct 18How did software get so reliable?
- Oct 14It Might Get Loud
- Oct 8Poor man's DIY little printer
- Oct 7Money in the Valley
- Sep 30Science = Prediction
- Sep 23Datacenter power
- Sep 21Citation Reliability
- Sep 20New frontiers in text editing
- Sep 13English is heavily left-handed
- Sep 11Writing and happiness
- Sep 4Shitty legacy maintenance
- Aug 30Personal Trainers for Software
- Aug 27The levels of agility
- Aug 26A Twitter-based Anagram Game
- Aug 15The Cubicle Dilemma
- Aug 12What is life like for PhDs in computer science who go into industry?
- Aug 10The lure of work
- Aug 6Review: The Computer Boys Take Over
- Jul 31Productivity porn
- Jul 27What mobile development taught me
- Jul 24Is C/C++ worth it?
- Jul 17On Vagueness
- Jul 15Teaching data structures with real-world examples
- Jul 14How I read now
- Jul 9Management models
- Jul 5The Nostalgia Trap
- Jul 1Working asynchronously
- Jun 27Recent updates to old posts
- Jun 26Social Engineering for Programming Languages
- Jun 19The Interested Minority
- Jun 14Advice to (prospective) grad students
- May 29Operations should be in the computer science curriculum
- May 20Executable Thought
- May 17The need for Easter eggs
- May 16The 7 stages of debugging
- May 13My setup
- May 7Big science funding
- May 2Bug finding and static analysis in the real world
- Apr 21Church numerals in Python
- Apr 17The carrier-messenger wars
- Apr 16The components of a university
- Apr 15Mediated Concert
- Apr 10Reproducing papers
- Apr 9If you see a stylus, they blew it. Not.
- Apr 1Code review. Just do it.
- Mar 28Jonah Lehrer
- Mar 24Computational thinking
- Mar 20Themes: Language
- Mar 19Themes: The Economics of Programming
- Mar 19Showing it
- Mar 18Themes: Modern Work
- Mar 16Blue Java
- Mar 15Innovator's dilemma in programming languages
- Mar 12T-shirts are currency
- Mar 9The intimacy of imperfect technologies
- Mar 4Whither programming language research?
- Mar 3Taylorist Science
- Feb 29Team Science
- Feb 21How to debate
- Feb 20Hookah
- Feb 17Rational Equivalence
- Feb 15Why I blog
- Feb 14Carr and Kelly
- Feb 12Guru moment
- Jan 21Repositories of science
- Jan 18Computation in the wild
- Jan 10The CS assignment I wish I had
- Jan 4Iteration
- Dec 28Best of 2011
- Dec 26How to make your new programming language successful
- Dec 6The 0.1x developer
- Dec 5The monk tax
- Nov 23The programming assembly-line
- Nov 14The abstraction-optimization tradeoff
- Nov 8The origins of Silicon Valley
- Nov 7Jumping to analysis
- Oct 27The empirical science of happiness
- Oct 17Flash Crisis
- Oct 2Why developers should learn the economics of code
- Oct 2Deft with descriptive filenames
- Sep 25Size is the best predictor of code quality
- Sep 12Smeed's Law for Programming
- Sep 6The Poisonous Long Tail
- Aug 28How things grow
- Aug 26Reading Happiness
- Aug 15GUI vs CLI: Operation vs Expression
- Aug 9The Upside of Complexity
- Aug 1Do you have an RSI prevention plan?
- Jul 28An ergonomic keyboard and mouse configuration
- Jul 11Media Meta Argument
- Jun 27Large Computer Systems are Organic
- Jun 7Emacs as a login shell
- May 21Comments on Stallman's Dystopia
- May 20Stallman's Dystopia
- May 16The Perils of Closed Worlds
- May 9More machines, more reliability
- May 5Teaching as performance
- Apr 27Side effects of PhD programs
- Apr 21dotEmacs Extract: Interactively change font size
- Apr 11Sun Ray
- Apr 11OOP = FP?
- Mar 26The Shy Scientist
- Mar 21The levels of Emacs proficiency
- Mar 19Cracks in Minimalism
- Mar 15tldr summary: The role of deliberate practice in the acquisition of expert performance
- Mar 8In Aggregate
- Mar 3Turn your blog into an online magazine - a blogmag
- Feb 26Michael Crichton
- Feb 20Alone Together
- Feb 17The Cognitive Style of Unix
- Jan 28How the first Gulf War brought modernity to India
- Jan 19How to Write a Twitter Bot in Python
- Jan 13Englsh Wtht Vwls
- Jan 8Presentism
- Jan 5Stephenson on Emacs
- Jan 4Text Input: The Next Frontier
- Dec 31More on and or
- Dec 31Best of 2010
- Dec 30Minimalism is not a viable intellectual strategy
- Dec 28 Parsing "and/or"
- Dec 6Use Accessibility Technologies Before You Have To
- Nov 22Ode to the Album
- Nov 22Editing Google Docs in Emacs
- Nov 20Posting to Tumblr from Emacs
- Oct 4Coding blind
- Sep 29My favorite Chrome extensions
- Aug 28The 18th Century Origins of Lolcat-speak
- Aug 20To jump or not to jump?
- Aug 16Deresiewicz: Essays about the Internet
- Aug 9Listening to your reading
- Jul 26Engineering is all about failure
- Jul 14Accessing Google's RESTful APIs from Google Apps Script
- Jul 6The Internet is making us smarter, but is it making me dumber?
- Jun 30Taylorism in the modern tech industry
- Jun 21Checking into Internet rehab - and sneaking out
- Jun 17What can Kanye and U2 teach you about teamwork?
- May 7Nouns as verbs, verbs as nouns
- May 4Upsight
- May 2Medium Shear
- May 1English Words Lifted from Hindi
- Apr 25Dilli
- Apr 3Text to speech in MacOS X - automatically
- Mar 30Collecting Needles
- Mar 18Gabriel vs Brooks
- Mar 15Software processes are software too
- Mar 11Why James Cameron did not win the Academy award for best director for Avatar
- Mar 9No ||
- Mar 5Google Apps Script + Spreadsheets = Mashup Hub
- Mar 1Connecting my blog to Buzz