function Experience() { const [entries, setEntries] = React.useState(null); const [error, setError] = React.useState(null); React.useEffect(() => { fetch("experience.json", { cache: "no-cache" }) .then((r) => { if (!r.ok) throw new Error(`HTTP ${r.status}`); return r.json(); }) .then((data) => setEntries(Array.isArray(data) ? data : [data])) .catch((e) => { console.error("Failed to load experience.json", e); setError(e.message); setEntries([]); }); }, []); return (
03 · Experience

A timeline of building.

{entries === null && (
Loading experience…
)} {error && (
Failed to load experience.json
)} {entries && entries.map((entry, idx) => ( ))}
); } function ExperienceCard({ entry }) { const { role, company, period, tags = [], summary, highlights = [], } = entry; return (
{role} {company && @ {company}}
{period && {period}}
{tags.length > 0 && (
{tags.join(" · ")}
)} {summary &&

{summary}

} {highlights.length > 0 && (
{highlights.map((h, i) => (
{String(i + 1).padStart(2, "0")} {h}
))}
)}
); } function TechStack() { const [data, setData] = React.useState(null); const [tab, setTab] = React.useState(null); const [error, setError] = React.useState(null); React.useEffect(() => { fetch("stack.json", { cache: "no-cache" }) .then((r) => { if (!r.ok) throw new Error(`HTTP ${r.status}`); return r.json(); }) .then((d) => { setData(d); if (d.categories && d.categories.length > 0) setTab(d.categories[0].id); }) .catch((e) => { console.error("Failed to load stack.json", e); setError(e.message); }); }, []); const categories = (data && data.categories) || []; const active = categories.find((c) => c.id === tab); return (
04 · Stack

Tools, opinionated.

A working stack assembled around clarity, scale, and operational sanity — not novelty.

{error && (
Failed to load stack.json
)} {!error && data === null && (
Loading stack…
)} {categories.length > 0 && (
{categories.map((c) => ( ))}
)} {active && (
{active.items.map((it) => (
{it.glyph} {it.name} {it.desc}
))}
)}
); } function Projects() { const [items, setItems] = React.useState(null); const [error, setError] = React.useState(null); React.useEffect(() => { fetch("projects.json", { cache: "no-cache" }) .then((r) => { if (!r.ok) throw new Error(`HTTP ${r.status}`); return r.json(); }) .then((d) => setItems(Array.isArray(d) ? d : [])) .catch((e) => { console.error("Failed to load projects.json", e); setError(e.message); setItems([]); }); }, []); return (
05 · Projects

Selected work.

Systems shipped, AI experiments productionized, and platforms built for teams who actually use them.

{error && (
Failed to load projects.json
)} {items === null && !error && (
Loading projects…
)} {items && items.length > 0 && (
{items.map((p, i) => (
{p.label} {p.status && {p.status}}
{p.code && {p.code}}

{p.title}

{p.description &&

{p.description}

} {p.tech && p.tech.length > 0 && (
{p.tech.map((t) => ( {t} ))}
)}
))}
)}
); } Object.assign(window, { Experience, TechStack, Projects });