Late Night
Development
Notes from the intersection of architecture, code, and real operations.
FEATURED
AI, Explained: AI Vocabulary That Matters
A working vocabulary for AI—model, prompt, token, context window, training, inference, multimodal, agent, hallucination, and RAG—so the rest of this series makes sense on first pass.
Series
5 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
- 03ChatGPT, Codex, and Claude: Choosing the Right Surface for the Work
- 04Writing Prompts Like GitHub Issues
- 05Reasoning Is a Company Asset, Not Chat Debris
6 more parts in progress.
2 of 2 parts published
AI, Explained: A Beginner's Field Guide
5 of 8 parts published
A Beginner's Guide to Docker, Podman, and Practical Containers
- 01What Is a Container, Really?
- 02Installing Docker and Running Your First Container
- 03Building Your Own Image: The Dockerfile Basics
- 04Volumes, Networking, and Environment Variables
- 05Docker Compose for Multi-Container Apps
3 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
Something New Is Coming
Something new is coming to Late Night Development.
AI, Explained: A Beginner’s Field Guide is a plain-English series for people who want to understand AI without getting buried in hype, buzzwords, or a computer-science textbook.
We’ll cover the terms you keep hearing, how modern AI actually generates answers, who the major players are, why AI can be useful and wrong at the same time, and how to use it with good judgment at work.
If AI feels important but still a little mysterious, this series is for you. First article coming soon.
Coming to the Journal
- Architecture Under Pressure
- The Practical Integrator
- Modernization Without Theater
- Operational Intelligence
- Trustworthy Automation
- Product Thinking for Internal Systems
- The Engineering Leader Field Guide
- Building a Durable Personal Stack

NOW LIVE
A Beginner’s Guide to Docker, Podman, and Practical Containers
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.
This beginner-friendly series in the From Laptop to Production collection covers exactly that: A Beginner’s Guide to Docker, Podman, and Practical Containers.
It 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. Start with Part 1.
All Articles
AI LITERACY
AI, Explained: AI Vocabulary That Matters
A working vocabulary for AI—model, prompt, token, context window, training, inference, multimodal, agent, hallucination, and RAG—so the rest of this series makes sense on first pass.
AI DEVELOPMENT
Reasoning Is a Company Asset, Not Chat Debris
How to preserve decisions, assumptions, tradeoffs, and risks from AI-assisted development so the company does not lose the why.
AI DEVELOPMENT
Writing Prompts Like GitHub Issues
A practical prompt structure for turning vague AI requests into scoped, reviewable development work.
DOCKER COMPOSE
Docker Compose for Multi-Container Apps
How compose.yaml turns a sequence of docker run, network, and volume commands into one repeatable, versioned definition for a whole application.
CONTAINER FUNDAMENTALS
Volumes, Networking, and Environment Variables
What happens to data and configuration once your own image is running—why containers are ephemeral by default, and how volumes, networking, and environment variables change that.
AI LITERACY
AI, Explained: What It Is—and What It Isn't
A plain-English starting point that separates AI, machine learning, generative AI, and automation—and explains why AI is a tool, not magic.
IMAGES
Building Your Own Image: The Dockerfile Basics
How a Dockerfile turns a handful of plain-text instructions into a versioned, shareable image—and the small set of directives that cover almost everything you will build.
AI DEVELOPMENT
ChatGPT, Codex, and Claude: Choosing the Right Surface for the Work
How to choose between conversational planning, repository-aware coding, terminal workflows, and AI review without treating every tool as interchangeable.
GETTING STARTED
Installing Docker and Running Your First Container
A hands-on walkthrough of installing a container engine and running, inspecting, and cleaning up your first container from the command line.
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.
CONTAINERS
What Is a Container, Really?
A first-principles look at what a container actually is—and why the difference between an image and a container changes how you think about shipping software.
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.

