Git is as revolutionary as Unix pipes (2008)
I am now officially part of the "previous" generation of programmers. I know this because the new generation no longer has "vi vs. emacs" e...
Happy July 4th! For those of us around the world contemplating independence, it's a good day to think about how we came to rely on expensiv...
Visit apenwarr.ca → RSS feedOn Hacker News Dec 2009 – Mar 2026
Systems & Performance 15Software Engineering 10Career & Management 10Networking & Internet 9Tech Industry & Business 9Tools & Productivity 4
I am now officially part of the "previous" generation of programmers. I know this because the new generation no longer has "vi vs. emacs" e...
I really like the "tech debt" metaphor. A lot of people don't, but I think that's because they either don't extend the metaphor far enough,...
Someone asked if I could write about the rise of AI and Large Language Models (LLMs) and what I think that means for the future of people, t...
...everything that's wrong with C++ comes down to that. Background: I've been programming in C++ since about 1993; that's 17 years now. As...
It's that time of year again apparently. Rather than fill in the template for you this time, I'll just give you the general outline of what...
Long ago, I wrote git-subtree to work around some of my annoyances with git submodules. I've learned a lot since then, and the development e...
1. Nobody really knows how to do it 2. If you think you have a reliable system for doing it, you're probably doing the computer's job -- "...
tl;dr: Rebuilding a target because its mtime is older than the mtimes of its dependencies, like `make` does, is very error prone. redo does...
I just spent a few days of my Christmas vacation writing a new program, bup. bup is a program that backs things up. It's short for "backup...
In Farmington, CT, in fact, the town my cat was named after. Oh yes. That's how much we love that place. Lukasz, Ashok, and Matt will be...