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.
Location
Coordinates unknown. Vibes: international.
Companies
Skills
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.
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.
"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.
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.
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.
Cursor Docs & Learning Courses
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
leerob.com — Next.js + MDX Personal Site, Open-Sourced as a Template
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
pixo — Rust Image Compressor Built Entirely with Coding Agents
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
More Full Stack Developer portfolios
Ready to build your portfolio?
Follow the Full Stack Developer roadmap — skills, projects, and timeline to get hired.