Posts

2026

2025

Cover image

Org-Level Email Campaigns are Somehow an Unsolved Problem

12/28/2025

No email tool stops a whole org when one person replies. Here's how I built org-level campaign control with Instantly and webhooks.

Cover image

Working with Me

12/15/2025

A guide for anyone working with me. Covers communication preferences, feedback, what I value, and my quirks.

Cover image

Prompt the Loop When Using Coding Agents

11/2/2025

The difference between a language model and an agent isn't just tool access. It's about giving the agent a condition to loop on. Here's how to prompt agents to actually finish tasks instead of just taking first steps.

Cover image

How I Use Claude Code on My Phone with Termux and Tailscale

10/19/2025

You don't need a new startup or third-party service to use Claude Code on your phone. You just need SSH, Tailscale, and Termux. Here's how to code from anywhere with the tools you already have.

Cover image

Multi-Tenant SaaS's Wildcard TLS: An Overview of DNS-01 Challenges

10/17/2025

How to provision and manage wildcard TLS certificates for multi-tenant systems with tenant-specific subdomains, solving the scaling challenges of per-tenant certificates.

Cover image

Use the Accept Header to serve Markdown instead of HTML to LLMs

9/27/2025

Make your website accessible to LLM agents by serving plain Markdown when they request text/plain or text/markdown. Save tokens and improve agent experience with this simple Astro and Cloudflare Workers implementation.

Cover image

VPS Evangelism and Building LLM-over-DNS

8/6/2025

From PaaS hell to VPS enlightenment: Why the skill of confidently deploying anything to the internet is a hacker's superpower. Plus, a hands-on tutorial showing how to build your own LLM-over-DNS service in 30 minutes—because sometimes the most impressive demos come from the simplest infrastructure.

Cover image

I couldn't submit a PR, so I got hired and fixed it myself

7/30/2025

After joining Mintlify (which acquired my previous company), I finally fixed a search bug that had bothered me for over a year as a user - the debounced search queries weren't being aborted, causing race conditions and poaor search quality. By adding an AbortController to ensure only the most recent search query returns results, I made the search experience crisper and more responsive across their 30,000+ documentation

Cover image

Web Developer's Guide to Midjourney

6/1/2025

Midjourney's learning curve is steep, but climbing it unlocks a superpower for developers and entrepreneurs. Learn how to create stunning, cohesive image sets that actually work for your projects. Go from building style reference galleries to using the describe feature for professional marketing visuals that don't scream "AI-generated."

Cover image

LLM Codegen go Brrr – Parallelization with Git Worktrees and Tmux

5/26/2025

If you're underwhelmed with AI coding agents or simply want to get more out of them, give parallelization a try. After seeing the results firsthand over the past month, I'm ready to call myself an evangelist. The throughput improvements are incredible, and I don't feel like I'm losing control of the codebase.