Evan Hahn (dot com)
Anecdotally, programmers dislike "reduce"
In short: from my experience, people like map and filter, but not reduce.
I use functions like map...
3 days ago
In short: from my experience, people like map and filter, but not reduce.
I use functions like map and filter all the time. When I put that code up for review, my peers rarely complain. I get plenty of feedback about other decisions, but not about my use of map and filter.
I...
Evan Hahn (dot com)
Vim's UserGettingBored autocmd
In short: Vim has a joke autocmd called UserGettingBored that doesn’t do anything.
Vim’s automatic...
3 weeks ago
In short: Vim has a joke autocmd called UserGettingBored that doesn’t do anything.
Vim’s automatic commands feature, usually shortened to “autocmd”, lets you run code when various events occur. For example, you could implement an auto-save feature by binding the TextChanged event...
Evan Hahn (dot com)
Prefer STRICT tables in SQLite
In short: I prefer strict tables in SQLite because they avoid some datatype problems, such as...
11th Jul 2026
In short: I prefer strict tables in SQLite because they avoid some datatype problems, such as putting text in number columns.
SQLite has a feature that I think is underrated: strict tables. Strict tables help enforce rigid typing, preventing mistakes like putting text into...
Evan Hahn (dot com)
"Sixteenth of a year", a 1.8 KiB art piece
As I write this, we’re about 7 sixteenths through 2026, and it’s about 14 sixteenths through the...
3rd Jun 2026
As I write this, we’re about 7 sixteenths through 2026, and it’s about 14 sixteenths through the day.
For the sixteenth issue of the Taper online magazine, I split time into sixteenths to think about its passage in a different way.
The code, which had to be under 2048 bytes,...
Evan Hahn (dot com)
Offline command line translation with TranslateGemma + Ollama
I wrote a simple script that translates text at the command line, completely offline. Here’s an...
1st May 2026
I wrote a simple script that translates text at the command line, completely offline. Here’s an example of how it works on my computer:
echo '¿Cómo estás?' | translate
# => How are you?
It combines a few tools:
TranslateGemma, a special-purpose language model for...
Evan Hahn (dot com)
In defense of GitHub's poor uptime
In short: GitHub’s downtime is bad, but uptime numbers can be misleading. It’s not as bad as it...
10th Apr 2026
In short: GitHub’s downtime is bad, but uptime numbers can be misleading. It’s not as bad as it looks; more like a D than an F.
“Zero nines uptime”?
99.99% uptime, or “four nines”, is a common industry standard. Four nines of uptime is equivalent to 1.008 minutes of downtime per...
Evan Hahn (dot com)
The two kinds of error
In short: in my mind, errors are divided into two categories. Expected errors (think “user entered...
1st Mar 2026
In short: in my mind, errors are divided into two categories. Expected errors (think “user entered invalid data”), which are part of normal operation, aren’t the developer’s fault, and should be handled. Unexpected errors (think “null pointer exception”) are the developer’s...
Evan Hahn (dot com)
Track Zelda release anniversaries in your calendar
The original Legend of Zelda came out 40 years ago today. With other birthdays on the horizon, like...
21st Feb 2026
The original Legend of Zelda came out 40 years ago today. With other birthdays on the horizon, like Twilight Princess’s 20th in November, I wanted a calendar that showed the anniversary of every Zelda game. So I made one.
Subscribe to this URL in your calendar...
Evan Hahn (dot com)
Notes from "On Writing Well"
I’ve been trying to improve my writing so I read On Writing Well by William Zinsser.
My main...
4th Jan 2026
I’ve been trying to improve my writing so I read On Writing Well by William Zinsser.
My main takeaways:
Clear thinking is a prerequisite for clear writing. How do you avoid cluttered writing? “The answer is to clear our heads of clutter. Clear thinking becomes clear writing; one...
Evan Hahn (dot com)
I made a little audio speed calculator
I was recently listening to an 8-hour-and-51-minute audiobook, and wanted to know how much time I’d...
3rd Dec 2025
I was recently listening to an 8-hour-and-51-minute audiobook, and wanted to know how much time I’d save if I listened to it on 1.5× speed.
This math is easy enough; divide 8 hours and 51 minutes by 1.5 to get the new duration: 5 hours and 54 minutes. But I also wanted to:
See...