Advent of Code is a series of 25 programming challenges released daily from December 1st to 25th—like an advent calendar. I did it for the first time last year. I plan to do it again this time around, starting at midnight tonight. I thought I'd share my experience in case doing so encourages anyone else to join.
This thread was posted to Twitter on March 14, 2022. It was seen by ~everyone in crypto that same day. I've archived it here, lightly reformatted, for posterity; Twitter is now X. Many people were inspired by this story to create new puzzles, which makes me happy. See also: the Proof podcast episode.
Makers of free apps, including apps with a free plan or trial period, are forced to spend an inordinate amount of time fighting abuse of their services. Twitter has to fight spam bots, multiplayer games deal with cheaters, dev platforms have people scamming CPU time, anything that touches email needs rules and rate limits—the list goes on. This tiresome work is an endless game of cat-and-mouse, and uses time and money that would ideally be spent on improving features for real users.
In the first post on this blog, I explored a way of generating potentially valuable domain names. Out of the top few hundred results, I registered only a few. And a couple of those have sold for a reasonable profit. With the benefit of hindsight, I believe I made a mistake: instead of buying only the top few, I should have bought them all. I probably would have made more money.
Posted to Twitter on December 31st, 2019, and added to this blog a while later.
For me, the first step in becoming a better listener was realizing that I wasn’t as good at listening as I had thought. When someone’s giving you some advice, and it contradicts what you’ve already concluded, it’s tempting to nod politely and move on. That was my habit, and it didn’t feel like “not listening”. I’d heard them. I just felt like they were wrong. But now I think, in that kind of moment, polite acquiescence is not really listening. They've shared only their conclusion. Most of what they want to tell you, and most of what’s useful, lies in how they reached it.
One of my friends is a kindergarten teacher, and a boy in her school was always trying to get the teachers to chase him. He loved being chased. Sometimes they'd do it, but his insistence on it got annoying. Eventually, the teachers collectively agreed to stop playing along. So what did the boy do? He started trying to chase the teachers, and the other students. Chasing and being chased are opposites. Opposites, though, are actually similar, because an opposition as a whole implies a small range of possibilities, all things considered. Other students like the slide.
In between representative democracy, where voters elect politicians to make decisions on their behalf, and direct democracy, where voters directly decide the issues, lies a third model that deserves more consideration. In this model, people have the choice of either voting directly on a decision, as in direct democracy, or giving their vote to someone else. Vote-giving is transitive: if I've given my vote to Alex, and Alex gives theirs to Sam, Sam ends up with three. The common name for this model is delegative democracy.
Intelligence can reason through things quickly. Wisdom knows which details are more important, and which situations are more likely than others.
Here are two tricks that occasionally help me when I'm trying to make a decision. By understanding my real motivations better, I can choose with better intentions.
There's a counterpart to the 1% fallacy that Derek Sivers wrote about. (If you haven't read that, you should! It comes up in many contexts.) This counterpart, which could be considered the inductive case relative to the original, is the idea that you can grow any existing customer- or user-base. For example, "if I have a website that gets x visitors per day, surely I can get that to 1.5x".
“The biggest problem with bitcoins, however, is conceptual: if they succeed, they fail.” –Felix Salmon, gearing up for a deflationary argument in The Bitcoin Bubble and the Future of Currency
When the number of incoming stimuli is reduced, the mind gradually perceives finer details in the ones that remain. This is famously true of blind people, but you can consciously narrow your attention to the same effect. The depth of detail revealed is likely to be surprising, since the generalist day-to-day mind imagines itself to be very capable.
Modern web apps need a fat client. But moving everything to the client, with the server as a thin API, doesn't usually work in practice. The backend needs business logic to enforce data integrity, that means you need your models server-side as well, and you often end up wanting server-side HTML rendering for one reason or another. That leaves you fighting against having both a fat client and a fat server.
Larry Page has made it clear that focus will be the core virtue of his reign as Google CEO. I'm bothered, though, by what he decided to focus on: social, design, and product.  Google has spent a decade hiring almost purely for engineering ability. The upside of this fitness function is that they can solve some of the world's hardest engineering problems. But as a side effect, they've never been good at the more human problems that Page wants to focus on. 
The story of a project, recorded mostly for my own benefit.
I'm a Joanna Newsom fan, so on a road trip last month, I made my friends take a detour to a town she named a song after.
I have Turing's famous paper listed as one of my favorite books on Facebook. I love theoretical computer science, but since college I've mostly worked "in industry" and been pretty distant from anything resembling serious math. That recently changed, though, when I started working through a textbook on computational complexity, problem by problem .
Of the music I listened to ten years ago, only one album is still in rotation. The rest of it fell away as, piece by piece, it started to seem shallow. In high school, I probably thought my parents didn't understand my music, since it wasn't from their era. Instead, it's possible they understood it better than I did.
Bitcoins are not anonymous, but they can be made more so. All existing "laundries" are ineffective. These are my thoughts on why, and how an ideal anonymity-strengthening relay (ASR) might work. I'd been waiting to post this until I reached more definitive conclusions, but Kaminsky's announcement of BlitCoin made me think it was better to get a discussion started earlier. A more secure Bitcoin is a more useful Bitcoin. There are just a couple ideas here, mostly obvious, taken to their logical conclusion.
Bitcoin is the name of a new digital currency. You have a file on your computer that says how much money you have, and you can send amounts of your money to other people using the Bitcoin client. Bitcoin has no central authority, but thanks to some advanced math, the files saying how much money you have can't be forged, nor can the transfers be faked or revoked. 
Here's my Django Fabfile. With it, you can deploy a new project with just a minute or two of configuration. It's been developed and tested over the course of several real-world projects.
The source code to Flowgram.com, a startup that lived from 2007 to 2009, is now available on GitHub. Flowgram was my first full-time employer, and I'm happy to be able to keep alive some part of what we did.
When you're choosing between opportunities to pursue, and there is any uncertainty in their outcomes, be sure to consider how long each possible outcome would take. Opportunities that would fail fast are more likely to be worth doing. People often neglect this effect, perhaps because its magnitude can be surprising.
If the sound that woke me up had been a street-cleaning truck, a shopping cart, an argument, or the dumping of glass bottles, I would have recognized it, gotten annoyed, and gone back to sleep. This, though, was unfamiliar. I rose to lift a blind slat. I like to know what's going on my street. And I was curious to know what sounds kind of like popping popcorn, but more sonorous and metallic.
Sometimes when making a web form, you want an input to be open-ended, but still have suggested values that are easy to select. This is useful when some values for the field are very common.
A high-schooler emailed me asking about getting into programming. This is my response, slightly edited. I decided to post it here not because it's particularly good, but because I can't find enough material like it already online.
What led me to try my hand at domain name speculation was curiousity about a particular angle on the market. Domaining had always seemed boring in practice, despite my theoretical interest in it as kind of a stock market for words. This angle that I'd thought of was to focus on domains composed of two three-letter words: names like Zipcar, GitHub, and HeyZap.