Here’s a puzzle at the beginning of Hexologic.

Simple, right? Tap the only space until it has two dots in it.

Okay, let’s go a little bit further. Bigger board, throw in some spaces that are locked to a given number of dots:

Nice. This feels a little bit like a Sudoku puzzle, but with a ruleset that’s optimized for a phone interface. It’s just a matter of looking for the spot that has only one possible value and cascading from there. Not too bad.

The board can get pretty big, but the logic of figuring out whether each space should have one, two, or three dots remains straightforward. A good time-killer.

Once you start throwing other mechanics into the game, though, it starts to feel different. The dots in the long row have to total eleven, but the sum of the dots on each side of the > symbol have to satisfy the mathematical expression. Now we’re getting somewhere.

Hexologic has thrown a handful of different mechanics at me in the 67 levels I’ve played so far out of just short of 100 in the game. I wish there were more! The difficulty curve is extremely gentle but the back ~half of the game is enough to get you thinking.

It costs a couple dollars in mobile app stores and apparently came out last year! I stumbled across it on the App Store a couple nights ago and have been pleasantly surprised.

I Drank The Ghost???

Slay the Spire is a deckbuilding game I have become mildly obsessed with. It has roguelike elements, some of which (the powerful “relic” system) remind me of what I love about Nethack specifically and which very few roguelikes indulge in (but that’s another post), and one of them is a potions system. You have a specific number of potions you’re allowed to carry at a time (the number of which relics can augment); potions have a one-time effect; and you can buy potions in the shop alongside cards and relics.

Potions generally come in two varieties: potions that affect your character and potions that do something to your enemies. For example, a strength potion might give you 2 strength for the duration of the current fight, whereas a weak potion might apply the “weakness” debuff to an enemy. When you play a potion that affects your character, there’s a sort of “glug” sound effect that implies your character drinks the potion. When you play a potion that affects your enemies, a sound effect and animation occurs that implies you break the potion’s glass vial, presumably in a way where the contents touch your enemies.


Ghost in a Jar is a potion that affects your hero. It applies the buff called “Intangible”, which reduces any number of damage you take for a turn to 1. Let’s go back to the start of that explanation: Ghost in a Jar is a potion that affects your hero. As stated before, when you play a potion that affects your character, there’s a sort of “glug” sound effect that implies your character drinks the potion.

When I use the ghost in a jar, do I drink a ghost?

DO I DRINK A GHOST??????????????


My Favorite Things in 2018

I’ve been meaning to write more about things I’ve really enjoyed this year, but I haven’t done a… great job of that! Of course, with the end of the year approaching, people and media outlets alike have been sharing lists of their favorite games, movies, and music from 2018, and I finally decided to get my act together and write a little bit about a bunch of stuff I really liked this year. Will I publish this as is or will I get around to splitting each of these into their own blog posts like they probably could be? By the time you’ve read this, you’ll know!

Scales & Scoundrels

This graphic novel started in 2017, but the first two collected volumes came out as trade paperbacks in 2018, and wow I love it so much. The beautiful art, funny moments, and high-adventure story are the exact kind of thing that draws me to works of medieval fantasy in the first place, but over the course of the second volume I couldn’t help but be drawn into the deeper, more serious plot that reaches back to thousands of years of history. In a lot of ways it reminds me of Jeff Smith’s Bone, and I would hope that just by saying that I’ve got at least a couple people running to their comic book shop to pick this up.

This Sounds Serious

I’m not really a fan of the true crime genre, especially in the podcast medium in particular. I have a lot of complicated feelings about how the material is handled and I think it’s a tough topic to think about. Luckily, This Sounds Serious is a scripted comedy series that pokes fun at true crime tropes while also creating a bizarre universe of minor celebrities, religious cults, and pop culture memorabilia. The podcast is a production of a team of Canadian comedians who have been working in the world of comedy radio and podcasting for years; two of them were the creators of the popular show This is That. Season 2 is coming next year, so check it out now and get ready for things to get even weirder in 2019.


