Freshly inked
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 that code to remain active …
Recent essays
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.
O Moat, Where Art Thou?
How does one build a moat in the AI startup space? Or as VCs like to say: “Where does the value accrue?”
Skills, CLIs, and MCP: What They're Actually For
There’s been a lot of discourse in the AI agent space lately about skills, CLIs, and MCP. Some of it is a category error. Some of it is a false dichotomy. And some of it is just not considering what environment these things are meant for.
Everything else, year by year
- 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