I have a lot of things to do, for various people, at various times. If you’re anything like me, you find this rather stressful and much of your time is wasted by simply trying to work out what to do next.

This blog post will describe some of the ways I’ve used tools available online to dramatically reduce my stress levels and make sure that I never lose track of what I’m meant to be doing.

The Tools:

This is what you’ll need, and also what I use – of course, other tools exist.

  • A Task List: I use Remember The Milk (free/$25pa) to keep track of tasks – its simple to use, pretty fully featured and I can get at my task list on multiple platforms; web, computer and phone.
  • A Calendar: I use Google Calendar – it’s free, cloud based and transparently integrates with my iPhone, iPad and computer through webcal.
  • ifttt to trigger actions based on certain events and provide extra automation (which I’ve talked a bit about before).

Setting up your task lists

Much of how I use my task list is influenced by this great post over on the Remember the Milk blog, and I’ve made my own tweaks.

Here are the main points:

  1. Create a Personal and Work list to track the day to day stuff.
  2. Create a list for any project or task which can be broken down into more than a few tasks.
  3. Any item which depends on another task gets tagged with “depends”
  4. Create a smart list “not tag:depends” and call it “Next Actions” to give a summary of your next tasks.
  5. Create a smart list “tag:depends” and call it “Review – Pending tasks” to give you an overview of tasks which you can’t do yet.
  6. Create a smart list “(NOT addedWithin:"1 week") AND due:never” and call it “Review – Stale tasks” to help you keep track of any loose ends.
  7. Review the contents of these lists regularly (you might want to schedule a repeat task to remind you).

I also find it helpful to create a smart list called “Today” (“dueWithin:"1 day of today" or dueBefore:now“) to list stuff that has to be done today, or that you want to do today. Before I go to bed at night I go through my tasks an assign myself stuff to do for the coming day.

The nice thing about this is I start the day with a ready made plan of action to work through, and unlike the default RTM “Today” overview view this task also shows overdue items which have rolled over from the previous day.

Setting up the calendar

Google calendar can be used natively or through their (ever increasingly sophisticated) web interface. How you use the calendar should be fairly obvious, but setting it up to use natively or on a smart phone is less so.

Essentially, you want to find the ical link for the calendar you’re using (available under calendar settings) and then link to it on each device.

Done right, this means you can view and add events to your calendar from any device and have it synchronise automatically across them.

This ubiquitousness is important, and it allows you to capture the task’s pertinent information (when, where and set reminders in time to get there) as soon as you find out about an event – meaning you only need to remember the task once, and you will never again double book yourself!

Automate all you can

A lot of the automation is dependant on your tasks and what you need to get done, but here are some ideas:

  • Use ifttt to put things in your task list or calendar based on certain external events – for example, an important blog post, if tomorrow is a snow day or any number of other things.
  • Use recurring tasks to set up maintenance schedules for your car (or perhaps more importantly a self examination routine for your own body).
  • Never let a project go stale by adding recurring tasks to prompt you to drop an item from the project on the “Today” list. Always move towards your goal!

Key concepts:

So in summary, by capturing information straight away and automating as much as we can we never need to lose track of the disparate threads of our lives. The goal of all this being to reduce everything down to a system, one that requires as little thought as possible from you.

  1. Capture the task or appointment into your system as soon as you think of it. I always am either near my computer or iPhone, so this is easy.
  2. Store the information in a place that is secure but available everywhere, so cloud based systems are really handy here.
  3. Automate as much as you can.

Have a stress free day!

Image from the film “Memento”.

tl;dr: Use Git to selectively add revision history to existing rsync backups.

As anyone knows who has used computers for any length of time knows, hardware failure and data loss is inevitable. Having gone through several hard disk crashes, UPS and power failures and random acts of sleepless root console typing I have become especially paranoid about backups.

Especially since so much of my living is derived from owning and maintaining a fully functional computer setup.

My current setup has important files rsynced between between my home server and an offsite server nightly.

Large files which change infrequently (photos and videos) are encrypted and stored remotely on my S3 account, and really vital (but not security sensitive) stuff that I may need on the go is stored in a dropbox folder that I can get at from my laptop, ipad and phone.

What this doesn’t do

While the rsync approach has many benefits (primarily simplicity of implementation) the limitation of rsync backups is that you get a warts and all copy of whatever you’re backing up. You have no history inherent in the backup, unless you set this up yourself.

Mirrored backups are fine if you’re sure the current version is always the one you’re going to want. But consider these fairly common situations where it fails (they have all happened to me at one point or another):

  • You delete a new file by accident before the nightly backup has run.
  • You delete a file, but discover some months later that you really didn’t want to.
  • You change a configuration setting only to discover some time down the line that this was dumb.
  • …etc…

What I need here is a version control system…

Enter Git

First off, I should underline that Git is NOT a backup tool! It doesn’t store file permissions, empty directories or any number of other things that are fairly important to backups (making it unsuitable for use in system wide backups across multiple users), VCS systems are also fairly inefficient when it comes to handling binary files.

However, used wisely I think it could be perfect to add a version control layer over my existing backup (for critical locations like webserver config and business documents folders).

For one thing, it can exist entirely in place – i.e. it doesn’t need a remote server to work, although conceivably one could be added to add even more resilience to the system (I already have a private git server set up for work projects, so this would be relatively painless).

Files in these repositories could then be edited, modified and saved in the normal way. I would have to commit the changes, but the nightly backup script could easily be modified to commit any uncommitted changes (with an appropriate “nightly backup yyyymmdd” message).

This would, I think, be the simplest way to add a revision history and rollback capability to the existing rsync backups.

With all this in mind, can anyone think of a good reason why I don’t go into my documents folder and type git init?