Projects

I consider myself very fortunate that I have had a rewarding and enjoyable career for over 20 years in the software industry. Not every project or job has been great fun or a fulfilling experience, but I feel I have learned something in almost everything I've worked on throughout my career. My career has transitioned from consulting for clients big and small, to working as a full time employee for big Fortune 500 companies and small start-up SaaS companies. After many years of working in the Microsoft stack, in 2015 I began to work with more "open source" languages and frameworks such as Java and Spring, Scala, Go, Python, and React. In addition to becoming much more of a polyglot engineer, these last few years I have really developed my cloud skills - starting to develop solutions in AWS, GCP, and Kubernetes. I believe strongly that delivering on commitments and providing valuable software to customers is one of the best thing we can do as software engineers.

Strake

  • February, 2023 - Present
  • Platform Engineer
Project Backend of our platform
Skills Go, Postgres, AWS, Lambda (serverless)

Took ownership of several platform features, working with a cross-functional team to build out epics and stories. Developed features and enhancements with Go, Postgres, and AWS to deliver on these features. Addressed tech debt and introduced better practices to the existing code base to improve reliability and maintainability. Introduced more comprehensive automated tests, a better separation of concerns, and a database migration pattern and helped the rest of the team understand these practices.


Blameless

  • September, 2021 - January, 2023
  • Staff Software Engineer
Project Identity and Authorization
Skills Go, Kubernetes, Postgres, React, Typescript

Lead the team in technical direction and architecture towards moving our back-end services to be organization aware for our single-tenant to multi-tenant initiative. Created a multi-phased plan to migrate our database schemas and services for the multi-tenant initiative. Led other engineers on the steps and ramped them up on how they could help with the effort. Designed and implemented the database schema changes, migration scripts, and Go service changes for the multi-tenant initiative. Researched authentication providers and made recommendations for improving our identity management solution to enhance security and service to service communication. Designed and led implementation of a proof-of-concept authorization system to replace our existing system, using Go, Postgres, Keto, and Kubernetes.


ActiveCampaign

  • November, 2020 - September, 2021
  • Senior Software Engineer
Project Conversations
Skills AWS, Docker, Kubernetes, Java, PHP, Ember, React, GitLab

Added features to our Conversations product across the entire stack - MySQL (Amazon Aurora), Java, PHP, Ember, and React. Added features to our SMS offering to guard against abusive behavior and solidify our Twilio API calls. Added capabilities for NewRelic observability in both our Java and our PHP / Laravel Kubernetes-based Microservices. Helped the team continue to improve in agile practices such as team working agreements, retros, and showcases.

Sovrn Holdings

  • September, 2019 – November, 2020
  • Senior Software Engineer
Project Various
Skills Scala, Spark, AWS, Docker, Kubernetes, Airflow, Jenkins, Java, Kafka

Developed Kafka Connect plugin in Java to support the direct upload of Avro files from our Kafka streams into S3. Built out the Gradle packaging, Jenkins build pipelines, and Hashicorp Vault integration. Worked on Terraform to build out EKS infrastructure as we migrated an application from DC/OS to Kubernetes. Worked on upgrade of old unsupported version of Aerospike to the most recent version, moving from a dedicated data center to AWS EC2 instances for the master nodes. Supported our existing systems and components with AWS, Airflow, Bash, and Kafka. Added and modified DataDog dashboards and monitors.


Return Path

  • June, 2018 – September, 2019
  • Senior Software Engineer
Project Data Aggregation Parser
Skills Scala, Spark, AWS, Docker, Kubernetes, Airflow, Python, Jenkins, Java, Kafka, Go

Architected new data parsing system to read aggregate data feeds from our parsers as a series of Airflow orchestrated Spark jobs. Designed the system while eliciting feedback from other team members, creating the initial Scala parsing framework and Airflow DAGs. Designed the S3 storage strategy for our parsed files, deciding on the common parquet format. Worked on data upload API system written in Go.

Worked on legacy data aggregation parsing system written in Java, adding parsers for new data feeds. Migrated existing older Perl-based parsers to the Java-based parsers. Documented and refined the testing process, ensuring that the process was repeatable and could be picked up by other team members. Migrated python-based FTP processor from a virtual machine in a data center to Kubernetes in AWS. Needed to modify the python code to run in Docker, which helped with the migration in addition to allowing for better local development environment testing


dunnhumbyUSA / 84.51

  • June, 2009 – June, 2018
  • Lead Software Engineer
Project Customer Communications quality assurance system
Skills Java 8, Spring Boot, Hadoop, Spark, Scala, Angular, TypeScript, MongoDB, Oracle, TeamCity, Git

