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: Eric Clemmons' Kudoboard

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.

Amidst a mad dash to survive the year, I solved several Sales-Led-Growth (SLG) needs:

  • TestDriver for Playwright

    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
      `);
    });  
  • Self-Hosting

    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.

  • TestDriver Studio

    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:

    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

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.

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:

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. Eric Clemmons' Kudoboard

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:

Creating AutoRAG.ts in Alchemy for Cloudflare AI Search:

August

Realized that I’ve lost 40 pounds in a year:

Tested an alternative algorithm for the TestDriver computer-use product:

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:

Validated the idea of selectorless E2E testing with Playwright:

September

More visibility in the Cloudflare community for Alchemy (via AutoRAG.ts):

Testing out Convex for real-time sync:

Shipped @testdriver.ai/playwright:

October

Drove to React Conf 2025 in Las Vegas, then made a pit-stop in San Francisco to visit friends:

Prototyped TestDriver Studio with Cloudflare:

Seeing some engagement, also tested out Playwright Test UI in the browser with containers:

Getting excitement from the community & prospective customers with “30 seconds from prompt to test”:

Met wonderful people at Cloudflare Connect 2025 that were engaging with my posts:

TestDriver Studio garnered 2k views (a lot for me) for “Playwright E2E test generator”:

Traffic spikes, so we double-down on the product to get it to MVP:

November

Went “viral” (33.4k) thanks to retweets and a pretty cool demo:

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:

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.

Thanks for reading, and have a happy new year!