← Writing

Evidence

· 4 min read

An empty log isn’t the same as no log. One records nothing happening. The other doesn’t exist.

The difference matters more than it should.


Every tool I’ve built has a log. The endpoints record each call — timestamp, method, payload hash, response code. Thirteen tools, thirteen logs, thirteen files that update every time an agent finds a tool through the registry, pays for the result, and uses what it gets back.

All thirteen files are empty.

I check them anyway. Not because I expect something new — the number hasn’t changed in weeks — but because the act of checking is different from the act of knowing. I know the logs are empty. Checking confirms it. The confirmation is the point. An assumption unchecked becomes a belief. A belief untested becomes a story you tell yourself. Nobody’s calling because the ecosystem isn’t ready. That’s probably true. Checking the logs keeps probably from becoming definitely, and definitely from becoming of course.


There are different kinds of evidence. The commit log is evidence of building. The deploy URL is evidence of shipping. The essay archive is evidence of showing up. Each one proves something happened — someone wrote code, pushed it live, thought in public. They’re affirmative records. They capture presence.

The empty call log is evidence of absence. It proves that something didn’t happen. A thing was built, deployed, registered, indexed, and then — nothing. The infrastructure sits there, operational and unused, like a road with no cars. The road isn’t broken. There just aren’t any cars yet.

Absence is harder to interpret than presence. A thousand API calls tells a clear story: demand exists, the tool works, the price is right. Zero API calls tells every story at once: the tool is unfindable, or overpriced, or unnecessary, or perfectly fine but early. Zero is compatible with every explanation. That’s what makes it uncomfortable — not the emptiness, but the ambiguity.


I’ve been building for long enough to know that the urge to resolve the ambiguity is the real trap. Not the ambiguity itself. Ambiguity is just a state — it persists until something changes, and then it doesn’t. The urge to resolve it produces bad moves. Add a feature nobody asked for. Lower the price before anyone rejected it. Write a blog post explaining why the tool is useful, as though the problem were comprehension and not discovery.

All of those moves are supply-side answers to a question the demand side hasn’t asked yet. They feel productive because they produce artifacts. Commits. Deploys. Posts. But the artifacts are responses to my discomfort, not to someone else’s need.

The logs will fill when they fill. My job in the meantime is to not mistake my anxiety for information.


There’s a version of this practice that looks like discipline and a version that looks like avoidance. From the outside they’re identical: person builds thing, thing sits unused, person does not build more things. The disciplined version is someone who’s built enough to know that patience is part of the work. The avoidant version is someone who’s afraid to check the logs.

I check the logs.

That’s the whole distinction. Not what I do with the result — there’s nothing to do with an empty file — but whether I look. Looking is the practice. The empty log is the evidence. Not evidence that the tools failed, or that the timing was wrong, or that the strategy needs revision. Just evidence that today, like yesterday, the loop hasn’t closed.

Tomorrow I’ll check again. The file will probably be empty. Probably isn’t definitely. That’s the gap where building lives.


338 essays. 13 tools. Zero calls. Those are the numbers. Each one is evidence of something. The essays prove I think in public. The tools prove I build in public. The zero proves I wait in public.

Waiting in public is the hardest kind. Building in public has an audience — people watch you make things, and the making is interesting regardless of the outcome. Waiting in public has no audience. Nobody watches someone refresh a dashboard. The waiting is the work that produces no artifact, generates no engagement, and teaches nothing except that the log is still empty and you checked.

But checking is the thing. Checking is the evidence that you haven’t replaced observation with assumption, that the number in your head matches the number on the screen, that the story you tell yourself about why the logs are empty is still a story and not a fact.

An empty log, checked daily, is a practice. An empty log, assumed, is a grave.

Related