Archive

Archive for the ‘English’ Category

Getting things done – Part II

April 21st, 2008

I’ve posted about personal productivity and GTD recently (in Portuguese) and got a lot of feedback, either from the Blog or other means (thanks all, really). So after a lot of testing and fiddling I think I finally settled with a nice setup which works for me. This post will try to describe it, in English just because the target audience is broader.
First of all a few notes.

Some of this stuff, if not all, might not work for you. Each person has it’s own set of characteristics and requirements and, while for some a simple Moleskine or a set of index cards is enough, for others no, not really. So let’s start with that, my characteristics.

I’m completely E-Mail centric, it’s my primary form of communication and collaboration, it stands above the phone, paper or even real person-to-person interaction. Scary, but true. So consequentially my E-Mail client, now OSX’s Mail.app, is undoubtedly my desktop soul mate. My life depends heavily on the complicity I have with this beast. I only used 3 clients in my whole life: elmmutt (elm on dopes) and Mail.app (SMTP clients that is, I’m excluding UUCP and Fidonet). It took me ages to leave mutt behind even when “powerful” graphical clients were already widely available (like Evolution or Thunderbird). I still use it occasionally. So, when shit like this happens, I stress, a lot. I get hundreds of messages per day, not counting spam.

One other tool I use to communicate professionally is IM. In my case I use the OSX version of the SAPO Messenger (the best XMPP out there, trust me). IM is very ineffective in what comes to GTD, I’ll explain this later. Work also comes in other transports: SMS, voice and paper. (No, twitter messaging still doesn’t qualify as work, sorry).

My life is mobile. I’m constantly moving from one place to another and my laptop isn’t always there. It’s meetings, travelling, late night phone calls, weekend interruptions, you name it, it’s my sad life. My mobile phone is also one my most important instruments for personal task management and messaging and It has been carefully hand picked since my first Ericsson GA628. I now use an iPhone.

I have multiple contexts in my job. I’m a founder, a manager, a programmer and a sys-admin. These different contexts force me to constantly evaluate my priorities and re-organize my time, my most important (and finite, unfortunately )resource. Also, in each context I have different states. For instance, I might have taken the morning off to fix some bugs and I’ll be in a state of concentration and sequencial work, or I might be closing small late tasks and the IM is blinking, my CEO is sending me SMSes and I have a boring meeting in 10 minutes (not related).

Based on this reality, I had several requirements for my setup:

  • APIs. Sooner or later I’d want to do something funky with my data. Some XML/REST based API for whatever service I’d choose was needed.
  • Mobility. As I said. I currently use an iPhone which has a decent browser and all but I was aiming a richter integration. A subset of Mobility is Synchronization.
  • Tight E-Mail integration. IM would be nice.
  • Syndication. RSS and iCalendar, mainly.
  • Support for different contexts and status.

And the solution:

Hiveminder:

The core tool I ended up choosing was Hiveminder (thanks to those who referenced it to me). Feature wise Hiveminder is unbeatable.  It’s Web based and has everything you’d expect from a GTD application plus it provides RSS/Atom and iCalendar feeds, a mobile version of the website (with some iPhone goodies), Twitter integration, Jabber/IM integration (through a jid-bot), SMTP/E-Mail integration and a well documented and simple web API (with OAuth support). Also it supports contexts, groups, scheduled tasks, tags, reports, tinyurls and a small language to add tasks they call braindump.

But the sell point lies in the pro version with their IMAP interface. For a mere well deserved  $30 USD/year, Hiveminder provides a virtual IMAP mailbox view to your tasks. But it’s not just the fact that you can see your task as normal E-mail messages that’s great. What’s killer about it is that it has virtual IMAP folders which can be used to mimic real Hiveminder actions as you drag messages to them. For instance, say you a task called “Pay bill” in your Inbox, if you drag this message to the /Actions/Hide for/Days/03 days/ folder, you’re actually manipulating the task’s properties and delaying the task for 3 days. You have virtual folders to Complete and Hide tasks, groups and special braindump folders for advanced usage. 

