Professional Summary
I've spent 20 years building software and growing teams, mostly in transportation and logistics. I'm happiest writing Elixir in an event-driven system, but I've also led architecture groups, stood up DevOps practices and helped engineers and business stakeholders actually understand each other. I care about getting designs right early and use formal methods like TLA+ and mCrl2 alongside clear documentation to make sure they stay right.
Technologies, Platforms and Frameworks
- Patterns & Approaches
-
- REST Services
- CQRS
- Domain Driven Design
- RPC
- CI/CD
- Design Patterns
- Formal Methods
- Programming Languages
-
- Erlang
- Elixir
- C#
- Java
- Ruby
- JavaScript
- HTML/CSS
- TLA+
- mCrl2
- VDM
- Web
-
- Phoenix
- Zotonic
- Dream
- .NET
- ASP.NET MVC
- Ruby On Rails
- ServiceStack
- AngularJS
- Mithril.js
- Tooling
-
- RabbitMQ
- Postgresql
- EventStoreDB
- Kafka
- ElasticSearch
- Consul.io
- Chef
- Puppet
- Ansible
- Terraform
- Git
- Mercurial
- GitLab
- Docker
- Jenkins
- CircleCI
- MS SQL Server
- Cloud
-
- Digital Ocean
- AWS
- Azure
- Networking
- Storage
- Gateways
- Identity Management
Relevant Professional Experience
-
Sr. Software Engineer
NFI Industries Inc. –NFI was building a new TMS (Transportation Management System) in-house and I wanted to get back to more hands-on keyboard work. We moved quickly and worked hard to have a clean solution written in Elixir, taking full advantage of CQRS with event sourcing. My role as a senior on the team involved user research, design, implementation, training and support for core modules of the system.
- Developed and integrated a customer module for the system to ease onboarding and invoicing.
- Developed a system to retrieve and manage load documentation and requirements to ensure customer's SOP was followed before sending invoices. It also generated PDFs and stored them for future review.
- Built a system to allow users to save and associate searches for loads and integrated a bulk command system. This allowed users to build custom workflows for common loads searches.
- Created reusable internal libraries (filtering expressions, sorting, geographic points, implied area, event ordering generators) and helped adoption across teams.
-
Director of Software Architecture :: Platform & Domain Design
Echo Global Logistics –In 2018, I transitioned to create a sustainable business to software architecture team and process. I focused on this to support a large multi-year effort which involved growing the IT headcount from 40 to 80+ while building new features to retire the oldest parts of the current application stack. To do this well, Echo needed a much better understanding of the existing business process, and critically the engineers needed to understand the business problems enough to ensure the new system would support existing and planned business.
- Ran team of Software Architects responsible for systems design for a full convergence to previously defined architecture (which was updated to meet new demands, but conceptually the same as previously developed).
- Started new business architecture group and process to define long term vision
- Developed prototyping, documenting, and mocking process to support quick experimentation
- Worked with business stakeholders to define ubiquitous language spanning from engineers to end-users
- API design and planning to map deliveries to scenarios matching our many different solutions for internal reps, customers and carriers.
- Technology SME for JavaScript, RabbitMQ, ElasticSearch, DataDog, Nagios, HyperV, Design Patterns, Build Systems
- Helped with design, documentation of K8s and cloud migrations
-
Director of Software Architecture :: DevOps & Platform Solutions
Echo Global Logistics –As director of DevOps & Platform Solutions, I had two main responsibilities: building a simple, fast, automated system for our on-premises environment management, and leading the engineering team developing our internal frameworks. For the DevOps team we needed both a long-term roadmap to integrate cloud technologies and replace certain frail custom solutions with common market solutions. For Platform Solutions we needed to ensure that our system designs could be migrated to without a wholesale rewrite of the system. With both teams I implemented standard agile practices and organized collaboration across the department to ensure future efforts had wide buy-in.
- Brought in several new technologies to manage on-prem and cloud services (Chef, Terraform, Azure, DataDog)
- Led a team to perform the configuration management for a large M&A to bring in a fully monitored and automated buildout of a complex 25-server system that supported a purchased $600MM business.
- Grew the DevOps team from 2 engineers to 7 engineers
- Managed a $2MM budget for software licenses and large expense portion
- Supported all software deployments for the company (approximately 2 per week) across 5 different teams and approximately 30 development environments.
- Developed an SOP model for environment support and used it to allow teams to perform more self-service
- Acted as Chef and Ruby subject matter expert to support team growth.
- Ran training to get the team effective in new technologies (Chef, Jenkins, Ruby, Git, RabbitMQ, ElasticSearch)
- Integrated an updated monitoring system with the service desk to better react to system issues
-
Enterprise Architect
Echo Global Logistics –After a year & a half I was promoted to Enterprise Architect. This expanded my focus into application design, CI/CD and migration planning.
- Continued development of internal frameworks and standards (HTML, JS, CSS, and C#).
- Developed review process to speed up the time to delivery of projects
- Built and managed a UX and UI team (from 2 members to 6). Created updated standards and planned the gradual application change to ensure maintainability of the existing system while moving it forward.
- Team training and interactive whiteboarding sessions.
- Developed and designed a business command framework paired with an incremental change plan.
- Utilized a command invoker architecture design to fully separate operational concerns from business rule concerns.
- Created and led a platform development team to create, support and document our platform.
- Helped assess target companies for M&A activities. Worked directly with the planning and execution of a $20MM acquisition of Open Mile.
- Developed UX analytics system for metrics capture and review
- Public site redesign
- Ran and organized 2 separate Hackathons. The focus was to allow technologists to interact with executives and practice learning new skills.
- Redesigned Echo's source control system and build systems from SVN to GIT and CruiseControl to Jenkins.
-
User Interface Architect
Echo Global Logistics –Echo is a large, fast-growing company in the transportation space. As a User Interface Architect at Echo, I was responsible for developing process and standards for the software we delivered internally and externally. One notable focus was to clean up a large amount of debt accrued during very fast growth of the company.
- Developed JS testing tooling to match current build systems (pure .NET solution, as our build servers wouldn't support nodejs and the solution needed support in Visual Studio 2010)
- Developed style guide with standard implementation, with standard build and deployment automated process. Included rich components such as calendaring controls, type-aheads, mapping as well as the API standards to support their interactions
- Worked directly with several teams to train them in JS standards and how to effectively utilize MVC, HTML and CSS with the in-house style guide.
-
Sr. Front End Engineer
FirstLook –Developed the front-end (C#, JS, HTML, CSS) of a SaaS product line to support the car dealership market. As a front-end engineer, I was responsible for all UI development across an aging Java Spring/Struts application and ASP.NET WebForms system. To increase the quality of the UI components, I removed several unneeded JS libraries and replaced them with a common jQuery-backed system. This allowed for a much more consistent UX experience while providing a clear upgrade path for the UI.
- Introduced JavaScript standards and build tooling
- Maintained and enhanced a large legacy application suite
- Developed new product UIs from prototype to production
- Developed and managed the UI for the company's flagship product, called PING. The product was a highly interactive web application used to support pricing a car against its local market.
- Built small front-end team to support existing apps and develop product lines
- Helped establish new remote office and a 2nd development team
- Built HTML5 mobile frameworks to support the new mobile development
- Developed new mobile appraisal tooling as a hybrid Native / HTML5 application.
- Led development teams responsible for a large-scale rewrite of the legacy appraisal software
- Created a data intensive UI for reviewing pricing geographic automotive pricing. To meet the demands of information filtering a rich interactive search was designed to support individual user's custom views.
- Co-developed a DSL for describing a car's options from a VIN. This was utilized to quickly and accurately identify the car's equipment so it could be accurately priced. I also developed an SPA to access and explore the results of the DSL
-
Software Engineer and System Administration
Agora Web Solutions –Agora was a very small (2-4 person) custom development business. My role was to manage all development front-to-back while performing standard system admin duties. We served a wide range of customers from multinational manufacturing to small local businesses. Our focus was on the small business market to build repeatable simple websites where the owners could control all their content. To ensure the success of this business model, I developed many rich CMS extensions allowing WordPress and similar systems to support the business needs.
- Web development in Ruby, PHP, JS, and HTML/CSS
- CMS development for WordPress, TextPattern and Cake frameworks
- Developed Real Estate, Restaurant, Catering, Office Appointment extensions to common CMSs
- Utilized the plugins to efficiently create and manage a large portfolio of small business sites
- Managed VPS servers to provide hosting for customers
- Developed specialized system for managing the contractor liens
- Provided managed services for several large franchise business groups.
- Designed and developed a manufacturing quality control data collection system and report dashboards for Case New Holland
- Designed an early web embedded payment prototype system for US Bank, including security requirements
Notable Projects
-
Carrier Capacity Automation
NFI Industries Inc.Elixir, Ecto, Postgres, EventStoreDB
A real-time system that automated saved queries and workflows for matching freight to carriers, reducing a repetitive hour-long morning routine to minutes. Included an advanced search syntax, shared team workflows and dynamic searches that suggested updates based on recently moved freight.
Interesting challenges: geo queries, search suggestions, real-time updates, saved searches and maintaining counts for all saved searches.
-
Customer Profile
NFI Industries Inc.Elixir, LiveView, EventStoreDB, Postgres
When I joined the Relay TMS team the system was designed to support very specific customers, and much of the UX was customized per customer providing very adapted functionality for specific large customers. I modeled and created the shipping customer system allowing the software to dynamically onboard new customers. The system had some interesting constraints where loads could still be tendered without a current customer profile. There were however some very specific guardrails needed to onboard new customers so authorization systems were needed as well as notification of actions for unknown customers.
Interesting challenges: The profile was a very early LiveView adopter, allowing rich validation of inputs. Additionally, because much of the business process is configured per customer, many different domains needed to consume the customer profile and in some cases influence the inputs on the customer profile. This was a new form of composition for the architecture.
-
K8s, Cloud and Platform Transition
Echo Global LogisticsC#, Powershell, Bash, Grafana
Co-planned and designed a transition plan for on-premises services to a mixed AWS and local K8s install.
Interesting challenges: Transition of legacy services vs rewrite, training teams, governance management, SOX compliance, network isolation, and service storage
-
Command Acquisition
Echo Global LogisticsChef, C#, RabbitMQ, DataDog
Designed the integration plan for 2 distinct TMS systems to be completed by several teams. From business planning of which info was mastered where, application messaging, infrastructure automation, training and observation.
-
Ping Market Pricing
FirstLookC#, .NET Web Forms, MS SQL Server
A very interactive .NET web application to display dense pricing information for car dealers regarding other near-for-sale vehicles, with guidance on how to price their current car.
Education
B.S. in Management of Information Systems
Dakota State University, Madison, SD
2005 (Minor in Computer Science)