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

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.

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