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 Liaison. Previously, I was a Developer at Continuity and 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, OpenHack Iowa City, and previously organized NewHaven.rb. I have an amazing wife named Danielle Oakes.

Filtering for the month December, 2013. Clear

char vs varchar for UUIDs in MySQL and PostgreSQL

by Ben

I spent some time today evaluating whether switching columns that store UUIDs from varchar(255) to char(36) (or binary, etc) would result in any noticeable performance improvement in MySQL. It does seem like it could make an improvement, but not enough to be worth the effort in our case.

What I learned from researching today:

If I’m wrong about what I took away from reading today, please let me know in the comments. I’d love to learn more about this.

A very basic rsync HOWTO

by Ben

A very basic rsync HOWTO

I found this useful when setting up rsync for backups on a low-resource, headless Linux box. It was especially nice because it had a simple writeup for inetd which can be a better choice when you only connect to the rsync server a handful of times a day.

The future of Linux and Flash explained – It’s your fault

by Ben

The future of Linux and Flash explained – It’s your fault.

A good insight on the future of desktop Linux from 2011-2012. A bit ironic, given the turn of events with Steam, but a pretty realistic assessment.

Now that there’s widespread support for h.264 and WebM, my personal need for Flash is rapidly disappearing. That’s a good outcome, all things considered.

The first CyanogenMod Android smartphone is on its way

by Ben

OPPO N1: The first CyanogenMod Android smartphone is on its way | ZDNet.

Interesting. If this does well, I wonder if other manufacturers would consider using CyanogenMod…. or if CyanogenMod would reduce support for “unofficial” handsets.

Technical Debt via Technical Drift

by Ben

Are you experiencing technical drift? – Code Climate Blog.

In summary: technical drift leads to technical debt, which can be prevented through iterative design.

This will definitely factor into the future plans for our codebase. Sometimes it’s easy to forget that you’re contemplating “Big Design” when you should really focus on iterative design.

From their post:

If you’re not taking an active role in refactoring your application every week chances are you’re experiencing “technical drift”. Having a problem space that is continually changing necessitates continuous reworking of how your application is designed — what Agile practitioners call “iterative design”. When you’re able to do this effectively, you can round off the peaks and avoid some of the pitfalls of Big Design.

Extended maintenance for Ruby 1.8.7 and 1.9.2

by Ben

Security Maintenance Extension of Ruby 1.8.7 and 1.9.2.

Heroku | A Patch in Time: Securing Ruby.

Heroku has stepped up to support Ruby 1.8.7 and 1.9.2 for an additional 6 months. It’s good that they are still maintained, but it does reduce the incentives to upgrade. This “reverses” the sunset of 1.8.7, in some sense.

From the post:

This maintenance extension is made possible by Heroku, see their blog post A Patch in Time: Securing Ruby for more information.


You may remember an announcement approximately 6 months ago that sunset 1.8.7.

While ruby-core will no longer resume maintenance of 1.8.7 or 1.9.2, Terence and Zachary will support these versions for security maintenance as part of a corporate sponsorship.

You know Ubuntu as an operating system. Mandela knew it as his life’s mission.

by Ben

You know Ubuntu as an operating system. Mandela knew it as his life’s mission.

Yet the system’s name didn’t spring from nowhere. It’s inspired by a notion that’s even less tangible than a bunch of ones and zeroes; it describes, Obama said, the extent of Mandela’s compassion.

There is a word in South Africa — Ubuntu, a word that captures Mandela’s greatest gift: His recognition that we are all bound together in ways that are invisible to the eye; that there is a oneness to humanity; that we achieve ourselves by sharing ourselves with others, and caring for those around us. … He not only embodied Ubuntu, he taught millions to find that truth within themselves.

VHX offers DRM-free video as a service

by Ben

I recently got a DRM-free download of Primer, a great low-budget indie sci-fi film.  I was happy to find out that VHX offers DRM-free video downloads as a service, connecting content creators directly with their customers.  They currently have a handful of films, but recognizable names like Aziz Ansari, This American Life, and Upstream Color (from the creator of Primer).

I can definitely understand DRM on video rentals (like Netflix), but my feeling is that if I purchase an MP4 file, I should be able to play that MP4 file on MP4-compatible player, regardless of manufacturer.  That’s what DRM-free gives you, so I’m happy to hear VHX exists.  Ideally, it’s the way more video content gets delivered in the future.

The Amazing Spider-Man: Not bad, but not all that good either

by Ben

From my review posted on Amazon:

I generally liked it, but almost stopped watching halfway through. This movie wasn’t original or interesting enough for me to want to see it again. Peter Parker didn’t feel like Peter Parker. While that could be okay, it felt like the character wasn’t developed as much as he needed to be. Maybe I just prefer the first Spider-Man film… but I don’t think this one deserves a 5 star review like some others have given it.

Phone/Phoner gem: SyntaxError on Rails 3.2.16, 3.2.15, and possibly before

by Ben

From an issue I opened today. We ended up switching to phony instead. Just a reminder to everyone out there that eval is evil!

While upgrading a project to 3.2.16 we ran into the following error:

syntax error, unexpected end-of-input
          unless defined? @@{:instance_writer=>false}

We tracked it down to monkey patching of cattr_accessor. It looks like some code was copied out of ActiveSupport, but ActiveSupport changed to allow a second argument (e.g., {:instance_writer=>false}). The use that’s causing the error is in ActiveRecord::Base.


[...]/gems/phone-1.2.3/lib/support.rb:47: syntax error, unexpected end-of-input
          unless defined? @@{:instance_writer=>false}
        from [...]/gems/phone-1.2.3/lib/support.rb:47:in `block in cattr_accessor'
        from [...]/gems/phone-1.2.3/lib/support.rb:46:in `each'
        from [...]/gems/phone-1.2.3/lib/support.rb:46:in `cattr_accessor'
        from [...]/gems/activerecord-3.2.15/lib/active_record/base.rb:339:in `<class:Base>'
        from [...]/gems/activerecord-3.2.15/lib/active_record/base.rb:333:in `<module:ActiveRecord>'
        from [...]/gems/activerecord-3.2.15/lib/active_record/base.rb:33:in `<top (required)>'

I hope this helps in providing a fix (or at least for other people who run into the problem).