Hack Your World
the recovered archive

Old notes, still worth remembering.

These posts are preserved from the original site. Some commands and products are historical; read them as an archive, not current instructions.

August 27, 2026

Agents Need Small Tools

An agent is only as useful as the tools around it. A broad tool that can “manage the system” sounds convenient, but it creates a large permission boundary and makes mistakes difficult to inspect. I have had better results building small interfaces around the operations people actually need. One tool, one useful decision A good […]

Read the note →
August 20, 2026

A Dev Container Is a Contract with the Project

A development container is useful when it removes setup drift without pretending that development and production are the same thing. The goal is not to put every concern in one image. The goal is to give contributors a dependable place to build and test the application. Reproduce the tools that matter The container should define […]

Read the note →
August 12, 2026

GitLab Builds the Change; Salt Makes It Real

There is a useful division of labor between a CI/CD system and configuration management. GitLab CI/CD can build, test, and promote a change. SaltStack can make a machine match the state that the change describes. Keeping those jobs distinct makes both systems easier to understand. Let the pipeline prove the change A pipeline should answer […]

Read the note →
July 28, 2026

When a Cron Job Takes Four Hours

Scheduled work is easy to underestimate. A cron entry can be one line long while the job behind it takes hours, touches a large amount of data, and competes with several other jobs for the same application and database. That is the problem behind my mautic-cron-scripts project. The useful part is not a clever command. […]

Read the note →
July 5, 2026

TDD by Design When an Agent Is in the Loop

When a developer is working with an agent, tests stop being only a regression safety net. They become part of the interface between the request and the implementation. That does not mean every task needs a large test suite before any code is written. It means the expected behavior should be made executable as early […]

Read the note →
June 30, 2026

Giving Bind9 a Practical Interface with Snap-DNS

Bind9 is capable DNS software, but its normal interface is configuration files, zone files, and command-line tooling. That is a good foundation for automation and a poor interface for everyone who needs to review or change records. Snap-DNS grew out of that gap. It gives our department a web interface for managing Bind9 zones while […]

Read the note →
June 21, 2026

The MCP Transport Is Part of the Security Model

It is tempting to treat MCP transport as a client configuration detail. In practice, the choice between stdio and Streamable HTTP changes where the trust boundary sits, how credentials are supplied, and who can reach the server. stdio is a local process With stdio, the client starts the MCP server and communicates with it over […]

Read the note →
May 24, 2026

Containerizing Applications Without Hiding the Development Environment

Putting an application in a container is usually straightforward. Making the development environment match the application’s real dependencies is the part that takes judgment. Runtime packaging is only one layer A production image answers how the application runs. It does not automatically answer how a developer gets the right language version, tools, services, credentials, and […]

Read the note →
May 10, 2026

Docker Containers Are Not a Deployment Strategy

Docker makes it easy to start another service. That convenience is useful right up until the host has dozens of containers and nobody can answer basic questions about ownership, storage, networking, or recovery. Containers solve process packaging. They do not decide where a service belongs, how it should be exposed, what data it owns, or […]

Read the note →
April 28, 2026

Claude Code Works Best with Guard Rails

We use Claude Code at work, but the useful part is not asking it to write a lot of code quickly. The useful part is putting it inside a workflow where its changes can be inspected, tested, and rejected when they do not meet the requirements. Loop mode is a workflow, not a shortcut Loop […]

Read the note →