Background
Here's the concept, manage your life or work in a big text file. Nothing special, no fancy software, just a big ASCII text file.
http://www.43folders.com/2005/08/17/life-inside-one-big-text-file
I tried it over a year ago and it worked out well, I stopped with a job change. Recently I started up again.
Here are some of the benefits as I see it
- it keeps me on task
- it solves that (what the hell have I been doing the past few weeks) dilema
- easy to version control and diff
- universally functional in any operating system
- I'm already good at text-editing (it's my job) so the editor is a natural place to work
My Implementation
To cut to the chase, this is what my syntax looks like.
== 2008.03.21 | Friday ==
x del: emergency_location.description
x add: service_address.description varchar(500)
x del: service_address.customer_name
x add: emergency_service_instance_details.customer_name varchar(50)
x make some fields nullable for branded website
/ re-generate service layer
x emergency_location
x service_address
/ emergency_service_instance_details
@ fix optimistic locking
Here are the different characters I put in front of each task so that I know what the state is.
- - information, no action required
- @ task
- / task in progress
- x task done
- > task deferred
Vim Syntax
Vim is my text editor of choice so I wrote a Vim syntax file that makes my status look very obvious with color.
I wrote a syntax file, probably the worlds smallest and most cheezy. It keys off of the first character(s) on a line and then colors the entire line based on that.
Create the syntax file at ~/.vim/syntax/plan.vim
" Vim syntax file " Language: Text Plan " Maintainer: Demian Neidetcher <demian0311@gmail.com> " Updated: " put this in ~/.vim/syntax/plan.vim " :set syntax=plan " TODO: gotta figure out how to normally have it scooped up by vim syn match task "@.*$" syn match taskInProgress "/.*$" syn match taskDone "x.*$" syn match taskDeferred ">.*$" syn match information "-.*$" syn match header1 "==.*$" syn match header2 "===.*$" highlight task ctermfg=Red guifg=Red highlight taskInProgress ctermfg=Yellow guifg=Yellow highlight taskDone ctermfg=Green guifg=Green highlight taskDeferred ctermfg=Brown guifg=Brown highlight information ctermfg=White guifg=White highlight header1 ctermfg=Cyan ctermbg=Black guifg=Cyan guibg=Black highlight header2 ctermfg=Black ctermbg=Cyan guifg=Black guibg=Cyan let b:current_syntax = "plan" " vim: ts=8
Now we need to make Vim look for this new syntax file whenever you open a file that ends with the 'plan' extension. Add these lines to your ~/.vimrc.
au BufRead,BufNewFile *.plan set filetype=plan au! Syntax plan source ~/.vim/syntax/plan.vim
A Colored Example
When that's all set up, this is what we get.
The text file always inserts on top. So what's on the bottom is the oldest and on top is the newest. I break stuff into iterations. Within iterations are days and within days are tasks.
Here's what this example tells us
- We're in iteration 0
- the computers were powered down, just an observation
- I've already reviewed the documents for the conference call
- I decided to put off calling the job candidates
- I have calling the job candidates as a task to do for tomorrow
- I'm working on refactoring the schema
- I still need to re-generate the service layer