Experience / 2014 - 2026
Building and running a product
I spent nearly 12 years building software for professional photographers (cloudspot.io), from early engineering through product growth and acquisitions.
My roles ranged from sole engineer to chief technology officer and vice president of
engineering. I stayed hands-on, keeping the product running while improving its foundations
and helping the team build on them.
Full career history on LinkedIn Areas of experience
-
Application architecture and product evolution
I work across frontend and backend, integrating products and updating applications in
stages. For an acquired product, I built a way to replace individual pages so the team
could keep delivering features with familiar tools.
-
Distributed systems and cloud infrastructure
My work connects applications, databases, queues, object storage and edge services. I've
migrated production databases, cleaned up millions of stored images and simplified how
requests move between services and providers.
-
Data processing and streaming
I've built parsers that extract photo metadata during uploads, in JavaScript and Go, and
services that stream archive downloads without storing a finished archive. Image
processing and delivery are particular areas of depth.
-
Production reliability, performance and cost
I gather evidence through production telemetry, profiling and reproducible tests. I've
used it to trace memory leaks and faults in image processors, improve reliability and
reduce unnecessary cloud usage.
The Pixels That Shouldn't Have Been There -
Developer tooling and workflows
I build tools that make development and testing easier to repeat. That includes local
environments covering full payment workflows, automated code changes for framework
migrations, and faster build tooling.
01 / Architecture and cost
80%
fewer edge-compute invocations
Simplifying image delivery
My role: Investigation and pipeline redesign.
The situation
Image delivery had grown into a chain of edge workers, backend services, external storage and a separate caching layer. At hundreds of millions of monthly requests, the extra steps added cost, timeouts and more infrastructure to operate.
What I did
I traced the request path across those boundaries, removed the separate caching layer, and changed the routing to make better use of the edge platform and its caching.
The result
Edge-compute invocations fell by approximately 80%. We also removed the storage used by the extra cache and improved image delivery. The resulting system had fewer moving parts to maintain.
02 / Product evolution
Incremental migration
an acquired product brought into the platform
Integrating an acquired product
My role: Technical direction and implementation, alongside the product team.
The situation
An acquired customer relationship management product used AngularJS, while our main application had moved to Vue 3. I was the only engineer on the team familiar with AngularJS.
What I did
I built a proof of concept that let us replace individual pages with Vue. That gave the team a way to integrate the product and add features using tools they already knew. I also updated the development tooling and worked across frontend, backend and payments.
The result
The team released the integrated product and continued developing it while replacing the older frontend in stages. In less than two years, the product reached over $1,000,000 in monthly gross payment volume.
03 / Development workflow
Weeks to hours
developer onboarding time
Making local development repeatable
My role: Development environment design, implementation and team adoption.
The situation
Getting a new engineer ready to contribute could take weeks. Important workflows depended on knowledge and services that were difficult to reproduce on a developer's own machine.
What I did
I built a container-based local environment that covered the full application workflow, including payment events and webhooks. I worked through the dependencies and brought the environment to the team so engineers could develop and test complete flows locally.
The result
Onboarding dropped from weeks to hours. Engineers could exercise payment workflows before deployment, with a more repeatable setup and less reliance on shared staging environments.
Working together
Tell me what you're working on and where you're getting stuck. We can work out whether my
experience would be useful.