2025 in Review
2025 was a year of extreme highs & lows, but mostly lows.
If you want the highlights, scroll to the Timeline section. If you want to learn from my mistakes, read on.
Ambition is a Liability
This year began with the successful delivery of my final 2 projects as a Senior Staff Software Engineer at Honor (Replacing human call operators with AI and a real-time task delivery system).
Going into my 3rd year of wartime mode, I was feeling burnout with no outlet for my lofty ambition.
(I’ve long-known that I struggle with being content. Accomplishing a goal is a temporary high as the feeling of the new status quo sets in.)
I re-evaluated what roles made sense for me (Career Development: What it Really Means to be a Manager, Director, or VP) and was missing the agency afforded to being a leader (i.e. the ability to fund initiatives).
There were open positions, but they were external-only – even with 8 years of prior management experience, internal transfers only factored in on-site experience & not career. Despite wins in my brag document, opportunities to “define when product development means” were being unrealized.
We all know that giving (let alone receiving!) feedback is difficult (see: Balancing Care with Candor), but I lost trust when I was told the truth – my initiatives were never going to be funded, and were a carrot to placate my ambition.
Seeing my position simply as a vehicle to trade time for money, I left my team with shared success and warm regards:

Serendipitously, a mutual had reached out to me about joining TestDriver.ai to scale & productionize the product for new enterprise customers.
Optimism !== Reality
In May, I joined TestDriver.ai as CTO. The opportunity to relive the best parts of my career again was too good to pass up. (The proudest part of my career was my 8 years at HigherEducation.com, building remote teams, scaling applications, and creating revenue-generating levers.)
The computer-use product had a huge opportunity to go from serviceable to best-in-class DX.
If you love what you do, you’ll never work a day in your life.
That’s false*. When there are non-negotiables like paying for a mortgage, having insurance, or basically any proxy for financial stability, the luckiest of us get to do what we love and are paid for it. But, the (absence of) pay can tip the happiness scales into a deficit.
I wasn’t prepared for the long-term reality of a seed-stage startup. I wrongly believed I was picking up where I left off in my career.
Loading tweet…
Amidst a mad dash to survive the year, I solved several Sales-Led-Growth (SLG) needs:
-
A handful of customers had “computer-use” needs. Hundreds more struggled with QA velocity with “browser-use” testing.
I retrofitted our “computer-use” product to be incrementally adoptable within Playwright:
// Before, programmatic usage & brittle selectors test("get started link", async ({ page }) => { await page.goto("https://playwright.dev/"); await page.getByRole("link", { name: "Get started" }).click(); await expect( page.getByRole("heading", { name: "Installation" }), ).toBeVisible(); }); // After, with natural language import { test } from "@testdriver.ai/playwright"; test.describe("get started link", () => { test.beforeEach(async ({ page }) => page.goto("https://playwright.dev/")); test.agent(` - Click the 'Get started' link - Verify the 'Installation' heading is visible `); }); -
Do we want to be a testing company, or an infrastructure company?
The financial costs of operating both a testing product and infrastructure was unsustainable. Self-Hosting eliminated major security risks of running on a public cloud, gave customers control of their runtime, and eliminated our biggest operational expense.
-
When I joined, the ecosystem was already heating up with Browserbase,
playwright-mcp, Browser Use and countless others.The computer-use wedge wasn’t growing, but all indicators were that browser-use was.
In about 1 month, I shipped TestDriver Studio, a natural language interface for testing browser-use:
Loading tweet…
In a week, there was more usage of TestDriver Studio than the previous version.
Our best efforts weren’t enough. In December, the founder returned the business to a solo venture.
Being Visible
Aaron Francis is correct in saying that Publishing your work increases your luck
Loading tweet…
This year, I actively contributed to Alchemy, shared my work publicly (see more videos below), attended React Conf 2025 & Cloudflare Connect 2025, and grew relationships with people in the community I respect & admire.
Loading tweet…
Here’s hoping luck finds me in 2026.
Key Moments
January
Flew to San Matteo for my first (and last) off-site with the team at Honor. Built prototypes for Feature Flags (LaunchDarkly) and Durable Workflows (Inngest).
(I learned that they’re finally trying out Temporal now based on my design docs!)
March
Snowboarding in Colorado for the first time in years to stave off burnout. Couldn’t have been happier 😊
April
Entered a the 3rd year of wartime mode. All opportunities for career growth & technical leadership are frozen.
In search of an outlet, I rediscover my hobby – coding:
Loading tweet…
This leads me to 🧪 Alchemy, where I’m able to quickly whip up custom IaC resources like WorkerProject.ts.
May
Left Honor as Senior Staff Software Engineer.

Joined TestDriver.ai as CTO to scale & productionize the product for new enterprise customers.
June
Onboarded & helped deliver a major upgrade to their computer-use testing product.
July
Tons of feedback from prospective customers, but time (& money) was not on our side. Kept my skills sharp at night to be ready for growth.
For example, validating durable workflows with Inngest:
Loading tweet…
Creating AutoRAG.ts in Alchemy for Cloudflare AI Search:
Loading tweet…
August
Realized that I’ve lost 40 pounds in a year:
Loading tweet…
Tested an alternative algorithm for the TestDriver computer-use product:
Loading tweet…
For comparison, simple tests (e.g. “login & checkout”) took 5 minutes to run. In CI, due to the way the product required infrastructure, it took 45 minutes to run.
Prototyped an alternative CLI (“zero-config”) to fix constant authentication issues with new users:
Loading tweet…
Validated the idea of selectorless E2E testing with Playwright:
Loading tweet…
September
More visibility in the Cloudflare community for Alchemy (via AutoRAG.ts):
Loading tweet…
Testing out Convex for real-time sync:
Loading tweet…
Shipped @testdriver.ai/playwright:
Loading tweet…
October
Drove to React Conf 2025 in Las Vegas, then made a pit-stop in San Francisco to visit friends:
Loading tweet…
Prototyped TestDriver Studio with Cloudflare:
Loading tweet…
Seeing some engagement, also tested out Playwright Test UI in the browser with containers:
Loading tweet…
Getting excitement from the community & prospective customers with “30 seconds from prompt to test”:
Loading tweet…
Met wonderful people at Cloudflare Connect 2025 that were engaging with my posts:
Loading tweet…
TestDriver Studio garnered 2k views (a lot for me) for “Playwright E2E test generator”:
Loading tweet…
Traffic spikes, so we double-down on the product to get it to MVP:
Loading tweet…
November
Went “viral” (33.4k) thanks to retweets and a pretty cool demo:
Loading tweet…
I’m extremely proud of what I accomplished in a month’s time using Cloudflare.
The final feature I launched for Studio was scheduling, which got ~7k views:
Loading tweet…
At this point, the product was “feature complete” with no-code E2E testing, real-time in-browser testing, and scheduled tests (i.e. CI).
December
TestDriver goes from 3 employees to 1. 😔
I’ve heard some promising rumors for 2026, but 2025 has taught me to temper my optimism with evidence.