Erik Hanson

I'm a software developer in San Francisco.

Over the years I've worked in C, C++, Java, Javascript, Ruby, and Objective-C, creating software for the web, MacOS, iOS, Android and WebOS.

I'm currently working as an independent consultant, focusing on iOS, Rails, and Javascript.


Current Project

I'm working on another iOS app, this time using RubyMotion. Stay tuned.


Recent Project

imageproxy is an open source image manipulation proxy server written in Ruby as a Rack app. It's a great way to resize images on the fly so you don't have to manually resize them every time your UI design changes. It works quite well in production (but for high-performance applications, there are undoubtedly faster alternatives). Check it out.


Older Personal Projects and Code Snippets

Reload CSS—a simple bookmarklet that reloads a page's CSS without reloading the rest of the page. Useful when tweaking CSS. See the code on Github or drag this to your bookmark bar: Reload CSS.

Relative Date—a very simple relative date function implemented in Javascript. It returns a string like "4 days ago", preferring to return values >= 2. For example, it would return "26 hours ago" instead of "1 day ago", but would return "2 days ago" instead of "49 hours ago".

wshlst—a group wish list web site, written in Rails. It's currently not open for signups.

Palbum—an iPad app for viewing your friends' Facebook photos. (The app doesn't seem to work anymore and I haven't yet updated it.)

Expectacular—a matcher library for Cocoa/Objective-C. The goal is to have a full-featured matcher library that can be grokked easily by XCode's code completion.

SeleniumQuery—makes Selenium testing in Ruby a little easier by helping you build a jQuery string in Ruby that can be executed in the browser during a test.

BoardsConsult and RotationTracker —an exam preparation website for the US Medical Board Exams and Licensing Exams (focusing on clinical pathology), and a medical resident rotation evaluation website, both written in Rails. (Neither site is currently maintained)


Contact