In 2013, I was fresh on my switch from Windows to Linux as my full-time OS. I
was reading books like David Allen’s Getting Things Done
and looking for a good digital planning system. Enter Gina Trapani’s
Todotxt script.
Todo.txt allowed for command line todo lists. Every was stored in a plaintext
file, easily editable with any text editor or automated via the command line. I
used it for roughly a year. At the time I both loved and hated using Todo.txt.
On the one hand, it was easily automated. I could set up daily and weekly tasks
to be automatically populated to my list in the morning. I could easily bulk
edit things in VIM.
But there was still some big pain points. My lists tended to get way too long
– scrolled right off the top of my screen. There was no easy way for managing
multiple todo files. There also wasn’t much for sorting. The result was that
managing my lists and getting an overview of everything became increasingly
difficult.
When my employer started using Trello for product management, I saw my
solution. Trello does a great job of visualizing where all my tasks belong.
Following GTD, I had a backlog column, next actions column, today column, in
progress, and done. Moving cards between columns let me visually see the flow
of work through the day. A big tickler board kept all my long-term ideas.
Now in 2016, I find myself re-installing Todo.txt and giving Trello the boot.
Why if it was such an excellent system?
Goodbye Trello
There are a number of pain points that Trello simply cannot get over that
Todo.txt solves easily:
Vendor Lock-in
A theme for a lot of my projects this first quarter of 2016 has been a move
away from Vendor lock in. I got rid of my IDE and switched back to developing
using VIM. This got me to thinking about how many other products I use that
have vendor-lock-in. Evernote instead of just keeping plaintext files. Dropbox
instead of using rsync. And Trello instead of Todo.txt.
With Trello, my done lists, my massive tickler list of project ideas, and my
entire workflow is dependent upon the continued existence of Trello the company
and it’s good graces to continue hosting all of this content for free.
Now Trello does have an export feature, but the result is a massive json blob.
It might as well be binary for as much use as I will get out of it. I most
certainly will be backing up all my trello boards. Yet, if I ever wanted to
make use of this data, I will first need to write some kind of interpretor for
it.
Todo.txt, as a plaintext file manager is to todo lists what Markdown is to Word
Documents. It’s open, interchangeable, can be opened nearly any file system. It
will follow me for year’s to come.
Difficult Automation
Switching back to VIM and working on the terminal all the time made me realize
just how many computing tasks I have left un-automated.
In planning my daily todo tasks there are a number of recurring todos. A daily
stand up starts my work day. A sprint planning meeting occurs every other week.
Duolingo calls my daily French learning session. Monthly bills need to be paid.
On Trello entering these items into my board is a manual exercise. I keep a
second board of “reoccurring” tasks that I copy over at the start of each
sprint. It takes me thirty some minutes just to do this.
Now Trello does have an API, but I would need to learn it, probably create some
kind of developer account, get API keys, compose some sizable application to
interface with that API, make REST calls. It would take me probably a week’s
worth of work to automate that entire process.
With Todo.txt, and a little BASH-fu and a cronjob, this all gets automated
away. Every night my daily tasks get added to my todo, every sprint my
per-sprint tasks get added to my todo. At the end of the month a note to pay my
bills shows up on my todo. This gets offloaded so I no longer need to think
about it.
Task Creation Friction
GUI’s add friction to any task.
Trello is no different in that regard. If I want to add a new task, I need to
fire up a browser, navigate to Trello (assuming I even have an internet
connection), create the card, name it, click a bunch of buttons to add a label.
Sometimes, I just don’t want to do all of this, often times I find that I don’t
sufficiently break a task down into small enough tasks purely out of a
resistance to creating more cards.
Todo.sh, being on the command line means I need no internet connection, I can
simply start typing to add my task, and there is little overhead in truly
breaking any project down into atomic tasks that can be accomplished in a
single Pomodoro.
Hello Todo.sh
After considering these options, I decided to revert to using Todo.sh. After a
week of being back, I find that I love it. I am still working out my system for
using Todo.sh. It truly is powerful. I’ve already discovered quite a few
commands and options that I had no idea even existed before (I never realized
there is a means of doing a logical or
for terms or excluding terms via
-TERM
).
I could easily write up an entire second post about how to manage todos, how to
install the script, get yourself running, useful aliases and methods for
creating new add ons and automating things. Once I really get my daily system
going, I could probably write a whole post on that as well.
Plaintext Planning
I would highly recommend a read through Michael Descy’s Plainttext
Productivity website as the tips are quite
above board. The biggest take away is priority management. Only use three or
four priorities and use them to management where an task exists in the GTD
workflow:
(A)
: Tasks that are in progress. Keep this below three tasks at a time
(B)
: Tasks that I will get to today
(C)
: Next actions that can be started now. Descy uses this for “Next
Actions this week,” I use it for tasks to be done this sprint.
(D)
: Descy uses this for “Next Actions next week,” I use it for tasks that
are currently blocked
(E)
: Tasks that are part of a project currently prioritized as an A
, B
or C
task. For multi-part projects whose parts I don’t want cluttering the
view when I query for the current day’s tasks, I create a project stub. When
that stub is in progress and I need to know the next part to work on, I can
query for all the E
priorty tasks for that project.
Everything else is in the backlog which for me is items to be done this
quarter. Anything further back goes on the tickler to be evaluated some day and
added at my leisure.
Add-Ons & Set Up
A very brief overview of my current Todo.sh set up.
First, I have the todo.txt-cli script installed in my dotfiles repository which
has it’s own script for installing all of my related configuration files on any
system I touch. The todo lists themselves are in their own separate repository
since I don’t manage todos on every system that I touch.
I follow the instructions for setting up auto completion. I also set up a
number of aliases for different todo lists:
todo
: for my daily, sprint, and quarterly task list
todot
: for managing my tickler list
todos
: for managing my shopping list
The aliases use the -a
flag since I prefer to not auto archive by default.
Each alias has it’s own todo.cfg
file which each sources a base.cfg
file
and only exports configurations that are unique to that command. As a base, I
changed my priority colors to Blue, Green, Brown, and Red solarized values for
the A-D priorities. Changed the project color to red and left the context a
nice light gray.
As for the add ons, I added:
- archive for archiving only selected items
- edit for quickly opening the todo in VIM
- sync and it’s requirements
- commit,
- pull and push for quick version control my todo lists.
- projectview has some pretty formatting for project lists
- recur for automating recuring tasks. I tried the
ice_recur
module but simply could not get it to work on my system.
- xp another task visulation. This time for done tasks.
- pri and rm (with a soft link for
pri
to p
as a shortcut) for bulk editing priorities and deletions
- lsgp/lsgc another project and context visualization.
Still Some Rough Spots
There are still some rough spots in Todo.sh land. First, sorting is still not
quite perfect. Ideally, if I type todo lsp
, I would like to have all my tasks
listed by priority, then line number grouped by project. The best that I can do
right now is by priority and then line number. Project grouping only occurs if
I group the project lines together in VIM.
Secondly, the one big item that Trello had going for it was it’s phone app.
This made adding tasks on the go quite easy and made looking things up easy as
well.
Perhaps some of the various todo apps will have the functionality that I need,
or perhaps I will need to compose my own app to meet my needs. The joy of the
matter is though, I’m not locked in. I can easily develop that app if I so
choose.
Time for the annual retrospective. We can look back on last
year’s and reflect on the last year
and my resolutions for this new year. This last year was truly a year of
unexpected surprises from switching employers to totaling my precious Ford
Explorer after eleven years of use, to a wild last minute wintery move from
Jackson, WY to a small trailer in Greenlee County Arizona.
Professional Development
The new year brought with it a new employer, Research
Square, where I joined a dedicated team of
professionals working on both the website and internal tooling of a
medium-sized, fast growing company out of the Research Triangle area of North
Carolina. The best part was that it was still telecommuting, so my old office
was my new office: home.
The new team brought with it the opportunity to really dig into becoming
intimate with a lot of the best-practices that I had, until now, only really
read about: domain driven design, agile, code reviews, unit and integration
testing. It also brought with it a new set of tools to learn: Silex Framework,
Zend Framework, Doctrine ORM, Elastic Search and the variety of services
provided by AWS. In total, I scored probably another two dozen buzzwords to add
to my resume.
Throughout the year, I read a solid stack of business texts and DDD texts such
as Domain Driven Design, Impelementing Domain Driven Design, Remote, The
Lean Start Up, Five Dysfunctions of a Team, Drive and Good to Great. At
home, I attended a variety of tech related meet ups hosted by Spark, my
co-working office and in North Carolina, I made it to my first conference, the
All Things Open conference in October.
Unrelated to my day-time employer, I finally gave up on hosting my own e-mail
server and shut it down. My e-mail provider is now G-mail. I also went through
the process of forming Joseph Hallenbeck, LLC in my home state of South Dakota,
formally establishing a separate business account for the odd gigs that I accept
and began a very slow discussion of the idea of on-the-side consulting.
Personal Highlights
Travel
We had some delightful trips this last year. It started with a few nights in
McMenamins in Oregon with Jess. A beautiful hotel grounds with hidden little
pubs all over.
Come spring we embarked for our third trip to the Southwest. This time we
explored south of Moab in what turned into a long car trip circling south into
Arizona, New Mexico and up to Taos. We certainly planned too much for that event
and are looking forward to revisiting many of the places we saw the year prior.
Nearer to home, we rented a cabin in Pinedale for a four day weekend of snow
shoeing half-moon lake and the surrounding area. Latter in the season we would
also rent a cabin on Slide Lake for a night and venture back to our old stomping
grounds in Island Park to polish off a handful of trails. In early spring we
also ventured into Beaverhead-Deerlodge to pick our way out to a campground.
Caver Classic came in the summer where I ventured back to Custer, SD with Clint
Augustson for some exciting caving adventures. We finally tracked down Cave 41
and as a bonus hit Onyx cave. Classic-lead events included the Club Room in Wind
Cave and a trip out to Japanese Gardens in Jewel.
An unexpected trip came after the All Things Open conference when I had to drive
from North Carolina to back home in Wyoming after buying a new truck after the
conference.
Nights of Relaxation
Having little success at finding companionship in Jackson, I turned to
recruiting my friends to play through Borderlands 2. We ended up meeting up
nearly once a fortnight through the entire year.
Alternatively, I took to taking quite long lavender baths, an old fashioned in
one hand as I worked my way through such series as JoJo’s Bizarre Adventure,
Mushi-shi, Kids on the Slope, Gatchaman, and Parasyte.
I also enjoyed liberal use of the gym. Jess finally talked me into a membership
and I found that I rather enjoyed hitting the gym for my lunch break. There I
could sit back and watch some American animation: Rick & Morty, South Park,
and Adventure Time all while burning through six to eight hundred calories.
Later in the year we discovered HIIT training which did wonders for preparing
for Caver Classic.
One thing that I did not fail on was cooking. I canvassed the world this year
with recipes from India and Italy. I cooked kraut, lamb leg, curry, turkey
meatballs, duck, tapanade, Tuscan papa al pomodoro, paprikash and expensive
saffron flavored fish soups. We roasted our own coffee beans on a wood stove and
made cakes in dutch ovens.
In the Winter and Spring, I hit up figure drawing at the art center. I went
fairly regularly until the weather was too nice to be spending the evening
couped up in doors. But I did fill a whole book of newspaper print with
drawings. I photographed them, but haven’t had the time to prepare them for a
blog post.
Once the snow cleared, I took to building a fence around the property that we
were renting so the dogs would have a proper yard to run about in. One weekend
later we had a four-foot tall fence running from T-stakes around the yard. A
fence the dogs never once found a way out.
Watching Kids on the Slope and attending the Teton Orchestra inspired me to
dig back into my music days. I sorted through all of my old sheet music, broke
out the fiddle and started playing away at all the old songs. I kept it up well
for a couple of months. I even bought the Fake Book and started listening to a
long list of Jazz greats hoping to work out their pieces on the fiddle. The
madness that was Autumn took this away, and I hope to return to playing soon.
Completing the Day List in Jackson
One of the first things that I did when we moved to Jackson was to draw up a big
list of everything that we wanted to do. The list included every campground to
camp at, every day hike to hike, every backpacking trip, every outdoor activity
that I could imagine. While we moved out leaving a lot of the multi-day hikes
still on the list, we pretty much cleared the day hikes.
In the winter we hit on snow-shoes half-moon lake and the trails in Snake River
Canyon. Once the snow melted we hit Mosquito Creek and Red Top Meadows were we
explored Munger Mountain. Closer to home we cleared out Hagen’s Trail, Woods
Canyon to Crystal Butte loop, Goodwin Lake and Wilson Canyon.
The regular bicycling to Spark slowly sparked a reemergence of my interest in
bicycle touring. I found myself in reminiscence and slowly drawing up plans for
yet larger, bigger trips. In the end, I decided to start doing S24O, that is
sub-twenty-four-hour-outings by bike, but by then the winter snows had already
set in and I had to wait until the spring thaw.
Volunteering
One odd item was a highlight of my summer. Volunteering for the Lion’s club in
Jackson. We helped with a hot-dog feed for kids at Kid’s Fishing Day and latter
they hit us up to help with a breakfast feed at the County Faire which we helped
out with great zest.
A Feast of Films & Books
We feasted regularly on manga, non-fiction, anime, and a pile of films. But this
deserves it’s own separate entry.
Zen & Simplification
Jackson is a very restless community. A place that truly inspires you to
constantly be going, always amping up the stress. To combat that, I bought some
zafus and zabutons, read a long list of articles online on how to sit zazen and
gave it a try. In the meantime, I read through The Three Pillars of Zen and
skimmed through half a dozen other texts related to the practice. I am not quite
sure if it has helped or not yet. For a time, it certainly encouraged me to take
some time in my crazy day to just sit.
A second thought also began to bug me. That I was simply drowning in stuff. I
had boxes and boxes of notes from college, books that would never get read
again, cloths I would probably never wear, broken computer parts and duplicate
tool sets. I started trying to organize everything and most importantly started
gathering more and more stuff to dump into the grand box of donations. By the
time we moved, I unloaded one entire pickup truck load of stuff. The result is a
feeling of being so much more mobile, so much more free. When we moved,
everything we owned fit into a single U-Haul and we did it all on just a little
over two grand. That is a sense of freedom I am just not willing to trade.
The Wild & Unexpected
Two big unexpected events happened to me this year.
First, the Beast hit a deer outside of Boise. As a sixteen year old vehicle, it
was totaled. I took my insurance pay out of three grand and walked. It was a
really sad event for me. I had that explorer since my second year of college. My
first car and one that I practically lived out of for some time. I immediately
started looking for a new vehicle and came upon a craigslist add for a 2014
Toyota Tacoma in North Carolina. It fit everything that I wanted: manual, V6,
tow package, low miles. I flew out for my conference and called up the owner to
schedule a test ride that night. Bought it and drove it all the way home to
Wyoming.
Second, after a great deal of discussion we decided that Jackson simply was not
the place for us and we wanted to move on. Particularly, Jess really needed to
advance in her career just as I was doing in mine. So she started the job hunt,
and unlike past job hunts, found immediate success. In no time at all our
Christmas plans went from simple, to packing up and moving. We landed in
Greenlee County Arizona in a little trailer in an unincorporated community along
the New Mexico border. What surprises life throws us.
Abandoned Projects
Unfortunately, I got to very few of my projects that I enthusiastically proposed
last year. In my wake, I left a constant growth of crazy ideas and
half-implemented works. This is pretty much becoming my annual tradition.
Announce a bunch of fun projects. Put them on my to do list for a few months.
Then scratch them off and go read a book.
The Searchable Lovecraft
An elastic-search powered searcahable index of Lovecraft’s works. Type a query
get back the stories and lines that query was found on. I intended this to be a
meet up demonstration for a talk that I never gave.
A cookbook containing all my favorite recipes and a complete collection of what
I consider my “repertoire” of cooking delights.
The Photography Review
I started the process of going through all of 2015s photographs in Lightroom.
However, after a month of digging through files, I really started to lose a lot
of interest in photography overall. There is just so many photographs being
taken these days and other than tagging them and forgetting about them, I really
was not in the mood for post production at any point in time through the year.
The 30 Year Review
My shelves hold hand written journals going all the way back to grade school.
One crazy idea that I had was to type up the last eighteen years of journals in
to a giant document then typeset and print it out in hardcover. I got through my
first year of college and then lost interest in the pain of data entry.
Magic Cards
Sometime in the summer I realized that there was a game store in Rexburg, a
short two hour drive away and lost myself in the daydream of getting back into
playing magic. I picked up my old boxes of cards from home, bought a couple
hundred dollars of the cards from the current sets, went to one Friday-night
magic and lost interest.
Rusty Centipede
Rust went 1.0 this year and yet I haven’t touched Rust since it’s beta. Last
time I tried to compile the Rusty Centipede it broke in maddening ways and I
never was able to get the build to work.
… and NaNoWriMo, The Weird Tale, my blog in general, the Renaissance Man
project, blog re-write, interactive travel-map, link-posting website, and
updating my campaign setting.
2016 In Resolution
Once I really start to look over the year, go from thinking that I really got
nothing done to wow, I really took care of a lot. My only regrets would be that
I abandoned a lot of larger projects and spent very little time knocking out
more of my multi-day hiking trips that I had previously planned out.
So what would I want out of this next year? I would want to settle into Arizona
and truly explore the new countryside. I would want to find some social
connections, find a group to roleplay with, look into the local grotto and make
professional contacts in the local community and in Tuscon. I would want to keep
up the reading, gaming, and film watching.
Cultural Goals
I already have a reading list prepared and would
add on to it a desire to watch one film a fortnight, two seasons of shows a
quarter, and set aside some serious gaming time in the new house.
- Watch more films (try for once a fortnight)
- Watch more shows (try for two seasons a quarter)
- Complete the reading list
- Play more video games
Get Out More
One of my regrets in Jackson is that I let the community make me very
claustrophobic. The rush of tourists. The brisk attitudes of the locals.
Eventually, I just didn’t want to go out anymore. This time around, I want to
really take advantage of my telecommuting opportunities. Take time to work from
Starbucks or a local restaurant. Maybe commute from camp or a nice picnic
ground. Take a few more times to go out alone and really contemplate the world.
Spend more time out on the trail. Spend more time going to the movies and
exploring nearby communities. Start actually working towards that big
out-of-the-country trip.
- Work away from home more often
- Quarterly writer’s retreat
- Get out to the theater be it film or stage
- Get out of town once a month
- Attend tech, roleplaying, and caving meet ups in Tuscon
- S24O Bike Tours
- Some trip ideas:
- Alaska
- Puerto Rico
- Mexico
- Train Ride to Durham
Write More
Last year, I said I would do 12 blog articles and set out to do that right away.
In the end, I just stopped writing altogether through the spring and most of the
summer. When I returned, I found how much I had missed it! Yet, I never did do
that weird story, write for NaNoWriMo or shuffle through my campaign setting the
way I had said that I would. Somehow, I forgot all about it. This year, I want
to write more. I want to write more blog articles. I want to write more short
stories.
Create More
Besides just writing. I want to create more. I want to spend more time working
on my drawings. More time playing the fiddle. More time just creating new things
be it cooking, carpentry, or programming. I already have some crazy ideas like
building a camper for the truck and updating my blog.
- Play my fiddle
- Spend more time drawing
- Build a truck camper
- Rewrite TimeKeeper
- Rewrite back end in Rust, Go, and Python
- Rewrite the front end with React
- Add Google account authentication
- Build up my consulting business
- Rewrite my blog as a static website
Waste Less Time
Waste less time, or better put waste time better. One thing that I realized in
Jackson was that I tend to deffer to spending time poorly. Instead of hammering
through work I wander about the house cleaning things that already clean. I
waste hours procrastinating on projects that I don’t have any interest in really
doing and would be better off simply scratching off the list altogether and
moving on to something better. I spend too much time organize the altogether too
much stuff that I own. I spend not early enough time watching the sunrise,
sitting zazen, and really listening to music.
- Less procrastinating on my day job. Less twelve hour days with four hours of
intermitent, unneccessary chores
- Try to see the big picture more at work
- Cut back on caffeine and try to get more energy in the day
- Make the social media fast an annual thing
- Sit zazen and exercise daily
- Simplify all the “stuff” in my life
- Waste less time procrastinating on projects I don’t want to do and more time
working on the projects that I’m passionate about.
- Figure out what the above means.