zhaoyu.io
/skills /career /architecture /latency /manifesto /notes /ai-thesis /contact
GitHub LinkedIn
SENIOR MANAGER · CORE WEB · CNBC

Leading Core Web at CNBC.
Player-Coach: Architecture & AI Integration.

Senior Manager of Core Web for CNBC.com — leading a team of 8 engineers and 2 QE, in lockstep with dedicated product partners, while staying hands-on in the architecture. Nine years of performance-first engineering behind it: Isomorphic Akamai Edge for 50M+ monthly users, 1.1s LCP, governed AI integration, and independent systems shipped with the same production discipline.

View Selected Work Read My AI Thesis
Low Latency • High Leverage • Deep Focus
NBCUNIVERSAL
NBC NEWS
VERSANT
CNBC
REACT
NEXT.JS
TYPESCRIPT
TAILWIND
AKAMAI
SVELTE
NODE.JS
GRAPHQL
MONGODB
CURSOR
CLAUDE CODE
PGLITE
PYTHON
NBCUNIVERSAL
NBC NEWS
VERSANT
CNBC
REACT
NEXT.JS
TYPESCRIPT
TAILWIND
AKAMAI
SVELTE
NODE.JS
GRAPHQL
MONGODB
CURSOR
CLAUDE CODE
PGLITE
PYTHON

Impact at Scale

The numbers behind
the system.

These are production metrics from CNBC.com — not synthetic benchmarks. Shipped at this scale, consistently.

1.1s
LCP
CNBC.com · Top 1%
50M+
Monthly Users
CNBC Reach
<300ms
Akamai TTFB
EdgeWorkers · Global
98.4%
Cache Hit Rate
Akamai Edge Layer
9+
Production Years
Shipped at Scale
Top 1%
Core Web Vitals
Lighthouse Score

Career Velocity

Consistent Upward Trajectory.

2016
Intern
CNBC
2017
Software Engineer
CNBC
2019
Senior Engineer
NBC News
2021
Engineering Manager
NBCUniversal
2025
Principal Engineer
Versant / CNBC
2026
Senior Manager, Core Web
CNBC

Selected Work & Systems

Systems I've architected,
from CNBC to architectural sandboxes.

Isomorphic ReactAkamai EdgeWorkersHigh ScalePerformance

CNBC.com Next-Gen Migration

Architected the migration of CNBC.com from a legacy client-side monolith to a high-performance Isomorphic Akamai Edge architecture. Business and rendering logic moved to Akamai EdgeWorkers — executing at the network edge, not origin. The result: <300ms global TTFB and a 1.1s LCP during market-moving events with 50M+ concurrent users and zero downtime.

1.1s
LCP (TOP 1%)
<300ms
AKAMAI TTFB
ORIGINEDGECLIENTHIT: 98.4%
PROFESSIONAL IN PROGRESS

CNBC UI Factory Initiative

Architecting CNBC's next-generation component system. Establishing UI standards, performance budgets, and design token systems that scale across 50+ page templates serving a global newsroom.

50+ Templates
Top 1% LCP
ReactAkamai EdgeWorkersGraphQLNode.js
INDEPENDENT SHIPPED

OB1: Personal Exocortex

A second brain built for agents, not just for me. Books, engineering sources, and production lessons get distilled into atomic, cross-linked claims — 740+ and compounding — searchable by meaning and exposed to my AI tools over MCP, so every agent session starts with my accumulated judgment instead of a blank context window.

740+ Atomic Claims
MCP Agent Access
MCPEmbeddingsSemantic SearchTypeScript
EXPERIMENT IN PROGRESS

Cost-Guard: Infra Dashboard

Local-first cloud cost monitoring using PGlite + ElectricSQL. Zero-latency reads, real-time sync, and what-if simulations for infrastructure spend. Personal observability tooling built with AI-assisted development.

Real-time Sync
Local-first Storage
SvelteKitPGliteElectricSQLTypeScript

Principles & Persona

How I think,
outside the codebase.

The Modernizer

