← Back to writing

About Me

Who I am

I'm Felix Han — 韩海涛 in Chinese. My given name means "sea waves," and the handle this blog lives under, 沧浪 (canglang), keeps the water. I'm in my late twenties, based in Wuxi, China, and I build AI applications.

The route here wasn't straight. I joined FanRuan, a Chinese BI company, as a project manager on the client-delivery team. After a year and a half of managing implementations, I wanted to be the person building the software instead — so I took four months off, taught myself front-end and Java, and rejoined the same company as an engineer. Over the next three years I was the front-end and design lead on a three-person core team that built FDI-WEB, an internal platform a ~3,000-person delivery organization uses to track 10,000+ projects. Along the way I prototyped the company's first LLM tools — a RAG knowledge assistant and an OCR pipeline that turned screenshot bug reports into structured JSON.

Since March 2025 I've been on a self-directed break: shipping AI projects, studying CS fundamentals through OSSU, and aiming for AI/agent application engineer roles — remote-first. Before any of this, I sang bass in my university choir and ended up running it. The pattern is apparently permanent: I join things, then I can't help organizing them.

Why this blog exists

I'm learning in public. The test I hold every post to is borrowed from swyx: would this have been useful to me three months ago? If yes, someone three months behind me needs it now.

What I promise: real numbers (eval scores, before-and-after metrics), real failures (prototypes that never reached production, claims I had to walk back), and the specific thing that changed my mind. What I don't promise: tool roundups, hot takes on model releases, or motivation. There are better places for all three.

How I work with AI

Claude Code does most of my typing; I own the architecture and the evals. The clearest example is ragx: the AI wrote most of the code, but every retrieval trick was accepted or rejected by a 45-case eval harness I designed — the numbers decided, not the vibes. I even encode the division of labor in my repo names: a suffix of "x" means AI-assisted, "r" means hand-written. The full system — every workflow, role, and asset, kept current and audited — is in How I Work with AI.

Selected work

  • ragx — a RAG system that answers questions across four corporate annual reports with cited sources, built around its own 45-case eval harness. Retrieval went 0.63 → 0.97 and answer accuracy 0.78 → 0.98 by iterating against the numbers. What it proved: AI quality can be a measurement, not a feeling.
  • FDI-WEB (at FanRuan) — the internal delivery platform above: ~3,000-person org, 10,000+ projects tracked. What it proved: I can ship production software people rely on daily.
  • logx — a small Rust log-parsing CLI, my first project built by directing an AI agent end to end. The honest story: the first README overclaimed, so I audited it, cut the features that didn't exist, and published the measured numbers instead (~100–150 MB/s, under 5 MB of memory). What it proved: I'd rather ship a small true thing than a big claimed one.
  • learn-to-ship — a LangGraph agent that ranks what I should study next by which job-role gap it closes; v0 is live, gated by a CI eval harness. Its first useful output was telling me to build itself — the full story is in Learning to Ship. What it proved: learning can be pointed at output instead of collected.

Off the clock

Work and AI are a part of me, not the whole of me. The rest, concretely:

  • League of Legends, since 2012 — a support main (Braum and Poppy), peak Diamond II. Apparently even in games I pick the role whose job is making other people succeed.
  • Boxing, then the gym. A year of boxing that settled into weight training. Badminton too; tennis I like more than I practice.
  • Board games with friends — Werewords, Flip 7, and Texas Hold'em are the regulars.
  • Punk. Start where I'd start you: "未来的主人翁" by 柏林护士 (Berlin Nurses).

And the hero image up top? It's drawn at random from a small pool — Frieren included — so refresh and you may meet a different one.

How my friends describe me

I asked some friends to describe me and promised to print their answers verbatim. The names are the ones they picked for themselves; the quotes are translated from Chinese (except one that arrived in English and stays untouched) — the originals are on the Chinese page. Two are drawn at random per visit; refresh to meet the others.

Moves as his heart wills, goes where the blade leads.
the Anonymous Big Shot
You're the real deal — whatever you set out to do, you'll pull it off.
Tudou ("Potato")

Elsewhere

GitHub · LinkedIn · X · email