Skills

Programming Languages:

Fluent: Ruby, Elixir, Java, C#, Groovy
Conversational: Clojure, Haskell, JavaScript, Go, Scala, bash
Familiar: Scheme, Objective-C (Cocoa), C, C++, Erlang, Python

Technologies:

Ruby on Rails — Full Stack - Devise, Authlogic, Paperclip, HAML
Phoenix — Full Stack - Ecto, OTP
Clojure - Ring, Pedestal Services, Core.Async, Datomic
Java — Spring, Guice, Spring MVC, Netty, JPA, Hibernate
Grails — Full Stack - GSP, GORM, Custom Plugins
SQL — ANSI SQL, PL/SQL, T-SQL — PostgreSQL, MySQL, Oracle, MS SQL Server
Web — HTML, CSS, Javascript, Angular.js
Other Tools — Vim, Git, Idea, Mix, Rake, Gradle, Leiningen, Jenkins

General Development & Methodologies:

Object Oriented Programming and Design (OOP/OOD), Functional Programming, Architecture, Design Patterns, Refactoring, Unit Testing
Agile, Extreme Programming (Iterative Development, Refactoring, Unit Testing, Automated Functional Testing, Build Automation, Continuous Integration, Pair Programming)

Experience

Software Developer, Pro Football Focus; Cincinnati, OH — July 2016 - Present

Lead efforts to update stack and replatform on modern technologies allowing the company to reduce data collection time and reduce time-to-market for data and statistics.

  • Developed a complex, real-time data collection tool for sport statistics using Phoenix and Elixir. Utilized Web Sockets for real-time data synchronization across a team of people collecting data. This application uses Phoenix, Elixir, Angular.js, and PostgreSQL. Enabled the business to collect a more diverse set of data, more accurately, in a shorter period of time than previous processes. The real-time nature will allow them to enter new markets for publishing that data.
  • Built a Master Data Management tool to consolidate the maintanence of the company's core data into a single system accessible by APIs.

Software Developer, Team Lead, Gaslight; Cincinnati, OH — July 2014 - July 2016

Customer software development focused on new product development. I was a Team Lead of small, agile teams of designers and developers who successfully delivered multiple projects to a diverse set of clients from Fortune 500 to startups.

  • Used Ruby on Rails and Angular.js to build a complex auditing tool that enabled a Fortune 500 company to increase the speed and accuracy of their billing audits. I created an early prototype to prove the viability of this application that was thought to be "impossible" by some of the client's team. The success of the project led to a follow-on project to customize the application for the sales team, dramatically improving the lead time of their sales quotes.
  • Created a reporting API using Ruby on Rails that was utilized by multiple front-end Angular.js applications. The same backend was used to build applications that served both business and consumer markets enabling a very fast time-to-market and a short 3 month ROI on the consumer application development costs.

Software Developer, Neo Innovation; Cincinnati, OH — Aug 2013 - June 2014

Customer software development focused on new products and Lean Software validation.

  • Developed a highly scalable OAuth provider for a large telecom organization. This application provided authentication and authorization services for all of their public APIs. Built custom tools for concurrent load testing of the APIs under real-world scenarios using Go.
  • Developed an e-commerce application for a unique, high-end fashion consignment startup. This application was built using Ruby on Rails and the Spree E-commerce engine. We created a highly-customized shopping experience for high-end clientele.

Owner / Software Developer, One-Line Fix LLC; Cincinnati, OH — Dec 2010 - Aug 2013

Worked with organizations to provide custom software development consulting services.

  • Developed, designed and architected cash access systems. Implemented transaction processing host for an extensive network of ATMs, POS, and Kiosk devices. Included support for industry protocols and standards such as ISO8583, 91x, and IFX. Built scalable, core transaction system using Java 7, Netty, Spring, and JPA. Transaction acquiring occurred using multiple protocols all processed through a unified engine. Used Microsoft .NET technologies, including C# and WPF (XAML, Prism, MVVM), to build a rich-client application for initiation and retrieval of Credit Card, Debit Card and other cash transactions. Used Grails to create custom administration and reporting web applications to manage and monitor financial transaction processing.
  • Upgraded and modernized Ruby on Rails 2.1 application to Rails 3.2, Ruby 1.9, and PostgreSQL 9.1. Upgraded to current, supported plugins for authentication (Authlogic), file attachment (Paperclip) and Full-Text Search (Textacular). Deployed application using managed services Amazon S3 and Heroku.

Architect, Developer, Manager, SpiderLogic; Milwaukee, WI — Oct 2005 - Dec 2010