My career began as a web developer intern at CNBC, and over nine years it has deliberately crossed the two tracks most engineers pick between: senior engineer, then engineering manager, then back to the technical track as Principal Engineer — a choice, not a detour, made to keep my architecture judgment current — and now Senior Manager of Core Web for CNBC.com. The role is the synthesis of both tracks: I manage the team that owns the platform's core experience — 8 engineers and 2 QE, working in lockstep with dedicated product partners — while still architecting and shipping alongside them. Player-coach by design, because I've done both jobs on their own.

Beyond UI architecture, I serve as the AI Integration Lead, where I formalize the standards for AI-assisted development across the organization. My leadership philosophy is built on "Plan-first" execution — ensuring that tools like Cursor and Claude are utilized as disciplined velocity multipliers that adhere to strict security and compliance guardrails.

Outside of architecting enterprise systems or building developer tools like Cost-Guard, I am a competitive long-distance runner. I believe the endurance and discipline required to complete a 50k ultramarathon are the same traits needed to lead complex, multi-year technical transformations.

The Engineering Philosophy

Latency is the enemy of trust. Whether it's a financial ticker during a market spike or a UI transition on a slow network, delay creates doubt. Every millisecond removed is a unit of confidence restored.

The UI Factory model is the operational expression of this: treat UI production like manufacturing, not craftsmanship. Standards, budgets, and repeatability over one-off heroics.

The Bridge

I operate at the intersection of Product and Engineering. I don't build to spec — I partner with product leaders to define what is technically possible at scale.

I translate Akamai EdgeWorker configurations into business value, connect latency improvements to revenue impact, and push back when the roadmap is wrong.

Endurance Engineering

Off the clock, I trade latency metrics for endurance miles. I apply the same optimization mindset to running as I do to code: instrument everything, reduce friction, compound marginal gains.

A 3:07 marathon, a 50K ultra finish, and a sub-1:25 half in the crosshairs. The discipline carries.

The Search for the Gold Standard

I'm drawn to systems that prioritize precision and craft. In NYC, that means chasing the best Japanese food — Omakase, Kaiseki, the obsession with quality over volume.

In markets, it means studying equity structures and the secondary dynamics of Pokémon TCG as a lens for value, scarcity, and liquidity. I enjoy the game theory of high-value systems wherever I find them.

HCI Engineering

Viscerally Faster.

Don't just tell stakeholders your architecture is better. Show them. Switch modes to feel the difference between a naive socket connection and a frame-buffered stream.

60 FPS

Engineering Philosophy

Strong opinions, weakly held.

~/philosophy/single-source-of-truth.ts
Anti-Pattern
// ❌ The "Sync" Trap
const [filter, setFilter] = useState('all');

// Bug: Not shareable, resets on reload
useEffect(() => {
  fetchData(filter);
}, [filter]);
Preferred
// ✅ The URL is Truth
const searchParams = useSearchParams();
const filter = searchParams.get('filter') ?? 'all';

// The UI is just a reflection of the URL
const data = useQuery(['items', filter]);
NOTE: If the user can't share the state via a URL, the state shouldn't exist.

Digital Garden

Engineering Notes.

A collection of architectural decisions, performance constraints, and trade-offs I've encountered in production.
Jul 2026 /
Agent ArchitectureEngineering ManagementAI Engineering

The Agent Run Is the New Unit of Work — and Reviewing It Is Management

The genuinely new moment in AI-assisted engineering is not the chat answer — you watched that get produced and judged it in real time. It's when an agent comes back with finished work: it read the folder, edited the files, ran the commands, and declares itself done. You did not do the work and did not watch every step, so you cannot know which assumptions it made or which shortcut it took because the shortcut made the output look cleaner. The only question left is: is it real? The first time this happens it feels like magic. The tenth time it feels like management — because that is what it is: supervising labor you did not perform. I manage 8 engineers and 2 QE, and the skills that job demands — scoping delegation, setting a review bar, calibrating trust per worker — are now individual-contributor skills too.

