About
I’m Tom. I’m a backend engineer who’s spent the last decade building servers for ML and search products. Along the way, I’ve worn most of the hats you end up wearing as an engineer at a small startup. I also enjoy writing, building things that are helpful for me, and spending time with my family. My hope is that things I build are helpful for others, too.
Outside of productive endeavors, I also spend time playing games (when I can): video games, board games, digital versions of board games, card games, sports (with about as much skill as my small children), and more or less any other form of interactive entertainment.
What I’m up to now
Currently, I’m moving into the next phase of my career. I’m available for and seeking contract work, and I’m open to the right full-time role. Besides that, I’m finally building all those projects I’ve dreamed about and left half-finished.
You can see some of my current projects over here.
Work History
The Before Times
My professional working life began with bartending and a community bank (…separately…) while teaching music in a local high school and acting as director of the associated drumline. Those jobs taught me a tremendous amount about working with other people, managing expectations, and communicating effectively.
Oracle (2014-2017)
After a move, I landed a position at Oracle in their consulting services. While at Oracle, I was contracted out to GE, Unisys, and a number of other companies. I worked with our clients to make the most of their Oracle CPQ software, with the goal of optimizing their quoting pipelines and easing the sales process for highly configurable products. This was a valuable experience that taught me a lot about corporate contracts, even more about managing expectations, and a fair amount about project management.
I also learned what it means to be part of a giant corporation.
Slyce (2017-2020)
Slyce was a Philadelphia-based startup specializing in retail visual search. I joined a small team that built an enterprise server from the ground up. The resulting server powered the entire platform, with a handful of small tools around it to facilitate operations. This was my first professional position as a software engineer and provided more experience than I can reasonably list. The company eventually merged with Partium, Inc.
Some highlights from Slyce:
- Learning what it means to support a 24/7/365 service.
- Building and maintaining robust data pipelines for both ML research and live product services that used computer vision as part of their core offerings.
- Building an analytics platform from scratch that powered internal monitoring as well as billing to clients.
- Leading a project to transfer our real-time text search from Algolia to an internal Elasticsearch deployment, saving the company tens of thousands of dollars a year with no service degradation.
- Being an early adopter of Kubernetes and seeing the ups and downs of running microservices in the cloud.
- Running and maintaining our core server, which handled multiple millions of requests a day, with bursts over 10 million during peak times.
- Managing a small team of Implementation Engineers.
Partium (2020-2022)
Slyce eventually merged with Partium, and I, along with the few remaining engineers, was part of the deal. Partium also built visual search, but where Slyce’s focus was retail, theirs was industrial. At Partium I led the platform we had built at Slyce, as it continued to serve clients and generate revenue. We made a substantial effort to reduce costs during this time, and I oversaw a project that cut our monthly server costs by 30%.
Maintaining that server meant that I was also responsible for the services Slyce previously rendered. I was the primary contact for our clients that relied on the server and managed those relationships and operations.
Voxel51 (2022-2026)
I moved on from Partium to a company with open source software at its heart. Voxel51 builds data visualization and other tools for ML and AI scientists and engineers. Similar to Slyce, I joined Voxel51 very early to build up their enterprise server from scratch. While they had a very different deployment pattern – deploying directly into customers’ private clouds instead of as a SaaS offering – the stack to achieve it was familiar. Again, working on a large endeavor like this meant that I gathered a lot of experience along the way:
- Helping replace an external vendor (this time Auth0) with an in-house solution, making things seamless for clients and saving the company money along the way.
- Building features like custom license management and the ability to deploy into air-gapped environments to unlock new clients and verticals.
- Interviewing candidates as the team grew from under five to over fifteen, including engineering managers and principal engineers.
- Leading a project to redesign the communication layer between a legacy system and the enterprise server. This was a substantial effort that ended up eliminating classes of timeout errors that clients experienced without users needing to change a line of their code.