Univar Solutions (2026–present)
Lead Developer · Remote, contract through Insight Global
Univar is a chemical distributor, which in practice means a lot of warehouses and a lot of SAP. I joined in July 2026 as lead developer. So far that has meant two apps, both running on iPhones and iPads through Capacitor, with Firebase sitting between them and SAP. The inventory management app is how people in the warehouses pick, process, and receive. The electronic proof of delivery app was still on Angular 13 when I got there, and I rewrote it in Vue and Nuxt 4 so both apps are on one stack.
This entry gets longer as things ship.
TriNet (2021–2025)
Senior Software Engineer · Remote
I joined TriNet to help bring their development team in-house. The corporate website had been built and managed by an external agency on Vue 2 and Nuxt. The tooling and the codebase were both dated, and the vendor relationship meant internal teams couldn’t really own their own site. My job was to help stand up an internal team and then rebuild, run, and own the site ourselves.
The 25-minute build
The first thing I noticed in my first few months was that builds on Netlify took 20-25 minutes. Every time. Marketing used Contentstack to manage copy, which meant every single-word change (a typo fix, a product name tweak, a date correction) kicked off a 25-minute wait before anyone could see it live. Multiple stakeholders were making updates throughout the day, and all of them were sitting there watching a progress bar.
It annoyed me, so I fixed it. The build was doing almost everything the wrong way: every asset in the project was being reprocessed on every build, every asset was being logged during processing, content collections were being rebuilt even when nothing in them had changed, and the whole CMS dataset was being refetched from scratch every time instead of incrementally. Cleaning that up (proper caching, incremental fetches, killing the asset logging, not rebuilding what hadn’t changed) brought builds down to 1 minute, and the marketing team was very happy with me.
Vue 2/Nuxt to Vue 3/Astro
With the site in-house and the feedback loop fast enough to iterate on, the bigger migration could finally happen. I planned and led the full move from Vue 2/Nuxt to Vue 3/Astro with a Node.js backend, rebuilt the test suite, and automated enough of the pipeline that feature work could move quickly without anyone babysitting deploys.
Accessibility: D to A
The site graded a D against WCAG standards when I arrived. By the time I left, it was an A. Most of that work happened alongside the migration. New architecture is a good excuse to do accessibility right from the foundation rather than patch it on. But a lot of it was just going through and fixing things that had been wrong for a long time. Semantic markup, keyboard navigation, color contrast, screen reader testing, the whole list.
The rest
- Set up Contentstack so three departments could publish their own updates without a developer
- Redesigned the layout and navigation, and visitor conversion went up 25%+
- Cut image load times 75% with better compression and newer formats
- Managed one direct report, and hired and managed outside contractors for the big pushes
- Kept shipping through mid-sprint scope changes, shifting leadership direction, and moving launch dates
DiscoverOrg (now ZoomInfo) (2014–2016)
Senior Software Engineer · Vancouver, WA
DiscoverOrg hired me to take a sedimentary mess of a codebase and turn it into something you could actually develop in. What I walked into: stylesheets that overrode each other multiple times, HTML generated by stored procedures or scattered across directories, a jQuery and plain-CSS front end with no architecture to speak of, and a backend that was part procedural Perl, part underbaked PHP, with a MySQL database doing what it could.
The CTO and I landed on Angular (1.x at the time) with plain SCSS on the front end, and eventually Java Spring Boot on the backend. He was a Java developer and brought in a back-end hire to work alongside me, which meant I got to learn Angular, tighten up my SCSS, and learn how to consume and contribute to Java APIs. I built new Angular views in HTML and SCSS with their attendant models and controllers in JavaScript, consumed existing Java APIs, wrote my own when I needed to, and refactored the legacy Perl, PHP, and front-end code underneath. Look, feel, functionality, and performance all came up.
DiscoverOrg grew from about $30M to $1.2B in annual revenue during and after my time there. The website was one factor of many, but it was the factor I worked on, and it had to scale with everything else.
Independent Consultant (2018–2021)
Senior Software Engineer · Remote
Three years running my own shop, taking on up to ten clients at a time (Ann Taylor among them) and handling every phase from proposal through deployment. Design, full-stack development, DevOps, client communication, and the parts nobody puts on a resume: scoping conversations, writing proposals that say what the work will cost and when it will ship, and keeping records good enough that nobody had to ask me twice what was going on.
Everything shipped on time and on budget, which with ten clients at once had at least as much to do with the calendar and the inbox as with the code.
North American Power (2017)
Senior Web Developer · Norwalk, CT
A one-year run rebuilding the enrollment website for an electricity provider. Design direction, SCSS authoring and refactoring, and a lot of JavaScript to make the functionality behave. Built on Drupal 8 and Foundation 6, with a small team of three doing daily scrum and working to tighten up a codebase that had gotten redundant in places.
Earlier
Front-end development at Blue World (2013–2014) on Bootstrap, jQuery, and PHP, and at Direct Wines (2012–2013) on an Oracle ATG backend with custom JSTL functions. Plus assorted freelance work going back to 2008.