The Encyclopedia of Science Fiction

It’s said that the golden age of science fiction is thirteen. It was certainly true for me. I spent a lot of time pouring over my high school library’s copy of The Encyclopedia of Science Fiction (second edition) edited by Peter Nicholls and John Clute. I learned a lot about the genre and the works of my favorite authors.

I got a blast of nostalgia from stumbling on a search result to the online version. All the entries from the printed edition are there and it’s still being updated weekly. The site also has an active Bluesky account posting new entries, memorials, and anniversaries daily.

— February 15, 2025
Noe Valley Library seal: Life without letters is death

San Francisco Public Library Noe Valley/Sally Brunn branch seal: Life without letters is death, April 2018.

— February 3, 2025

Five Coding Hats

Patrick Dubroy:

Early in my career, I was convinced there was “good code” and “bad code”. That you could look at something and — without knowing anything about the context — pass judgement on it.

These days, my views are much more nuanced. I try to adapt my style to the situation. The code I write, and the process I use, depends a lot more on what the goals are. Am I trying to bang together a quick prototype to learn something? Or am I fixing a bug that might affect hundreds of thousands of users? My approach would be completely different in those two scenarios.

Years ago, I read Edward De Bono’s Six Thinking Hats, which describes a framework for problem solving and creative thinking. The idea is that you can “put on a hat” to deliberately adopt a specific mode of thinking. It’s a bit corny but (imo) there’s a useful idea there.

Maybe this applies to different styles of programming, too? What “coding hats” do I use?

Dubroy suggests five “programming hats”: Captain (by the book code for mission critical systems), Scrappy (minimalist style for MVPs), MacGyver (figuring out if something is even possible), Chef (beautiful code), and Teacher (emphasizing communication and demonstration).

I like this concept. It reminds me of the idea of register in language. In many languages, speakers adapt their language to the situation and who they are speaking with. With code, it’s the same. The type of code I write for a production service, a one-off script, and a personal project is different and this “hat” concept is a useful one to categorize them. A mismatch between hats seems like a common interview failure mode to me. For example, you wrote in Captain’s mode because you wanted to show off how careful you can be, but the interviewer wanted the Scrappy mode because they wanted to see how you could react to changes.

— February 3, 2025

Stiȝhenn Þatt Hill

I’ve been listening to Kevin Stroud’s History of English podcast so I got a huge kick out of finding this cover of Running Up That Hill in early Middle English. It was created by YouTuber the_miracle_aligner who creates bardcore covers in old languages.

— February 2, 2025
Plaque on Philosopher's Way memorializing Martin Luther King, with flowers

Philosopher’s Way plaque of Martin Luther King, Jr. speaking at Cow Palace (visible in the distance) with flowers on his memorial day.

— January 21, 2025

My favorite books of 2023

I read 24 books in 2023. Here are some of my favorites:

Vanity Fair by William Makepeace Thackeray

Vanity Fair, William Makepeace Thackeray

In my quest to improve my liberal arts education, I sometimes like to read classic novels (“homework reading,” if you will). I decided to give the Standard Ebooks version of Thackeray’s classic a try. I found Vanity Fair very funny, especially the first part as Elizabeth schemes to snag a rich husband. It reminded me of a modern sitcom like It’s Always Sunny In Philadelphia or Curb Your Enthusiasm where every character is a horrible person. The subtitle “A Novel Without a Hero” is apt.

Bad Blood by John Carreyrou

Bad Blood: Secrets and Lies in a Silicon Valley Startup, John Carreyrou

My coworker recommended Bad Blood and I was not disappointed. Despite being somewhat familiar with Elizabeth Holmes and the Theranos story, it was even more wild than I thought. I think the most charitable read is that Holmes was trying to “fake it until you make it” and really believed that they would ultimately succeed in developing the technology she said they had. But in the process of doing that, she and her company committed fraud and hurt ordinary people who relied on accurate tests for their health care. It was also sad and revealing how easily Holmes manipulated powerful people (mostly older men). I guess rich people are just as gullible as everyone else.

The Shortest History of Germany by James Hawes

The Shortest History of Germany: From Julius Caesar to Angela Merkel — A Retelling for Our Times, James Hawes

I learned about this book from a Twitter (RIP) thread about modern election results reflecting historic political divisions (here is the post about this book). Hawes overlays the electoral strength of the far-right in modern Germany with the Prussian state, which (in his telling) has a long history of militarism born out of a sort of settler colonialism due to warrior nobles carving out territory from Slavic majorities.

