Category

technical

  • UDAs: TaskWarrior's Extensible Data Model and What We Did With It

    TaskWarrior’s User Defined Attributes system is one of the most underused features in the tool. You can add arbitrary typed fields to every task — strings, numbers, dates, durations, booleans....

  • Services All the Way Down

    Everything in Workwarrior is a service. The CLI dispatcher (bin/ww) routes every command to a service script in services/<category>/. The browser UI is a service. The heuristic compiler is a...

  • Natural Language Should Earn Its Way In

    There’s a temptation when building a CLI tool in 2024 to make AI the primary interface. Type anything, the model figures it out. No documentation needed. Natural language all the...

  • Adding a Service in 20 Lines

    The service architecture is designed to be extended. A new service is an executable script in services/<category>/. The ww dispatcher discovers it by scanning for executables. No registration step. No...

  • Two Sync Engines, Two Different Jobs

    Workwarrior ships two GitHub sync engines. They’re complementary, not redundant, and understanding the distinction matters for how you configure each one.

  • Weapons: Gun, Sword, and the Philosophy of Task Manipulation

    Weapons are tools that manipulate profile data in special ways — creating, slicing, and packaging tasks beyond what direct TaskWarrior commands produce. They’re called weapons because they’re more powerful than...

  • The Browser UI: No npm Required

    The browser UI is Python 3 stdlib only. No npm. No node_modules. No build step. No webpack, no bundler, no transpiler. If you can run Python 3, you can run...

  • 627 Rules and the Case Against Always Needing AI

    The heuristic engine came from a simple question: how many natural language command phrasings can you handle with regex before you need a language model? The answer turned out to...

  • Five Tools, One Profile, Zero Leakage

    The design decision that made everything else possible was profile isolation. It sounds simple and it is — one directory per work context, environment variables to activate it, every tool...