|
WORK EXPERIENCE:
|
Digital River, Principal Software Engineer, Minnetonka, MN (September 2011 - Present)
In September, 2011, I was given the opportunity to make a lateral move to a more technical role and take on the Principal Software Engineer position for our department. This gave me the opportunity to focus more on technical challenges and unifying development efforts across the two teams I had previously managed (SWREG and RegNow). Since this transition, I have: - Built out a REST-based product and account management API for use by key clients including a completely self-service, provisioning framework.
- Prototyped a jQuery-mobile-based mobile interface for use by clients.
-
|
Digital River, Technical Development Manager for globalDirect E-Commerce, Eden Prairie, MN (May 2008)
In May, 2008, I was promoted to be Technical Development Manager of a mid-size e-commerce platform written in C/C++ and Perl purchased by Digital River in 2005 called SWREG. I managed a team of three other developers as we work on building out new features for the platform as well as continually stabilizing and refactoring the legacy code that we've inherited. - Evangelized unit testing on a platform which previously had next to no unit testing. This allows the development team to begin making changes with more confidence as we can easily and quickly verify no regressions have been introduced into the code base. This also helps minimize human testing time as well as speeding the time to market.
- Introduced and integrated modern Perl technologies like Moose, DBIx::Class and Catalyst to enhance developer efficiency and platform stability.
- Provided leadership in developing a more predictable development capacity by increasing communication with the business owners throughout the development process. This has helped business owners recognize the cost of modifying (as opposed to rewriting) legacy code as well as setting realistic expectations that don't require heroic efforts to meet arbitrary deadlines.
- Developed internal CPAN architecture to allow easy and predictable module installations through the entire cycle of development. This provides more predictable testing by ensuring version consistency from development through production.
- Pioneered developing of internal CPAN modules that can be reused across multiple Perl platforms at Digital River.
- Provided standardized, SOX compliant git workflow and integrated git with Digital Rivers internal release management web application.
In January of 2010, I began to manage a slightly larger development team (five other developers) on a different e-commerce platform that Digital River owns called RegNow (built on mod_perl and Oracle). This has given me the opportunity to expand my leadership experience to cover larger projects as well as demonstrating the fundamental changes made on the SWREG team (i.e. Modern Perl, unit testing, private CPAN repositories, etc) would scale and prove beneficial to the RegNow platform. - Pioneered writing of internal CPAN distributions for sharing across various Perl platforms at Digital River
- Architected control panel rewrite built on Catalyst, DBIx::Class, HTML::FormHandler and other modern Perl tools.
- Supervised employees rewriting the shopping cart portion of the application providing a backwards compatible API while improving performance and maintainability.
- Lead 18-month project to rewrite the client control panel from the ground up enabling the development team to roll out new features much more quickly.
- Coordinated integration with Digital River's ERP system to provide more consistent and reliable accounting functionality.
- Spearheaded effort to transform e-commerce platform into a multi-datacenter redundant system that can continue to accept orders in spite of a major outage in some portion of the system (DB, app servers, datacenter network connectivity, etc)
-
|
Digital River, Sr. Software Engineer, Eden Prairie, MN (April 2006)
My time at Digital River brought much more breadth to my skill-set. I branched out from my primarily Perl/MySQL development background and worked on large projects written in Java, Ruby and PHP with Oracle behind the scenes. I also gained experience working on larger teams where communication is both more important and difficult. Some specific accomplishments: - Proved my ability to learn new skills quickly to provide benefit to the team and company as quickly as possible. This included (at various points during my time at DR): getting up to speed on Ruby and Ruby on Rails, refreshing my Java knowledge from the five year hiatus, and deepening my relatively light PHP experience.
- Worked with five other developers in building a high-performance, large-scale data warehouse ETL toolset written from Java using best practices and industry standard tools like Spring, Hibernate and Maven with domain-specific tools like the JBPM workflow engine and Quartz scheduling engine.
- Helped build several internal web applications based on the Ruby on Rails framework utilizing AJAX.
- Added features to the php-based DirectTrack Affiliate Marketing platform on a team of more than 10 developers. This platform powers Digital River's oneNetworkDirect affiliate program, one of their most important marketing programs.
- Continually advocated improving quality by using automated unit tests (JUnit, Test::Unit) and tools (Selenium). This decreases the necessity for human testing which is costly from both monetary and time-to-market perspectives.
- Became the subject matter expert for many of the contributing platforms to Digital River's enterprise data warehouse project. This enabled us to provide developer time and expertise on third-party platforms to support the requirements of the data warehouse without distracting those platform's development teams from their existing projects.
- Integrated the Ruby Capistrano deployment tool with Digital River's internal release management tool to enable easy deployment of various platforms with minimal configuration. This has helped our team roll out several different platforms very quickly without spending a lot of time on a deployment strategy.
-
|
Holmes Corporation, Sr. Software Engineer, Eagan, MN (June 2005 - April 2006)
I was hired by Holmes Corp. with the goal of instituting change to a technology platform that was starting to reach the limits of it's maintainability (lot's of "Cut-N-Paste" programming) and scalability (software and release practices designed to be performed on a single server). Even though I was with Holmes Corp only a short amount of time, I accomplished much in overcoming these weaknesses in their e-Learning technology platform (built on Perl, HTML::Mason and MySQL): - Migrated the technology platform to use HTML::Mason's "multiple component root" functionality to allow code to be written once and reused across all clients while allowing modifications as needed.
- Redesigned test-taking engine from the ground up to support the various testing models already in use. The variable functionality is all driven by database configuration values to minimize custom coding for individual clients. This dramatically shortens the development cycle for new clients while decreasing ongoing maintenance costs.
- Developed a full-stack localization and internationalization framework based on Locale::Maketext to allow Holmes Corp to work with international clients.
- Designed and implemented domain-specific language for non-technical, instructional designers to write "application exercises" which provide learners with continually changing (random values within given parameters) learning exercises. This content is automatically parsed and loaded by the system and instantly available for testing with minimal involvement by the technical staff.
- Championed automated code testing to improve regression testing and decrease Q/A time. This included code quality testing using Perl::Critic to ensure code was written to appropriate standards.
- Advocated the use of a individual development environments as well as a seperate staging environment to provide reliable Q/A testing.
- Automated release process with various shell and Perl scripts to enforce revision control and standardized processes. This included an automated way to compare CPAN libraries and versions between various servers and automatically build and install the necessary versions onto the production servers.
-
|
FanBuzz, Inc, Storefront Engineer / Sr. Storefront Engineer, Minnetonka, MN (July 2002 - June 2005)
My programming experience at FanBuzz was primarily perl, utilizing HTML::Mason as a templating language and MySQL as a DB backend. I started as a storefront engineer working with small functionality tweaks and bug fixes. Since then, I have gradually become the primary engineer in charge of large-scale application development and design, working with both our storefront and backoffice teams. This includes a promotion to senior software engineer in the Fall of 2004. Some of my major accomplishments are listed below. - Greatly broadened FanBuzz's customer base by integrating with Amazon.com as a Platinum-level merchant. The system I designed and developed managed bi-directional data feeds including product and inventory information as well as orders shipments and refunds via their SOAP API with minimal human intervention.
- Helped design and implement abstracted data import and export system to manage integration with vendors and clients. This system separates the transport of data from the generation or processing of that data to enable easy error recovery at any stage of the process. We use this system in our integration with Commerce Hub, Amazon.com, Commission Junction, NBC/Universal and others.
- Provided online shoppers with the option of paying by check by integrating with CheckFree using their SOAP API. This reduces our fraud risk and decreases handling costs of processing mailed checks.
- Improved customer experience by developing full-featured product search engine technology. This search engine's technology includes word-stemming, spelling correction, fuzzy-logic matching and various limiters based on product classification, price ranges and boolean operators.
- Developed perl API to ZebraCard ID card printers to allow our warehouse management system to automatically print membership cards on demand for specific orders as components of a regular merchandise pick.
- Integrated our customer address and catalog request functionality with USPS's address standardization web API. Standardized addresses help in negotiating lower shipping rates and make cleaning and de-duping of catalog lists a much simpler matter.
- Built interface with Borderfree to allow Canadian customers to see accurate exchange rates, taxes and duties at the time of purchase as well as streamlining getting packages through customs.
-
|