Add this to the fact I can define personal E-Mail addresses (as many as I want) inside Hiveminder to create specific tasks with specific properties. Think of them as buckets, each one with associated braindump. For instance, I can have zpto1@my.hiveminder.com which is use to create tasks under the tag “work” and another zpto2@my.hiveminder.com for tasks under the tag “personal”. Creating a task is as easy as sending (or forwarding) an E-mail to these addresses.

So why is this great? Well, read my characteristics and requirements again. This single feature is a three in one solution. 1. I can still be E-mail centric and manage all my tasks using Mail.app, my E-Mail client. I use Mail.app to create, complete, modify and categorize tasks. 2. Mobility solved. My iPhone (and most modern 2G/3G phones) has a very rich E-mail client, with IMAP. 3. Synchronizations solved. And offline operations too. It’s just E-Mail messages and IMAP operations queued and waiting for connectivity.

In fact I don’t use the Web version of Hiveminder at all.

Zero Inbox:

Ok, so managing tasks is easy and sleek now. But I still had to figure how to tame my enormous flow of daily E-Mail messages in a productive, integrated and organized way.

Short story short, the Zero Inbox is a simple concept: keep your inbox empty. This may seem trivial (some of my colleagues said to me they’ve been doing this for years) but it’s not that easy if you get an average 50 work related messages a day (I did the math, yes). Problem is, most work related E-Mails require feedback or action. In other words, they require two of your most valuable resources: time and attention. And neither are abundant. Logically if you have no way to handle them as they arrive, they’ll just stack up. My last Inbox (the root, not the folders) had a pile of 25.000 messages for the year of 2007, god knows the percentage of unanswered E-Mails it contained and the cause-consequence effects it had on my professional life.

Your Inbox is your desk. If it’s not clean it will hunt you with a feeling of personal chaos, and you’ll never catch up again until you take expensive drastic measures.

There’s lots of advice on how to keep your Inbox zeroed. 43folders has a whole series of related articles on the subject that you can read, they’re very popular. I’d suggest you take 50 minutes of your time just watch this video from Merlin Mann.

I followed some general advice and married the concept with Hiveminder. So here’s my strategy. To keep my Inbox empty I have to take one of 3 actions for each incoming message:

  • If it’s trash (ie: spam or a result of a cronjob) delete it immediately.
  • If it’s just informative, read and archive. Archiving means moving the messages to the /Archive folder for eternal disregard (ok, and for Spotlight searches too).
  • If it requires an action (be it just answering the message or doing actual work first) I’ll either do it immediately because I have time or, and this is the innovative part, just forward the E-mail to one of Hiveminder’s E-Mail addresses, and it will auto-magically create a task with the message’s subject. After forwarding the message, I’ll just archive it and take it off the Inbox.

The delete/archive/forward decision is simple and fast. It won’t steal your concentration from other threads and it’s resource inexpensive.

The other tip I have for your regarding E-mail is to change your auto-check to 1 hour periods or more. Receiving an E-mail is an attention sucker. Just the fact that my Dock’s icon shows some number of unread E-Mails is enough to lit my curiosity sensors. Which leads me to the next subject:

Instant Messaging

I use IM for ages, both personally and professionally. In the context of work IM is anti-GTD. It’s useful for the initiator but very ineffective for the receiver. The sender uses IM to satisfy real-time, casual needs and finds in IM an easy way to get the “victim”’s attention. Now, again, attention may be something the teens have in excess (specially for the oposite sex) but it’s not so for most hard working (and married) guys like me. IM is an attention sucker and a concentration assassin.

The other thing I find amusing about the IM is the person’s “status”. The status is ment to indicate if a person’s available to talk, or if he’s busy, or away. In the early days of IM this was sort of honored by our tech savvy friends it’s true. But today, please, for gods sake, either just remove this stupid property or reduce it to 3 standard messages: “Available to flirt”, “Busy but tolerant” and “Bug off, die far!”. Anything in between isn’t working these days, really.

