David Crawshaw
Software engineer; co-founder and former CTO of Tailscale, previously on the Go team at Google.
Everything they publish, on ppll ↗
David Crawshaw did not write this page.
We collected these quotes from things they published elsewhere, and every quote links to where it was said. They have no account here and have not endorsed this site. Quotes are word for word; the short line under each one is our own restatement, not their wording. Their own site. Is this you? Claim it or ask us to remove it. Or tell us what is wrong here.
-
Their wordsthe reviewer is the principal, the contributor is the agent, and code review only worked because the reviewer could cheaply infer effort from reading the code. Agents collapse that signal.
↗The agent principal-agent problemcrawshaw.io 1st of 3 in this piece
-
Their wordsThere is no incentive for the human driving the agent to actually read the code or spend time thinking about what the reviewer says.
↗The agent principal-agent problemcrawshaw.io 2nd of 3 in this piece
-
Their wordsthere is no principal-agent problem, because the human driving the machine takes on the responsibility for its actions by owning the deployment.
↗The agent principal-agent problemcrawshaw.io 3rd of 3 in this piece
- 2 weeks earlier
-
Our reading
VMs are the wrong cloud abstraction because they bundle CPU and memory into fixed-size units.
Their wordsVMs are the wrong shape because they are tied to CPU/memory resources.
-
Their wordsYou cannot solve the fundamental problems with cloud abstractions by building new abstractions on top.
-
Their wordsAgents, by making it easiest to write code, means there will be a lot more software.
- 2 months earlier
-
Their wordsAt some point frontier models will face diminishing returns, local models will catch up, and we will be done being beholden to frontier models.
↗Eight more months of agentscrawshaw.io 1st of 3 in this piece
-
Our reading
Most current software and ways of solving problems are structured the wrong way for the agent era.
Their wordsMost software is the wrong shape now. Most of the ways we try to solve problems are the wrong shape.
↗Eight more months of agentscrawshaw.io 2nd of 3 in this piece
-
Their wordsthe best software for an agent is whatever is best for a programmer.
↗Eight more months of agentscrawshaw.io 3rd of 3 in this piece
- 8 months earlier
-
Their wordsGPUs are not nearly as restricted in their future progress as CPUs which are far more constrained in how they can physically improve (compiler-driven ILP only goes so far).
↗How I program with Agentscrawshaw.io 1st of 2 in this piece
-
Our reading
Most software has too few users or too short a lifespan for long-term maintenance costs to matter.
Their wordsVery few programs ever reach the point that they are heavily used and long-lived. Almost everything has few users, or is short-lived, or both.
↗How I program with Agentscrawshaw.io 2nd of 2 in this piece
- 5 months earlier
-
Their wordsOne thing humans appear to be much better than LLMs at (as of January 2025) is not getting distracted.
-
Their wordsSo I foresee a world with far more specialized code, with fewer generalized packages, and more readable tests.
- 11 months earlier
-
Our reading
The right moment to migrate from an ad hoc data store to SQL is the moment you first need an index.
Their wordsI suspect, considering the process retrospect, a great deal of that pain can be avoided by committing to migrating directly to an SQL system the moment you need an index.
↗jsonfile: a quick hack for tinkeringcrawshaw.io 1st of 3 in this piece
-
Our reading
Programming is fundamentally the practice of making tradeoffs about what matters and what doesn't.
Their wordsProgramming is the art of tradeoffs. You have to decide what matters and what does not.
↗jsonfile: a quick hack for tinkeringcrawshaw.io 2nd of 3 in this piece
-
Their wordsMost projects fail before they start. They fail because the activation energy is too high.
↗jsonfile: a quick hack for tinkeringcrawshaw.io 3rd of 3 in this piece
- 2 years earlier
-
Their wordsa good software project tries to break downstream as little as possible, and when we do break downstream, we should do our best to make the breakage obvious and easy to fix.
↗log4j: between a rock and a hard placecrawshaw.io 1st of 3 in this piece
-
Their wordsWhen software "upgrades" invalidate my old knowledge, it makes me a worse programmer.
↗log4j: between a rock and a hard placecrawshaw.io 2nd of 3 in this piece
-
Their wordsWe as a profession misunderstand and misuse the concept of backwards compatibility, both upstream and downstream, by focusing on narrow legalistic definitions instead of outcomes.
↗log4j: between a rock and a hard placecrawshaw.io 3rd of 3 in this piece