Archives
All the articles I've archived.
-
From 'I Can't Click' to a Full Testing Harness: How We Built Playwright for the Terminal
How a frustrating limitation in TUI testing led to building a scripted interaction system that lets AI agents drive a terminal editor like Playwright drives a browser.
-
I built a terminal IDE that feels like VS Code: here's why
TTT is a terminal-native IDE written in Go with standard keybindings, LSP support, and a familiar GUI feel, built so you never have to leave the terminal.
-
Making OAuth Testable: Rethinking OIDC Clients in JavaScript
How separating protocol logic from runtime concerns makes OAuth testable without mocks, using a functional core and thin framework adapters tested against a real identity provider.
-
What 200 Concurrent Users Taught Me About SQLite Performance
How profiling on the wrong machine led me down a week-long detour, and how WAL mode and a read/write pool split more than doubled throughput in Autentico.
-
I Found 5 Security Bugs in My OAuth2 Provider on My First Try (With an MCP Security Tool)
How connecting go-appsec/toolbox to Claude Code revealed five vulnerabilities in Autentico, including a HIGH severity unauthenticated token introspection issue, on the very first session.
-
Why I Built an Identity Provider in Go and SQLite
How and why I built Autentico, a self-contained, single-binary OIDC provider backed by SQLite that removes the ceremony from identity management.
-
Adding ABAC Authorization to a Real-Time Collaborative App with OpenTDF
How I added attribute-based access control to Skedoodle, an open-source real-time collaborative sketching app, using OpenTDF. Covering database-backed sharing, WebSocket enforcement, and centralized ABAC policy decisions, all built in a single afternoon with an AI coding agent.
-
Type-Level Library Dependency Injection. Let the Consumer App Define the API
A look at how three TypeScript primitives you already have can eliminate an entire class of silent runtime bugs across feature flags, translations, environment variables, and design tokens — with no codegen, no CLI, and no type engine.
-
The Art of Juggling Tech Debt While Shipping Features
A practical, friendly guide to handling bugs, tech debt, and unexpected issues during feature development without losing your mind.
-
JavaScript Proxy and Reflect API: Intercepting Object Operations
Deep dive into JavaScript Proxy and Reflect API for intercepting object operations, with practical examples of validation, logging, and computed properties
-
Why pnpm is a fantastic package manager
Discover why pnpm outperforms npm with faster installations, better disk efficiency, and stricter dependency management. Plus learn how to migrate seamlessly.
-
Custom HTTP Interceptors in HLS.js for Video Streaming
Learn how to use HLS.js for adaptive video streaming and implement custom HTTP interceptors to handle video fragment loading in React applications.
-
Who let the workers out?
Who, who, who, who, who?
-
Kneel Before Zod!
Data parsing and validation with Zod and type inference
-
TIL - Astro with React components and HMR issues
Astro + React Can Get Stuck in an Infinite Reload Loop
-
Shake that Tree
Tree Shaking in JavaScript Libraries - Default vs. Named Exports
-
Javascript Memory Leaks and Prevention Strategies
JavaScript Memory Leaks, Mechanisms, Detection, and Prevention Strategies
-
TOD - Object.freeze
Tip of the Day, Object.freeze
-
Debouncing State in React
Debouncing State in React
-
GraphQL in Your Ember App with Glimmer Apollo
GraphQL in Your Ember App with Glimmer Apollo
-
Asynchronous JavaScript with Generator Functions
Asynchronous JavaScript with Generator Functions
-
7 Tips for Effective Code Review
7 Tips for Effective Code Review
-
Silent Breaking Changes - A Developer’s Guide to Identifying Hidden Bugs
A comprehensive guide to understanding, detecting, and preventing silent breaking changes in software systems