A Release Pipeline With No Long-Lived Tokens and No Silent Tampering
How I secured the Hookie CLI release pipeline with OIDC trusted publishing, staged npm releases behind 2FA, and immutable GitHub release assets.
AI Product Engineer with 14+ years of experience in TypeScript. Building Hookie and RSC Boundary.
How I secured the Hookie CLI release pipeline with OIDC trusted publishing, staged npm releases behind 2FA, and immutable GitHub release assets.
Notes from building Hookie: API-shaped commands are useful, but AI-native dev workflows need CLI commands that own the whole task.
Agent-loop discourse sells parallel code output. For solo builders the binding constraint is usually demand, and a useful receipt needs cost, artifact, and a user-visible before/after.
The industry says AI agents will write most of the code. Senior engineering interviews still gate on whether you can produce a graph traversal cold in 45 minutes. A checkpoint piece, four months into the job search, on the gap between the two.
How we built an internal AI post-incident platform around the workflow responders already used: PagerDuty, Slack, Google Meet, structured reports, retrieval, and the tradeoffs that showed up once agent orchestration became production work.
After installing gstack, I wanted to dig deeper than vendor UIs into what actually lands in context. I built Context Mate as a local experiment to unify traces across Cursor, Claude Code, and Codex. So far it is only partly successful: useful for coarse Cursor buckets and Claude token curves, but not a full inventory by name, and fragile on undocumented storage.
Multiplayer webhooks for AI-native development: one stable URL, gRPC fan-out to developer and agent environments, HMAC-faithful passthrough, and explicit flow control.
For App Router practitioners: React Server Components are not hard because the idea is hard. They are hard because the server and client boundary stays invisible at runtime. This post explains why that breaks reasoning, where Next.js dev tooling already helps and where RSC observability could go deeper (dev indicator, MCP), introduces RSC Boundary as the dev overlay I ship today, and sketches a…
Webhooks look simple, but delivery guarantees, retries, and local tunnel workflows create subtle failure modes that waste engineering time. This post maps the real problems teams face and defines what a reliable debugging workflow should provide.
How we built an internal deployment platform on GCP with Cloud Build, Artifact Registry, Cloud Run, Secret Manager, shared routing, tenant isolation, and merged build/runtime logs.
Platform teams often slow developers down with approval boards and ticket queues. Golden paths achieve the same compliance goals through self-service and opinionated defaults, and developers actually use them.
KSUID is a sortable string ID format that is commonly used in distributed systems. In this post, we implement a KSUID-style generator in PostgreSQL with optional human-readable prefixes, using pgcrypto.
I've been working on a monorepo for a while now and I've developed a few patterns that work well for me. Here are some of the things I've learned.
Dive deeper into advanced Zod schema design for TypeScript. Learn sophisticated validation patterns, performance optimization, and complex schema composition techniques for enterprise-level applications.
Explore advanced Zod validation techniques for TypeScript. Master complex schema creation, custom validation rules, and effective error handling to build robust data validation workflows.
Learn the fundamentals of Zod schema validation in TypeScript. Discover how to create basic schemas, validate primitive types, and implement simple validation strategies for your projects.
Exploring Deno 2.0 by creating a streamlined port forwarding script for GKE clusters.
Recently, I had a project at work running Semantic Release to manage releases. But it didn't go as planned!
Supabase Database Webhook is a great way to trigger a function when a database event occurs. However, it is important to secure the webhook endpoint to prevent abuse.
Mysteriously, services were spontaneously restarting, while others, confoundingly, remained running but were dead to any incoming requests. Let's unravel this enigma, from its discovery to its resolution, with the hope that our experiences can assist others in a similar bind.