I came into Celeste knowing that it was a game by the creator of Towerfall, a game I really enjoyed but never had a local multiplayer crew to play regularly, and that it was based on a PICO-8 demo that I had played a little bit of when it first came out. I knew it would be a punishing 2D platformer, and that was all I needed to know to be excited about it. The game turned out to MASSIVELY exceed my expectations—the plot was far more engaging than I thought it would be, and the soundtrack is absolutely incredible. Celeste almost immediately became one of my favorite video games of all time; I love how challenging it is but how it manages to invite you to keep trying, keep going,  to get just a little bit further or find one more secret (and it’s kind of amazing how well that mechanical feeling ties into the storyline, as well). The multiple layers of hidden content are really awesome and I’ve been trying to avoid fully spoiling myself on what more there is in the game. At this point I’ve gotten every strawberry and completed some of the B-Sides, but still have more to go—and there are at least two more layers of challenge that I know of but haven’t even attempted to surmount yet.

Heroes Global Championship 2018

This is a sad one. For the last 3 or 4 years I’ve been getting more and more into the game Heroes of the Storm, a League of Legends-like MOBA made by Blizzard featuring all of the characters from their popular franchises like WarcraftStarcraftDiablo, and Overwatch. Playing the game itself is fun enough if you can get a few friends together on voice chat to play with you, but playing the game was in all honesty just a way to learn enough about the game to be able to watch pros play it in the company-run esports league called HGC.

HGC had great people doing commentary, exciting tournaments, surprising upsets, and even hype around the traditional off-season roster swaps that you hear sports fans freaking out about. I have a close-knit group of friends with whom I’d catch up on the week’s events and pass around clips, commentary, theories, and so forth. It was really fun to be involved in this as the game changed and grew.

It was announced this week that HGC would not return in 2019. It’s assumed by the player base that professional Heroes of the Storm is done forever; while it’s possible that Blizzard could bring it back or a third party could run an association for it, it seems unlikely given how unceremoniously Blizzard dumped the game into maintenance mode with very little notice.

I’m not really sure what esports I’ll be watching in 2019, but I’m pretty sad that it’s unlikely to be Heroes of the Storm!

The Coding Train

I was vaguely aware of The Coding Train under its previous name Coding Rainbow (presumably changed for legal reasons), but I had never really gotten into it. At some point this summer I just watched an episode on a whim and found the host’s enthusiasm infectious. I also found, as a person who programs for a day job and who has at times enjoyed writing software in their free time, that watching the edited version of the original streams was oddly relaxing in a Bob Ross sort of way. I knew that I could watch roughly 30 minutes of YouTube and at the end of it there would be a functioning piece of code. Anyone who’s spent their time writing software of any complexity, or spent much time around people who do, knows that the work rarely ties up with a bow so nicely, so it’s nice to escape into this world where every problem is nicely contained.

Slay the Spire

I tried avoiding this game all year. I knew I was going to get hooked, but I also was desperately hoping there’d be an iPad version announced, because it sounds so perfect for that platform that I just wanted to wait and start from there.

I lasted until sometime around late October, and I don’t even remember what it was that finally got me to crack and buy the game, but I did and I immediately fell down a rabbit hole. Now I’m staying up late playing the game, I’m watching YouTube videos and Twitch streams, and I’m pondering starting Twitch streams back up in 2019 because of it.

It’s basically a single-player deckbuilding game, but it has (sorry) roguelike elements. Permadeath is a factor, but for me what seals the deal on scratching my Nethack itch is the sheer variety of things you can collect in a given run. Obviously there are cards to choose to add to your deck, and they come in a variety of strategies you can use to try to win, but there is also a large collection of items called relics that you can earn via a variety of methods that give you ongoing, or sometimes consumable, powers that warp how you value your cards and your choices. The depth is beautiful, the balance between strategies is stunning, and I’ve barely even dipped my toe into the community’s stats-collecting and content-modding. The core loop of the game involves winning it with each of three different character classes at 21 different difficulties; in the first ~45 days of playing the game I’ve managed to win at the first 3 difficulties with 2 of the 3 classes and only the first 2 levels with the third. I’ve got a long way to go, and I can’t wait to keep trying.

There’s still no iPad version announced, but there is a Switch version coming early next year, which I only count as a runner-up solution because of the Switch’s relatively short battery life, a problem I expect I’ll start running into a lot when I buy this game on a second platform.


