Mixtape

▸ this page · 0s

A todo app where every task is a tape and every subtask a track, and the only number that counts is time you actually spent.

Solo builder: the Rust server, the board UI, and the research base.

2026

Estimates lie. Logs do not.

Todo apps want an estimate and a completion percentage. Both lie. The best self-report of time spent only weakly tracks the actual logs, at r = .42. Unfinished work follows you home too, and planning its next step is what lets you put it down. I read fifty-odd sources on time perception and capture friction before I wrote a line of this.

The day is a mixtape.

Each todo is a tape, each subtask a track. Tap a track and it plays: the timer runs and the row fills while you work. Starting the track is how you start the work, so you never have a second timer to remember and nothing to reconstruct at the end of the week. Every second that played lands in the week's ledger.

There is no estimate to be wrong about.
123CRATESPERSONAL · VCU · WORKTAPESONE TODO EACHHOLDSTRACKSONE SUBTASK EACHHOLDSHUMANCAPTUREWHEN WILL YOU START?ONE TRACK PLAYS AT A TIMETHE WEEK'S LEDGERONLY WHAT PLAYED
Crates hold tapes, tapes hold tracks, and only one track plays at a time. The ledger counts what played.
  1. 1Crates hold tapes and tapes hold tracks. Nothing else nests.
  2. 2Capture asks when you will start. It never asks how long it will take.
  3. 3Only the track that played reaches the ledger.

Three crates and a running total you cannot argue with.

Personal, VCU, Work. Every tape lives in one of them, and the clock along the bottom is the week's real total.

It reads zero because nothing has played. I did not fill the week in for the screenshot; an empty week is allowed to look empty. The zero is real.

The Player view in a dark desktop window. Three gradient crates, Personal, VCU and Work, each reading zero tapes, over a footer bar reading THIS WEEK, 0s, LEDGER.
The player · three crates, and the week to date761 × 1246

The day starts with a button, not a list.

The Today stand-up view. Under the date, a line reads 3h 30m planned, 9h 30m open, +0m banked. A field asks what could derail today, above a large green GO button and a time-blocked column of the day with open slots marked and three calendar events badged Demo. The footer reads EVERY TRACK HAS A SLOT.123
Today · the stand-up, then the day in blocks761 × 1246
  1. 01

    Stand-up asks one question, what could derail today, and then hands you a green GO.

  2. 02

    Below it the day lays out in blocks with the open hours labelled, so planned and open sit side by side and you cannot fudge how much room is left.

  3. 03

    Every track gets a slot or it does not get planned. I capped the plan at six hours, because past six a day is full whether the calendar agrees or not.

The Board view. Today is empty, This week holds five gradient tapes, and a line under Someday reads hold a tape to hand it to an agent. Below, an Agent runs lane shows a finished run with the contract it was given, a summary of what it produced, and three files it returned.
The board · my week, and the agent runs under it761 × 1246

My day and the agents on the same board.

Hold a tape and you can hand it to an agent. Its run opens a lane below my week, carrying the contract I gave it, whether it is still working or blocked or waiting on me, and the files it came back with. When it wants approval I answer on the board instead of hunting for the terminal it lives in. Delegated work sits in the same frame as my own, which is the only way I ever see the whole day.

I built the board portrait-first over a Rust task server and wrapped it in Tauri for Mac and iOS.

A coordinator gives each agent its own copy of a tape's workspace, under limits I set on how long it can run. Closing the day files every unfinished tape into Tomorrow, Someday or Shelve, then hands back the day's receipt. I run my day on it, which is the test I trust.

The command palette open over the Player view. A field reads A, with chips for Tape A, Crate Personal and Today, and under it grouped commands: Capture, New tape; Navigation, Add a calendar, Go to Board, Go to Player, Go to Today; Day, Start the day; Crates, Personal; and Create tape A.
The palette · capture first, then everything else761 × 1246