Resume
Objective
A exciting, challenging, senior position programming Ruby with a progressive, agile team.
Profile
Rob Sanheim is a skilled software developer with a track record of creating quality applications for users and clients, in whatever language or tool fits the job best. Rob began programming mostly in the J2EE stack but has since been spending most of his time in Ruby and Rails, with work in Ajax and PHP as well. He has been involved in IT for over fifteen years, with over seven of it in software development. Rob practices test-driven and behavior-driven development, and strongly believes in the value of communication, flexibility, and working code over heavy process and detailed specification documents.
Rob has worked in large corporate environments and small startups located across the globe. He has contributed to a variety of open source projects including Rails, DWR, and Rails plugins. He has been a coeditor for Ajaxian.com, writes about software on his own blog, and has presented sessions on Ajax, refactoring, and Ruby on Rails for user groups and various conferences. Rob lives in Madison, Wisconsin with his family, but is willing to relocate for the right job.
Experience
Seeking Alpha, April 2006 – current
Currently working with a highly agile team of six developers and ten remote business experts for a leading stock market web site. Lead developer on the ongoing conversion of the core blog engine from a PHP based Wordpress platform to a custom Ruby on Rails application to serve over 150,000 pageviews a day. Specific accomplishments include:
- Led development of new core platform in Rails, converting from a modified version of Wordpress 1.5. Features included multisite blog core with posts, threaded comments, RSS/Atom feeds, and full backwards compatibility with legacy urls to maintain search engine position.
- Led development of test suite for the new platform, with over 400 unit, functional, integration, and system level tests. Worked with the test/spec library for more literate tests using BDD, and used Mocha for mocks and stubs where practical.
- Implemented object-level caching in memcached and fragment/action/page level caching where appropriate to handle the demands of over 70,000 visits a day. Extended and patched the cache_fu plugin where appropriate to suit Seeking Alpha’s needs.
- Integrated the open source forum engine Beast into the existing Rails and PHP platform. Modified Beast’s user system to integrate with the legacy authentication system. Modified to maintain user friendly common look and feel with the existing site.
- Created a public facing content submission form for stories and analysis from readers. Worked within the existing PHP platform combined with Prototype, a Field Validation library, and TinyMCE for WYSIWYG functionality and ease of use. Developed PHP back-end to email submissions to editors for review. (seekingalpha.com/do/content/submit.php)
- Setup continuous integration in for all Rails projects to help maintain code quality.
- Created shared libraries via svn:externals for three ongoing Rails applications to improve productivity and decrease time wasted keeping common code in sync across apps.
Consultant, Large Insurance Corporation, 2005 – 2006
Worked primarily on reporting applications supporting Marketing customers. Led efforts to introduce agile practices, such as continuous integration and automated testing using JUnit. Cooperated with a team varying in size from four to eight developers, a project lead, and technical lead. Provided training and mentoring for employees learning Java.
- Converted an agent projection application written in Excel by business users to a web application using JSP/Servlets and Oracle. Created an testing framework for verifying business logic in the web app against formulas from the spreadsheet, by importing expected results from Excel and using them to drive the test suite.
- Worked as a technical leader on a sales dashboard application integrating the open source CEWolf graphing to display policy counts. Wrote data access layer for the project leveraging SpringÕs JDBC framework and in memory database testing, providing a common API for team members to build on.
- Created database integration tests using an in-memory database (HSQLDB) for proof of concept for Hibernate object-relational mapping. Implemented a vertical slice of applications with Hibernate using HSQLDB to avoid delays due to data modeling team.
Madison Ruby on Rails User Group, April 2006 – current
- Helped lead efforts to organize and continue to expand user group.
- Created, modified, and administrates the user group wiki, running on the open source Rails wiki i2, with modifications to prevent spam. (www.madisonrails.com)
- Developed and extracted the BrainBuster plugin as a result of the wiki, an accessible logic captcha to defeat automated spam bots.
Programmer Analyst, Retail Company, 2001 – 2005
Worked with merchandising and retailing business areas to develop internal customer applications. Learned the company’s logistics processes through close support and contact with customers. Most work was done using Java Servlets and JSPs built on an internal framework. Also handled reporting needs using Crystal Reports and custom written ASP scripts for special client needs in the warehouse.
- Completed a Java based intranet system for scheduling product transfers between stores or from stores to distribution centers. Was responsible for creating the common framework classes, which were then used by other developers on the project. My team consisted of one business analyst, two developers, and several end users.
- Became a company expert in Crystal Reports, developing best practices and common idioms to be followed by new developers.
- Taught several company classes on Crystal Reports development for both new and intermediate developers. Class size ranged up to twenty employees per class.
Production Specialist, Hobby Wholesaler, 1997 – 1999
Scanning/processing of images, photo retouching and page layout. Developed Photoshop workflows for automating image processing.
Education
University of Wisconsin at Whitewater – B.S., Management Computer Systems 2001
Skills
- Programming Languages: Ruby, Javascript, Java, JSP, PHP, XHTML, CSS
- Open Source Libraries: Rails, Prototype, Dojo, Scriptaculous, Rake, WordPress, Struts, Spring, Hibernate, Ant, DWR, JSON-RPC-Java, Selenium
- Rubygems/Rails Plugins: Mocha, ZenTest, Test/Spec, Capistrano, Hpricot, Piston, Mongrel, Feedtools, ActsAsAuthenticated, RestfulAuth, CacheFu, HTML Tidy
- Database: Mysql 4/5, DB2, Oracle 9, Microsoft SQL Server
- Tools: Textmate, Firefox, Firebug, Eclipse 3.0+, SVN, CVS, Trac, Bugzilla, Photoshop, Parallels
- Platforms: Mac OS X, Windows 2000/XP/etc, XEN Linux VPS, Ubuntu, Apache HTTPD, Tomcat 5, IBM AS400, Websphere
Open Source Contributions
- BrainBuster – a Logic Captcha plugin for Rails
- Rails core contributions: http://dev.rubyonrails.org/search?q=rsanheim
- Finished #14 in the first Rails hackfest
- cache_fu (ie acts_as_cached 2): http://require.errtheblog.com/plugins/search?q=sanheim
- ZenTest - patch for colored test output
Presentations
Ruby on Rails for Java Programmers
Ajax: Dynamic Web Applications and Java
Effective Ajax
Better Software Through Refactoring
Referrals
Available by request.