So what happens when your attention gets frequently requested? You’ll be unable to do any kind of sequential work or work that requires a great deal of time and focus. If you pretend to do any of the last follow my advice: turn off your IM client or turn yourself invisible (oh yes, this “state” works fine too).

Having said this, one last thing: use XMPP. It’s the only standard open IM network and protocol available. </pub>

Hiveminder supports a XMPP/Jabber based bot. You can add it to your buddylist and “talk” with him and list, modify or create new tasks. It’s geekish but I don’t use it, I don’t find it productive or handy because the only way to interact with it is by typing text and commands and/or using copy&paste for descriptions.

Mail.app is my world.

Geek tool

Geektool is a small OSX application which can be used to display system logs, shell command outputs, etc. in your Desktop space. Pretty nice. I use it to display my Hiveminder tasks, both work and personal, in my background, using the output of the todo.pl command. The todo.pl is simple script, provided by Hiveminder and inspired by Gina Trapani’s todo.txt website, which connects to their API, logs in, and just dumps my tasks.

Having my task list on the screen, in a non-intrusive way (it’s part of the background image), is very handy. I just need to hit the exposé’s “Desktop” shortcut to get a hold of them, it’s the perfect complement for the IMAP folder.

Calendar

Hiveminder exports both RSS and iCalendar feeds. Fact is, I don’t need them. They work fine though. Maybe the iCalendar feed is useful to you if you have an iPod. I never used iCal to do task management, it sucks at it, I just use it for what it’s supposed to do best (and indeed does): manage my time.

Mac Act-On

Mail Act-On is a must-have Mail.app plugin. It associates mail rules to keystrokes. This is great to use with the Hiveminder’s virtual IMAP folders. After a few rules configured I can now complete or delay tasks with a simple keystroke. So fast. Now I don’t even need to drag the message into the correct folder with the mouse. Check my rules:

Support

So far Hiveminder’s support has been great. I’ve sent them two E-mails and had an answer back in a few days. On of them was a feature request for the IMAP interface (I asked the to include a X-Hiveminder-Tags header for easy filtering based on the task tags) and it was implemented in 24h. No complaints here.

Summary

This setup worked for me. I’ve been using it for 3 weeks now and it’s been very productive. I actually kept my Inbox near zero levels and got everyone feedback or created tasks out of their messages. I highly recommend it. 

English, Tech stuff

Paul Graham worships Steve Jobs

April 6th, 2008

I didn’t see this coming. Paul Graham, one of my favorite essayists, puts Steve Jobs on his personal list of heroes, just before Isaac Newton.

Quoting: ”People alive when Kennedy was killed usually remember exactly where they were when they heard about it. I remember exactly where I was when a friend asked if I’d heard Steve Jobs had cancer. It was like the floor dropped out. A few seconds later she told me that it was a rare operable type, and that he’d be ok. But those seconds seemed long.
I wasn’t sure whether to include Jobs on this list. A lot of people at Apple seem to be afraid of him, which is a bad sign. But he compels admiration. There’s no name for what Steve Jobs is, because there hasn’t been anyone quite like him before. He doesn’t design Apple’s products himself. Historically the closest analogy to what he does are the great Renaissance patrons of the arts. As the CEO of a company, that makes him unique.
Most CEOs delegate taste to a subordinate. The design paradox means they’re choosing more or less at random. But Steve Jobs actually has taste himself—such good taste that he’s shown the world how much more important taste is than they realized.”

I found this surprising and amusing. We all love Apple for it’s design and innovative products (well, I do anyways) but calling Stevie a hero is a bit of a stretch, I say. Now calling Fake Steve Jobs a hero would be more appropriate.

English, Tech stuff

flare, Flex SDK and Mac OSX

March 17th, 2008

