Lots of stuff happening in my life right now, so my reading list fell by the wayside this year. Here it is, finally: all the books I read in 2025! Reviews shorter than usual this year. ★★★★½ The Art of Not Being Governed: An Anarchist History of Upland Southeast Asia – James C. Scott Scott’s anarchist reinterpretation of Southeast Asian history is densely written but very rewarding, greatly…
It took me longer than usual to write my reviews this time (for a variety of reasons), but here it is: everything I read in 2024! ★★★★★ Austerlitz – W. G. Sebald (tr. Anthea Bell) Sebald’s remarkable writing style sparkles even in translation. Although Austerlitz is ultimately a novel about the Holocaust, Sebald approaches this heavy topic on an intimate scale, as we follow the titular…
About a year ago, I “released”* Wordbots , the tactical card game with user-created cards that I’d been working on since 2016. (* I say “released” in quotes because this isn’t really the sort of game that will ever become feature-complete, especially not as a side project. But on April 29, 2023 , I declared it fully playable and ready to graduate from alpha into a permanent “beta” stage, in which…
★★★★½ The Remains of the Day – Kazuo Ishiguro An aging butler taking a road trip in 1950s England seems like a thin premise for a novel, and yet Ishiguro makes it into a profoundly moving work of literature. The bulk of the story is told through the narrator’s recollections as he drives through the English countryside. He begins the journey fully committed to a particular ideal of being a…
(Thanks to Annie and Asali for all your help on this project!) I set out to build a Trader Sam-style “tiki window” for our home tiki bar. You know, this kind of thing, that no home tiki bar seems to be complete without – a screen behind a bamboo façade showing animated tropical imagery: I perused some Reddit threads and saw a brief but helpful Youtube how-to video but couldn’t really find a…
This was an unusually hectic year, so this set of reviews will be briefer than usual. Flash reviews, if you will. ★★★★½ Independent People – Halldór Laxness [tr. Brad Leithauser] Perhaps the whole of the human experience is contained within this epic about a small-time farmer’s rise and fall, brimming with wit and tragedy. Embassytown – China Mieville The perfect novel about language and language…
My dance-rock band Extra! Extra! has just released our debut album, Never Been to a Party , after a year-long recording and mixing process. The album is a blend of new wave, punk, disco, and electronic rock, with influences ranging from LCD Soundsystem to the B-52s to ESG. I think you’ll like it. The album is available on Spotify … … as well as Bandcamp and most other streaming platforms. We will…
★★★★½ A History of the Peoples of Siberia: Russia’s North Asian Colony 1581-1990 – James Forsyth Ah, just the book I needed to feed my obsession with Siberia and The Far East. In fact, it’s so comprehensive and well-researched that I was surprised to even find a book like this in English. Forsyth’s writing can be dry at times but he admirably compiles and presents an overwhelming wealth of…
[Originally posted on Facebook] Every January, I post short reviews of the books I read the previous year. Due to the craziness of the past year, I didn’t have the energy to actually write reviews, but here’s what I read in 2020: ★★★★★ One Hundred Years of Solitude – Gabriel García Márquez (tr. Gregory Rabassa) ★★★★½ Utopia Drive: A Road Trip Through America’s Most Radical Idea – Eric Reese The…
Last weekend I had the unenviable task of moving a legacy ASP.NET application to a new server, and as part of the move I had to migrate the application’s database from SQL Server to MySQL, the only SQL flavor supported by the new server. What I thought would be a fairly routine switchover turned out to be a rather involved couple of days, and none of the resources I could find online were able to…
[Originally posted on Facebook] Another year, another reading list! Here’s what I read last year. ★★★★★ Evicted: Poverty and Profit in the American City – Matthew Desmond Even if this were a work of fiction, it would get high marks for its gritty, gripping portrayal of impoverished families struggling to survive in inner-city Milwaukee. The fact that this is all documentary nonfiction makes it all…
[Originally posted on Facebook] Here’s what I read last year: ★★★★½ Dictionary of the Khazars: A Lexicon Novel (“female” edition) – Milorad Pavič (tr. Christina Pribicevic-Zoric) This is exactly the kind of fun, eccentric modernist fiction that I love so much: a novel in dictionary form, with the entries telling a richly interlinked narrative spanning three time periods, loosely inspired by the…
(Or, the week I finally went off the hipster deep end) About six months ago, I read Tobias Toft’s excellent article “An intro to Pen Plotters” . Inspired by the wonderful art he demonstrated, I set out to get my own plotter - a drawing robot from the pre-printer age - to play with. This is the story of my first experiment with pen plotters – plotting a land-use map of Downtown Berkeley: Setting up…
After 2½ years of recording, re-recording, production, mixing, and mastering, my swamp metal band’s album is finally out! Gator is an eclectic mix of heavy metal, psychedelic rock, and classic blues. I have a feeling you’ll like it. The album is available on Spotify … … as well as Bandcamp and Soundcloud . If you like what you hear, pre-order the vinyl ! We’re doing a very limited press of 200…
[Originally posted on Facebook] Per tradition, here are all the books I read last year. Unfathomable City: A New Orleans Atlas – Rebecca Solnit & Rebecca Snedeker ★★★★½. While Infinite City revealed fresh secrets of a city I already knew, Unfathomable City served as an unorthodox travel guide. Reading it on the plane to New Orleans, I was struck by the deep sense of love for the city that I could…
[Originally posted on Facebook] [Listen on Spotify (full albums) – 3 hr 45 min] [Listen on Spotify (just the highlights) – 1 hr 22 min] Though largely unknown in the West, Leningrad in the 1980s was a center for Soviet underground rock music. Rock music existed in the Soviet Union ever since the first Western bootleg tapes were smuggled across the border, but two pivotal events in the early 1980s…
[Originally posted on Facebook] Continuing the tradition, here’s what I read last year: ★★★★★ The Wind-Up-Bird Chronicle – Haruki Murakami (tr. Rubin) It’s almost two separate stories: a romantic drama about a fragile relationship and a gripping adventure through a surreal world. Either of them would make a good novel in itself, but Murakami’s brilliance lies in how perfectly he weaves the two…
Joseph Turian and I gave a talk at Strata 2016 entitled “Secrets of natural language UIs: Translating English into computer actions” . Here’s a video: In the talk, we argue that natural-language UIs can enable users to interact with complicated data in a way that traditional UIs cannot. As an example, we discuss the implementation of UPSHOT ’s English-to-SQL interface. Getting a little more…
Update (6/2/16): Reddit user u/julesjacobs has managed to find an elegant recurrence relation for this problem ! As it turns out, my approach slightly undercounted the number of terms (for length 10, I calculated 893 terms, while the true answer is 896), but was correct for N<10. Fun fact: there are…
[Originally posted on Facebook] Continuing the tradition, here are the book I read in 2015: ★★★★★ Tenth of December - George Saunders [thanks Danielle] House of Leaves - Mark Z. Danielewski [thanks James] The Secret History - Donna Tartt The Handmaid’s Tale - Margaret Atwood [thanks Asali] ★★★★½ Freedom - Jonathan Franzen [thanks Asali] The Gigantic Beard That Was Evil - Stephen Collins [thanks…
-> <- This postmortem’s been a long time coming, in part because I don’t know if I can call my team’s submission to this last Ludum Dare, Asshole Transit Bureaucrat 2015 , a game , per se. But we did end up scoring well in a few categories, so perhaps I was a bit too harsh. Let’s discuss what went right and wrong. What went wrong Too much conceptual complexity This is a bit of a common problem…
[Originally posted on Facebook] I got back into reading fiction in 2014. Here’s what I read last year (as best I can remember): ★★★★★ The Amazing Adventures of Kavalier & Clay - Michael Chabon [thanks Danielle] Blindness - Jose Saramago [thanks mom & dad] What We Talk About When We Talk About Love - Raymond Carver [thanks Danielle] ★★★★½ The Crying of Lot 49 - Thomas Pynchon Hard to Be a God -…
I’ve been playing around with Rust a lot the past couple weeks. It’s a neat little language with some cool ideas (I particularly like its memory-safety features, though they take some getting used to), but sadly the ecosystem has some catching up to do. In particular, making HTTP requests in Rust is a bit of a mess right now. The closest Rust has to a working requests library at the moment is…
It’s been about six months since Greg and I released Untrusted into the world, so I figure now’s as good a time as any to write something about how Untrusted came to be. It All Started With a Hackathon Greg and I had wanted to make a game for a long time, and when we decided to participate in the spring 2013 CSUA hackathon at Berkeley, we figured it was as good a time as any. Greg had an idea for…
Last weekend I had to restart my melody.py live demo , as the EC2 instance it was on was outdated. In the process I had to figure out again how to set up Flask applications using mod_wsgi . As a relative newbie to both EC2 and Apache, the process took longer than I’d like, so I’m documenting the steps I took in detail, in part to make it easier for me next time I need to do something like this.…
[ Original post on ludumdare.com ] True to my promise in my last postmortem , I worked in a team again for LD#30. We had a great mix of veterans (Alex, Greg, Natasha, Tikhon doing coding, and Jordan doing art and design) and newcomers (Beth doing level design and writing, and Aylan doing music and SFX), and we’re pretty proud with our end result: Shattered Worlds . Let’s talk about what we did…
I presented “A Snack in Every Port” at Appetite Obscure #8: Seacret , an interactive potluck. From the description on the site: A Snack in Every Port A map and a compass lie in front of you. Look for the dot that represents your ship. Place the point of the compass on the dot, and mark the ship’s next location with the pencil. Where you land determines what you eat. Open Water: Crust of Bread &…
[ Original post on ludumdare.com ] For this Ludum Dare, I worked with a group of friends to create Asteroid Tycoon . I’ve done the Compo a few times in the past, but none of us had ever game jammed in a team before, and it was quite the experience. I’ve learned that doing Ludum Dare with a team brings with it both enormous benefits and unexpected challenges. What went right Diverse talent Being…
[ Original post on ludumdare.com ] Well, I've never done one of these before, so here goes nothing. What went right Long brainstorming session I was fortunate in having a group of friends help me brainstorm ideas when the theme was first announced. About a dozen ideas were thrown around, some interesting and some worthless, until I finally settled on this one. My first few ideas were tempting but…
Motivation For a research project that I’m working on, I made a survey that feeds data into a Rails application. I wanted to create Mechanical Turk HITs that direct users to the survey (on my site), and send the results directly to the server. I also wanted to be able to dynamically create the HITs from within the Rails application itself. Fortunately, the Mechanical Turk API provides a means for…
For my Computability final paper , I wrote about the Church-Rosser Theorem and the consistency of λ-calculus, as well as introducing the general theory of λ-calculus and showing how arithmetic can be performed within it. What is the Church-Rosser Theorem? The main operation of λ-calculus (at least in its standard form) is β-reduction. Loosely speaking, β-reduction means that, given a function that…
I’ve been successfully using Steam on my 64-bit Linux Mint Debian Edition desktop for the past month, and I thought I should make a small post about how I got it working and how well various games that I’ve tried work. I’ll try to keep this post updated as I try running more games. Installing Steam on Debian Installing Steam on 64-bit Debian is a bit of a pain. After trying and failing to get it…
Check out Sentinel for Linux, Windows, and OS X on GitHub I recently got my roommate a Dream Cheeky Thunder USB missile launcher. It was fun to play around with for a bit, but the included software was very limited in its functionality. Just when I was ready to dismiss it as an overpriced toy, my roommate came up with a great idea: could we mount a camera to the turret and make it automatically…
The other day I had to reinstall Linux Mint Debian Edition. The reinstall process went smoothly overall, with the only problem being, of all things, the driver for my Brother printer. The Problem The problem is that Brother’s official Linux printer drivers are all 32-bit, and don’t appear to play nicely with 64-bit Debian-based distributions. When I tried installing the driver directly, I got an…
Adventures in Reinventing the Wheel A few days ago, one of my friends posted this status on Facebook, and it got me thinking: how could I test a hypothesis like this? Supposing I were to use GDP per capita as a measure of affluence, I would simply have to compare it to a measure of linguistic diversity, and compute the correlation coefficient. But does such a measure of linguistic diversity exist?…
As a relative Ruby newbie, one of the things I love about it is how easy and elegant it is to modify existing classes. In this post I’d like to mention some of the cool things that I’ve discovered you can do with hashes. Arbitrarily deep assignment Suppose I’m using a hash to store data that has a complicated structure. I want to be able to do something like hash [ player ][ :stats ][ category ][…
(Note: I originally posted this on Facebook last summer, in my wild, PHP-loving days. While my toolbelt has changed since then, I still agree with the sentiment of the post, and so am reformatting it and reposting it here.) Here’s a rather clean solution to dynamically pluralizing text that I’ve come up with. I wonder how other people deal with this. Background Web sites incorrectly using the…
Today I was faced with the challenge of having to refresh a Chrome browser window on a networked Ubuntu machine via SSH. (Admittedly, I could have walked over to the computer in question and hit F5, but where’s the fun in that?) This seemed like it would be simple, but I immediately ran into problems. Opening Chrome My first thought was to see if Google Chrome’s command-line interface has any…
It’s been a while since I’ve had a blog, but I thought that it’d be nice to have a place to post projects, ideas, tutorials, and whatever else is on my mind, programming-related or otherwise. I’ve only ever used Blogger before, so this time around, I’ve decided to do things differently. I wanted a simple, self-hosted blogging system that would put me in control while still being mostly…