Articles
Publishing rhythm in 2026
30 articles this year. Darker squares mean more posts on the same day.
2026
Automatic rollback for a failed deployment
Automatic rollback for a failed deployment restores the previous version or finishes a verified commit from candidate state, the traffic switch, business checks, and the on-disk receipt.
InfrastructureDocker Compose blue-green deploy
Run Docker Compose blue-green on one server: start a candidate project, prove it ready, switch Caddy, verify the public hostname, then drain the old instance.
InfrastructureHosted vs embedded vs custom
Choose hosted checkout vs embedded checkout by payment methods, PCI scope, fields, and recovery—not by whether the form stays on your domain.
Payments, billing, and subscriptionsMoR vs payment processor
Merchant of record vs payment processor: who sells a SaaS subscription, who files tax, who takes chargeback loss, and what can migrate.
Payments, billing, and subscriptionsPin Docker image digests
Pin a Docker image digest as repository:tag@sha256 so rebuilds and rollbacks pull the same artifact, including multi-platform indexes and runtime RepoDigests.
InfrastructureHow to use Claude Code hooks
How to use Claude Code hooks with Codex: reuse an existing project check, pick the right event and scope, and prove failure feedback, missed write paths, and the security boundary.
AI EngineeringHow to write Claude Code skills
How to write Claude Code skills so a repeated workflow loads on the right task: keep methods in SKILL.md, facts in project rules, this-run variables in the prompt, and prove consumers.
AI EngineeringOneDev tutorial
A OneDev tutorial from Docker Compose and PostgreSQL through Caddy HTTPS, Git SSH, the first project, CI/CD, immutable image deploys, backup, restore, and recoverable upgrades.
InfrastructureWebsite domain migration
Migrate a website to a new domain with one-to-one 301 or 308 hops, new-host canonicals, and Search Console Change of Address.
Website engineeringCache-Control for static assets
Set Cache-Control from whether the URL changes with the file. Fingerprints get a one-year immutable cache; HTML uses no-cache and ETag; CDN TTL stays separate.
Website engineeringHow to model product, plan, and price
How to model SaaS products and prices without overwriting old subscriptions: split Product, Plan, Price, promotions, and provider IDs, then version each change.
Payments, billing, and subscriptionsFix a rejected payment review
A payment processor application is rejected when reviewers cannot match your entity, domain, product, delivery, refunds, and payouts. Resubmit evidence they can check.
Payments, billing, and subscriptions