Articles
Publishing rhythm in 2026
30 articles this year. Darker squares mean more posts on the same day.
2026
How to expose Docker ports
How to expose Docker ports without publishing every service: listen inside the container, bind 127.0.0.1 on the host, and verify UFW cannot hide a published port.
Website engineeringDNS record types
DNS record types A, AAAA, CNAME, TXT, and CAA store addresses, aliases, proofs, and issuance limits. Apex CNAME, conflicts, TTL, and dig still apply.
Website engineeringHow to write Claude Code prompts
How to write Claude Code prompts for this change only: current state, sources, range, authorization, and an observable result. Do not copy project rules or skills.
AI EngineeringWhen to run database migrations
When to run database migrations: add compatible schema first, backfill after dual-writing code is live, and drop old columns only after old consumers exit.
InfrastructureHow to write AGENTS.md
How to write AGENTS.md so Codex and Claude Code share one project fact: keep repo-wide rules at the root, sink module rules, and verify what actually loaded.
AI EngineeringClaude Code configuration
Claude Code configuration belongs in layers: user habits, repo facts, directory rules, the current prompt, skills, and hooks. Share one project source of truth with Codex.
AI Engineering