Objective

The convergence of massive amounts of real-time data, mobile tech, and the promise of commodity cloud computing presents an abundance of opportunity for innovation. As a developer, I have not been this energized by the possibilities of current technology since the Internet boom of the late 1990s. 

I envision myself being (or working with) an innovator advancing the boundaries of what humanity can do with software and data. In other words, if you are just another social-media marketing start-up, I'm probably not interested.

Summary

I'm a Web App developer by trade; a data science dabbler and self-proclaimed gamification expert in my spare time. I have a deep, applied interest in building online communities and unique social applications dating back to the soft purr of dial tones and carrier signal gratification of the FidoNet / BBS days.

I have more than a decade of professional experience in the Telecommunications industry, with a focus on the Network Inventory and Provisioning domains.

When I come home from work, I code for fun. I'm an autodidactic polyglot programmer who believes the best way to evaluate a technology is to build something with it. These days, I'm playing with HTML5, AngularJS, map/reduce, Node.js, and functional languages with a focus on distributed, message-driven, micro-application architectures.

Work History

Work History
Mar 2004 - Present

Senior Software Engineer

Level 3 Communications

As a Senior Engineer I've been intimately involved with the design and implementation of Level 3's Network Inventory & Provisioning applications. I've participated in every facet of the full application lifecycle: authoring software architecture / design documents, heads-down implementation, conducting code reviews, mentoring new developers, interviewing new hires, defining code standards, profiling and optimizing application performance, authoring production support best practices, and conducting code-handoffs to offshore maintenance teams. 

I was responsible for the design of our application's Feature-Driven Development process and the resulting Git branching strategy used by 60+ developers across 6 SCRUM teams. I wrote a DSL for using Git with our FDD process.

I was also the Lead Technical Analyst on one of the largest - to my knowledge - inventory data conversions in the Telecommunications industry. In this role I defined the transformation rules for migrating millions of circuit records from a legacy system to a COTS app, achieving a 97% success/accuracy metric.

During my tenure at Level 3, I've logged extensive experience developing under the Rational Unified Process and an Agile (SCRUM) process. Additionally, I've acquired a thorough understanding of the Network Inventory and Provisioning domains.

Skills used:

  • Java
  • J2EE
  • Spring
  • Flex / BlazeDS
  • Weblogic
  • Oracle - PL/SQL
  • ORMs (Hibernate, iBatis)
  • JMS
  • SOAP
  • Enterprise Service Buses
  • Strong OO principals
  • Test-Driven Development
  • Continuous Integration (Jenkins)
  • Git
1997 - Present

Principal

Memetix Devworx (independent consultancy)

I've developed web applications for many clients as an independent consultant under the moniker of Memetix Devworx. An exhaustive list of projects is too long to enumerate, but these days I am focused mostly on the development of on-spec web and mobile applications.

