Me

Nolan Eakins

Indianapolis

nolan@eakins.net(317) 497-7545sneakin@semanticgap.com

Overview

Summary

I have been doddling with programming, operating systems, servers, and web design since the mid-nineties. During that time I have become a proficient and disciplined programmer in a handful of languages, a capable [Gentoo] Linux admin, and a rusty graphic designer.

Sometime around the start of 2006 I drank the Rails kool-aid, which caused me to nearly forget C++ and to shudder at the sight of PHP. As a result my focus came back to creating web applications and creating the next Google. Thanks to Rails and the surrounding buzz, I've found myself creating, contributing to the creation of, and/or setting up Linux production environments for brand new Rails applications.

While I've been living and breathing lots of Ruby these last two years, that doesn't mean that my knowledge is forgotten or static. I still retain some working knowledge of C/C++, XMPP, OpenGL, and other technologies that I spent a signifigant amount of time using prior to Rails. Recently I've begun exploring Erlang and creating circuits based around an Arduino.

Objective

Ideally to use Ruby, Rails, Erlang, Linux, and/or XMPP while while working on a genuine agile team composed of people who are great at what they do.

Though I would be open to flipping bits in raw machine code if the price is right.

Internet Work

Bluefish Wireless Management

July 2008 — Sept. 2008
Senior Software Engineer http://www.bluefishwireless.net/

I came in on a two-man project that was using Rails that could have been described as 80% done. I introduced RSpec, Selenium, RESTful design, and some Agile project management techniques to whip out a a set of features, a backlog, and a collaborative environment.

Tools & Technology: Ruby on Rails, Capistrano, rSpec, RESTful Auth, Fetcher, Selenium, Acts as state machine

Dealerflow Corporation

Sept. 2007 — Feb. 2008
Developer / Sys Admin http://www.dealerflow.com/

At Dealerflow I worked on a Rails application targetted at auto-dealerships with a handful of people with varying skill sets and specialities.

While there I:

  • Helped integrate ejabberd and Rails by creating Rake and Capistrano tasks to control and deploy ejabberd, devising a scheme of temporary passwords to allow JSJaC to securely survive page refreshes, and created the RESTful controllers that allow ejabberd to log presence and messages to Rails.
  • Spent my final days reviewing over 100 pages of specifications provided by an SMS aggregator. I reduced them to nearly two dozen stories allowing me to estimate when we would be able to begin sailing through carrier testing. My hope was to allow SMS to be used as ejabberd's offline channel to allow people to IM even when they weren't at a computer.
  • Helped administer a handful of systems running on one physical machine and at two prominient VPS hosts. During that time I migrated our development server from an aging Debian to Gentoo followed much later by a migration from a physical machine to a slice. During the latter migration I made use of mod_redirect to provide zero downtime for our SVN and Trac instances while the DNS changes propageted.
  • Attended two Pragmatic Studios, one for Rails and another on Erlang.

Tools & Technology: Ruby on Rails, nginx, Monit, ejabberd, JSJaC, Capistrano, restful_authentication, will_paginate, Erlang, MySQL, Prototype, Lowpro, Scriptaculous, RSpec, javascript_test, Gentoo, Debian, SVN, Trac

GoodServer, Inc.

Oct. 2006 — July 2007
Developer / Sys Admin http://www.goodserver.com/

I designed and implemented a project called SVNApp, short for Subversion Appliance. I created a Ruby on Rails application to make managing Subversion repositories much easier, and then packaged it up to run and install from a bootable CD.

  • Created a Rails application that used Subversion's Ruby bindings to display changelogs; interacted with the user and group shell utilities to manage the systems users and groups; and reversed engineered ActiveResource's protocol so it could be used to interface with a Lucene based indexing service.
  • Used Rake to control a Gentoo Linux build to produce an installable LiveCD that contained all the parts of the application, all setup, and ready to go including an unoptimized Rails based installer.
  • Setup and maintained two servers and a workstation using SuSE Linux. The setup employed RAID mirroring, DNS, uninteruptable power supplies, and an ISDN connection.

Tools & Technology: Ruby on Rails, Apache, SuSE Linux, Subversion, Swig, C, Rake, Gentoo Linux, XPlanner, Collaboa, Bind

Progressive Lawnscaping

Summer 2005
Contractor http://www.progressivelawnscaping.com/

I was contracted by Andrew Shoaf to setup and theme a Drupal powered web site for a local landscaping company. I had to convert a Photoshop design into an HTML/CSS template usable with Drupal. Various Drupal modules were also setup to meet PL's specialty uses.

Volunteer Work

Progressive Indiana, Inc.

April 2005 — Nov. 2006
Webmaster/Director http://www.progressiveindiana.org/

I maintained Progressive Indiana's web site, developed new sites for specific purposes, and sat on the board of directors providing assistance and input on the group's activities until a majority of the board decided to divert their energies elsewhere.

  • My work on the primary web site included posting events and collecting news items which resulted in approximately 1,000 visitors per month at its height, around 90 registered users, and attracted the attention of Senator Evan Bayh.
  • I developed a web site that was used to accept donations for a full page ad in the Indianapolis Star. The site featured a barometer to track the campaign's progress, and made use of an idea of viral marketing by making it easy for a donor to tell their friends about the campaign. The site can still be seen at https://secure.progressiveindiana.org/.