I was intrigued by the simplicity of this independently-owned blogging platform, which promises to let you publish an elegant website just by writing files to Dropbox. It feels very similar to blog engines that have been layered on top of static site generators like Jekyll or Middleman, but those have always felt so clunky to me, I decided I’d love to give something a try that promised to deliver a similar writing experience while streamlining the publishing portion for me. I set up https://etc.motd.co to use it as a sort of “linkblog”, and it’s been going okay? I don’t exactly use it every day, but I have found it to be fast, reliable, and it makes me think about how I’d like to write more.


We started using GraphQL at work last year and I spent July 2017-August 2018 working on a team at work building out a GraphQL infrastructure, porting our ecosystem of a half-dozen or so independent apps to all share a stitched-together GraphQL API that ended up powering our company hack week. It was fun to get involved with software that’s still so actively being developed; I had the chance to contribute a few patches to the open-source community in the course of my work and also write an internal Ruby gem that I’m still hoping will be open-sourced some time in 2019. I don’t think GraphQL is a silver bullet but there are some applications of it that feel extremely clean and tie nicely into some of my favorite parts of programming.


I admit I’ve mostly fallen off here, but after joining Mastodon in 2017 and not really sticking with it, there was a fairly large exodus at one point in 2018 where a significant number of my friends were all using Mastodon regularly and so I did too. It was fun to spend time on it making jokes and chatting and generally “being online” in community with other people. I also enjoyed the freedom to make small patches to my own private server that changed the way the interface worked for me across all platforms without interfering with my ability to talk to people on other servers. I kinda hope that I’ll come back to it again, but I have to shamefully admit that the network effect is too strong for me to leave Twitter entirely this year.

Spelling Bee – NYT puzzle

Have you played the Spelling Bee! It’s super fun! I was hooked on it for a few weeks after it came out and I’ve fallen off but I still log in and check it out from time to time. I love how well it works on both desktop and mobile web. Its design adapts naturally to each platform. It’s so clean and crisp and pure and dang, what a good puzzle.

Sorry to Bother You

I watched the trailer for this when it was first announced and thought it looked extremely stylish, strange, and interesting. I avoided reading anything else about it from that point on until I saw the movie and if you haven’t been spoiled on it at all yet, I recommend you do the same. I don’t want to say much more because this movie ended up being far more than I was expecting but it was hilarious and bizarre and cool. This might be one of my favorite movies of the decade.


It won’t be a surprise when Lin-Manuel Miranda gets an Oscar and completes his EGOT, but Hamilton colleague Daveed Diggs might be right behind him, out to prove that he can act and write just as well as he performs on stage both on Broadway and as a rapper with his group clipping. He co-wrote the movie with his co-star Rafael Casal, the two of them having pitched the project years ago and finally getting to put it together in the wake of Diggs’ newfound stardom. It’s a moving, personal, funny, and extremely relevant story that you really should see.

Limetown Season 2

I wrote about Limetown’s first season just before the second one started and guess what: Season 2 also rules and continues to be an extremely compelling radio sci-fi drama that’s just a little bit creepy and overall really good. Both seasons are really short and very deserving of your time.

Killing Eve

I was feeling pretty blah about new TV shows after watching some let-downs this year (having three seasons of the extremely reliable British Bake-Off added to Netflix notwithstanding), but gave Killing Eve a shot after some friends were talking about it. (US readers, it’s currently on Hulu if you have a subscription to that.) It’s weird and self-aware and funny and just the right amount of pulpy (for now– I’m a little worried that Season 2 is going to feel like Alias if it goes in the direction I think it might). And just like Limetown, there are only 8 episodes! You can watch the whole story in a matter of days.

Favorite albums

  • BROCKHAMPTON – iridescence
  • Caroline Rose – Loner
  • The Go! Team – SEMICIRCLE
  • Hop Along – Bark Your Head Off, Dog
  • Janelle Monae – Dirty Computer
  • Jon Hopkins – Singularity
  • Justine Skye – ULTRAVIOLET
  • Kacey Musgraves – Golden Hour
  • Lena Raine – Celeste Original Soundtrack
  • Liza Anne – Fine But Dying
  • Nils Frahm – All Melody
  • Noname – Room 25
  • Ólafur Arnalds – re:member
  • Saba – CARE FOR ME
  • Sudan Archives – Sink (EP)