Lead developer on team responsible for several applications supporting our Customer Communications business. Transitioned from another team to take over as team lead to help stabilize the team before going into production. Main system supports the quality assurance process for customer mailings, utilizing Hadoop and Spark for back end data ingestion and processing, Java / Spring Boot for RESTful web services, Oracle and MongoDB for the backend databases for the services, and Angular for the web front end. Developed on multiple components across all tiers, contributing on code reviews and helping to make sure our pull request process led to better coding practices. Led refactoring efforts and architectural design sessions to address tech debt and the development of new components. As our team gained more junior developers, acted as a mentor to get them up to speed on clean code, SOLID design principles, and agile / scrum development practices.

Project Technical decision making for new organization
Skills Java 8, Spring Boot, Hadoop, Spark, Scala, Angular, TypeScript, MongoDB, TeamCity, Git

When 84.51 split from dunnhumbyUSA, helped establish good development practices and toolsets for developing new software. This included establishing standards on the use of Git (and GitHub for Enterprise) as our source control system, TeamCity as our continuous integration and continuous deployment tool, and Pivotal Cloud Foundry as our internal cloud platform. Worked with other senior-level developers and architects to establish our REST micro services guidelines and our Java / Spring Boot services template. Contributing developer on the selection of Angular as our front-end platform. Helped kick-start our university hiring program, deciding on interviewing strategy and technical screening approaches.

Project Insights platform
Skills C#, ASP.NET Web API, ASP.NET MVC, Entity Framework, Autofac, Oracle, Angular 1.x, HTML, CSS, JavaScript, Visual Studio 2013, Microsoft Team System

Technical lead on platform development team, developing components with C#, ASP.NET Web API, ASP.NET MVC, Entity Framework, Oracle, and Angular 1.x. Developed complex configuration services and core windows services. Guided team on better development practices such as unit testing, single responsibility principle, and continuous integration. Created builds with Microsoft Team System and worked with team to improve our build and deployment process. Interviewed contractors as well as full time hires to join the team.

Project Personalization API
Skills C#, ASP.NET Web API, Autofac, CouchBase, Visual Studio 2013, TeamCity, Microsoft Azure, Subversion

Lead developer on the development of a company API hosted in Microsoft Azure. As the lead, investigated and chose ASP.NET Web API with Autofac as the IOC container to provide RESTful web services, backed by the Couchbase document (NoSQL) database system. Established and guided fellow developers on the use of unit tests and continuous integration builds. Helped transition project to UK-based team as the project was transitioning fully to our London office.

Project Price optimization application
Skills C#, Windows Forms, WPF, SQL Server 2008, T-SQL, Visual Studio 2008, Visual Studio 2010, TeamCity, Subversion, Perforce

Added additional features and capabilities to an existing price optimization software package developed in conjunction with a 3rd party software company. Used C#, Windows Forms, WPF, and SQL Server to develop this application. As the senior developer on the US-based team, was responsible for getting new employees and contractors up to speed on the project and the code base. Set up local SVN repository and TeamCity build configuration for continuous integration builds as well as daily product builds, using MSBuild. Once our onsite team was integrated into the offsite team’s systems, setup a local Perforce proxy that allowed our team to use the remote source code repository.


Stategic Data Systems

  • December, 2007 – June, 2009
  • Senior Consultant
Client Not for profit parenting agency
Project Parenting website
Skills C#, ASP.NET 2, ASP.NET AJAX, NHibernate, XML, XSL-T, HTML, CSS, JavaScript, SQL Server 2005, T-SQL, Visual Studio 2008, Community Server 2007, SVN

One of the lead developers for a new public facing website for a not-for-profit parenting agency. This website was meant to be a community oriented parenting site, where participants could read articles, tips, and Q & A’s on parenting, or participate in forums where common parenting topics could be discussed. Integrated Community Server 2007 into this website, which was custom built using ASP.net 2.0 and ASP.net AJAX. Designed a way to use the Community Server blogs as a way to publish content for the website outside of the Community Server application space. Created the website directory structure, master pages, and CSS-based layouts that other developers would use. Created stored procedures for retrieving and updating user data. Used NHibernate for CRUD operations against SQL Server stored procedures for the custom-built functional areas of the website. Ran and deployed builds to the test server as well as the production server.


SARK / Sogeti

  • October, 2005 – December, 2007
  • Senior Consultant
Client Financial Institution
Project Retirement plan documentation system
Skills C#, ASP.NET 1.1, ASP.NET Web Services, SOAP, XML, XSL-T, HTML, CSS, JavaScript, Oracle, PL/SQL, T-SQL, Visual Studio 2003