Lead efforts to architect, design and implement solutions for clients working with a distributed team of developers (4 offices in 2 countries). Worked directly with sales to provide solution architecture, analysis and estimates in presales efforts. Mentor, Unit Testing and Agile evangelist. Strong influencer of technology direction and tooling decisions.

  • Designed and implemented custom WebDAV server in .NET/C# to provide access to files stored in a database allowing users to map network directories to virtual filesystem.
  • Designed and led a distributed team in implementation of .NET Compact Framework handheld application that integrated with a Java based Web application using SOAP Web Services. Included configurable user interface and reliable delivery of messages over unreliable networks.
  • Led a team in implementation of a Spring Roo based tool rental system for a big-box retailer including integration with multiple back-end systems using custom socket protocols, SOAP based Web Services and JMS messaging.
  • Java, Hibernate, and Oracle application rearchitecture to better leverage Hibernate and achieve dramatic scalability improvements supporting 10x higher concurrent users.
  • Built web applications using Grails including a share-based proxy voting application and a human resources management application.
  • Provided architectural guidance and mentoring to large Java and .NET shops implementing SOA.
  • Developed and delivered training in Scrum and Agile Software Development practices.

Lead Developer, B2P Commerce Corp.; Chicago, Illinois — Nov 2002 - Oct 2005

Designed, architected and developed a web-based performance measurement, reporting and analysis system using Microsoft's .NET platform using C#, ASP.NET, and SQL Server. The system allowed Nonprofits to measure social impact and report to funders. Foundations and other funders could track grants, manage organizational objectives and aggregate grantee performance through the system. The system was successfully used by 25 Foundations and approximately 1500 nonprofits.

  • Lead a team of 6 developers working with QA, BAs and PMs. Coached junior developers.
  • Applied agile methodology, Extreme Programming (XP), to ensure ongoing product quality and to adapt to a highly dynamic business environment
  • Assisted analysts with developing requirements, estimating effort, and prioritizing work
  • Developed tools, created scripts, and setup systems for a one-step scripted build including unit testing, functional testing and database creation. Setup and maintained systems for source control, defect tracking and continuous integration

Technical Team Lead, JG Sullivan Interactive; Chicago, Illinois — Apr 2002 - Nov 2002

Lead a team of 8 in architecting and developing consumer and business facing e-commerce solutions for the home appliance and flooring industries. The system allowed leading brand name appliance manufacturers to sell online through their local dealer networks. The application was developed using Java (Struts) and Perl.

Java Engineer, Inclusion Inc.; Los Altos, California — Mar 1999 - Feb 2002

Developed web-based collaboration tools used by a number of large organizations for knowledge management and distance collaboration. The system was built on top of a Java servlet infrastructure with an Oracle back end and deployed on the Tomcat servlet engine. Designed and implemented major new features for the application including file attachment mechanism, an address book import and sharing system to integrate with Outlook contacts, XML-based remote authentication (Single Sign-On) protocol to allow authentication against remote systems. Installed and maintained production Linux servers with Apache for image serving, DNS and CVS

Education & Certifications

Ohio University Honors Tutorial College, Athens, Ohio — Bachelor of Arts in Philosophy, 1999

University of Santa Cruz, Santa Cruz, California — Coursework Programming in Java, 2000

Sun Certified Programmer for the Java 2 Platform — Feb 2002

Talks

Everyday Functional Programming in Clojure - December 2014 - Cincinnati Day of Functional Programming

FP Can Do CRUD Too - Using Functional Concepts in Web Applications with Scala & Play - October 2013 - Cincinnati Functional Programmers Users Group

Scalatron — November 2012 - Cincinnati Functional Programmers

Writing Grails Plugins — March 2012 - Cincinnati Java Users Group

NoSQL with MongoDB and Ruby — November 2010 - RubyMKE (Milwaukee, WI)

REST with Rails — August 2007 - RubyMKE (Milwaukee, WI)

More Proof

Bus Detective

An application that uses Real Time data for finding out when your bus is coming in the Cincinnati Metro region. The backend of this application is written in Ruby on Rails using the GTFS and Protocol Buffer standards.

Enotify Deconstructed

Ruby on Rails application for parsing and mapping of data sent out by Milwaukee City Enotify email system.

TestMaker

Designed and implemented Tool (Test Object Oriented Library) — a Java-based framework for building automated tests for SOAP Web Services, dynamic Web sites and other Internet protocols. TestMaker was built on top of Tool and run through Python scripts using the JPython implementation. Both portions are licensed under the GPL license.

My Blog

My GitHub Repository

My StackOverflow Reputation