Linh Le · senior full-stack engineer — end to end means end to end, from server to screen
It loads fast, doesn't it. Here's why.
Hover-prefetched. Flash-free. Motion-aware. Zero-dependency.
The page is the work sample.
Four things on this site that are fast or smooth because I read what the browser already does well. On this one you can check — Ctrl+U anytime. The code blocks below are pulled live from disk; the raw ↗ link opens the file.
Two letters and you've redecorated.
Hover ahead — the next page is already on its way.
Move your cursor onto a nav link and the site quietly fetches the next page in the background. By the time you actually click, it's already on disk. Open the network tab and watch the prefetch fire. (The router injects a <link rel="prefetch"> into <head>, deduped per URL.)
Smooth when you want it, snappy when you don't.
Page swaps and mode changes get a soft cross-fade — unless your OS has asked for less motion, in which case they're instant. The site checks before it animates. (One four-line helper, called by both the mode-manager and the router.)
Nothing flickered.
The site picks a theme before the browser draws a single pixel — so a hard-refresh never gives you that "whoops, we meant the dark version" flash. (Inside: an inline <head> script sets data-mode before any stylesheet starts loading.)
Those drifting spots are a system, not a texture.
Two chemicals on a grid: A gets fed in, B eats A and decays — the patterns fall out of the math. State lives in an RGBA texture, a shader runs the Gray-Scott update on every cell in parallel, ping-pong framebuffers step time forward. (The interesting call was what to put on the GPU and what to leave in JS — read the system, then write to it.)
~13 years, every layer.
-
Full-stack web · 11 yrs
Frontend through API through data layer. Production apps owned end to end, not handed across a fence.
→ browser · server · data -
IoT & large data · 9 yrs
Concurrent with the web work, inside the same 11 years. ~100 networks, hundreds of thousands of devices reporting every 10 min — ingested, aggregated, and queryable in under 250 ms. LoRaWAN radio→DB. AWS compute/storage/queues in production.
→ 100+ networks · <250ms aggregated read -
Data analysis
Sensor-signal analysis on the fleet telemetry above, document and word-frequency analysis on text corpora, and sentiment analysis on social-media streams. The pipeline that moves the data is the one I read it with.
→ sensor · text · social sentiment -
Networking & bare metal
CCNA1-level networking fundamentals plus end-to-end physical machine setup — rack, OS, network, runtime. "From server to screen" starts at the server I racked.
→ CCNA1 · bare-metal → runtime -
Game dev · 2 yrs
Custom C++ engine and Unity C#. The frame budget is the best forcing function for "fast enough" I've worked under.
→ C++ engine · Unity C# -
Mid-size to startup — wins and write-offs
Shipped across mid-size companies and small startups: one that made it, several that folded. The ones that failed taught what the survivor couldn't — what you cut when runway is the real constraint, and which calls you don't make twice.
→ mid-size + startup · through the win and the write-offs -
Buzzwords, since you scanned for them
Against the spirit of everything else on this page, the keyword line you came for: Node, Python, TypeScript, Zig, Go, C++, SQL, Elasticsearch, DynamoDB, Vue, React, Angular (reluctantly), AWS, Azure, Android, iOS, Linux, networking. The rest of the site is the part that says which of these I'd actually reach for, and when.
→ for the keyword scanners -
Remote-first, with a team
Remote by default — shipping with a team doesn't mean sharing a room with it. Distributed and written-first; the strongest work came from someone pushing back in a thread.
→ remote · distributed · linh@lelinh.dev · LinkedIn
Read the work for the same writing applied to bigger systems, or keep view-source open and click around — that's the intended browsing mode. Then come say hello: linh@lelinh.dev · github.com/Linh35 · LinkedIn.