Member of a development team responsible for creating a web-based Adobe Flash tool that was capable of generating retirement services documents from an uploaded spreadsheet of plan numbers. Was the web services developer on this team, developing new SOAP-based web methods and business objects in C# that were accessed by the Flash UI. Created the ASP.NET code behind for the uploading of the spreadsheet, utilizing the Aspose Cells third party .NET component.

Client Marketing Agency
Project Nutrition label maintenance application
Skills C#, ASP.NET 1.1, ADO.NET, HTML, CSS, SQL Server 2000, T-SQL, Visual Studio 2003

Designed and developed a SQL Server 2000 database that was to be used for an internal ASP.NET maintenance application as well as for a public JSP-based website. Also designed and developed the maintenance application. Created the stored procedures as well as the C# business objects and ASP.NET pages for this application. Helped transition full time employee to the project so that development could be completed successfully.

Client Marketing Agency
Project Diabetes information website
Skills C#, ASP.NET 1.1, ADO.NET, HTML, CSS, SQL Server 2000, T-SQL, Visual Studio 2003, XML, XSL-T

Consulted as an expert resource helping out with a couple small portions of the project, a diabetes information website. Assisted with the base-64 encoding of querystrings that were to be passed to a third party website. Created a XML and XSL-T based solution for mapping data values used in this system with the values required by the third party. Helped guide development team on best practices so that the project could be successful going forward.

Client Telecommunications company
Project Customer account online maintenance application
Skills C#, ASP.NET 2.0, ASP.NET Web Services, HTML, CSS, JavaScript, SQL Server 2000, T-SQL, SQL Server Reporting Services, Visual Studio 2005, Community Server 2.0

Part of a development team responsible for a new release of the company’s customer online account portal. Was the only developer on the internal support application developed in parallel with the new customer portal, both were written in C# and ASP.NET 2. As the only developer for the internal application, was responsible for the design, implementation, testing, and deployment of the new application. Utilized many of the same web services that the customer portal used, but did require the development of some new web methods and SQL Server 2000 stored procedures. Outside the development of this system, had other tasks to support the rolling out of both of the new systems. Developed SQL Server Reporting Services reports to detail the usage of the new applications. Also implemented Community Server 2.0 as a message board solution for a one-month trial period where the customer portal was used by internal employees.

Client Financial institution
Project Brokerage account opening application
Skills C#, ASP.NET 1.1, ADO.NET, HTML, SOAP Web Services, UDB, Visual Studio 2003

One of two developers tasked with updating, enhancing, and configuring an online account opening system for the brokerage IT group. This was an intranet-based ASP.NET application used by the company’s account representatives to open new brokerage accounts. Converted the database calls and helper classes from using the SQL Server data provider to using IBM’s UDB (DB2) data provider. Worked with the other developer extensively in implementing the changes in the C# code base to meet new business requirements. Was responsible for the configuration of the servers used during the development process. This included the installation of the DB2 data provider as well as the .NET application and the third-party .NET components used for the application.


SmartCom Technologies

  • July, 2004 – September, 2005
  • Technical Lead
Client Not for profit veterans agency
Project Fundraising support application
Skills VB.NET, .NET framework 2.0 (beta), ADO.NET, Windows Forms, XML, Oracle, PL/SQL, Visual Studio 2005 (beta), Windows 2003, IIS, Windows Authorization Manager

Technical lead on a team of 14 consultants developing a VB.NET Windows application using the .NET 2.0 framework. The application replaced a disparate collection of VB 6 applications and Microsoft Access databases with a unified interface to support a non-profit institution’s fundraising activities. As a technical lead, designed and developed the data access architecture to connect to an Oracle 9i database. After the data access architecture was in place, developed windows forms and the associated middle-tier business objects for the feature set. The application was developed with Visual Studio 2005 and used Active Directory for authentication and Authorization Manager for authorization. Mentored experienced VB 6 developers who were new to .NET.


G.A. Sullivan / Avanade

  • May, 2000 – July, 2004
  • Solutions Developer
Client Financial institution
Project Mortgage loan creating application
Skills C#, ASP.NET 1.1, HTML, CSS, JavaScript, XML, XSLT, SOAP Web Services, .NET Remoting, Oracle 9i, Visual Studio 2003

Lead presentation-tier developer on total team of 10 developers rewriting portions of the bank’s mortgage software system into C# and ASP.NET. As lead UI developer, was responsible for the base classes for the ASP.NET web forms and for the user controls, as well as foundational architecture for the presentation tier. Developed a suite of custom web controls used throughout the application, with the consideration they may be used in future applications as well. Mentored and guided the bank’s developers who were completely new to .NET.

