Back to the keyboard: contract software engineering

Ptolemy Software · 2017–present

I started Ptolemy Software to put my focus back on the keyboard. In every role I've ever held, my success came from expertise in solution design, development, and delivery. After years in high-level positions, I wanted to re-immerse myself in hands-on engineering, to understand at a low-level how technology is evolving: cloud architecture, DevOps, and now AI. Doing so is necessary to inform how I lead.

I've worked with clients including Savage Companies, The Church of Jesus Christ of Latter-day Saints, and the State of Utah. Every engagement is a unique challenge: new teams, domains, technologies, processes, architectures, and coding standards.

I love designing, building, and delivering software solutions. I can contribute at many different levels, but regardless the level, I never want to ask someone to do something I'm not willing to do myself.


Several apps plugging into one shared platform, inside a dashed boundary marking the standard

An agentic platform for a business owner who builds his own apps

Recruitment firm · Agentic AI · 2026

A recruitment-firm owner had built his own client tracker, job-opportunity tracker, and employee goals tracker with AI: desktop-only apps storing data in JSON files.

I am writing the strategy, project instructions, and skills that move them to a shared ecosystem: Microsoft Teams will be used for SSO, a portal page will contain launch points for each application, an admin screen will control who can use which app. All will use managed hosting and a common database. He keeps building on his own and the instructions keep enhancement and new applications operating within the ecosystem standards.


A sprint cycle with an AI mark working on a ticket at its centre

Writing a delivery discipline for AI-assisted development

State of Utah · Child Care · 2025 · Agile, AI policy

AI coding assistants had arrived and the early pull requests showed the risk: changes running to a thousand lines or more that no reviewer could reasonably process, quietly eroding the system’s architecture, design patterns, and consistent implementation of them.

I wrote the team’s operational practices guide: sprint and backlog processes, test and defect management, and a responsible AI-assisted development policy built on ticket-scoped work, reviewable pull requests, and a human accountability for every change. Technical strategy was elevated to a peer to functional planning, which fed the backlog to ensure insights gained through all technical innovations were processed within the context of properly managed agile cycles.


Endpoints passing through a logging layer into a connection pool, with one connection never returned

Ending recurring outages in a state child care system

State of Utah · Child Care · 2025 · Java, Spring Boot, Oracle

The State of Utah’s child care application became unresponsive as often as weekly and had to be restarted. There were many theories as to why, but these were anecdotal. I built an AOP-based connection-pool logging tool. I was advised to make the annotations method-level because some methods should not be logged at all or at least not their sensitive input parameter values. But there were hundreds of methods to annotate and the result would have been untestable. So I created controller-level annotations, applied consistently across all of a controller’s methods, with exception annotations on individual methods to turn off parameter value logging or all logging, as needed. This reduced the total number of annotations to be coded by an order of magnitude.

Over 800 endpoints began logging parameter values, time in, time out, pool stats in, and pool stats out, which immediately identified the problem methods. Within a few weeks, code changes stabilized the connection pools and the frequency of application crashes dropped to negligible levels.


One bill of materials managing four dependencies at matching versions, each with a passing test beneath it

Bringing automated testing to a system that had none

State of Utah · Child Care · 2024 · Java, Spring Boot, Maven

The State of Utah’s child care system was built on Spring MVC, AngularJS, and a homegrown object-to-relational mapper. It had no automated tests and senior engineers doubted automated testing could be implemented: the stack was so far out of date that any modern testing library would collide with its dependencies.

I reorganized the Maven POMs across the project around the Spring Boot BOM, which brought every library to the most recent compatible version and let the BOM, rather than the team, manage compatibility. I wrote the instructions for evolving the new POM structure.

That opened the door to Mockito, H2 in-memory databases, and Spring’s testing tools. I built a substantial automated test suite and a framework for writing new tests, documented it, and walked the developers through it. This highly configurable software was functionally complex, now automated tests, stubbed back-end calls, and test state/expected state databases could be coded as components of this new test framework.


A set of audit rules generating a form, with a wrench for enhancement and repair work

Leaving a complex audit platform better than I found it

The Church of Jesus Christ of Latter-day Saints · Finance · 2021–2023 · Angular, Java, Spring Boot, Oracle, AWS

LUFAS is the platform The Church of Jesus Christ of Latter-day Saints uses to audit the finances of its congregations worldwide. It is a complex rules-based system: the user interface, audit rules, data-collection requirements, and audit actions are all generated dynamically.

I joined the team to help develop and maintain it, came up to speed quickly, and delivered a steady run of targeted enhancements and bug fixes. The stack was Angular v8, Java, Spring Boot, and Oracle. Instead of performing just Angular work, I jumped into the full stack. This was my first professional exposure to Spring Boot.

I often wonder, when getting ready to finish a contract, how those around me think about the work I performed. Before I left, the senior manager reviewed my work and told me: “Tom, you left the place better than you found it.”


GoScriptures logo

GoScriptures: taking a platform from idea to production

Founder project · 2017–present · Angular, Node.js, Java, PostgreSQL, Terraform, Docker, AWS

I took GoScriptures from an idea to a live social platform: writing the user stories, setting the functional and technical direction, and hiring and managing the people who helped build it, from engineering partners to a UI/UX firm and an independent designer.

