Media I've consumed in 2015

January 03, 2016 at 10:46 PM | categories: movies, books, games | View Comments

Someday I'll create my own art. Until then, I continue to consume.



My 2015 reading list is incredibly skimpy, due to taking on reading the entire Song of Ice and Fire series. I've been reading a chapter a night, and I'm still not all the way caught up. Still, of the few books I've read this year, I'd give the od to the original A Game of Thrones, both because it was very fresh (I had been successful in avoiding HBO series spoilers before reading the books), and because at that point I hadn't burnt out on the series. At this point, I'm kind of sick of it, but I'm on the home stretch. I'm kind of glad Martin is taking his time writing the next book.



Whiplash does a lot of things, and it does them all well. It explores the sacrifices made to attain greatness. It makes a memorable, over-the-top scene-chewing J. K. Simmons villain who still never comes off as evil or cartoonish. It takes an incredibly dense music genre that I frankly don't have the time nor inclination to care about but made me not just appreciate it on an intellectual level, but actually enjoy it throughout the movie. Although the first bars of the titular Whiplash will probably haunt me for a long time.



The game I kept coming back to in 2015 was Cook, Serve, Delicious!. Something about that game just puts me into a Zen-like trance that I probably haven't felt since playing through the higher levels of Super Hexagon or beating "Freebird" on hard in Guitar Hero (I never could crack expert, though). The light sim and progression elements provide a nice wrapper, but really the mechanics of hammering on your keyboard to make hamburgers, sushi, and spaghetti are incredibly satisfying, especially after serving the last customer on a perfect day. If there's a reason to get the loudest possible mechanical keyboard, it's this game.

Also, a shout-out to Gathering Sky for best art and soundtrack, although full discosure, the artist on that game is a coworker, so take the recommendation with a grain of salt. Still, cool game.

Read and Post Comments

Media I've consumed in 2014

January 01, 2015 at 04:30 PM | categories: movies, books, games | View Comments

When the opportunity for self-improvement in 2014 knocked, I consumed all this media instead.



Michael Lewis did it again in Flash Boys and made an entertaining page-turner about boring economics, all while exposing various injustices in the American economic system. I knew about the arms race among traders for getting faster connections to marketplaces to facilitate high speed trading, but I had no idea about the shenanigans the various marketplace owners themselves were taking part in. If you read that, you'll probably also want to read The Big Short.



Again, I want to say my favorite is The Stanley Parable or Jazzpunk, but if I'm honest the latest Diablo III expansion Reaper of Souls is just a perfect Skinner Box, fixing pretty much all the issues from the initial Diablo III release. Even if it's all just a carefully concocted science experiment providing intermittent positive reinforcement, it tickled just the right parts of my lizard brain to give me the sensation of fun.

Read and Post Comments

I Just Played Zombies Run! 5k Training

April 27, 2014 at 08:00 PM | categories: games | View Comments


I know, I know. The internet has already jumped on the whole "zombies" meme, sucked it dry, and deemed it over. Still, as cheesy as the concept is, Six to Start's Zombies, Run! 5K Training app is one of the few purchases I've made that not only turned into a habit, but a healthy one at that. The basic concept is that you run the app while jogging, and short clips of an ongoing audioplay fire off in between the music you listen to as you run. There's some light progression and base-building aspects, but the main attraction is the audioplay.

The app comes in two basic packages: the couch-to-5k training app that is structured to get your endurance up to running a 5k in 8 weeks (it took me 10, given our freakishly snowy winter), and the full app, which has a lot more features, but assumes you can run for 30 minutes at a time (at least, if you want to "play along" with the audioplay). Because I'm a sedentary computer programmer, I started with the 5K trainer. Prior to the trainer, I kind of enjoyed jogging, but I didn't do it regularly, and was pretty much spent after about a mile. The trainer both got me out jogging regularly, and had me doing increasingly longer intervals to get my endurance up to go a full 5k without walking. Still, if you can run a 5k today, you'll find the trainer pretty mind-numbing and you'll probably want to go straight to the "full" app as the trainer assumes you've never jogged in your life, and not much happens story-wise. The "full" app is much more featureful, and the storylines have been more interesting since I've graduated to the full app.