I wanted to play with flare, a flash based visualization library (also based in the prefuse visualization toolkit) I discovered in eTech. I despise Eclipse and IDEs in general so I aimed for a free, command line + Textmate based environment. This is how I got it working. Not that it’s hard, but here it is in writing to avoid common pitfalls (talk about niche posts).

Note 1: I have no experience with Actionscript, Flash or Flex.
Note 2: I’m assuming you’re on Leopard, although Tiger should work fine.

Abode provides a command line based SDK (not the commercial “Builder” product) with the flash compiler, libs and frameworkds called Flex SDK, which they opensourced recently.

First of all, the recently announced Flex 3 SDK won’t work with the current version of flare. It kept complaining about “Error: could not find source for resource bundle containers” with the flare.flex module. This is apparently a known bug but who am I to say. Also, Flex 3 had problems with the compc shell wrapper. If you really wanna give it a try, get rid of the double quotes in the last line of the script (“#$” should be just #$).

So, as we speak, use Flex 2 SDK (MTASC might work too, but I lack time so you try it Won’t work, flare requires Actionscript 3). Download the file and unzip the archive to:

/Developer/SDKs/Flex/*

Add this line to your ~/.profile file for convenience:

export FLEX_HOME=/Developer/SDKs/Flex/

Now get flare and unzip it (I used the build 20080219 and unzipped it the /servers/flare/ but any other path will work). Edit build.xml and substitute these two lines:

<property name="FLEX_HOME" value="/Developer/SDKs/Flex/"/>
<property name="asdoc" value="${FLEX_HOME}bin/asdoc"/>

Now run “ant all”. If everything goes well you should get something like this at end:

BUILD SUCCESSFUL
Total time: 21 seconds

Now TextMate. TM already has a very good ActionScript bundle. If you’re into OSX, Textmate and Flash I recommend subscribing the maintainer’s blog. So I did just two little tweaks, one to build my projects with “ant” and the other to test the .swf in Firefox. Just go the Bundle editor->Edit commands, select the ActionScript bundle, and add two commands, both under the “source.actionscript” scope:

To build: Save=All Files, Commands: ant, Input: None, Output: Show as HTML, Activation: Command-B
To test in Firefox: Save=Nothing, Commands: open -a Firefox *.html, Input: None, Output: Discard, Activation: Command-R

You don’t need to use ant to build your projects. You can do the same with a Makefile or with a plain simple shell script. I just followed flare’s example.

Now a simple project. Let’s use the example in flare’s tutorial. Here’s a tarball with the .as and build.xml ready to work with the described environment and Textmate. You’ll need a local webserver for this example to work (due to the flash security restrictions I could load the data from file://), you’ll figure it out from the source.

For debugging I had to install the Flash Player with Debug first. Then get this lib called ThunderBolt. It will enable logging through the great Firebug extension (which I’m assuming you have, otherwise you shouldn’t be reading this) with a simple Logger.error(“zbr..”);

Works. Hope this useful to someone.

English, Tech stuff

eTech 2008 Blogs and Presentations

March 13th, 2008

I really should find time to finish the posts about this year’s eTech hanging in my drafts folder but I don’t see it happening in the near days. So in the meantime here’s two goodies:


First this an OPML file with the speaker’s Blogs, at least the ones I could find. They’re always useful for the next house cleaning, when we dump the dull posters and seek for refreshing content. I have substituted the blog’s title with the speaker’s name.

Second, I was going to post a list of presentations I found but again, I’m way far the finish line. So here’s where you can find them:

1. Some on the speaker’s blogs.

2. Many on the eTech website, on each session page. (ie: CouchDB)

3. Some on slideshare.

And you already know I had an active feed with related websites I kept collecting.

Have fun.

English, Tech stuff

Web trend map #3 is out

March 12th, 2008

We made it, as expected.


I’m buying a whole bunch of A0 posters for colleagues and friends.

English, Tech stuff

Off-topic: iPhone SDK

March 6th, 2008

Ok, this is distracting me from eTech’s sessions. Read it and drool. I have fews doubts today, after reading this, that the iPhone is going to be an iPod grade success product for Apple. Very smart moves Mr. Jobs.

English, Tech stuff, iPhone

CouchDB

March 6th, 2008

Yet another product that’s been lying around but was highlighted here at eTech which I can wait to write about: CouchDB.

CouchDB is a database aimed for Web development and AJAX applications. Key features are:

- Uses JSON format, similar to XML. Easy to read and write.

- HTTP API, obviously.

- Views: Filter, Collate, Aggregate (powered by Map/Reduce).

- Replication and conflit resolution.

- Bonus features: comes with Lucene for fulltext search. You can search JSON structures.

This projecto was accepted for the Apache Software Foundation and has an Open Source license.

And it’s written in Erlang using non-locking MVCC and ACID compliant data store. I have excellent references for Erlang for fault-tolerance and scalability, our current XMPP server is ejabberd. It also uses the Mozilla’s Spidermonkey engine for javascript engine.

Very nice. More on the wiki.

English, Tech stuff, eTech2008

Fireeagle

March 5th, 2008

I’m information overloaded and keeping a couple of draft posts to polish when I have time but this is worth mentioning now(). Fireeagle just started sending invitations to everyone. Tom Coates is presenting the project as I write. “Fire Eagle is the secure and stylish way to share your location with sites and services online while giving you unprecedented control over data and privacy. We’re here to make the whole web respond to your location and help you to discover more about the world around you”.

Although it seems a response to Google’s MyLocation on the surface, it’s actually a lot more, it’s open and you can use it in your website through provided APIs. Dopplr will be the first Website to use Fireeagle.

Something to keep an eye on.
Also, I’ve been busy posting websites as I grab them. Check my bookmarks RSS feed.

English, Tech stuff, eTech2008

Debugging Hacks: What They Never Taught You About Solving Hard Bugs

March 4th, 2008

Hard core grade presentation for programmers. How many of you spent days, weeks or even months fixing the weirdest, unreproducible bug in your app ? I have a few times.

This is presented by Marc Hedlund (blog) from Wesabe.

Short story for an elaborated and fun tutorial, it all goes around detailing this simplified high level procedure to track and eliminate bugs:

1. Revert any changes you made loking for a quick fix.

2. Collect data from each of the components involved.

3. Reproduce the bug and automate it.

4. Simplify the bug conditions as much as possible

5. Look for connections and coincidences in the data.

6. Brainstorm theories and test them.

7. When you find a fix, verify it against the report.


8. Check you haven’t created new bugs
You may need to do it repeatedly. You may decide that the cost is too hight. It may take several poepple to final close it *but* this approach almost always work.

One of the attendees mentioned the holly grail of bug tracking: logfiles. Log everything to files, with detail. The overhead and costs are minimal these days. Have your servers time synced to the second. Users do provide weak reports on the problems, logfiles will be your best friend at the worst times. I couldn’t agree more.

Suggested books by Marc:

Why programs fail. A guide to Systematic Debugging. Andreas Zeller.

The pragmatic Programmer. Andrew Hunt, David Thomas.

How to solve it. A new aspect of mathematical method. G. Polya.

How Doctors Think. Jerome Groopman, M.D.

Emotions Revealed. Recognizing Faces. Paul Ekman.

- And of course, Sir Arthur Conan Doyle. The complete Sherlock Holmes. Vol 1.

I’ll try and get the tutorial later.

English, Tech stuff, eTech2008

eTechConf2008 starts

March 3rd, 2008

Right so eTech2008 just started. I’m attending the  Live, Vast and Deep: Web-native Information Visualization tutorial with Tom Carden and Eric Rodenbeck.

I’m maintaining 3 feeds of data from eTech:

- This blog feed, from my live blogging at the event. RSS here.

- The Photos feed, taken from my iPhone.

At the end I’ll also post a nice OPML feed with all the relevant blogs I’m gathering either from speakers or interesting people attending. Stay tunned.

English, Tech stuff, eTech2008