Day 1. I logged 4 hours and 40 minutes of work and shipped nothing I kept. The time tracker said it was a decent day. I had spent most of those 240 minutes re-reading a crash report I did not have the head to fix, and the twenty good minutes went into a settings toggle nobody asked for. That night I closed the timer app for the last time and wrote a different kind of line in my text file: wake 4 / mid 2 / eve 2 - burned on a crash report I couldn't hold in my head.
Day 2. The schema, because a ledger with no schema becomes a diary and a diary becomes nothing. One appended line per day, four fields: three energy readings on a 1-5 scale at roughly 08:00, 14:00 and 21:00, then one clause naming where the energy actually went. No categories. No tags. No app. It takes about fifteen seconds a day, which matters more than any of the rest of it, because a ledger that costs two minutes is a ledger I will abandon by Thursday.
Day 3. First honest reading: wake 5 / mid 5 / eve 4. Five hours of real work on the Outbox retry path. The hours tracker would have recorded this as roughly the same day as Day 1. That is the whole complaint in one comparison, and it is the reason I bothered.
Day 6. I notice I am gaming the scale. Rating my own energy at 21:00 after a bad day feels like grading my own homework, and I catch myself writing 3 when the truthful answer is 2, because a 2 looks like an accusation. The fix is dumb and it works: I stopped calling it energy in my own head and started calling it available depth - how many layers of a problem I can hold at once before one slips. Depth is a fact about my brain at that moment. It does not sound like a verdict on my character, so I stopped lying about it.
Day 9. First real finding, and it annoyed me. My 5s do not arrive at the same time every day, but they cluster hard in the first ninety minutes after I wake up, and I had been spending that window on email and App Store Connect. I had been feeding my best cognition to a task any tired person could do. Swapping those two blocks was the highest-return change of the month and it cost nothing but the discomfort of leaving the inbox unread until 10:00.
Day 12. A 1 day. Total. Slept badly, a support email got under my skin, and I sat in front of Xcode for six hours producing a commit I reverted the next morning. Under the hours regime this would have registered as a full working day and I would have felt vaguely virtuous about it. The ledger just says: wake 2 / mid 1 / eve 1 - support thread; reverted everything. No credit for the six hours. That is the point of the instrument. It refuses to pay me for attendance.
Day 14. What is this ledger actually measuring?
Not mood. Not productivity. It measures how much of a problem I can hold in working memory at once, which for a solo developer is the only genuinely scarce input. I have unlimited hours in the sense that nobody is stopping me from sitting at the desk. What I do not have is a second person to hand the hard thing to when my head is thin, and that is exactly the assumption every hours-based system is built on. Time tracking was invented to bill clients and to coordinate teams. Neither of those things is happening here. I am the only worker, the only manager, and the only budget.
Here is the honest comparison after two weeks of running both:
| Hours ledger | Energy ledger | |
|---|---|---|
| What it counts | Minutes at the desk | Depth available, 3x a day |
| How I cheat it | Sit still, feel virtuous | Round a 2 up to a 3 |
| What it predicts | Almost nothing | Whether tomorrow's hard task lands |
| Cost to keep | An app and a habit | One appended line, ~15 seconds |
| Worst failure | Rewards a bad six hours | Says nothing about why |
That last row is not a rhetorical concession. It is where the method broke.
Day 18. The ledger told me I had four low days in a row and offered zero explanation, because I had written the where it went clause lazily: "app stuff," "app stuff," "admin," "app stuff." Four days of data, no signal. A drain field only works if it names something specific enough to be avoided. So I rewrote the rule: the clause must contain a noun another person could recognise. Xcode archive failing on a provisioning profile I did not change is a drain. App stuff is a feeling.
Day 20. Re-reading the fixed lines, the pattern is embarrassing and clear. Interruption is not what costs me. Unresolved ambiguity is. A support email I know how to answer takes eight minutes and costs nothing. A support email I do not know how to answer costs the rest of the morning even if I never open it again, because some part of my head keeps a thread running on it. Ambiguity does not wait its turn. It runs in the background and eats the depth I was saving for the hard task.
Day 22. So I started closing loops in the cheapest way available, which usually means writing one line and getting it out of my head immediately rather than "handling it properly later." The line goes to my own email in about a second, and at the end of the day it also lands under today's heading in my daily note, so I have stopped carrying it around. None of this is a new insight; it is the reason I built my capture app the way I did, and I have argued before that a thought you cannot capture in about a second is already gone. What surprised me is that the ledger measured it. The days after I closed the loops read mid 4, mid 4, mid 5. The days I told myself I would deal with it later read mid 2.
Day 25. The counter-take, because I do not trust a system that only ever confirms me. Energy is a lagging, self-reported, one-observer metric. It has none of the properties you would want in an instrument. I cannot calibrate it against anything, I cannot compare it to yours, and on a bad enough day my ability to rate my own state is exactly the faculty that is impaired. Hours, for all their stupidity, are at least objective. If I had a client to bill or a co-founder to coordinate with, I would keep the timer and I would not apologise for it. The energy ledger works for me because my failure mode is not laziness. It is grinding: sitting at the desk at a 1 and calling it work. If your failure mode runs the other way, this instrument will lie to you in the direction you want.
Day 28. The tally, run with grep and my own eyes, not a dashboard:
- Days rated 4-5 at wake: 19 of 30. Days I actually used that window on the hardest available task: 11.
- The gap between those two numbers is the whole remaining opportunity, and it is larger than anything a productivity app was ever going to hand me.
- Named drains appearing three or more times: unresolved support threads, provisioning and signing errors, and one long-running design decision I kept re-opening instead of deciding.
Day 30. What I keep: the three readings, the drain clause, the fifteen seconds. What I throw away: any attempt to average it, chart it, or turn it into a score. The moment this becomes a number I optimise, I will start optimising the number instead of the work, and I will get very good at scoring 5s on days that produce nothing. The ledger is a mirror, not a KPI. It works precisely because nobody, including me, is grading it.
Day 31 starts tomorrow, and the only change is a fourth field, on trial: what I deferred that day. My suspicion, based on Day 20, is that the deferral list predicts the next day's low reading better than anything I currently write down. I will know in a month.
What if I already know I'm a morning person?
Then you know one of the four things this told me, and it was the least surprising one. The useful findings were behavioural: which specific class of task was eating the good window, and which specific class of open loop was draining the afternoon. Those are not personality facts. They shift month to month, and I could not have guessed either of them from a chronotype.
Is fifteen seconds a day really enough data?
It was enough to change two habits, which is more than eleven months of automatic time tracking ever did for me. Precision is not the constraint here. Survival is. A rich schema I abandon in nine days beats nothing, but it loses badly to a crude schema I still keep on day thirty.
Where I want to be told I'm wrong
I want to hear from anyone running both instruments at once who has a real opinion about the overlap: not a philosophy, a specific case where the hours told you something the energy reading missed. And if you keep any daily self-log that survived past a month, name the one field in it you would fight to keep. Mine is the drain clause, and I am fairly sure it is the only field doing real work.
I develop Simple Memo by myself: an iOS app that takes one line of text and has it in your email roughly a second later. It is also the thing I use to close the open loops this ledger kept catching me carrying around.
Top comments (4)
4h40 logged and nothing you kept, i know that day too well. i've had sessions where the timer said i worked and i had nothing to show for it. counting energy instead of hours is an interesting flip.
Yeah, the "timer said I worked" days fooled me the longest, because they look identical to real ones in any hours view. My clearest tell was reverting the commit the next morning: six logged hours, nothing that survived a rested brain. Did you land on a replacement signal that actually stuck, or mostly just learn to distrust the good-looking days? I've been trying to collect self-logs that outlived a month, and most don't.
honestly it's mostly the distrust, i never found a clean signal that lasted. the closest thing that stuck is just "do i still care about it the next morning". if i'm excited to reopen the file, that day was real. if i'm avoiding it, the hours were fake whatever the timer said. it's fuzzy and not a real metric which is probably why it outlives the neat ones lol. what did your month-survivors have in common, all feelings or did any actual number make it?
Good question — and your "do I still care the next morning" is closer to a hard signal than you're crediting it. Excited to reopen the file vs avoiding it is a next-day behavior, not a feeling, and a behavior is the one thing you can't quietly round up.
That's the pattern in my survivors too: they were never scores, they were small facts I couldn't argue with — did I revert the commit, did the note get reused, did I reopen the loop. The 1-5 scale only lived once I renamed it available depth (how many layers I can hold at once), because that reads as a fact about my head, not a verdict on my character. Every clean number I tried to keep — a focus %, a productivity score — died inside three weeks, because the moment it's a number I start optimizing the number instead of the work.
So: almost no pure feelings, almost no pure numbers, mostly undeniable little facts. Yours fits. Has the "avoiding the file" tell ever lied to you — a day you avoided that turned out to be real work you just didn't want to face?