April 30, 2026

Hello, world

First post on the new site — stack overview and what's coming.

This is the first post on the new site.

After years of meaning to start a proper engineering blog, this is me actually doing it.

Who this is for

Senior+ data engineers who've been around long enough to be skeptical of hype. People who appreciate honest trade-off analysis over vendor-sponsored "best practices."

The stack

  • Next.js 16 — App Router, React Server Components
  • MDX via fumadocs-mdx — posts live in content/ as .mdx files
  • Tailwind CSS v4 — no config file, CSS-native tokens
  • Syntax highlighting via rehype-pretty-code + Shiki
# Obligatory first-post hello world
def main():
    print("persistentengineer.com is live")
 
if __name__ == "__main__":
    main()

Infrastructure: Cloudflare (DNS, CDN, Email), Vercel (hosting), Neon (Postgres for view counters).

-- View counter — every post gets one
CREATE TABLE views (
    id      SERIAL PRIMARY KEY,
    slug    TEXT NOT NULL,
    ts      TIMESTAMPTZ DEFAULT now(),
    ip_hash TEXT  -- hashed, not stored raw
);

What's coming

Essays on topics I've been thinking about:

  • Why your dbt project will become unmaintainable (and what to do)
  • Apache Iceberg snapshot isolation — a practical deep-dive
  • Streaming is mostly batch in disguise

Articles — short notes on things I discover during daily work.

Projects — case studies on real systems, including an LLM-based MR review agent built with FastAPI, Qdrant, and Claude API.

Subscribe by email on the homepage: persistentengineer.com/#subscribe


Open to senior+ Data Engineering roles in AU/NZ/EU/US — get in touch.

Discussion

Was this post useful?

Sign in to like and comment.

Your name and avatar from the chosen provider are stored in this site's own database to show your activity.