- About
- RSS
- Posts
-
Natlang Code
Aug 16, 2025
-
The Mac-vs-PC Story Playing out in CLI Agents
Aug 6, 2025
-
AI is a Mirror
Jul 28, 2025
-
Plato's Cave of AI Agent Evals
Jul 27, 2025
-
Fixing Auth for Personal AI Agents
Jul 25, 2025
-
Does AI Make Programming Feel Like Factory Work?
Jun 7, 2025
-
The Personal Side of Jevons Paradox in the Age of AI
Jun 2, 2025
-
The Programmer's Climb
Apr 26, 2025
-
Dijkstra would’ve (incorrectly) HATED vibe-coding
Apr 11, 2025
-
The case against local LLMs
Mar 29, 2025
-
"But LLMs are not deterministic!"
Mar 28, 2025
-
End-user Abstraction
Mar 23, 2025
-
AI coding - From Tactics to Strategy
Feb 28, 2025
-
Human evals are outsourced vibe checks
Feb 23, 2025
-
Writing is building, but software is now content
Feb 23, 2025
-
When Compilers Were the 'AI' That Scared Programmers
Feb 16, 2025
-
Spec-driven Vibe-coding
Feb 8, 2025
-
Don't credit AI
Feb 6, 2025
-
Emacs in the age of AI
Jan 30, 2025
-
AI resistance considered harmful (for programmers)
Jan 17, 2025
-
How I use AI (late 2024)
Nov 20, 2024
-
Programming with LLMs: Part 1
Sep 27, 2024
-
Programming with LLMs: Part 2
Sep 27, 2024
-
Subject-object-verb, or– how we use AI
Jun 30, 2024
-
Portability of LLM Prompts
Jun 9, 2024
-
The de-nerdification of programming
Mar 29, 2024
-
LLMs eat entry-level SWEs
Mar 15, 2024
-
GPT Monologues
Nov 26, 2023
-
Metaphors for thinking about LLMs
Aug 20, 2023
-
Re: Why I don't use Copilot
Jun 8, 2023
-
AI doomers will doom us
May 21, 2023
-
IDEs and CAD
Mar 19, 2023
-
LazyPost: Programming in the age of GPT and CoPilot
Mar 15, 2023
-
LLMs are compilers
Feb 26, 2023
-
A spiritual successor to Emacs
Feb 14, 2023
-
Augmenting LLMs with APIs
Feb 12, 2023
-
Prompt LLMs for code, not arithmetic
Jan 25, 2023
-
Moving off Tumblr
Jan 22, 2023
-
Hardware Acquisition Hacks
Dec 28, 2020
-
Automatically edit out silence (dead air) from videos
Aug 21, 2020
-
Remapping arbitrary keys in Mac OS X
Jul 22, 2020
-
How Unix Won
May 4, 2020
-
Manifesto for my channel
Apr 15, 2019
-
Laptops with touchscreen keyboards
May 16, 2018
-
Review of Chaos Monkeys
Oct 7, 2017
-
Airspace
Aug 8, 2016
-
Church numerals in ES6
Mar 14, 2016
-
Treating algorithms fairly
Mar 18, 2015
-
IDEs in the cage
Oct 27, 2014
-
De-skilling
Oct 6, 2014
-
How software grows
Aug 17, 2014
-
When to do a rewrite
Jul 22, 2014
-
Learning your life
Jul 21, 2014
-
Garland Words
Jun 24, 2014
-
Lurking Smalltalk
Jun 23, 2014
-
Heartbeats
Jun 15, 2014
-
Why technologists want to secede
May 17, 2014
-
Bleeding buffers
May 3, 2014
-
You can't run with the machines
Apr 13, 2014
-
More on fat vs thin clients
Apr 7, 2014
-
Asynchronous Learning is More Inclusive
Apr 5, 2014
-
The Automatic Corporation
Mar 16, 2014
-
Pebbles and Projects
Mar 13, 2014
-
Shedding
Mar 12, 2014
-
The tool divergence
Mar 8, 2014
-
The Programming Language Consensus
Feb 23, 2014
-
Technium
Feb 19, 2014
-
Hand-drawn maps
Feb 18, 2014
-
Star Trek vs Babylon 5
Jan 23, 2014
-
Fat Client, Thin Client
Jan 20, 2014
-
The Contours of My Attention
Jan 19, 2014
-
Go lang
Jan 11, 2014
-
The Human Resolution Threshold
Jan 8, 2014
-
The Distraction Addiction
Jan 1, 2014
-
Best of 2013
Dec 30, 2013
-
Generation AD
Dec 12, 2013
-
To tool or not to tool?
Dec 10, 2013
-
Automating software engineering
Nov 14, 2013
-
Sharp tools, dull minds
Nov 10, 2013
-
Malcolm Gladwell and the narrative fallacy
Nov 4, 2013
-
The 1964 origins of responsive design
Nov 2, 2013
-
What changed in 1991 in India?
Oct 30, 2013
-
(A tiny step towards) Automating Web Design
Oct 29, 2013
-
Rules for Computing Happiness
Oct 23, 2013
-
Should I do a PhD?
Oct 17, 2013
-
My review: The Year Without Pants
Oct 12, 2013
-
How will you read your files in a hundred years?
Oct 7, 2013
-
"The Mundanity of Excellence"
Oct 1, 2013
-
Why you should subscribe to my newsletter
Sep 23, 2013
-
Research Roundup: Programming and Remote Teams
Sep 16, 2013
-
Is there a STEM worker shortage?
Sep 12, 2013
-
Rangers
Sep 10, 2013
-
Taking your company completely remote
Sep 9, 2013
-
Long form on the web
Sep 6, 2013
-
We are all remote workers
Sep 5, 2013
-
Talented Beast
Aug 28, 2013
-
Asset allocation is everything
Aug 26, 2013
-
Maintenance is not a bad word
Aug 21, 2013
-
The cost of memory safety
Aug 19, 2013
-
How Hugh MacLeod got my money
Aug 15, 2013
-
The difference between a herd and a crowd
Aug 12, 2013
-
HTTP 2.0 marks the end of an era
Aug 9, 2013
-
The Organic Digital
Aug 1, 2013
-
The Real New Aesthetic
Aug 1, 2013
-
Empirical Analysis of Programming Language Adoption
Jul 31, 2013
-
Native mobile apps are a stopgap
Jul 30, 2013
-
The perils of being a knowledge worker
Jul 23, 2013
-
C++14
Jul 20, 2013
-
How I do email
Jul 17, 2013
-
Balance
Jul 10, 2013
-
"We don't do email, email does us"
Jul 8, 2013
-
Waiting faster
Jul 6, 2013
-
NPS
Jul 2, 2013
-
The laziness of synchronous work
Jun 29, 2013
-
Mindfulness sells
Jun 22, 2013
-
CPU pipelines and the structure of work
Jun 7, 2013
-
Backup in the age of the cloud
Jun 3, 2013
-
The One Thing
May 22, 2013
-
Games as a hook into CS
May 16, 2013
-
What do you think computer science is?
May 15, 2013
-
Future programming
May 6, 2013
-
Patterns of use
Apr 14, 2013
-
Abolish the "Save" icon
Apr 7, 2013
-
RIP Ebert
Apr 5, 2013
-
Start here
Mar 24, 2013
-
We are all Mad Men
Mar 23, 2013
-
Meetings are mutexes
Mar 22, 2013
-
STEM jobs
Mar 20, 2013
-
Strong opinions, weakly held
Mar 17, 2013
-
Zero Knowledge
Mar 14, 2013
-
Addicted to work
Mar 12, 2013
-
What I work on…
Mar 12, 2013
-
Moving to Chrome OS
Mar 7, 2013
-
From the mouths of babes
Feb 28, 2013
-
Factory machines
Feb 26, 2013
-
The new luxury
Feb 21, 2013
-
Productivity isn't
Feb 10, 2013
-
Colorful geometry
Feb 6, 2013
-
Review: Close to the Machine
Feb 5, 2013
-
Computer Science PhD trends
Jan 31, 2013
-
Tackling tail latency
Jan 29, 2013
-
Blue collar coders
Jan 28, 2013
-
The void
Jan 27, 2013
-
Engineering, Culture and Tools
Jan 18, 2013
-
So Good They Can't Ignore You: Review
Jan 13, 2013
-
Scaling communication: email vs shared documents
Jan 8, 2013
-
The rise of fimperative programming
Jan 7, 2013
-
Grateful for technology?
Jan 4, 2013
-
Best of 2012
Dec 31, 2012
-
New theme
Dec 29, 2012
-
Good reads of 2012
Dec 26, 2012
-
Writing on a tablet
Dec 21, 2012
-
Quantum of Work
Dec 20, 2012
-
Testing Redux
Dec 12, 2012
-
Need to remember
Dec 1, 2012
-
Some advice on internships
Nov 29, 2012
-
The new C++
Nov 25, 2012
-
Treesaver-based copy of this blog
Nov 23, 2012
-
A Programmer's Thanksgiving
Nov 22, 2012
-
Interviews (and whiteboard coding)
Nov 21, 2012
-
"The best minds of my generation are thinking about how to make people click ads"
Nov 16, 2012
-
MOOCs will eat academia
Nov 9, 2012
-
A rare retrospective on a decade-long research project
Nov 4, 2012
-
Deep Shelling
Oct 31, 2012
-
Why you would want to program at fifty (or any other age)
Oct 26, 2012
-
Coaching and review
Oct 21, 2012
-
How did software get so reliable?
Oct 18, 2012
-
It Might Get Loud
Oct 14, 2012
-
Poor man's DIY little printer
Oct 8, 2012
-
Money in the Valley
Oct 7, 2012
-
Science = Prediction
Sep 30, 2012
-
Datacenter power
Sep 23, 2012
-
Citation Reliability
Sep 21, 2012
-
New frontiers in text editing
Sep 20, 2012
-
English is heavily left-handed
Sep 13, 2012
-
Writing and happiness
Sep 11, 2012
-
Shitty legacy maintenance
Sep 4, 2012
-
Personal Trainers for Software
Aug 30, 2012
-
The levels of agility
Aug 27, 2012
-
A Twitter-based Anagram Game
Aug 26, 2012
-
The Cubicle Dilemma
Aug 15, 2012
-
What is life like for PhDs in computer science who go into industry?
Aug 12, 2012
-
The lure of work
Aug 10, 2012
-
Review: The Computer Boys Take Over
Aug 6, 2012
-
Productivity porn
Jul 31, 2012
-
What mobile development taught me
Jul 27, 2012
-
Is C/C++ worth it?
Jul 24, 2012
-
On Vagueness
Jul 17, 2012
-
Teaching data structures with real-world examples
Jul 15, 2012
-
How I read now
Jul 14, 2012
-
Management models
Jul 9, 2012
-
The Nostalgia Trap
Jul 5, 2012
-
Working asynchronously
Jul 1, 2012
-
Recent updates to old posts
Jun 27, 2012
-
Social Engineering for Programming Languages
Jun 26, 2012
-
The Interested Minority
Jun 19, 2012
-
Advice to (prospective) grad students
Jun 14, 2012
-
Operations should be in the computer science curriculum
May 29, 2012
-
Executable Thought
May 20, 2012
-
The need for Easter eggs
May 17, 2012
-
The 7 stages of debugging
May 16, 2012
-
My setup
May 13, 2012
-
Big science funding
May 7, 2012
-
Bug finding and static analysis in the real world
May 2, 2012
-
Church numerals in Python
Apr 21, 2012
-
The carrier-messenger wars
Apr 17, 2012
-
The components of a university
Apr 16, 2012
-
Mediated Concert
Apr 15, 2012
-
Reproducing papers
Apr 10, 2012
-
If you see a stylus, they blew it. Not.
Apr 9, 2012
-
Code review. Just do it.
Apr 1, 2012
-
Jonah Lehrer
Mar 28, 2012
-
Computational thinking
Mar 24, 2012
-
Themes: Language
Mar 20, 2012
-
Showing it
Mar 19, 2012
-
Themes: The Economics of Programming
Mar 19, 2012
-
Themes: Modern Work
Mar 18, 2012
-
Blue Java
Mar 16, 2012
-
Innovator's dilemma in programming languages
Mar 15, 2012
-
T-shirts are currency
Mar 12, 2012
-
The intimacy of imperfect technologies
Mar 9, 2012
-
Whither programming language research?
Mar 4, 2012
-
Taylorist Science
Mar 3, 2012
-
Team Science
Feb 29, 2012
-
How to debate
Feb 21, 2012
-
Hookah
Feb 20, 2012
-
Rational Equivalence
Feb 17, 2012
-
Why I blog
Feb 15, 2012
-
Carr and Kelly
Feb 14, 2012
-
Guru moment
Feb 12, 2012
-
Repositories of science
Jan 21, 2012
-
Computation in the wild
Jan 18, 2012
-
The CS assignment I wish I had
Jan 10, 2012
-
Iteration
Jan 4, 2012
-
Best of 2011
Dec 28, 2011
-
How to make your new programming language successful
Dec 26, 2011
-
The 0.1x developer
Dec 6, 2011
-
The monk tax
Dec 5, 2011
-
The programming assembly-line
Nov 23, 2011
-
The abstraction-optimization tradeoff
Nov 14, 2011
-
The origins of Silicon Valley
Nov 8, 2011
-
Jumping to analysis
Nov 7, 2011
-
The empirical science of happiness
Oct 27, 2011
-
Flash Crisis
Oct 17, 2011
-
Deft with descriptive filenames
Oct 2, 2011
-
Why developers should learn the economics of code
Oct 2, 2011
-
Size is the best predictor of code quality
Sep 25, 2011
-
Smeed's Law for Programming
Sep 12, 2011
-
The Poisonous Long Tail
Sep 6, 2011
-
How things grow
Aug 28, 2011
-
Reading Happiness
Aug 26, 2011
-
GUI vs CLI: Operation vs Expression
Aug 15, 2011
-
The Upside of Complexity
Aug 9, 2011
-
Do you have an RSI prevention plan?
Aug 1, 2011
-
An ergonomic keyboard and mouse configuration
Jul 28, 2011
-
Media Meta Argument
Jul 11, 2011
-
Large Computer Systems are Organic
Jun 27, 2011
-
Emacs as a login shell
Jun 7, 2011
-
Comments on Stallman's Dystopia
May 21, 2011
-
Stallman's Dystopia
May 20, 2011
-
The Perils of Closed Worlds
May 16, 2011
-
More machines, more reliability
May 9, 2011
-
Teaching as performance
May 5, 2011
-
Side effects of PhD programs
Apr 27, 2011
-
dotEmacs Extract: Interactively change font size
Apr 21, 2011
-
OOP = FP?
Apr 11, 2011
-
Sun Ray
Apr 11, 2011
-
The Shy Scientist
Mar 26, 2011
-
The levels of Emacs proficiency
Mar 21, 2011
-
Cracks in Minimalism
Mar 19, 2011
-
tldr summary: The role of deliberate practice in the acquisition of expert performance
Mar 15, 2011
-
In Aggregate
Mar 8, 2011
-
Turn your blog into an online magazine - a blogmag
Mar 3, 2011
-
Michael Crichton
Feb 26, 2011
-
Alone Together
Feb 20, 2011
-
The Cognitive Style of Unix
Feb 17, 2011
-
How the first Gulf War brought modernity to India
Jan 28, 2011
-
How to Write a Twitter Bot in Python
Jan 19, 2011
-
Englsh Wtht Vwls
Jan 13, 2011
-
Presentism
Jan 8, 2011
-
Stephenson on Emacs
Jan 5, 2011
-
Text Input: The Next Frontier
Jan 4, 2011
-
Best of 2010
Dec 31, 2010
-
More on and or
Dec 31, 2010
-
Minimalism is not a viable intellectual strategy
Dec 30, 2010
-
Parsing "and/or"
Dec 28, 2010
-
Use Accessibility Technologies Before You Have To
Dec 6, 2010
-
Editing Google Docs in Emacs
Nov 22, 2010
-
Ode to the Album
Nov 22, 2010
-
Posting to Tumblr from Emacs
Nov 20, 2010
-
Coding blind
Oct 4, 2010
-
My favorite Chrome extensions
Sep 29, 2010
-
The 18th Century Origins of Lolcat-speak
Aug 28, 2010
-
To jump or not to jump?
Aug 20, 2010
-
Deresiewicz: Essays about the Internet
Aug 16, 2010
-
Listening to your reading
Aug 9, 2010
-
Engineering is all about failure
Jul 26, 2010
-
Accessing Google's RESTful APIs from Google Apps Script
Jul 14, 2010
-
The Internet is making us smarter, but is it making me dumber?
Jul 6, 2010
-
Taylorism in the modern tech industry
Jun 30, 2010
-
Checking into Internet rehab - and sneaking out
Jun 21, 2010
-
What can Kanye and U2 teach you about teamwork?
Jun 17, 2010
-
Nouns as verbs, verbs as nouns
May 7, 2010
-
Upsight
May 4, 2010
-
Medium Shear
May 2, 2010
-
English Words Lifted from Hindi
May 1, 2010
-
Dilli
Apr 25, 2010
-
Text to speech in MacOS X - automatically
Apr 3, 2010
-
Collecting Needles
Mar 30, 2010
-
Gabriel vs Brooks
Mar 18, 2010
-
Software processes are software too
Mar 15, 2010
-
Why James Cameron did not win the Academy award for best director for Avatar
Mar 11, 2010
-
No ||
Mar 9, 2010
-
Google Apps Script + Spreadsheets = Mashup Hub
Mar 5, 2010
-
Connecting my blog to Buzz
Mar 1, 2010