Full Stack DeveloperEditor's Pick

Lee Robinson Portfolio

Works on ML at SpaceX

Now an ML engineer and writer (SpaceX, formerly Cursor, previously five years at Vercel on Next.js) — the site itself has stayed a minimalist, serif-typeset hub of evergreen "Notes" and a dated blog, proof that a personal site can outlast any single employer if it's built around ideas rather than a current job title.

Next.jsReactTypeScriptVercel

Location

Coordinates unknown. Vibes: international.

Companies

SpaceXCursorVercel

Skills

Next.jsReactTypeScriptVercel

Notable

  • Worked on Next.js at Vercel for 5 years

What makes it work

A breakdown of the choices that make this portfolio stand out.

1

A bio built to survive a job change

The bio openly narrates the sequence — Vercel on Next.js, then Cursor, now ML at SpaceX — in two short paragraphs, with a "Default / Long" toggle for readers who want more. Because the site was never branded around one employer, the career change required editing two sentences, not rebuilding the site.

2

"Notes" as a separate, undated layer above the blog

Below the bio sits a two-column list of evergreen topic pages — Developer Experience, Developer Marketing, Documentation, Product Engineers — distinct from the dated "Blogs" list underneath. Separating durable reference pages from time-stamped posts means old opinions don't look stale next to this month's writing.

3

A blog that spans years without going quiet

Entries run from 2021 through mid-2026, including very recent posts on AI models and coding agents. A five-year-plus posting history with recent activity is a stronger trust signal than a large archive that stopped updating two years ago.

4

One curated illustration instead of a photo grid or screenshots

The only visual on the page is a single, large, editorial-style illustration — a stylized city-and-farmland scene — running the full height of the layout. No headshot, no project screenshots, no logos. For a site whose entire content is text, one deliberate piece of art does more for visual interest than a wall of thumbnails would.

What Full Stack Developers can take from this

Specific, actionable tips to apply to your own portfolio — no generic advice.

  • Write your bio around what you do and believe, not just where you work — then a job change is a two-sentence edit instead of a full site rebuild.

  • Separate evergreen reference writing ("Notes," "Things I believe") from your dated blog posts — readers and search engines treat timeless and timely content differently.

  • A five-year posting history with recent activity is worth more than a large dormant archive — consistency compounds, gaps erode trust.

  • If your content is mostly text, one well-chosen illustration can do more visual work than a full gallery of screenshots.

  • When you change jobs or roles, resist rebuilding your entire personal brand around the new employer — you'll have to do it again next time you switch.

Case studies

Two builds bracket the career: the site itself, open-sourced as a Next.js + MDX template, and pixo, a Rust image compressor Lee Robinson built in five days without writing any code by hand. It's the same teaching-first habit before and after coding agents.

Case StudyintermediateAbout one year (July 2025 – June 2026, before moving to ML)

Cursor Docs & Learning Courses

MarkdownDocumentationDeveloper Education

Lee Robinson joined Cursor at roughly 70 employees and spent his first year as a generalist across engineering, product, and marketing. His /cursor page says he created and maintained Cursor's docs and learning courses, spoke about context engineering and the Composer model, and played a pseudo-PM role on a number of product launches. A later post also describes migrating the Cursor website from a CMS to raw code and Markdown.

Docs and learning material for a fast-moving developer tool is product work: you have to understand the product well enough to teach it, and hear where users get stuck. It's the same teaching-first track that, by his own account, got him hired at Vercel.

  • Created and maintained the docs and learning courses at a ~70-person company with a tiny marketing team

  • Pseudo-PM role on launches: gathering customer feedback as a heavy user of the product

  • Moved a company website from a CMS to raw code and Markdown, arguing bad abstractions cost more once AI writes the code

Projects

Open SourceintermediateOngoing (maintained across several years)

leerob.com — Next.js + MDX Personal Site, Open-Sourced as a Template

Next.jsReactTypeScriptMDXTailwind CSSPostgresVercel

The personal site at leerob.com: a two-paragraph bio with a Default/Long toggle, a list of evergreen "Notes" pages (Things I believe, Developer experience, Documentation, Product engineers and more), and a dated blog running from 2021 to July 2026. The source lives on GitHub as next-mdx-blog — the old leerob/leerob.io repo URL now redirects there — published as a public template: Next.js, MDX, Tailwind CSS, Vercel Analytics, and an optional Postgres table for redirects.

A personal site that doubles as a public, forkable template shows you can ship something other developers actually build on — README, sensible defaults, optional database setup — not just a page only you will ever run.

  • Published as a GitHub template with 7,000+ stars — the build is reused, not just admired

  • Evergreen Notes kept separate from the dated blog — a content model decision, not just styling

  • Deliberately small stack: Next.js, MDX, Tailwind, and an optional Postgres table for redirects

Open Sourceadvanced5 days (holiday break)

pixo — Rust Image Compressor Built Entirely with Coding Agents

RustWebAssemblySvelteKitTypeScriptCursor

A zero-runtime-dependency image compression library in Rust — lossless PNG, lossy (quantized) PNG, lossy JPEG, and resizing, with every algorithm implemented from scratch — compiled to WebAssembly for a SvelteKit web app that compresses images entirely in the browser, plus a CLI and written guides. Lee Robinson wrote none of the code by hand: the post on leerob.com logs 520 agent runs, 350M tokens, and $2,871 of spend.

The write-up shows the decisions an engineer still has to own when an agent types the code: which formats to support, library vs. CLI vs. web app, trading 1% smaller images against a 10% bigger binary. It also shows the guardrails — CI, tests, benchmarks — that let agents work unsupervised without regressing.

  • Zero runtime dependencies — PNG and JPEG encoders written from scratch, not wrapped

  • 900+ tests and 86% coverage, with CI for linting, testing, and WASM builds added early

  • Size budget as an explicit trade-off: a 159 KB WASM binary chosen over marginal compression gains

  • Honest framing in the post: an experiment, not a claim that people should switch from established libraries

Ready to build your portfolio?

Follow the Full Stack Developer roadmap — skills, projects, and timeline to get hired.

Full Stack Developer Roadmap