It’s time for some tinfoil-hat-line-skirting ideas! I’ve been mulling the idea of automatic documentation.  

 Getting into the ‘flow state’ is awesome. You feel like you’re rocketing through a problem – one task leading seamlessly to the next until you skid to a stop and say ‘whoah.’ The flow state can also be dangerous for long-term progress. After the fact, it can be very hard to figure out exactly what you were doing and why. This makes it hard to build upon your past work.

Imagine a process that runs in the background and pays attention to your work. The documenter would make note whenever you make a large change (creating a new function while programming, generating new constants when modeling, composing three new pages when you’re writing, you name it.) At that point it could pop up and ask you to make a note about what’s going on or quietly log the event and associated actions for future analysis (not interrupting your flow.)

 There are plenty of ways to vaguely measure what you’re doing on your computer, but the problem is that like a lot that’s going on with the sensing/measuring/big data, they’re not very good at distilling what’s going on, especially in real time. The key to making this documenter successful would be the ability to both record what you’re doing in a useful way, and be able to recognize important changes.

 Ideally, this would eventually be valuable to anybody who does work on a computer. The group that I think could benefit the most might be novice programmers, who haven’t gotten the habit of documentation hammered into their heads. (I’m still working on that hammering.)  

 There would of course be privacy issues – a company could use it to learn exactly what you’re doing on Facebook, the government could confiscate the logs and use them to indict you-  but like any technology it would be a tool that could be used for good OR bad.