Hawes argues that the “original sin” of nineteenth and twentieth century German militarism can be traced to the territories in what is today western Germany given to Prussia after the fall of Napoleon. Unlike Prussia, which was primarily agricultural/aristocratic, these western territories industrialized rapidly. Prussia was able to subsidize its ambitions primarily due to this industrialization, and the division (and subsidization) is still present in Germany today.

Since 100 AD, south/western Germany has belonged to Western Europe. It was only in 1525 that a new, essentially non-western Germany appeared on the scene: Prussia. The western Germans, meanwhile, were so far from being natural warmongers – or inherent state-worshippers – that they were unable to unite. More and more, their lands became battlefields and potential colonies for their stronger neighbours. Then, in 1814, Prussia, at that time a mere client of Russia, was massively strengthened by an epochal stroke of folly. Britain, which, like Trumpists today, positively wanted Europe to remain a mess of competing states, gifted it a modern industrial region on the Rhine. In 1866, south/western Germany was defeated in battle, and shortly afterwards absorbed, by this fatally muscled-up Prussia, a country which, by most of the normal standards of European nationhood – history, geography, political arrangements, religion – was entirely foreign. This was the great deformation. Henceforth, all the wealth, industry and manpower of southern and western Germany were channelled into Prussian ambition. This aimed always at one thing above all: hegemony over Poland, the Baltic lands, and northern-central Europe, in alliance with Russia if possible, through a showdown with Russia if need be. The millennial struggle ended in 1945 with the blood-boltered extinction of Prussia, down to its very name. Western Germany was free at last. In 1949, it finally became a true political entity.

I don’t have a strong enough background in German history to validate this thesis, and it’s clear that Hawes has strong integrationist views and a bias for the culture of the old Roman west. But it is an interesting idea with plenty of parallels to other right-wing movements. It’s fascinating how old political divisions are still visible in modern electoral results, hundreds or thousands of years later. The story of the rise of Prussia also ties into the history I’m learning about right now in the Age of Napoleon and The Siècle.

(It seems this book got a new subtitle after Merkel’s retirement. I couldn’t find an image with the original subtitle.)

Masters of Doom by David Kushner

Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture, David Kushner

Doom came out 30 years ago. Playing Doom II and following the early proto-blogs that covered the development of Quake were a big part of my teenage years. I even roadtripped to QuakeCon in 1997. (My claim to fame is losing to Killcreek in the deathmatch tournament.) Reading this book was a major nostalgia trip. I enjoyed reading about the early days of id. The firings and .plan drama, I remembered following at the time. Some of the stories seemed vaguely familiar, like how id moved to in Madison, Wisconsin and only moved away because the winter sucked (I like to think there’s a parallel universe where Madison is a major video game hub.). I really enjoyed reading this, but after I finished it, I looked back through my list of books and discovered I already read it! Not only did I forget I read this book, but I forgot almost everything in it. And I didn’t pick it as a favorite back in 2014, either.

Paved Paradise by Henry Grabar

Paved Paradise: How Parking Explains the World, Henry Grabar

I don’t need to be convinced that parking ruins cities, but that’s not really what this book is about. It’s about how cities got the way they are now, and the fight to reclaim some of the space that’s been given over to cars. This book also gave me some perspective on why people go so crazy over parking. It’s quite simple: if you can’t park your car, you can’t get out. You are stuck. A parking spot literally stands between you and living your life. And unlike any other thing in life, we demand parking be unlimited and free:

It’s not hard to grasp what makes parking a fixation: without a place to park, you can never get out of the car. A parking space is nothing less than the link between driving and life itself. Whoever said life was about the journey and not the destination never had to look for a place to park. Every trip must begin and end with a parking spot, and in no uncertain terms. We expect parking to be immediately available, directly in front of our destination, and most important, free. This is unique. It would be unimaginable to hold any other good or service to the same standard.

Gabar quotes Joel Garreau’s Edge City on the two rules that developers use:

An American Will Not Walk More Thank Six Hundred Feet Before Getting Into Her Car

To Park An Automobile Takes Four Hundred Square Feet

This is an vise that’s hard to escape from. It creates a “Valley of High Parking Requirements” which makes mid-sized structures impossible to build because parking is too expensive. I consider myself an urbanist. At one point I hoped, eventually, suburbs could be rebuilt at a more human-friendly scale. In the last year, I’ve spent more time in these edge cities and the scale is absolutely mind-boggling. This is where most people live and there’s no rebuilding it. It’s too spread out. At this point, I think the best we can do is preserve and defend our dense cities as car-light spaces. Maybe, if we’re lucky, we can expand walkable spaces in older cities and inner-ring suburbs.

