Skip to main content

Benjamin Oakes

Photo of Ben Oakes

Hi, I'm Ben Oakes and this is my geek blog. Currently, I'm a Ruby/JavaScript Developer at Continuity Control. Previously, I was a Software Developer at Hedgeye, a Research Assistant in the Early Social Cognition Lab at Yale University and a student at the University of Iowa. I also organize ICRuby and OpenHack Iowa City, and previously organized NewHaven.rb. I have an amazing wife named Danielle Oakes.


Pixel Dungeon, a quality open-source dungeon crawler

by Ben

Pixel Dungeon – Android Apps on Google Play.
Pixel Dungeon – F-Droid.
watabou/pixel-dungeon – GitHub.


Traditional roguelike game with pixel-art graphics and simple interface.

I randomly came across Pixel Dungeon today, and it was well timed because I was recently thinking about re-playing Diablo, a very well known take on the “rougelike” concept. However, though I kept thinking it would better on a tablet. (I played it a little on a Windows XP tablet. Yes, there was such a thing, and I had one… though I didn’t have the time to sit down and enjoy it back then.) Unfortunately, Diablo isn’t on Android, and from what I can tell, it’s not worth the trouble of trying to get the Windows 95 version up and running under emulation.

I found NetHack, famous for being one of the oldest continually developed games, which has some okay Android ports with some okay tilesets. I was hoping for NetHack with higher fidelity, maybe some retro-styled graphics, maybe some sound effects, and if I was lucky, some decent music. I found all of that in Pixel Dungeon. It’s definitely a gem of open-source mobile games; I’d recommend trying it. I haven’t played it much yet, but it’s definitely worth sharing.

Side note: it turns out Michael Toy was one of the original authors of Rogue, in addition to also a main part of the Netscape documentary called Code Rush that I watched recently. That’s quite a coincidence!

Cereal Bags Can Be Recycled with Plastic Bags

by Ben

Because You Asked: Can Cereal Bags Be Recycled? – Live Green – Recyclebank.

