Start here

Test first. Then let the agent build.

Test-first engineering in the age of AI agents

AI makes implementation faster. It does not guarantee that the requirements are right or that the result is safe. Learn how to use executable acceptance criteria, failing tests, and independent checks as the boundaries of an agentic workflow.

Read the guide →
SPECIFYREDGREENREFACTORVERIFY

Featured essays

Engineering judgment, tested against failure modes.

Each essay starts with a concrete engineering decision and works backward to the principles that make its risks visible. Examples are labeled as scenarios, not represented as production deployments.

The laws that shape reliable software

When a cleaner internal design breaks an undocumented consumer, which principle actually wins? Hyrum, Conway, Goodhart, SOLID, KISS, DRY, and YAGNI examined through database change decisions.

Read the essay →

Harness engineering: beyond vibe coding

A coding agent passes every test—but the wrapper script always reports success. An engineering approach to protected checks, bounded tool use, falsification, and accountable review.

Read the essay →

Designing safe agentic database operations

An Aurora parameter correction is proposed for one cluster, but its parameter group may be shared. A design for understanding blast radius, policy gates, effective state, and approval.

Read the essay →

The field guide

Four disciplines. One standard of evidence.

These are working engineering heuristics, not an unbreakable set of laws. Each has tradeoffs and must be tested against the system and its failure modes.

Software engineering foundations

Good code is understandable, testable, and changeable. AI may produce the implementation, but engineering judgment still shapes its boundaries.

Test-driven development
Demonstrate missing behavior before implementing it.
Design by contract
State preconditions, postconditions, and invariants.
SOLID and separation of concerns
Keep responsibilities and dependencies explicit.
KISS, DRY, and YAGNI
Avoid accidental complexity and premature abstraction.

Reliability and safe change

A correct-looking change is not necessarily a safe production change. Reliability requires controlled impact, measurable outcomes, and recovery plans.

Idempotency
Make repeated operations safe when requests are retried.
Backward compatibility
Protect existing consumers and database contracts.
Progressive delivery
Use small batches, staging, and limited rollouts.
Observability and recovery
Verify system state and prepare for failure.

Agentic engineering

Agents increase delivery speed and the surface area for mistakes. The harness around an agent is part of the engineered system.

Specification before implementation
Define acceptance criteria before generating code.
Independent verification
Check outcomes, not an agent's confidence.
Executable guardrails
Enforce permissions and policy outside prompts.
Bounded autonomy
Limit tools, targets, retries, and production authority.

Engineering in practice

Principles earn their value when they improve technical decisions. Apply them to real database behavior and expose the evidence.

PostgreSQL and Aurora
Parameter governance, query performance, and safe schema changes.
ClickHouse
Regression, integration, fuzz, and stress testing.
Infrastructure as code
Reviewable changes, automated checks, and drift detection.
Incident response
Turn root causes and near misses into durable controls.

From principle to evidence

A better execution plan is not necessarily a better outcome.

In a local PostgreSQL performance investigation, an index changed the execution plan without materially improving p95. The decision was qualified by measuring outcomes and comparing alternatives—not by trusting that a technically plausible fix must be the right one.

Explore the PostgreSQL case study →