There were also a couple of books that don’t quite rise to favorite status, but I got something out of.

My full list of books from 2023 is below. You can also review lists from previous years: 2006, 2007, 2008 (retroactive favorites), 2009 (retroactive favorites), 2010 (retroactive favorites), 2011 (favorites), 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, and 2022.

Algorithms to Live By: The Computer Science of Human Decisions, Brian Christian and Tom Griffiths

Philip K. Dick: A Comics Biography, Laurent Queyssi (author) and Mauro Marchesi (illustrator), translated by Edward Gauvin

A History of France, John Julius Norwich

On Critical Race Theory: Why it Matters & Why You Should Care, Victor Ray

Sissy: A Coming of Gender Story, Jacob Tobia

Spaceman of Bohemia, Jaroslav Kalfař

Invisible Sun, Charles Stross

Kaiju Preservation Society, John Scalzi

The Big Over Easy, Jasper Fforde

Vanity Fair, William Makepeace Thackeray

The Lights of Prague, Nicole Jarvis

The Ocean at the End of the Lane, Neil Gaiman

Bad Blood: Secrets and Lies in a Silicon Valley Startup, John Carreyrou

The Shortest History of Germany: From Julius Caesar to Angela Merkel — A Retelling for Our Times, James Hawes

Masters of Doom: How Two Guys Created an Empire and Transformed Pop Culture, David Kushner

Dandelion Wine, Ray Bradbury

The Peripheral, William Gibson

The Wizard and the Prophet: Two Remarkable Scientists and Their Dueling Visions to Shape Tomorrow’s World, Charles C. Mann

Talleyrand, Duff Cooper

Agency, William Gibson

White Rage: The Unspoken Truth of Our Racial Divide, Carol Anderson

The Devil in Silver, Victor LaValle

Paved Paradise: How Parking Explains the World, Henry Grabar

Number Go Up: Inside Crypto’s Wild Rise and Staggering Fall, Zeke Faux

— December 27, 2024
A pile of festive fall pumpkins in the compost bin

It’s Rotting Decorative Gourd Season, Motherfuckers

— December 5, 2024

The Giving Game

I’ve been really fortunate in the past few years, and I try to give back to causes I think are important. This Thanksgiving, I wanted to create a way to involve our kids in giving. I came up with an idea I call “The Giving Game”. Here’s what I did.

Our children are young and don’t fully grasp what charity is, what makes a good charity, or, honestly, much about the issues it tries to address. To simplify this for them, I picked five categories: Medical, Shelter, Food Bank, Animals, and Environment. For my older child, I also added a “Do Your Own Research” category where we could work together to find an organization to support. I cut up paper into little cards and drew a picture for each category, with a little bit of text about what it was for.

Hand-drawn cards for giving game

Next, I set a budget of $1,000 per person. This was real money, but I had already contributed it to a Donor-Advised Fund1, so the object of the game was to decide how to distribute it. I wanted to make the distribution more tangible for the kids, so I grabbed some money tokens from a board game2 and counted out 10 for each person, representing $100 each.

After I passed out the tokens, I set out the cards in a row and explained what each one was for.

Then we took turns putting a $100 token on a card and split up the money. It was fun! The end results were:

Finally, I worked with my younger child to look up the charities in the Donor-Advised Fund and grant the money.

I really enjoyed this and hope we can make it a Thanksgiving tradition. If you try it, let me know!


  1. I use Fidelity Charitable. I recommend it because easy to get started with a Donor-Advised Fund. There’s no minimum balance, you can make small grants of $50, and the fees are reasonable. As a bonus, you can give anonymously and avoid getting spammed by every organization you ever decided to give money to. ↩︎

  2. I used tokens from For Sale, which is a game about buying and selling real estate. They worked well, but it bothered me a little that the tokens are worth $1,000 in the game. I don’t have Monopoly, but the $100 bills from that game would have been perfect. ↩︎

— December 3, 2024
AI generated image of a cat pushing a ball of yarn up a hill

Sisyphus, but he’s a cat.

— July 1, 2024

Integrating Rust and Go: Lessons from GitHub Code Search

It took a while, but the recording of my talk from RustConf 2023 has now been published. This was the first conference talk I’d given in several years and there are some things I wish I could change. The contrast on the slides was not good enough for a projector (they turned off the lights halfway through the talk, which was a little startling for me) and I think the code examples were too involved. But I learned from the experience and I’m glad that it’s now available for others to watch. If you’re interested in how to make Rust and Go work together, check it out!

— February 10, 2024