Getting Things Done

This week I finished reading Getting Things Done by David Allen. I thought it was an excellent book. Many of the problems and solutions he presented resonated with me.

The gist of the book is that you can be more productive if you relieve your mind of stress. Part of that is “capturing” everything you have to do, making sure you all of the inputs and pressure points in your life are in front of you. You don’t have to do them all; you just have to know what they are. Then you can choose which ones you will do and which ones you’ll delay or never do. He says you can’t enjoy a quiet walk by yourself or an evening with your friends if you don’t know what you’re saying “no” to.

Another part of relieving stress is breaking down your projects into manageable tasks. Your to-do list should only contain atomic tasks that could each be done in a sitting, especially in your current context (on the phone, on the computer, etc.) Larger items should be on a “projects list”, which you occasionally look at to decide what the next action for each project is.

For example, instead of writing “do my taxes” on your to do list, write it on your project list. (It’s unlikely someone can do his taxes in one sitting, at least for me.) Then on your to-do list write the first action that will help you finish your taxes, such as “find all my W-2s.” You’ll be much more productive if you systematically make small progress on each of your big projects.

You should also “process” your inputs as soon as they come to you. If an email comes in and it would only take 2 minutes to reply, do it now. If it will take much more thought and composition, reply saying you’ll get back to them soon, then save the message in a “follow up” folder. Keep your inbox clear.

There were several areas mentioned in this book that I need to improve in, and I thought David Allen did an excellent job of explaining how to improve.

If you want to learn more about the principles in this book from the Web, there are at least 3 websites that regularly write about Getting Things Done (GTD):

Web to Desktop mashups

Mashups are all the rage these days. ProgrammableWeb.com is the comprehensive reference for all the mashups and APIs out there.

Two mashups recently caught my eye because they bridge the Desktop and the Web. (Most mashups are a combination of two websites.)

  • Twaingle (Windows only) is a Flickr powered TWAIN driver. TWAIN drivers connect your computer to a scanner. With Twaingle installed, the “scanner” is Flickr. You can go into Photoshop or some other graphics program, choose “Acquire image” as if you were going to scan something, then search for a photo on Flickr! Very ingenious!
  • Pyro (Mac only) is a web browser built specifically for the Campfire chat application from 37signals. Campfire is a great chat application, but because it’s browser-based, it can’t, for example, cause your browser icon to bounce when you receive a new chat message. Pyro solves this by integrating the web-based features of Campfire with the desktop features of Mac OS X.

These are a whole other type of mashup. Expect to see more like them.

Firefox extensions I love

I use both the Safari and Firefox browsers every day. Safari is fast and approaches perfection in following human interface guidelines. Firefox has extensions.

Here are the Firefox extensions that have me hooked:

  • Web Developer — lets you edit CSS, resize windows to match different screen sizes, outline any element, validate your code, look at form variables, and much more. This is a must-have for any web developer/programmer.
  • ColorZilla — find out the color code for any color on the web page using this eye dropper. A must have for any web designer.
  • FireBug — comprehensive error reporting and DOM controls for JavaScript. A must-have for JavaScript programmers.
  • LiveHTTPHeaders — captures HTTP traffic, including SSL traffic. A must-have for screen scrapers.
  • Google Toolbar for Firefox — shows Google Pagerank. A must-have for Internet marketers.
  • Forecastfox — displays the weather in the status bar. A must have for motorcycle and scooter riders.

Manuals 2.0

If Web 2.0 is about user generated content and sociality, then the online manuals for PHP and MySQL are Manuals 2.0. The user comments at the bottom of each page are among the most useful parts of each manual. (The PHP manual has the added benefit of being able to look up any function by http://www.php.net/function-name.)

For example, here are two great MySQL tips I learned from the user comments (this isn’t in the stock manual):

Posted by Adam Tylmad on August 25 2004 12:36pm
If you want to ORDER BY [columnname] ASC
and have the NULL rows in the bottom
you can use ORDER BY -[columnname] DESC

Here’s how you can put the U.S. and U.K. at the top of your “country” list:

Posted by Gregory Turner on March 10 2005 5:00pm
SELECT * FROM countries
 ORDER by iso_code IN ('UK', 'US') desc;

Which returns something like:
 UK   United Kingdom
 US   United States
 AF   Afghanistan
 AL   Albania
 ...

I wish all manuals were this good.

Comet

A couple of weeks ago I learned about a new technology (actually a new name for an old technology) called Comet. But I didn’t catch the parallel to Ajax — they’re both names for household cleaners (duh) — until I was talking with Phil yesterday.

The heart of AJAX is the XMLHTTPRequest object that sits in a user’s browser. This object can make its own connections to web servers, allowing content to be downloaded and refreshed on the screen based on an event in the browser. For example, if you zoom or pan a Google Map, the XMLHTTPRequest object downloads a new set of images for the map, without reloading the page.

Comet is similar, allowing content to be refreshed without reloading the page. But Comet doesn’t require an event to occur on the user’s end. Gmail’s embeddded chat is an application of Comet. The server can push content (in this case, new chat conversations) to the client at will.

The secret behind Comet is an embedded iframe through which a connection to the server remains continously open. This takes some extra tweaking of the server, but Comet connections don’t have the overhead of an Ajax model which must poll the server at some interval.

Ajax and Comet are similar but not fully interchangeable; I can see uses for each.

Read more about Comet. Also read about Comet from Phil Windley.