About

I am a software developer and leader who specializes in tackling difficult algorithmic and architectural problems across industries. This necessitates an ability to learn quickly on the fly and find ways to contribute immediately. While I have spent a number of years in management positions I have always found opportunities to stay in the code whether it be on the job or at home with open source or personal projects. After transitioning back to individual contributor roles I have continued to use my leadership skills while mentoring and helping set the technical direction of both my team and the company.

I look for roles where I can help solve complex problems and deliver software that customers need. Whether in a leadership or individual contributor position I look to utilize my experience working on products through their entire lifecycle to build maintainable, quality products that solve real problems.

Work

I’m currently a (the?) Senior Developer at Sentinel Data Analytics, a software and solution provider for the private charter industry. At Sentinel I’ve tackled problems in an industry that is still only half in the digital world. Many small operators still manage schedules by hand and make pricing and performance decisions from experience and gut feel.

At Sentinel we developed automated full-fleet quoting that takes into account the whole picture: existing schedule, forecast winds, and aircraft performance – it’s never fun to have a jet stuck in Aspen in July due to heat. Over the life of the project we’ve made maintainability key, which has allowed us to move a .NET 4.x and Angular 1.x product to .NET Core and Angular 2+. Keeping a project current across 9 major .NET releases, and 20-odd Angular releases with a small team while simultaneously keeping a feature release cadence has been an interesting challenge.

Throughout my tenure I’ve worked full-stack, but with an emphasis on the backend, having been the final reviewer on all changes impacting the API and backend. Notable projects include the quoting and pricing engines at the core of the system and a forecast winds service utilizing NOAA’s National Digital Forecast Database.

The most recent work has been integrating AI agents and tooling into the daily development process. For a small team this has presented amazing opportunities and unique challenges. Agents’ ability to quickly multiply a team’s output can strain its ability to ensure quality and enforce coding standards and architectural patterns. I’ve found that my extensive experience of mentoring and reviewing code has made this transition much easier.

Development

Most of my professional career has been spent developing with an “enterprise” stack: C#, .NET, SQL Server, with an Angular/TypeScript frontend. When developing I always keep maintainability and simplicity at the front of my mind. Throughout my career I’ve taken the software I’ve written through the entire lifecycle from inception to maintenance to eventual replacement. This experience has reinforced how imperative it is to catch bugs early in the lifecycle and minimize complexity and not chase performance and scalability unnecessarily.

Outside of work I utilize a wide variety of languages and frameworks with a soft spot for functional languages and LISPs in particular. I’ve done a number of smaller personal projects with Clojure and ClojureScript, using it since its early days. I’ve also dabbled with Go and F# (an OCaml variant on .NET) on the side. Coding models and agents have really helped with the exploration of languages and frameworks, enabling quick iteration and feedback.

My Journey

My programming journey started early in life attempting (and largely failing) to copy code for arcade games out of books onto our Commodore 64. I continued later on in grade school by fumbling with QBasic trying to make my gorilla unkillable or my bananas phase through walls. Those early experiences cemented my love of computers, leading me to get a CS degree at the Colorado School of Mines. During my time there I wrote Perl for the networking department, and after a summer project started a paid internship with Open Scan Technologies.

Open Scan saw me writing VB6 code for processing mail. Sounds a little boring, but it was chock-full of interesting problems. Early years here allowed me to watch a company find product-market fit live while iterating functionality. What started as a dream of hooking up a page and check scanner to a single computer (and debugging all the SCSI errors) found us developing complex accounts receivable workflows for local governments (specifically child support) and companies. This had us developing solutions that required advanced image processing techniques, OCR and ICR technologies, and banking and ERP integrations. VB6 gradually made way for .NET (with a whole lot of pushing from me), and one-off builds for every client turned into packaged releases, finally turning into a SaaS offering. During this time I went from Intern to Developer, to Lead, then Development Manager, Director of Engineering and finally CTO. The gradual move into management roles was an eye-opening experience and gave me a great deal of insight into the business and personal sides of the industry. Then I got a crash course in due diligence and the acquisition side of the business when Billtrust acquired Open Scan. Not long after acquisition I made the decision to leave my role as a VP at Billtrust to move back to being a full-time developer with the Rothwell Group.

Rothwell drew me in with their specialization in GIS solutions – primarily oil and gas exploration. The first year or so saw me working on a variety of projects working in C# and SQL Server on large geodatabases. The most interesting, however, was the work on the plate tectonic reconstruction solution which was a fascinating fusion of math and science. Not being a geologist I found the whole process of using plate models to reconstruct land formations a blast to work on. Optimizing and converting from the proprietary ArcGIS APIs to the open GDAL APIs was a great crash course to the GIS world. Shortly after, I started a project that would be the MVP for what would become Sentinel Data Analytics. After working on the project for nearly a year, I ended up working for Sentinel full time – after a brief uneventful detour.

Offline

If I’m not sitting behind a keyboard, you’ll probably see me on a soccer (football) pitch where I referee youth soccer here in Colorado. Equal parts passion and exercise, I enjoy still being in touch with the game I love and being able to help the local soccer community.