Sections

Resume

Standard resume available in PDF or Word.

Contact

Please contact me via email.

Experience

Lead Software Developer

Led development of the "e3" marketing email broadcasting system, used by larger volume customers, the largest being eBay.

Introduced mixed-functional programming techniques using Scala into a Java- oriented system originally running entirely under JBoss. Revised the architecture into several different components that largely used REST APIs internally for triggering RPC, and designed and deployed a new public API leveraging REST principles, largely using a custom framework and Jetty. Simplified cluster queuing strategies to manage the load on a central relational database server.

Coordinated and planned projects for e3 between customer contacts, account managers, quality assurance and support, and systems administration groups. Designed, documented, estimated, and managed deployment of several new application features. Organized priorities between maintenance and development, with developers sharing two working shifts. Introduced code review practices.

Directly responsible for a team of 5 developers. Organized performance reviews and hiring decisions. Introduced automated testing practice that included unit-style tests of database logic, using TestNG, and a schema management tool I created that uses SQL creation statements to identify and create lossless adjustments automatically. Created the continuous integration system using Hudson that worked with maven, buildr, and sbt. Structured production deployment procedure across two physical locations.

Senior Software Engineer

Developed the Auto-Document Separation engine. Contributed to the mohoClassifier and maintained the mohoResumeExtractor products. Most of the algorithmic work was done by an R&D group that would partner up for implementation by the development teams. Most applications were application libraries or Windows services developed in C++ with various wrapping interfaces for COM or SOAP. I ported some of the core algorithms into Linux.

Early on, I created a build and version management system, using Unix-style practices for Windows tools. This included windows-based packaging and deployment.

Later, worked on prototypes of Windows desktop applications that could be used to train the text classification algorithm - in C#.

For the last 6 months, worked in a design role in Vienna. The rest of the time was spent in San Diego, where the company, originally called Mohomine, was acquired in 2003 by Kofax.

Education

Spent time at the following schools:

Skills

Management Skills

Technical Skills

Software Design & Architecture Skills

Personal Statement

I led a small programming team this last year after developing software over the last decade, and you know what? I still like it. But we'll see if I get introduced to customers as a CTO again in this lifetime.

The JVM is also been good to pick up, especially with new languages like Scala adding alternatives via extension, rather than just having to do a "rewrite". I introduced Scala at my last company, and after a little breaking in, most enjoyed the paucity after working with Java.

I'm still more comfortable with strongly typed languages; they help me strongly defend against myself.

When it comes to practice, I consider myself a "culturalist". My first rule is "culture eats strategy for breakfast". Pick only the important fights that your culture or system really needs; let the strengths of your system do as much work as possible. Great managers should strive towards laziness.

And don't forget to measure. Once you get used to spying on metrics over the long haul, you'll start seeing problems before the "uh-oh" email get's CC'd to everyone in the company.

Oh, and you don't need a lot of specialists to make a great product, but you do need great communication. And a lot of opinions, usually critical.

Other Information