Download PDF

Summary

I am a software engineer with 11 years of professional experience who has extensive experience both in client-side (web-based) and server-side software development.  For examples of some of my code and knowledge, please see my Github and Stack Overflow accounts. You may also see some of the many presentations I have created and disseminated in my slides.com account. Please also read a popular web development blog I created for examples of my vast knowledge in this area.

Currently, I am seeking a new and challenging permanent full-time remote-friendly opportunity with a company that is primarily interested in developing quality software and prides itself on being a pioneer in the field of software engineering.  An example of this would be an organization that, among other things, requires developers to spend some of their time each week researching new development libraries, tools, and techniques.  I take pride in my work and am continually looking for new ways to become a better software engineer, a trait that I'm sure any software company would love to see in all of their engineers.

Work History

Jan 2011Present

Software Developer III

Widen Enterprises

My projects at Widen were exclusively web-based.  Initially, I worked on Widen's flagship Digital Asset Management product: Collective.  Then I transitioned to Smartimage, an image-management/DAM-lite product.  Eventually, after Widen purchased the rights to a side project I was involved in (Fine Uploader), I moved over to lead developer of Fine Uploader full-time.  

Most web-based projects I was involved with required a significant amount of server-side and/or client-side development.  Primary server-side languages were Java/Groovy.  Widen also extensively used the Tapestry web application framework library.  Dependencies on other libraries were also common among most applications, such as jQuery, Backbone, Angular, and Prototype.  

I began to focus more on client-side code as my proficiency in javascript increased over time.  My side work on Fine Uploader was a contributing factor, in addition to my growing interest in this sector of software development.  

Aug 2012Present

Lead Developer / Maintainer

Fine Uploader

Fine Uploader is a very popular javascript-based upload tool that was originally developed by Andrew Valums. At some point, Andrew ran out of time to maintain the project and it began to decay.  As a result, multiple forks of the project popped up on Github, most of which also decayed over time.  In August of 2012, Andrew handed the project over to me.  I then worked on Fine Uploader 6-7 nights a week, in my free time, in an attempt to bring it back to life.  Fine Uploader did indeed come back to life, and fineuploader.com consistently ranked in the 80-90k range according to alexa.com.  The project became so popular, that I began spending far too much of my free time fielding support requests and feature requests.  

By March of 2013, I had rewritten the codebase almost entirely.  A large number of new features had been added, along with quite a few bug fixes.  Due to the new features added, the codebase had grown from 1500 lines to almost 5000.  At this point, my employer, Widen Enterprises, expressed interest in bringing Fine Uploader onboard as a full-fledged product.  Near the end of March 2013, ownership of Fine Uploader was officially transferred to Widen.  Widen then transitioned me onto Fine Uploader as the lead developer for the project where I have continued to evolve the library.  

As of June 2013, Fine Uploader's Github repository has 4300 followers and over 1000 forks. 

Apr 2006Jan 2011

Senior Software Engineer

Avid Technology, Inc

My development tasks at Avid fall into the category of newsroom automation systems. Newsroom automation systems developed by me (and others on the same team) were developed to satisfy the needs of television broadcast networks for the purposes of ingest and play out of audio and video. These systems were developed using mostly Java and were designed to be fail-safe. Important programming-related tools and libraries I utilized to develop these products included JINI (now Apache River), RMI, Swing (for UIs), ANT, JUnit, EasyMock, Spring Framework, Reflection, JavaMail, Guice, TestNG, FindBugs, Coverity Prevent, ClearCase, ClearQuest, JIRA, Eclipse, and AccuRev.

Some of my software engineering tasks at this company have included:

  • Developing from scratch a complete replacement for the legacy system used to allow ingest and play out systems to address and control sources and destinations on a video routing switcher. This was a large-scale project and involved almost two years of dedicated development using Java. This involved creating a design that differed greatly from the legacy system in order to address known issues with the design and operation of the legacy system. I was the primary developer, lead developer, and lead designer/architect for this project.
  • Maintenance of a previously-developed software system (using C#) used to allow ingest and play out systems to address and control sources and destinations on a video routing switcher.

  • Developing a JINI service used to allow play out systems to communicate serially with a push-button board used to control playback of video.

  • Developing a JINI service used to allow ingest systems to communicate serially with VTRs.

  • Completing a number of development tasks involving “framework” or common code used by many other broadcast applications.

  • Supervising summer interns as they completed tasks related to the router control project for which I was the lead.

  • Participating as a contributing team member for various other ingest and play out development projects.

As a senior software engineer for Avid, I worked both as a contributing member of a large team for some projects and as a team lead for the project involving a complete redesign and rewrite of the router control system we sell to customers - a two year initial development effort.

Dec 2004Apr 2006

Lead Developer

TrafficCast, Inc

In this position, I wrote a wide array of back-end software applications to help address numerous technical and business issues encountered by the company.  All members of the software engineering team reported directly to me.  Some of my software engineering tasks included:

  • Development of a large master system (C#) used to control, monitor and organize the large number of java console apps running on production and test servers.  I later redeveloped this in Java to run on Linux.
  • Development of an entire (large) suite of “base” classes (Java) used by the reader programs to submit data to the database and handle other various issues commonly encountered by other Java apps
  • Development of a large-scale monitoring system to run in Linux.  Communication between the segments of the system was made possible through the utilization of RMI.  I personally designed this system and TrafficCast continues to introduce additional applications into the system as the development process continues.
Sep 2001Dec 2004

Information Systems Coordinator

American Medical Technologists

Responsible for all aspects of maintaining the association’s workstations, servers, and network resources. Also responsible for technology equipment purchasing. Performed a security audit on all electronic resources and, as a result, made necessary security-related changes.  Implemented a Linux proxy server.  Documented properties of all electronic resources and projects and maintained these records daily.  Wrote software to manage updates and staff changes.

Education

Nov 2004

Bachelor of Science

  • Graduated Magna Cum Laude
  • GPA: 3.77 out of 4.00
  • Member of Dean’s List
  • Member of National Dean’s List
  • Selected to Golden Key International Honor Society
  • Selected to Phi Kappa Phi National Honor Society
  • Selected to Upsilon Pi Epsilon International Computer Science Honor Society

Skills

Open Source Software Development
OS X
Web Services, REST
HTML
Javascript
This includes experience in related client-side libraries, such as jQuery, Prototype, and Angular.
Agile development
Linux
Some post-college and considerable experience during and before college working with and developing in a Linux environment.
Windows
Considerable experience during, before, and after college working with and developing in a Windows environment.
MySQL
Experience maintaining DB system and developing Java applications that store and read data to a MySQL DB.  The MySQL DB I worked with was Linux-based.
Java
Considerable academic and professional experience.   Core Java and closely related tools: J2SE, Java 1.4, Java 1.5, Java 1.6, Reflection, JavaMail Client/Server & distributed systems: JSP,RMI, Jini (Apache River) (12/2004 - current) UI: Swing (12/2004 - current) Build tools: ANT (2006 - current) Automated test suites and tools: JUnit, TestNG, EasyMock (2006 - current) Dependency injection: Spring Framework, Guice (2006 - current) JDBC: MySQL and Oracle (12/2004 - 04/2006) Integrated Development Environments: Eclipse (04/2006 - current) Auotmated defect detection: FindBugs, CodePro, Coverity (2006 - current)