The Clean Tab Club – FAQ

Q: Okay, so how does this work?

Don’t leave tabs open all the time. If it’s an article to read, send it to Instapaper. If it’s a resource you can make use of, bookmark it in your browser or on a site like Pinboard. If it’s something you want to download, a tutorial you want to complete, or it’s otherwise action-oriented, put it in a to do list.

Q: But don’t you lose track of some websites or never get around to reading some articles after filing them away?


How to Shuffle a Playlist on YouTube

I have a playlist of music videos I like on YouTube. The ability to add videos to playlists on YouTube is convenient, I can access them from anywhere, a lot of them have officially uploaded versions at decent quality, and generally I have little trouble keeping track of the stuff I like.

Then it comes time to watch the videos. And this is where things start to go wrong.

What I Want

When I want to watch the music videos, here is what I am hoping will happen: I can hit a button and it will create a random order in which to play the videos. It won’t repeat any until it’s played all of them once. Whether it repeats at that point or stops entirely isn’t super important to me– I have enough videos in the playlist that I am unlikely to watch them all in one sitting. I’d like it to be easy to skip to the next video if one comes up and I’m not feeling it. Bonus points if I can look ahead at the order of the videos it’s going to play and remove videos from the queue without it removing them from the playlist.

What I Get

Chaos. Because, first, I should tell you: what you get differs depending on which platform you’re using YouTube from. Their native apps behave differently from each other and from their website. Not a great start!

In the web browser

There’s a prominent “shuffle playlist” button at the top of playlists. When you click it, it brings you to a fairly standard video player page with the playlist showing in the order it is sorted (so there’s no way to see what will play next). As you play a shuffled playlist in the web browser, you will notice that it repeats videos. Pretty regularly! As a test, I queued up a playlist with 450 videos in it and in the first 30 videos, saw one video six times and a few others two or three times. The repetition doesn’t seem to come any more or less frequently depending on whether you let the videos play continuously or hit the “next” button repeatedly.

On the AppleTV and PS4

There is no way to shuffle a playlist in the native app that now runs on many platforms, including the PS4 and the newest version of the AppleTV’s app. The functionality just doesn’t exist.

On iOS

Okay, now we’re talking. When you hit the shuffle button on a playlist, you get loaded into a new playlist view which is a sort of temporary queue. The full contents of the original playlist are present here, placed in a random order, and will play from top to bottom in that new random order. You can skip tracks, delete them from the queue before they play, and so forth. Pretty much everything about this method seems to work as expected!

On the AppleTV via iOS “Connect to TV”

There’s a special button that looks like a TV screen with a wifi logo in the corner that shows up in the iOS app when you have the Youtube app open on a device like the AppleTV, PS4 or even many smart TVs. You can “connect” to the device and then control it from the iOS app, giving you access to special features like queueing videos. What happens when you connect the iOS app to one of these, and then hit the “shuffle playlist” button? It creates the temporary queue with all of the videos in the playlist in it, but they’re in the same order as the original playlist. It then picks a random video in the playlist to start playing, skipping to that point in the queue. Using the “next video” button will play the next video in the playlist, as if you had never shuffled anything.

On the AppleTV via iOS Airplay

If you click on the special Connect button in the iOS app and then choose the option for “Airplay and Bluetooth Devices”, then choose your AppleTV, then wrestle with getting YouTube and Airplay to work (which has always involved a couple attempts of turning airplay on and off), you can eventually get Airplay working, then go to a playlist and hit the shuffle button. This will give you all the features of the iOS app’s shuffle playlist play with the ability to see them on your TV. It’s the most finicky to set up, but finally, it does everything I want.

This Sucks

It’s so annoying, and there are so many more important things that YouTube should be focusing on like paying the people who make their platform valuable, but the fact that every platform does it differently is somehow more annoying to me than if they just didn’t offer the functionality at all. Someone at the company seems to understand what a real-world use case for this feature looks like, but there’s no coordination to make it happen that way, or any other way, across the company.