Tools & Technology: Ruby on Rails, Drupal, MySQL, HMTL, CSS, OpenSSL, and GnuPG

[David] Sanders for Congress

Sept. — Nov. 2004
June 2006 — present
Webmaster/Mass mailer

I offered to put together the technology to have an online chat which was used in a small post-election chat. This initially planned to be a Javascript and HTML interface to a Jabber chat room, but resulted in being completely database driven due to constraints and problems with jabberd 1 and my host.

  • I put together a JavaScript and HTML interface to a Jabber chat room initially using the WebClientService component for jabberd, an open source Jabber server, to communicate with the chat room. Due to problems with WCS, I reprogrammed everything to use class.jabber.php, and then made it completely database driven because Jabberd wouldn't scale.
  • David Sanders wanted the chat to be a Q & A, so I wrote a Python script that took requests from people in the room, and gives them permission to speak when it is their turn. The actual requests are hidden by the web interface.

Tools & Technology: PHP, MySQL, HTML, JavaScript, Jabberd 1.4.3, Python, Jabberpy, WebClientService, class.jabber.php

Projects & Open Source

Bitter

December 2007 — present
Project Lead http://bitter.rubyforge.org/

This is the microblogging platform that I use at bitter.nolan.eakins.net. It's the result of being prodded to join Twitter while working for Dealerflow. Its highlights are RSS support, SMS sending and receiving via TextMarks.com and a broken XMPP bot.

Tools & Technology: Rails, TextMarks, MySQL, XMPP4R, bzr, RubyForge

Psi

Aug. 2004 — Spring 2005
Contributor http://nolan.eakins.net/taxonomy/page/or/20
http://psi.affinix.com/

Psi, an open source Jabber client, only supported the undocumented group-chat protocol. I offered to add support for JEP-0045, Multi-User Chat. I ended up partially implementing the full MUC spec along with bookmark storage before the core Psi team decided to switch to Qt 4 before my changes were committed. While working, I generalized multiple use cases used to change an occupant's role into a simple to use role/affiliation editor that used drag and drop.

Tools & Technology: C++, Qt, qmake, CVS, GNU arch

MyPasswordSafe

Dec. 2003 — Present
Project Lead http://www.semanticgap.com/myps/

When I reinstalled Linux on my computer, I lost the ability to access my list of passwords that was created with Password Safe. MyPasswordSafe is the result of that need. It's a program that provides similar functionality to Password Safe, but under Linux and any other operating system Trolltech's Qt supports.

Tools & Technology: C++, Qt, qmake, make, CVS, g++, gdb, doxygen, CppUnit, Portage

Pong

Fall 2003
Project Lead http://www.semanticgap.com/pong/

After I read Cleanroom Software Engineering and The Pragmatic Programmer, I wanted to try some of the approaches that were described out on a simple game. Pong was the game that I chose, while taking some liberties with the Cleanroom process. I made use of various design tools such as a specification, sequence enumeration, and a "tracer bullet". The result was my first working game of pong that included a menu system that I created, some basic AI, and time accurate collisions. And did I mention that I finished?

Tools & Technology: SDL, C++, make, g++, gdb, Adobe Photoshop, SmartDraw, CVS, cygwin

Various Web Sites

  • http://nolan.eakins.net/: This is my blog which currently receives nearly 1,000 views of the front page and about 3,000 requests for the RSS feed per week. It contains samples of my writing, especially in the essays section which contains a number of Letters to the Editor of the Daily Journal that I've written. The whole site is powered by Drupal, an open-source content management system.
  • http://www.semanticgap.com/: This was created early in 2004 and needs more content and a redesign. The highlight is that CSS is used to lay everything out on the page, and that it has managed to received on average 6,000 page requests per month.
  • http://www.inside3d.com/k3d/: I created this in high school, and haven't maintained it. It's a good reflection of my graphic design abilities along with my early programming efforts and aspirations.

Education

Pragmatic Studios

  • Ruby on Rails: Denver, CO, September 2007
  • Erlang: Chicago, IL, Feburary 2008

Purdue University

2001 — 2002
Freshman Engineering West Lafayette, IN
  • Activities: Purdue Linux User's Group, Purdue ACLU, ACM

Greenwood Community High School

1997 — 2001
Greenwood, IN
  • Core 40 Diploma with a 3.635 (3.92 weighted) GPA
  • Graduated 15th out of 250
  • Senior year curriculum: Calculus, Advanced Environmental Science, Advanced 2d Art, English, Economics, Government, Journalism (Web page), and Business Management.
  • Entry in Who's Who: Art Club; Drama Club; Math Team; Quill & Scroll; Honor Roll; Perfect Attendance Award; Pres. Academic Fitness Award; School Webpage Designer (3 yrs.); 2nd Place Science & Art Contest
  • Maintained and developed the school's web site for three years. The site was a basic HTML site developed using Adobe GoLive, Photoshop, and text editors without any server side scripting, which I wanted to use during my final year.