Client Insurance company
Project Policy servicing system
Skills VB.NET, ASP.NET 1.1, HTML, XML, XSLT, .NET remoting, Oracle 9i, Visual Studio 2003, IIS

Developer on the automobile policy servicing portion of an enterprise wide system for a large insurance company. This was a multi-tier system, utilizing .NET remoting to access a middle tier server, which in turn remoted to an oracle database. Developed VB.NET components on the business services layer as well ASP.NET pages in the presentation tier.

Client Not for profit software development company
Project Homeless tracking system
Skills VB.NET, ASP.NET 1.1, SQL Server 2000, DTS, Visual Studio 2003

One of three consultants brought in to help a not for profit software company complete the beta release of an online homeless tracking system. Was primarily responsible for the data import from the old MS Access system into the new SQL Server 2000 environment. The database schemas varied significantly, so I used DTS packages for the import process. I also wrote stored procedures and VB.NET code for the presentation layer. Our work on this project saved their company from going out of business since they were able to deliver the beta release and get much-needed funding.

Client Bookseller
Project E-commerce website
Skills C#, ASP.NET 1.0, XML, XSL-T, HTML, Visual Studio 2002

Member of a 3-person development team that developed a website for a local bookseller. Was primarily responsible for developing the interface to a 3rd party book/shopping cart software tool written as a Java servlet and returning XML. Consumed and processed the returned XML in several ways – including use of the DOM and binding an ASP.NET (C#) XML control directly to the XML and using XSL to display the data.

Client Media / advertising company
Project Online order management system
Skills C#, ASP.NET 1.0, XML, XSL-T, HTML, Visual Studio 2002

Member of a 3-person development team that developed an online order management system for a media/advertising company. This system utilized web services written in VB.NET to authorize users against Windows 2003 Server, then proceeded to use other web services to correspond with an internal order management system. A customer could place an order and look up the order status with this new web application. The customer placed the order either by entering the data into a web form, or by uploading an XML file with the order information. I was the presentation-tier developer and designer, using VB.NET to create the ASP.NET pages targeting Internet Explorer and Netscape on the PC and the Macintosh.

Client Financial institution
Project Mortgage warehouse system
Skills VBScript, Classic ASP, HTML, CSS, XML, XSL-T, Visual Interdev

Member of a 6-person development team that developed an online mortgage warehouse system for a local financial institution. This allowed mortgage originators to manage their short-term warehouse loans purchased through this financial institution. Used Visio and UML to map out the system on a conceptual and logical level during the design phase. Was member of 2 person ASP classic/XSL development team, using Visual Interdev to develop the ASP pages and XML Spy to develop the XSL-T stylesheets. Developed the ASP code to tie in existing Crystal Reports into the system.

Client Software development company
Project Automobile ERP package
Skills Quality assurance, testing

Member of a 6-person QA/testing team that developed testing scenarios and scripts to ensure the quality of the Service portion of a customized automobile retail ERP package. Executed the scripts to identify bugs and other quality issues with the application.

Client Financial institution
Project Mortgage self-help system
Skills VBScript, Classic ASP, HTML, CSS, Visual Interdev

Member of an 8-person development team that developed an online mortgage self-help system for a local financial institution. The system developed also included an intranet portal site for employees of the financial institution to manage customer Internet accounts. Used Visio and UML to map out the system on a conceptual and logical level during the design phase. Was member of 2 person ASP/VBScript development team, primarily responsible for the Internet side of the system. Designed the UI standards/stylesheets and the standard include files used throughout the application.


Keane

  • May, 1998 – May, 2000
  • Software Consultant
Client Technology company
Project Intranet site for marketing department
Skills VBScript, Classic ASP, HTML, Visual Interdev, Teradata, MS Access

Was a member of a team of 3 developers designing and implementing an internal Intranet site, using NCR’s Teradata as the relational database system, and Active Server Pages (ASP) to present the data. Served as project DBA, which required creating the tables in the RDBMS, and running reports and queries on the data with MS Access as the front end. Developed login functionality in the ASP pages using a VB COM component to access users on the network. Developed a web-based reporting system for management to access the Intranet site statistics and specialized requests. Stayed on with client after project completion as a contractor for the non-technical team in charge of the site as webmaster, DBA, and maintenance programmer.

Client Government agency
Project Year 2000 remediation
Skills VBScript, Classic ASP, HTML, MS Access

Network and PC support contact for 70 consultants on a Year 2000 project for a state government. Managed project database in MS Access, creating a front end with Visual Basic for Applications for the 3rd party software team. Wrote queries to access data needed for various teams in the project. Maintained project website, using ASP to interact with the project database.