My most successful on-spec project is Twitcaps (http://twitcaps.com), an application that aggregates Twitter data to provide a real-time view of all the images being posted to Twitter. It features full-keyword search, location-based search and the ability to capture images for your own use. Twitcaps has been featured on several significant blogs, including Webmonkey and Wired Epicenter:

http://www.webmonkey.com/2009/06/twitcaps_gives_photographic_insight_to_twitter_s_zeitgeist/

http://www.wired.com/epicenter/2009/09/seven-ways-to-see-the-world-through-twitters-eyes/

I have started or contributed to more than a dozen open-source projects over the years, my latest and most widely used being the Java version of the Microsoft Translator API:

https://github.com/boatmeme/microsoft-translator-java-api

At last count, I had over 40 active (public & private) code repositories between Github, Bitbucket, and Google Code.

Skills used:

  • Java
  • Android
  • Node.js
  • AngularJS
  • Redis
  • MongoDB
  • CouchDB
  • MySQL
  • NoSQL (general technology evaluations and prototyping)
  • OAuth
  • RESTful Web Services
  • API design
  • Social Networking APIs
  • Data Aggregation
  • Data Structure and Algorithms
  • High Concurrency
  • Natural Language Processing (sentiment analysis)
2003 - 2003

Senior Software Engineer

Bandwidth Communications

Responsible for designing, implementing, and leading a team of junior engineers in the development of direct-marketing applications built with Flash/HTML/Javascript and a Java back-end.

Authorship of design documents, proposals and conducting new-hire interviews.

2002 - 2003

Senior Software Engineer

Company 39

Served as a Senior Engineer on a team developing J2EE and .NET Project Management applications. Specialization in the workflow domain.

1998 - 2001

Software Engineer

iXL

Worked for web consultancy firm iXL, in the heady days of the late 20th century. Participated in the design and implementation of a high-traffic, Java-based web reservation system for a major car rental company. Worked on a dizzying variety of technology platforms for a large number of other clients. Specialization in the Travel and Tourism domain.

Skills used:

  • Java
  • Perl
  • HTML
  • Javascript
  • C++
  • ASP
  • Oracle
  • MS SQLServer
  • Informix
  • Server-side Javascript

Skills

Skills

Node.js

Built and deployed many Node.js applications from the ground up. I have experience in Node creating REST APIs, Image manipulation servers, machine learning algorithms, and highly scalable (horizontal), message-driven architectures comprised of distributed Node processes.    Experience with the following frameworks:     Express Backbone Faye (bayeux messaging) Vows (BDD testing)     Experience deploying Node.js applications to the following PaaS providers:     CloudFoundry AppFog Joyent Smart Machines Nodejitsu Heroku  

Unix

Unix has been the primary target platform for most of the applications I've developed during my career. I'm well versed in many different flavors of Unix, my current favorite being the CentOS Linux distribution.   I possess the skills necessary to build out a production-level server environment from a clean Unix install.    Experience with the following Unix software:     iptables bind/DNS sendmail / postfix Apache HTTP Server PHP Perl Python Tomcat MySQL Subversion VI  

Test Driven Development

I employ a test-driven development methodology during implementation. Using TDD, I have greatly improved my productivity, code-quality, and - as a happy side effect - my overall software designs are better. Encapsulation, Separation-of-Concerns, and Loose Coupling are enforced and refactoring is much easier as a result.

Object Oriented Design

I'm knowledgeable in Object Oriented Design fundamentals and strive to adhere to the principals as much as possible. I'm familiar with Design Patterns (GoF and beyond) and use them often. My experience with OO Design is deep enough to understand that it is sometimes appropriate to violate these principals and that a fine balance must be struck between elegant design and functional, maintainable code.    I've seen too many projects mired down in the design phase with lead engineers and architects stuck in white-board mode trying to conceive the most elegant, beautiful, all-encompassing abstractions. My focus is quick design, quick implementation with a great emphasis on refactoring.

Grails / Groovy

Grails is my favorite web application framework. I've built numerous public and enterprise apps using Grails since the 0.6 release in 2007.     http://twitcaps.com Contaxy Gigographer The Grotto 3.0   I consider myself a Grails expert and have written my own plugins for the framework. I use Grails as often as I can where it is an appropriate solution.

Relational Databases

Extensive experience with Oracle, MS SQL Server, and MySQL databases doing everything from DB install, configuration, tuning, and DDL design, to writing PL/SQL stored procedures and some of the gnarliest, highly-performant SQL you can imagine.   I am a fan of ORM technologies like Hibernate and iBatis, particularly for green-field development. Not as enthusiastic about using ORMs for legacy DBs.

Javascript / HTML5

While I do not consider myself a UX expert, I am skilled at writing rich UIs for Web Applications using Javascript and HTML in a pageless AJAX context. Prefer to use mature 3rd party Javascript abstraction libraries such as jQuery and YUI to implement rich functionality.     I'm currently in love with AngularJS.   Prefer to use Grails on the back-end, but occasionally use pure Java, Node.js, Python or Rails depending on the use-case.

Flex

I have written transactional enterprise applications using Flex with BlazeDS on the back-end. Have implemented custom reusable component libraries where the Flex core libraries have proven insufficient  (TreeGrids, Auto-complete combo-boxes, etc).   Responsible for design and implementation of message-driven architecture to facilitate the parallel execution of work tasks.   Experience in developing a good object model to sufficiently decouple the Flex UI from multiple, legacy data-sources. 

Android

Comprehensive knowledge of the Android mobile development framework. I am intimately familiar with mobile UX design, calling web services from Android, image manipulation, third-party data aggregation, and search services. I possess a deep understanding of the Broadcast Intents mechanism for leveraging inter-app communication and experience writing custom Data Providers for consumption by arbitrary third-party applications.

Java

Extensive experience developing large scale, transactional web applications with the Java programming language including work with J2EE, Spring, and Grails/Groovy. Very few days pass during which I do not use Java in some manner. Recently, my Java-love has brought me to mobile development on the Android platform.   I have installed, configured, profiled, and deployed production applications on the following app servers:     Weblogic 8, 9, 11g Glassfish Resin JBoss Tomcat 5 & 6