Fullstack Engineer
currently building Penguin Secret Agency

I started in QA, then I learned to ship.

Nine years building software. Four with a tester's eye for what breaks; five more learning to build the thing that doesn't. I make products with React, Next.js, Node, and Python — and I try to leave them more honest than I found them.

9 years · react · next · node · python · Q jumps to contact

Hồ Khắc Huy

Nine years, four turns in the road.

I didn't start in a bootcamp. I started in a QA chair, watching real builds break under real load. These are the four moments that bent the trajectory.

  1. 2016 — 2020
    • FPT Software, HCM
    • tester → developer

    “The bug I missed was the one that taught me to read code like an attacker.”

    My first job out of Cần Thơ wasn't building anything — it was breaking things on purpose. I joined FPT Software as a manual tester on enterprise .NET projects, and for the first two years my job was to find what the developers couldn't see. I wrote hundreds of test cases, ran them by hand, then watched the same bugs slip into production anyway because we caught them too late in the cycle.

    So I started writing the test plans earlier. Then I started writing the automation. By the end of that stretch the team had cut production issues by about 30%, and I'd quietly crossed over into the dev side of the room. I learned that quality isn't a phase at the end of a project — it's a way of reading every line you write.

    I still open a new file the way a tester opens a feature: looking for the seam where it will fail.

  2. 2020 — 2023
    • frontend engineer
    • payment & real-time products

    “Frontend is where the engineering finally meets a human.”

    The move to frontend started with a payment processing web app — Next.js, Gatsby, third-party APIs that had opinions about how money should move. The UI looked simple. The states behind it did not. A single failed webhook could leave a user staring at a spinner while their card was already charged, and there was nowhere to hide.

    From there I joined a real-time push notification product where the UI had to keep up with thousands of events scrolling through Ag-Grid without dropping frames. I learned that performance is a feature and that "just rerender it" is the most expensive sentence in frontend. I started caring about render budgets the way I used to care about test coverage.

    Frontend stopped being "the CSS part" for me the day a 200ms jank cost someone a transaction.

  3. 2023 — 2025
    • fullstack engineer
    • talent platform · 100+ companies

    “Owning the full stack means owning the full failure mode.”

    For two and a half years I worked on a talent acquisition platform trusted by more than a hundred global companies. The frontend was React and Next.js with Tailwind and shadcn; the backend was Node and Express, deployed in Docker against Postgres. I built the CV→PDF export, the PDF parser that pulls structured data back out, the Nodemailer pipeline that had to never send the wrong email to the wrong person, and the OAuth/SSO flows that keep enterprise tenants quietly separated.

    Backend ownership changed how I think about features. A button I shipped on Tuesday became a queue job I was debugging on Thursday and a Postgres index I was adding on Friday.

    The full stack isn't a resume line. It's the pager that goes off when any layer breaks.

  4. 2025 — now
    • Penguin Secret Agency
    • autonomous commerce · psa.team

    “The hardest part of agentic systems is the part where the agent is wrong.”

    In May 2025 I joined Penguin Secret Agency as a fullstack engineer. We're building autonomous commerce systems — ShopQuantum.AI, a storefront that operates without a human in the loop, and FangBot.AI, a virtual business with 59+ AI employees running sales, marketing, support, and ops.

    My day-to-day is React/Next on the surfaces humans touch, and Python + Node on the runtime the agents live in. The new muscle I'm building: designing the seams where deterministic code hands control to a probabilistic agent — and the override paths a human takes back when the agent gets it wrong.

    After nine years debugging code I wrote, I'm learning to debug decisions a model made.

Every bug I fix in production is a test case I should have written first.

— a rule I keep relearning

Four rules I keep coming back to.

None of these are clever. They're what's left after nine years of shipping, breaking, and rolling back.

01 / 04

Test-first thinking

Four years in QA taught me to write the failing case before the feature. Even when I'm not writing the test file, I'm sketching the edge cases in my head — zero, scale, the network blinks.

02 / 04

Ship, then learn

A boring version in production tells me more than a perfect version on my laptop. I'd rather ship the small honest thing, watch real users touch it, and iterate from real signal than tune in isolation.

03 / 04

Boring code wins

Future-me at 11pm fixing a Sev-2 doesn't want clever. I lean on readable names, plain control flow, and small functions you can finish in one breath. Cleverness is a tax the on-call rotation pays.

04 / 04

Own the rollback

If I shipped it, I'm the one who reverts it. Feature flags, migration plans, and a clear undo path aren't process — they're respect for the people running on top of my code.

Things I can build for you.

I take on a small number of client projects each quarter. If your stack overlaps with mine and the work is interesting, I'd love to hear about it.

01from $600

Landing page builds

High-converting landing pages — Next.js, Tailwind, fast, SEO-clean, deploy-ready on Vercel. From copy to launch in days, not months.

  • Custom design, no template
  • Mobile-first, 90+ Lighthouse
  • Analytics, OG, sitemap wired
  • 1 round of revisions
timeline5–10 days
02from $1,500

Fullstack feature work

Drop me into your React/Next.js + Node/Python stack. Ship the feature, debug the queue job, fix the OAuth/SSO flow that's bleeding revenue. 9 years on call.

  • Feature design + implementation
  • Test plan & rollback path
  • PR with reviewable diffs
  • Knowledge handoff document
timeline1–3 weeks
03from $400

Code & product audit

I read your code like a tester reads a build. You get a written report on the bugs about to bite you, the perf wins on the table, and the bottlenecks blocking your team's shipping cadence.

  • Codebase walkthrough
  • Written audit report
  • Prioritized fix list
  • 60-min review call
timeline3–5 days

Not sure which one fits? Tell me about the problem, I'll tell you which shape it is.

What I'm actually doing this month.

Inspired by nownownow.com. Updated by hand, not by a feed.

last updated · May 2026 · 1y at PSA
  • BuildingAutonomous commerce surfaces at Penguin Secret Agency — ShopQuantum.AI storefronts and FangBot.AI agent runtime.
  • LearningAgent orchestration patterns — tool design, retries, and the human-override seams that keep probabilistic systems honest.
  • ReadingDesigning Data-Intensive Applications, slowly, on weekends.
  • WritingShort notes about the tester-to-fullstack arc — see the writing list above.
  • AvoidingShipping agent features without a deterministic fallback path.

New notes, in your inbox.

Once or twice a month I send a short note about something I'm learning — usually about shipping, sometimes about agents. No spam, unsubscribe in one click.

  • One short essay per month
  • Real stories from production
  • Zero growth-hacky listicles
No spam. Just writing. Unsubscribe any time.

Want to build something together?

I'm always up for a conversation about products, code, or the quieter parts of shipping. Pick whichever channel feels right.