I can't say the app will work for you, but for me the episodic story nature got me in the regular habit, and once the health benefits start kicking in (starting with better times on runs, and progressing to weight loss and better sleep patterns), the app has made running a habit that I'd find hard to kick. I highly recommend giving it a shot if you think it could work for you. Also, I respect a mobile game that has the guts to fairly price its content and not hammer me with ads or in-your-face upsells. The trainer is only $2, and after going through that, I've purchased all the content from the full app mainly out of appreciation, since it'll be months before I get to it all.

One final note, even though the app can track distances and has a pretty nice web component to track various aspects of your runs (I've just passed 200km total), and the full app even has some missions that are based on distance, all of the 5k trainer missions are strictly timing-based. By the end of training, I could do a 5k in under 30 minutes, but the final mission is nearly an hour to give everyone a chance to finish. I could not run for an hour, so I'd recommend you map out exactly how long 5km is before the last run, and spend the rest of the time celebrating.

Read and Post Comments

Monospace plaintext emails in Fastmail

April 20, 2014 at 05:30 PM | categories: software | View Comments

Nearly a year ago I decided to divest myself of Google as much as possible, partially for the usual privacy concerns, but mainly I was concerned that too much of my life was tied up in a free service whose customer service is nearly nonexistent; if somehow my Google account got borked I had no recourse. So I decided to switch to paid services wherever I felt the service offered was valuable enough. Email was one of them, and I've been very happy with Fastmail ever since I've switched. They offer all the usual protocols, have a webmail interface every bit as good as Gmail's (including fast search with a rich query language), and a whole bunch of other features I'll never use but I'm glad exist. Also, the one time I needed customer service, it existed.

My one quibble with their webmail client is there's no way that I've found (maybe it's hidden somewhere) for plaintext emails to render in a monospace font. I get a lot of diffs via email where monospace is important for legibility, and frankly I kind of find monospace more readable in general, although I know that assertion is provably false.

All this is going a long way around showing off a small CSS hack to get plaintext email rendering and composition to be done in a monospace font in Fastmail's web client. I used Stylish for Google Chrome, but pretty much any CSS-hacking extension of your browser of choice should work:

@-moz-document url-prefix("") {
  .message pre {
    font-family: monospace;

  .TextView textarea {
    font-family: monospace;

The snippet is also in a gist or you could install it directly into Stylish from

In closing, you should put two spaces after a period. drops mic

Read and Post Comments

Syncing historical taskwarrior data to taskd

January 16, 2014 at 08:13 PM | categories: software | View Comments

Taskwarrior, my to-do list software of choice, recently released the taskd task server to sync tasks across multiple devices.

Prior to this, your choices were to sync with Dropbox, which worked for the most part but didn't have real conflict resolution if multiple clients wrote at the same time, and a special "merge" command, but merging only really worked between exactly two peer clients and did not really support an arbitrary number of clients talking to a canonical server.

taskd fixes all this, so I wanted to migrate as soon as possible. Unfortunately, the blessed way of migrating to taskd only migrates tasks you have not yet finished; your already completed tasks are not synced. I have several years of completed tasks I'd like to keep, so I looked for a solution. Luckily, it is pretty simple to modify the import procedure to import both pending and completed tasks.

On your first import, the documentation says you should run:

task sync init

Instead of doing that, you need to trick taskwarrior into initializing with both your pending and completed tasks. To do that, all you need to do is append your file to; the task client just sends, but the two have the same format and the server knows how import completed tasks just fine. Put simply:

cp -r ~/.task ~/.task.backup # For safety
cd ~/.task
cat >>
task sync init

That should import everything. If you're like me and you have a huge history with taskwarrior, the server may complain that the request is too large. If you get an error like this, all you need to do on the server is increase the request size limit in your server's taskdrc:


You should then be able to import a larger backlog. The paranoid will probably want to undo this change to request.limit after the initial import to protect server resources once at steady state.

You can now reconstitute both and on a fresh client by running:

task sync

Of course, you'll need to get the proper keys and certificates installed on the new client before syncing.

Have fun doing tasks!

Read and Post Comments

« Previous Page -- Next Page »