I code every layer: an Angular single-page application, a Node.js service tier, and a Java backend on PostgreSQL, deployed to AWS with infrastructure provisioned through Terraform and Docker. Today I run it all myself, from design through operations, partnering with Claude.


A globe with links reaching out from the United States to four other locations

Taking a US integration practice global

Vix Technology · Public transit · 2012–2017

As CTO of the Americas, I defined complex integrations across our products, agency systems, and third-party systems with a UML-based approach. That work fed into project planning activity to become the strategies for large agency build-and-deliver cycles. At the same time, Vix’s leadership was pushing to globalize, with offices in England, France, Australia, and Singapore and remote development in Košice.

After visiting our technology centers, the global CTO promoted me to Global Head of Technology Integration with a clear mandate: build teams around the world to perform systems integration the way we were doing it in the US. I built and led the integration and test engineering teams behind multiple $5M+ programs in France, Belgium, Australia, Singapore, and the United States, and developed the design patterns and development processes the teams used to create consistent approaches across the globe.

Our designs centered on processor-agnostic payment interfaces for real-time fare collection across open- and closed-loop models, stored-value and payment ledgering and settlement, and long-running asynchronous integrations with agency and third-party components within the solution. I also designed and led the team that rewrote the card data and usage data distribution system serving thousands of in-field fare devices.


Three different systems connected by a sequence of messages

Solution architecture for public transit fare systems

Vix Technology · Public transit · 2008–2017

Transit fare systems are ecosystems of agency software, third-party products, and the vendor’s own technology. On RFP pursuits for Dallas Area Rapid Transit, Edmonton, and Seattle, I designed solutions by defining how components integrate to satisfy agency needs, derived use cases from contract requirements represented as cross-system sequence trace designs, and broke those down into protocols, failure handling, tasks, and plans priced in cost, schedule, and staffing. We went on to win the Dallas and Edmonton contract.


A card tapped on a fare reader, turned into a token linked to an account with several payment methods

Tap to ride: the first account-based open payments fare system in North America

Vix Technology · Utah Transit Authority · Public transit · 2008 · Payments, tokenization

I joined Vix as a contract software engineer and built the payment gateway that connected the fares calculation engine to a TransFirst gateway, processing credit card micropayments for the Utah Transit Authority. The result, eO, was the first account-based, open payments fare system in North America: riders simply tapped to ride.

The power was in tokenization. Any near-field communication card could be tapped and its account tokenized to match a back-office account, which let us plug in a variety of payment methods behind the same tap. I went on to lead the team that built the second generation of eO.


A glass-walled lab with a server rack and monitoring screen, approving releases before they reach a hotel

Building a test lab for a hotel internet platform

iBahn · Hospitality · 2005–2007 · Java, JSP

iBahn provided high-speed internet to hotel guests with technology that worked at the packet level: it intercepted traffic to check whether each IP address belonged to an authenticated guest and, if so, at what speed to serve it. The platform served millions of users, but there was no release process, and changes were often made directly on production systems in the hotels.

I helped build a test lab in a glass-walled corner office: the hardware, software, and monitoring to simulate hotel activity, so that all QA ran against the lab before anything went to the field. It became a standard stop when account managers and sales staff gave tours.

I also led the architecture and development teams, including embedded engineers, through modernizing the control and billing systems, and travelled to India to assess an offshore team then designed the workflow and lifecycle that brought them into delivery.


A layered system migrating to a network of distributed services

Modernizing a commercial card platform for the Fortune 500

JP Morgan Chase · Payments · 2002–2004 · ASP, C++, .NET

Paymentech was a commercial credit card platform built on ASP and C++, processing billions of dollars in annual spend for Fortune 500 clients. I owned its backend (payments, ledgering, reconciliation, and settlement) and led more than 50 architects, engineers, QA engineers, and project managers on a $6M+ annual budget.

I represented the platform in executive pre-sales meetings with prospects including Lockheed Martin and PepsiCo. The Lockheed Martin win launched a multimillion-dollar rewrite: I led the architecture of a new, highly distributed platform on .NET, and in about two years we migrated the whole system, monitored from a glass-walled network operations center, while also delivering the virtual single-use card program.

To plan at that scale, I built a forecasting tool that combined estimates with actual team velocity.


Three people working together on one card, whose number links a reservation to an invoice

Virtual single-use cards: from an account at risk to a new product

JP Morgan Chase · Payments · 2002–2004

One day an account manager came to our area with bad news: we were about to lose Hotwire. They saw commercial card platforms as a commodity and were going to shop on price. My lead architect and I asked how we could help. The industry’s real problem, he told us, was reconciliation: online travel companies had no programmatic way to tie a consumer’s payment to the provider invoice that arrived weeks or months later. Solve that, and we would keep Hotwire and win other online reservation providers.

This was not corporate credit cards for employee lunches; this was something completely different. As one of three designers, I co-invented a virtual single-use card architecture that used the legacy credit card processing network to carry a unique card number from the consumer’s reservation through to the provider’s invoice. We developed the algorithms and business processes, had it coded in about nine months, and made programmatic reconciliation possible for the first time.

We kept Hotwire and signed other online reservation businesses. I am named as a co-inventor on the patent application for the architecture.


Credentials

  • AWS Certified Solutions Architect – Associate
  • Certified ScrumMaster (CSM), Scrum Alliance
  • Master of Science, Computer Science, Wayne State University
  • Bachelor of Science, Computer Science, University of Michigan–Flint