{"id":"about-page","slug":"about","meta":{"title":"About Andrew Linh — Path, Stack, Principles","description":"Professional path, technical stack, and design philosophy of Andrew Linh: systems architecture for structured data, developer tools, and AI-native platforms."},"sections":[{"id":"about-hero-1","type":"page-hero","data":{"label":"About","title":"Built for precision, not spectacle.","description":"A short path through the work: backends, contracts, and writing that keeps teams honest."},"settings":{"paddingTop":"lg","paddingBottom":"md"}},{"id":"about-story-1","type":"about-story","data":{"label":"Path","title":"From data pipelines to content contracts.","body":"I started in data infrastructure — lineage, ledgers, and systems that had to answer auditors without improvisation. That habit of append-only truth carried into developer tools and content platforms.\n\nToday I design backend architectures and write about the seams where schemas, APIs, and AI agents meet. The through-line is simple: make the structure visible, make failures loud, keep the surface calm.","image":{"url":"https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=1200&q=80","alt":"Portrait of Andrew Linh"}},"settings":{"paddingTop":"md","paddingBottom":"md"}},{"id":"about-skills-1","type":"skills-stack","data":{"label":"Stack","title":"Tools I reach for","items":[{"id":"sk-ts","label":"TypeScript","category":"Language","icon":"code"},{"id":"sk-zod","label":"Zod","category":"Contracts","icon":"braces"},{"id":"sk-node","label":"Node.js","category":"Runtime","icon":"server"},{"id":"sk-pg","label":"PostgreSQL","category":"Data","icon":"database"},{"id":"sk-redis","label":"Redis","category":"Infra","icon":"workflow"},{"id":"sk-otel","label":"OpenTelemetry","category":"Observability","icon":"cpu"},{"id":"sk-iceberg","label":"Apache Iceberg","category":"Lakehouse","icon":"boxes"},{"id":"sk-cloud","label":"Cloud / CI","category":"Delivery","icon":"cloud"}]},"settings":{"paddingTop":"md","paddingBottom":"md"}},{"id":"about-philosophy-1","type":"philosophy","data":{"label":"Principles","title":"How I design","items":[{"id":"ph-1","title":"One source of truth","body":"If a field exists in three places, it will disagree. Prefer generated projections of a single contract."},{"id":"ph-2","title":"Fail before merge","body":"Schema validation in CI is cheaper than incident response. Loud errors beat silent drift."},{"id":"ph-3","title":"Grade what you ship","body":"Agents, pipelines, and content systems need fixtures and scorecards — not demos that only work once."},{"id":"ph-4","title":"Calm surfaces","body":"Dense signal, low noise. The aesthetic of a good terminal is respect for attention."}]},"settings":{"paddingTop":"md","paddingBottom":"lg"}}]}