Management needs a unit of account, and session-level thinking is the wrong one. The right unit is the agent run: it begins at delegation, contains the tool calls, branches, and corrections, and ends in acceptance or rejection. That framing makes the work measurable — completion rate, correction rate, and whether your approval gates ever actually reject anything (a gate that always approves is not a control, it's theater). It also surfaces a free asset: every correction you make to agent output is a labeled evaluation you wrote by acting, the natural test set for the next run. This is the same discipline as my receipts rule — done without an attached artifact is self-attestation by the party most motivated to claim success. Getting the machine to do the work is the easy part now. Deciding the work is trustworthy is the job.

Read as standalone note →
Jul 2026 /
Agent ArchitectureReliabilityEngineering Management

Agents Degrade Quietly: Maintenance Is Where the Value Compounds

Building an agent produces a visible artifact — there was nothing, now there is a working agent — so it reads as progress. Maintaining one produces no artifact; at best, nothing happens. So effort flows to building, and the felt value inverts the real value. A well-built agent nobody maintains degrades on a schedule: its context sources go stale, its permissions drift wider than its job, its instructions calcify into a patch pile. A modestly-built agent someone reviews weekly compounds — each pass prunes a failure mode and sharpens the job. This is the oldest lesson in operations wearing a new costume: prevented loss is invisible, which is why nobody celebrates the on-call review that kept the incident from existing.

The corrective is ownership, and it decomposes into four responsibilities I now require for any agent near production work: define the job narrowly (a vague agent is an unowned agent waiting to happen); curate the diet — what it reads, which examples it learns from, including rejected outputs so it learns what not to do; manage permissions proportional to stakes — draft-only and write-access are different categories, and write access is earned inside a narrow job, not granted because a demo looked good; and run the review loop, where one-off failures get fixed at the output level but recurring failures get fixed at the system level. Team agents fail by tragedy of the commons — the pain is collective, the maintenance is nobody's job — so the owner follows the work. An agent is not a feature you ship. It is a service you operate.

Read as standalone note →
Jul 2026 /
AI EngineeringAgent ArchitectureSpecification

Spec Quality Is the Bottleneck Now, Not Implementation Speed

The industry is measuring AI-assisted development with the wrong unit of analysis. Code-generation speed is the vanity metric; the METR result everyone cites — experienced developers who felt 20% faster while measuring slower — isn't evidence that AI doesn't work, it's evidence that implementation speed was never the constraint. When agents can produce working code from any sufficiently precise description, the bottleneck moves upstream to the description itself. StrongDM's autonomous pipeline runs on 6,000+ lines of behavioral specification — and that corpus, not the generated code, is the engineering artifact. The specification becomes the primary artifact; the codebase is a derivative — closer to a build output than to source.

Building production systems with Cursor and Claude Code has restructured where my own hours go. My leverage stopped correlating with how fast I can type and started correlating with how precisely I can state three things: the goal, the boundary, and what "done" has to prove. The human stays at the two endpoints — specification in, satisfaction judgment out — and everything between is increasingly the machine's. This also explains why AI amplifies experts instead of equalizing them: it equalizes execution speed, but execution was already cheap. What it amplifies is specification quality, and specification quality is a direct function of domain depth. If the agent keeps disappointing you, the uncomfortable first question is no longer about the model — it's whether you actually specified the thing you wanted.

Read as standalone note →
Jul 2026 /
Agent ArchitectureReliabilityDistributed Systems

Agent Failures Are Loop Failures, Not Intelligence Failures

Every agent failure I've debugged this year decomposes the same way. The agent didn't lack intelligence — the loop lacked definition. It wandered out of scope because no boundary was stated. It "finished" without finishing because nothing defined what done has to prove. Two agents double-executed the same task because nothing marked it claimed. These are Tuesday failures, and none of them are fixed by a smarter model, because smartness cannot supply a fact that was never specified. A run an agent can actually be held to has five parts: a goal, a boundary, tools, artifacts, and receipts. Miss one and you haven't delegated work — you've made a wish.

The good news: distributed systems solved these coordination problems decades ago, we just have to notice the mapping. A visible CLAIMED state on a task is a lease, revalidated when the worker returns. "Done" without an attached receipt is self-attestation by the party with the strongest incentive to declare success — so the receipt (the diff, the test run, the artifact link) is non-negotiable, the same way you require an acknowledgement instead of trusting a fire-and-forget write. And the issue tracker you already run is the natural control plane: it has owners, statuses, comments, links, and history built in. Reliability is engineered into the loop, not summoned from the model. Make the loop less ambiguous before you ask for a smarter agent.

Read as standalone note →
Jul 2026 /
AI EngineeringSEOStructured Data

Why I Made This Site Readable by Machines, Not Just Humans

Recruiters and hiring pipelines increasingly route through an AI agent before a human ever opens a tab. A portfolio site built only for a person scrolling and reading is now serving half its actual audience. So I added the other half: an llms.txt at the site root — a plain-text summary of who I am and what I've built, structured for a language model's context window rather than a browser's rendering engine — JSON-LD Person schema on every page, and real canonical URLs for these notes at /blog/{slug} instead of leaving them buried as anchors inside one long scrolling page. Same content, now individually addressable, cacheable, and citable.

The more interesting find while doing this wasn't a feature, it was a bug. My static-site adapter's SPA fallback page and the prerendered root route both wanted the filename index.html, and the fallback was winning the write — silently replacing the real homepage (title, description, Open Graph tags, all of it) with an empty shell at build time. Every crawler and every link preview had been getting nothing. The fix was a one-line rename, but the lesson generalizes: a static site's build output is not implied by its source — verify what actually ships, especially at the config layer nobody re-reads after initial setup.

Read as standalone note →
Jul 2026 /
AI EngineeringAgent ArchitectureCareer

The Three Tiers of Using AI, and Why Only Two of Them Still Differentiate You

There's a real difference between using AI as a faster typist — autocomplete, chat-assisted edits, "fix this bug for me" — and delegating a bounded unit of work to an agent that plans, executes across multiple files, and hands you a diff to review. The first tier is now table stakes; every engineer I work with has a model open in a side pane, and it stopped being a differentiator the moment it became the default. The tiers above it — an agent working a scoped task end-to-end, or several agents running in parallel with their own permission boundaries — are where the actual leverage still lives, because almost nobody has restructured how they delegate work to get there.

As the person who sets AI-adoption standards for my org, I spend almost none of my time on prompting technique. I spend it on the guardrails: what an agent can touch unsupervised, what requires a human review gate before it ships, and what "done" has to prove before I believe it. This site's agent-readable rewrite — the notes, the structured data, the build-output bug above — was built the same way: scoped to specific files, verified against the existing type-check, lint, test, and build gates before anything shipped, with the plan surfaced for review rather than pushed silently. "I use AI" stopped being the differentiator. Whether you can hand an agent a boundary and a review bar — instead of still typing every line yourself — is the one that's left.

Read as standalone note →
Feb 2026 /
AI EngineeringProductivityMeta

Building with AI: The Compound Advantage

I built most of this site using Claude Code. Not as a novelty — as a deliberate workflow. The components you're reading, the type errors that blocked deployment, the engineering notes you're reading: almost all of it happened through a tight loop of prompting, reviewing, and committing. My job was taste and judgment, not keystrokes.

The thing I didn't expect was the qualitative shift, not just the speed. When implementation cost drops low enough, you stop filtering ideas at the "is this worth building?" stage. You just build. The compounding isn't in the individual tasks — it's in the number of experiments you run. An engineer who ships 10 experiments a week learns differently than one who ships 2. AI doesn't change what you can build; it changes how many times you can try.

Read as standalone note →
Jan 2026 /
ArchitectureEdge ComputingIndependence

Sovereign Resilience: Why I Over-Index on Edge Architecture

The CNBC architecture I maintain runs at the edge: request handling, personalization logic, and cache invalidation all execute as close to the user as possible. No single region, no single cloud dependency, no single point of failure. When us-east-1 degrades during a market-moving event, traffic routes around it. The system doesn't panic — it degrades gracefully.

I've started applying the same pattern to my own work. A skill portfolio concentrated in one employer, one domain, one team is a single point of failure. Redundancy at the edge means building capabilities that can execute independently — full-stack range, local-first tooling, systems you own outright. Not as a hedge against any specific outcome, but because optionality compounds quietly until the moment it matters all at once.

Read as standalone note →
Jan 2026 /
BackendAPI DesignReliability

Idempotency in Distributed Systems

Working on live news infrastructure taught me that failures are not exceptional — they are scheduled. When a Fed rate decision drops at 2pm, every monitoring system, every analytics pipeline, every content update fires simultaneously. Network partitions happen. Acknowledgements get dropped. The question is never "will this request fail?" — it's "what happens when it does?"

Idempotency keys are the answer. The design rule I now apply to every API: the client should always be able to safely retry. If handing you the same request twice produces different side effects, the design isn't finished. This matters even more in event-driven systems where the cost of double-processing — a duplicate trade entry, a duplicate webhook delivery, a duplicate analytics event — compounds faster than the failure that triggered the retry.

Read as standalone note →
Dec 2025 /
ArchitectureState ManagementUX

The URL is the Source of Truth

In modern SPAs, we often over-engineer state management stores (Redux, Zustand) for data that belongs in the URL. If a user filters a dashboard by "Status: Active" and refreshes the page, that filter should persist. If they send the link to a colleague, the colleague should see the same filtered view.

If the state is not in the URL, it is ephemeral. My rule of thumb: If it changes the data payload, it belongs in the query string. Client-side stores should be reserved for truly transient UI states (like whether a modal is open or a menu is expanded), not for data definition. Nine years on high-traffic news pages gave me the distributed-systems framing for why this keeps being right: URL-as-truth is single-leader replication — one authoritative writer, every view a follower. A constellation of client stores each holding its own copy of the filter is multi-leader replication, and you inherit its signature failure mode: divergence with no conflict-resolution story.

Read as standalone note →
Oct 2025 /
React PerformanceHCI60fps

Decoupling State from Render in LLM Streaming

The naive approach to building an AI chat interface is to connect a Server-Sent Events (SSE) stream directly to a React state setter. Every time a new token chunk arrives (often at sub-50ms intervals), you call setState(prev => prev + chunk).

This is a performance trap. Triggering a reconciliation cycle on every single token blows through the browser's 16ms frame budget. The solution is to decouple ingestion from rendering. We utilized a mutable useRef buffer to capture high-velocity incoming chunks synchronously, then used a throttled flush mechanism (synced with requestAnimationFrame) to commit to the DOM only when the browser was ready to paint.

Read as standalone note →
All notes, individually addressable →

Let's Build Something.

I work at the intersection of UI performance, AI integration, and high-scale news media. If you have strong opinions on any of the above — reach out.

Currently: Senior Manager, Core Web at CNBC.
Thinking about: The UI Factory, Akamai EdgeWorkers, and sub-1:25 half-marathon splits.
zsh — 80x24
➜ ./connect.sh --intent=build-together
Email: zhaolyu@gmail.com
LinkedIn: /in/zhaolyu
OPEN ↗
GitHub: /zhaolyu
OPEN ↗
➜

Latency Is the Enemy of Trust

Performance is a feature, not an afterthought. I architect for a 1.1s LCP at a global scale of 50M+ users.

URL > Store

The URL is the only reliable single source of truth. I prefer URL-driven state to eliminate desynchronization bugs.

WET > DRY

I value strategic duplication over premature, leaky abstractions. Clarity and composition beat complex "God Components."

Server > Client

I leverage SvelteKit and Akamai EdgeWorkers to ship HTML, not just JSON. I optimize for the browser's critical rendering path.

ENGINEERING Sr. Manager, Core Web @ CNBC
SCALE 50M+ Monthly Uniques
MARATHON_PR 3:07:45
HALF_PR 1:31:49
NEXT_TARGET Sub-1:25 HM
LinkedIn GitHub

© 2026 Zhao Yu — Hand-coded with Svelte. Deployed to Cloudflare Edge.