Late Night
Development
Notes from the intersection of architecture, code, and real operations.
FEATURED
AI Coding Tools Are Not Pair Programmers. They Are Junior Systems With Tools
A practical operating model for using AI coding agents without handing them more trust than the work can support.
Series
2 of 11 parts published
Developing With AI: From Prompt to Pull Request
- 01Developing With AI: From Prompt to Pull Request
- 02AI Coding Tools Are Not Pair Programmers. They Are Junior Systems With Tools
9 more parts in progress.
10 of 10 parts published
From Laptop to Production: A Practical Containerized Delivery System
- 01Why "Works on My Machine" Is an Architecture Problem
- 02Build a Real Dev Environment: Next.js, TypeScript, PostgreSQL, and Docker
- 03Dev Containers: Put the Developer Setup in the Repository
- 04Designing a GitHub Workflow That a Small Team Will Actually Use
- 05Your First GitHub Actions Pipeline: Lint, Typecheck, Test, Build
- 06Pull Request Preview Environments: Review the Actual Change
- 07Database Migrations Without Panic: Local → Preview → Staging → Production
- 08Secrets, Environments, and Deployment Security in GitHub Actions
- 09Staging and Production on Fly.io: A Practical Release Path
- 10The Reference Architecture: A Reusable Blueprint for Your Next Product

ANNOUNCEMENT
New Series In The Works!
Containers can feel like one of those topics everyone expects you to already understand.
Docker. Podman. Images. Containers. Volumes. Compose. It is easy to get lost in the vocabulary before you ever build something useful.
I’m starting a new beginner-friendly series in the From Laptop to Production collection: A Beginner’s Guide to Docker, Podman, and Practical Containers.
This series is for developers, technical leaders, and curious builders who want a clear, practical foundation—what containers are, why they matter, how Docker and Podman compare, and how to use them to make local development more repeatable without turning every project into an infrastructure project.
No hype. No unnecessary complexity. Just a useful path from “I keep hearing about containers” to confidently using them in real work.
All Articles
AI DEVELOPMENT
AI Coding Tools Are Not Pair Programmers. They Are Junior Systems With Tools
A practical operating model for using AI coding agents without handing them more trust than the work can support.
AI DEVELOPMENT
Developing With AI: From Prompt to Pull Request
An introduction to a practical AI development system built around scope, context, verification, review, and durable reasoning.
ARCHITECTURE
The Reference Architecture: A Reusable Blueprint for Your Next Product
The full containerized delivery system from this series, generalized into a repeatable reference structure for the next project.
DEPLOYMENT
Staging and Production on Fly.io: A Practical Release Path
Separate Fly.io apps for staging and production, deploy commands that survive a cold-starting database, and a rollback path that does not require panic.
SECURITY
Secrets, Environments, and Deployment Security in GitHub Actions
Environment protection rules, least-privilege tokens, and secret hygiene that keep a small team's deploy pipeline from becoming its biggest liability.
DATABASE
Database Migrations Without Panic: Local → Preview → Staging → Production
A backward-compatible migration discipline that turns schema changes from a source of dread into a routine, checkpointed step.
PREVIEW ENVIRONMENTS
Pull Request Preview Environments: Review the Actual Change
Why a passing CI run is not the same as reviewing a change, and how an ephemeral deployment per pull request closes that gap.
CI/CD
Your First GitHub Actions Pipeline: Lint, Typecheck, Test, Build
A practical continuous integration workflow that mirrors the local commands developers already run, with caching and feedback fast enough to trust.
GITHUB WORKFLOW
Designing a GitHub Workflow That a Small Team Will Actually Use
Branch protection, pull request conventions, and repository layout that hold up under real deadlines instead of collapsing into exceptions.
DEV CONTAINERS
Dev Containers: Put the Developer Setup in the Repository
How .devcontainer/devcontainer.json turns a written onboarding guide into an executable, versioned workspace that any editor can open.
DEV ENVIRONMENT
Build a Real Dev Environment: Next.js, TypeScript, PostgreSQL, and Docker
A lean, repeatable local stack for a modern web application—with clear boundaries between local development and production.
ARCHITECTURE
Why "Works on My Machine" Is an Architecture Problem
A practical case for treating the development environment as a versioned part of the product—not a collection of laptop-specific habits.