Many cereal box liners are made from HDPE (#2 plastic) film. […] But plastic in film form (including bags) should not be added to your bin because it can jam up and damage recycling machinery. Instead, #2 plastic bags and other plastic film can be dropped off for recycling at one of thousands of retail locations.

Huh, wish I had known that sooner. We’ve started to see this marked on some brands of cereal (notably Chex), so it seems legit.

ICRuby for March 5th: Using Ruby to program a Sphero using Artoo

by Ben

From the Meetup event:

Joe Seeley will be giving an informal talk on Artoo, “a Ruby framework for robots, physical computing, and the Internet of Things.”  He’ll be bringing his Sphero and show us a couple of basic samples.

Thanks to Joe for volunteering to present!

Valve unveils Steam Link, final Steam controller, Source 2

by Ben

Valve unveils Steam Link, final Steam controller, Source 2.

I’m happy to see SteamOS is still moving forward. I still think it would be a smart move for Valve to release Half Life 3 as a Linux exclusive. People would definitely buy a Steam Machine just for that, solving the “why would anyone use SteamOS?” problem. If they aren’t considering taking that route, SteamOS doesn’t make nearly as much sense.

Chat standards are still alive at Google

by Ben

Despite previous news to the contrary, Google is still a heavy user of XMPP, even for Google Talk. From their support site, dated late February 2015:

You can also still connect to Google Talk with compatible third-party apps, like Pidgin and Gajim.

And a longer summary from the Wikipedia page on Google Talk:

Google Talk is an instant messaging service that provides both text and voice communication. […] As of March 2015, it is not discontinued — despite reports to the contrary — and officially remains available over XMPP in third party applications.

Google Talk was also the name of the client applications previously offered by Google to use the service. […] As of February 2015, the Windows client ceased to work, with email notifications sent to users who attempt to login, recommending that they try Google Hangouts instead.

In May 2013, Google announced that it would be dropping support for XMPP federation, and it did so one year later. However, XMPP federation is separate from general XMPP support. As of March 2015, Google Talk continues to support clients using the open XMPP protocol. Such clients are available for a number of operating systems not supported by the Google Talk client.

Google retaining XMPP support is great news for chat standards; it makes me think that they’re hopefully going to keep XMPP support for chat for at least longer than I originally expected (but then again, I had low expectations). I especially welcome this news because at home and work, I could have text messages right now in SMS (cell texting), IRC, Twitter mentions, Twitter messages, Facebook, Facebook Messenger, my personal Google Hangouts/Talk, my work Google Hangouts/Talk, Sqwiggle, my personal Skype, my work Skype, Slack, and probably a few others I’m forgetting. I’d really love more services to use standards (XMPP or otherwise) just so I could have one way of checking for messages (let alone respond to them). This is notable because more chat services are becoming walled gardens than ever before; interoperability is something we’ve lost. But maybe things are looking up.

(Speaking of Slack — which I haven’t used much beyond testing — I was very happy to find out that they offer both XMPP and IRC gateways. That’s amazing for a chat service launching in 2013… which is sad statement in many ways.)

Of course, email is a different story — it’s been standardized for a long time, for better or worse — so longer messages tend to go there, whether it’s from an email client, or a service that emails me, like LinkedIn. (I don’t really think it counts if you can’t respond via email, though. GitHub does that really well, but Facebook doesn’t.) Sure, email is the lowest common denominator, but that’s because everyone has an email address. To understand the state of chat in 2015, imagine if you could only email other Gmail users if you had a Gmail account, or Yahoo Mail users if you had a Yahoo account. If that sounds crazy, replace “mail” with “chat” and realize that’s what we’re doing.

Anyway, the above is just a long, drawn out way of saying: it’s not that I don’t like shiny new things like Kik, SnapChat, Viber, WhatsApp, or whatever comes next… it’s just that I have enough ways for people to send me a short message and they all seem pretty much the same, besides who I happen to need to talk to. Honestly, I’m more likely to close accounts than open new ones.

Ruby Rogues on Pair Programming

by Ben

026 RR Pair Programming – Ruby Rogues –

I’ve looked this up too many times in conversations with coworkers, so I’m bookmarking it with this post.

These are their bullet points for the podcast:

  • Driver/Navigator vs Driver/Driver
  • One person writes a test, the other makes it pass (Ping-pong pairing)
  • It can be more productive
  • Code review
  • Shortens code review cycle
  • Higher engagement
  • Raises the quality floor
  • Pairing effectiveness
  • Less likely to rabbit hole
  • We learn from each other
  • Better code quality
  • Transmitting information
  • Lowers your bus number
  • Territoriality and knowledge silos
  • Learning new things from people who know how to do them better
  • Challenging peoples’ assumptions
  • Ability to roll new teams in
  • Pass on programming practices and culture
  • Lower defect rates
  • Fewer failed launches
  • Maintainability is higher
  • To get started:
    • Have a neutral setting for pairing. Location. Software. etc.
    • Use a text editor you’re both comfortable with.
    • Use driver/navigator.
    • Communicate well.
  • Keep your partner apprised of where you’re going
  • Pair programming is a learned skill
  • You have to get your ego in check
  • Reduce barriers to collaboration

60fps on the mobile web

by Ben

60fps on the mobile web — Flipboard Engineering.

Flipboard launched during the dawn of the smartphone and tablet as a mobile-first experience, allowing us to rethink content layout principles from the web for a more elegant user experience on a variety of touchscreen form factors.

Now we’re coming full circle and bringing Flipboard to the web. Much of what we do at Flipboard has value independent of what device it’s consumed on: curating the best stories from all the topics, sources, and people that you care about most. Bringing our service to the web was always a logical extension.


Most modern mobile devices have hardware-accelerated canvas, so why couldn’t we take advantage of this? HTML5 games certainly do. But could we really develop an application user interface in canvas?

Using <canvas> for everything seems like a bad idea. It means you drop any painting or CSS optimizations, sacrifice any searchability (e.g., Google’s spiders), and accessibility (e.g., screen readers). It essentially means writing your own display engine, just to get some very particular display behavior. I get it, but all the code they wrote will probably be obsolete in just a few years.

Millions of Facebook users have no idea they’re using the internet

by Ben

Millions of Facebook users have no idea they’re using the internet – Quartz.

Indonesians surveyed by Galpaya told her that they didn’t use the internet. But in focus groups, they would talk enthusiastically about how much time they spent on Facebook. Galpaya, a researcher (and now CEO) with LIRNEasia, a think tank, called Rohan Samarajiva, her boss at the time, to tell him what she had discovered. “It seemed that in their minds, the Internet did not exist; only Facebook,” he concluded.

This is scary stuff… but to be honest, it sounds a lot like AOL before everyone realized they were actually using the Internet.

How to Set Up GitHub Pages with a Custom Domain

by Ben

Setting up a custom domain with GitHub Pages – GitHub Help.
Tips for configuring a CNAME record with your DNS provider – GitHub Help.
How to Set Up Github Pages with a Custom Domain on Gandi – Daniel Spector.

Some useful resources if you only have to think about DNS a few times a year, like me.

Why Wesabe Lost to Mint

by Ben

Why Wesabe Lost to Mint – Marc Hedlund’s Blog.

I’ve come across this blog post a number of times, and it always makes me think. (Wesabe is also notable for having open sourced their code after failing, though it hasn’t gotten much continued development.) Regardless, more companies should share stories like these so others can learn from them.

From the post:

Mint focused on making the user do almost no work at all, by automatically editing and categorizing their data, reducing the number of fields in their signup form, and giving them immediate gratification as soon as they possibly could; we completely sucked at all of that. Instead, I prioritized trying to build tools that would eventually help people change their financial behavior for the better, which I believed required people to more closely work with and understand their data. My goals may have been (okay, were) noble, but in the end we didn’t help the people I wanted to since the product failed. I was focused on trying to make the usability of editing data as easy and functional as it could be; Mint was focused on making it so you never had to do that at all. Their approach completely kicked our approach’s ass. (To be defensive for just a moment, their data accuracy – how well they automatically edited – was really low, and anyone who looked deeply into their data at Mint, especially in the beginning, was shocked at how inaccurate it was. The point, though, is hardly anyone seems to have looked.)