The Other Emacsen

While Emacs remains my primary text editor, there are times when starting a full Emacs session with tons of packages is simply too slow, especially on a terminal window, and when the task at hand is simply to make a few lines of changes in a configuration file.

Yes, I do know about the handy -q command-line option, which prevents the init.el file from being loaded, thereby ensuring a sub-second initialization of Emacs, or the emacsclient route (which I have enabled, and do use), but sometimes it is just more convenient to have a fast editor that has the Emacs feel, without the bloat. And for a text nerd such as myself, it is also a matter of curiosity to try out other editors once in a while.

Emacs actually has had a rich history of variants and alternate implementations, with XEmacs being one of more well known forks. On the Mac OS X, Aquamacs has remained a good option for a number of years. A more comprehensive list is available on the Wikipedia page for Emacs.

Both XEmacs and Aquamacs are forked from, or derivatives of GNU Emacs, which is probably the most used Emacs these days. However, other light-weight Emacs-like editors still exist, and I have been trying out three of these, vile, zile, and jmacs. On the Mac, these are available via Mac Ports, on Fink, and possibly on Homebrew.

vile is an interesting blend of Emacs and vi, and provides the modal commands from vi, but also has many of the window management features of Emacs (including similar Emacs key-bindings). It is really more of a vi variant, but the window management does make it very handy, though it does not support the text objects and other vi extensions as Vim does.

jmacs (the Joe editor’s Emacs emulation) seems to be the most feature rich, and the syntax highlighting seems to be best of the lot.

Then there is zile, yet another Emacs clone that I am beginning to love for being lightweight, and having the most Emacs-like behavior. For simple text entry, zile seems to feel to be the fastest—though in reality—all three editors start up pretty fast.

In the end, while I still end up with using Emacs/emacsclient for most of my editing (after all, I do keep a Emacs session running most of the time like the true faithful), it is still fun to dabble with these editors, if for nothing else than to marvel at the core Emacs editing experience that these micro-editors can provide, in sub-Megabyte packages (vile = 680K, zile = 251K, joe = 440K on my machine).

Advertisement

How I Learned to stop using Firefox and love the Chrome

One word: SPEED.

Seriously. I have been a long proponent and user of Firefox, having been lured into it by its relative elegance and the extension framework many moons back. Also, the web development support has always been far better than its competition, with Firebug and Web Developer to name just two great reasons for it being the developer’s browser of choice.

firefoxbrowserfreewaystocustomizeyourinternet1.png

The sheer number of Firefox add-ons and extensions (about 13,000 in the last count) is staggering – and list absolute essentials such as Adblock Plus, XMarks and DownThemAll! This combined with the themes (I suggest GrApple Yummy on the Mac) has been making the web browsing experience a far better one for me than Safari.

But the problem with Firefox is … it is SLOW.

With just seven add-ons (Adblock Plus, XMarks, DownThemAll!, 1Password, LastPass, FlashBlock and Firefox PDF Plugin for Mac OS X) it takes about 3-4 seconds to launch the application opening a blank home page on an OS X 10.6.3 MacBook. Another 2-3 seconds before any reasonable page is fully rendered. This becomes excruciatingly slow when I am busily opening tabs from a RSS reader or another application – and frustrating when it has to launch the first time I click on a link in another application.

Also, while a custom theme does look pretty – it sometimes does expose artifacts in the chrome (no pun intended) when rendering new pages – especially in the “awesome bar”.

All in all, while the experience is nice, it certainly is not perfect. Speed of launch and rendering are the main gripes.

googlechrome-getafastnewbrowser-forpcmacandlinux.png

I have been toying with Google Chrome ever since the beta for OS X came out. I was initially put off by the inverted tabs as well as lack of extensions (hey, a 21st century browser with no extensions, come on!) Also, the single URL bar/search bar UI seemed … odd. So while the beta version did stay on the HDD, it did not see much use, and Firefox remained the work horse for daily use.

However, with the recent launch of the stable OS X version, I became interested again. And this time Chrome did have a pretty mature extensions ecosystem, some of which seemed to be reasonable replacements for the Firefox equivalents. Time for a spin!

The first thing which struck me was the speed of launch as well as page renders, and the UI feels much more “fluid”. The Inverted tabs still look odd and out of place, but I understand the need to squeeze the additional 20-30 pixels for actual page use.

Actual page rendering in terms of quality is more or less at par with Firefox, though a few oddball sites (especially the work related sites) sometimes get weird effects. I blame it on the IE centric development though. 🙂

The unified bar is also starting to make sense, as it actually helps in not having to remember one extra key short cut for searching. It has good support for Firefox like keyword searches as well (example, ‘wk’ for Wikipedia searches) provided you set them up.

I also found more or less feature equivalent extensions:

Xmarks is available for Chrome
Lastpass is available for Chrome
AdThwart in replacement of AdBlock Plus

I found that FlashBlock does exist for Chrome, but I don’t really need it anymore.

The one big hole in the extensions/add-on replacement is DownThem All! There are quite a few download managers, but none can match the Firefox one in terms of features (I am still looking).

The extension manager is also pretty nice, and arguably better than the Firefox one (at least for FF 3.6.3). However, the actual extensions gallery on Google is not quite as user friendly as the Firefox one. The extensions are not categorized completely, which makes it somewhat of a pain to search and find the right one.

extensions1.png

All in all, the Chrome experience has been a refreshing one so far, and Firefox has not seen much use of late – except where I needed to use DownThem All! (simultaneously downloading all chapters of the free audiobooks from www.librivox.org is one example). If anyone has recommendation for a good replacement, let me know.

So there you have it. My infatuation with Chrome has already lasted more than a week, and I still find it a pleasure to use. Have not really dabbled much with the extensions (and themes – Chrome does have support for these as well) – but am finding that I don’t really need to.

Snow Leopard – First Impressions

I finally bit the bullet and installed Snow Leopard over last weekend. I did a clean install (i.e., reformat and install afresh) – considering the significant under-the-hood changes that this OS revision has.

The basic steps I followed are:

  1. Cleaned up the existing Leopard install to remove applications, preference panes and documents I did not need
  2. Reviewed the preferences under ~/Library/Preferences as well as the application support items under ~/Library/Application Support and removed the items which were out of date or detritus from old installs
  3. Took an image backup using SuperDuper! of the Leopard install
  4. Took a backup of the disk using Time Machine to allow easier data restore during the installation
  5. De-authorized my iTunes to prevent increment of the install counter after reinstall of the OS
  6. Popped in the Snow Leopard DVD and started the install
  7. During installation, I used the Disk Utility to reformat the Mac OS partition
  8. I also did a custom install to prevent the printer drivers (over 2 GB) being installed. In addition, I selected the optional Rosetta and Quicktime 7 components (seriously Apple, these take less than 10 MB – why the optional tag?)
  9. Waited for around 20 minutes to have the base image installed, and then used the migration assistant to restore data from my Time Machine backup

The install was relatively smooth, and restoring the data from my Time Machine backup also went without any issues. However, post-install, some of the glitches started appearing:

  1. The default font for Safari as well as Firefox went crazy – with large bold fonts appearing. It turned out to be a font substitution issue with the Arial font, which for some reason was missing the “Regular” type. Restored the font from the old image backup and every thing was back to normal. It appears a lot of people are facing this issue
  2. Adobe’s Photoshop Elements 6 refused to start, stating expiry of the license. This also is a known issue, and a restore of the /Library/Application Support/FLEXnet Publisher/ folder from the image backup made things normal again
  3. The key chain was not allowing storage of any new passwords, and was also not allowing viewing of the stored passwords. This is a known issue and my solution was to simply change the login keychain password once and reset it back again to the original password
  4. Emacs 23 was not compiling under Snow Leopard. There is already a patch available in CVS. However, there are incompatibilities with the 64 bit GCC – hence you need to pass a CC=“gcc -arch i386” as part of the ./configure invocation. The compilation succeeded with this. Note that a recompile of some of the user installed lisp packages was required (notably Icicles)

Other than the issues listed. rest of the experience seems OK so far. The look and feel is not too different and most of the user visible changes are subtle – except for the new QuickTime Player – which is a dumbed down and dressed up version of the venerable QT Player.

In summary, this is an OS upgrade that does have the potential to break some of the old applications, though most of the issues do seem to have work arounds – it is also going to become a required update pretty soon – given the internals changes that Apple has made. No need to rush out right now (mea culpa!) to upgrade – but do be prepared to do the update in the near future.

Musings on my Inbox Zero and GTD workflow

My time-management revolves around email, Calendar and to-do lists. While tools definitely help, it is more important to understand that we are processing information and acting on them, and it is just managing or tracking the items. A few pointers on what I use for Emails:

Email

The newest computer can merely compound, at speed, the oldest problem in the relations between human beings, and in the end the communicator will be confronted with the old problem, of what to say and how to say it.

– Edward R. Murrow

Most of us are inundated with a lot of emails everyday, and the inbox keeps piling up with mails that need to be read and processed. Many of us keep these emails that have not been followed up with an action yet in our default inboxes – or squirrel them away in a maze of folders and sub-folders. Very soon, you land up with hundreds of emails competing for your precious time – and prioritization becomes difficult. This is compounded by the fact that your email inbox is now stuffed with tons of emails – which need to be re-read again before you can decide what to do with them.

However, there is a technique to handle this mess.

  1. Delete Emails! Frankly, a lot of email is never going to be used again, and has dubious value in terms of information content, or are just time-bound communication whose content is going in expire by a certain period. There is absolutely no need to keep these mails lying around and wasting space and time
  2. Never read an email twice. Scan your inbox top to bottom once per read-cycle (more to come on that) and decide the action that this email requires. Most of the time, the action is either:
    • Read and archive (the FYI kind of stuff)
    • Read and respond immediately (anything which requires less than 2 minutes)
    • Read and extract the actionable TODO (e.g. create a report, call some one)
    • Delegate to someone else (you are not the one who should be performing this action)
    • Wait for something else to happen (someone needs to work on an up-stream work item
    • The trick is to ensure that no email slips through the cracks here. You must decide the action and get out of the email reading cycle and actually do what the email triggers as work.
  3. Read email in read-cycles – Turn off the auto-notification every time an email arrives. Set a schedule (say every 45 minutes or an hour) to get into your email client and scan+process your inbox. This will help avoid a lot of distraction and interruption the email system brings
  4. Don’t create more than 5 email folders – Lets be realistic here. How many times were you actually able to retrieve the email you were looking for from the elaborate folder structure you have? Or, think about the frequency of instances where you used the “All Documents/email” view to retrieve that email.
  5. Creating folder structures is really a placebo that feels good while filing away the email but has no other practical value. I use five folders to manage my emails:
    • Action – Emails for which I need to do something that takes longer than 5 minutes
    • Waiting – Emails where someone else is going to provide inputs before I can complete the actionable task
    • Someday – Emails which are really future statements or actions
    • Read/Review – Long announcements, FYIs etc. which take time to read
    • Archive – All my processed emails go here. No hunting around for the right folder to move the email to
  6. Review the Action mail folders at EOD – At end of the day, I scan the action, waiting, someday and the read-review folders to ensure I have NOT missed out on anything for that day
  7. Store the TODO list of actions OUTSIDE the email – An email is a piece of communication, its action should be stored outside – MUAs are not task trackers. A simple text document (with a timestamp and schedule dates) suffices. Your actions and work should be driven via this file, not your inbox

Calendar

How we spend our days is, of course, how we spend our lives.
– Annie Dillard

Calendars are meant for tracking your workday – not just meetings and calls. I block some personal time (in chunks of 30 – 60 min.) every day where I do not schedule meetings or calls. Early morning and late evenings are great for this.

You can also use the recurring event feature to setup reminders for yourself (e.g. “I have to send the status report on 12th of every month”).

Scheduling deadlines are also easy (e.g. “I have to complete the coding on this module by next Thursday”).

Note that the TODO file can also help with tracking these entries, as long as you enter a date against the item.

TODOs

If hard work were such a wonderful thing, surely the rich would have kept it all to themselves.
– Lane Kirkland

Todos are the meat of getting the work done. In essence, todos are the actionable next steps to take something forward. The trick is to ensure that the granularity of tasks and their inter-relationships are managed. In a sense, every TODO is also a mini-project with multiple activities.

As an example, creating a report (of any kind) usually involves:

  1. Ensuring the report meta-data is known (e.g. submission date)
  2. Gathering the data
  3. Analyzing and reformatting the data
  4. Updating the report document
  5. Reviewing the document
  6. Sending out the report, and
  7. Confirming receipt of the report

As you can see, this is a multi-activity TODO, with additional level of granularity possible, along with some scheduling in the calendar. For this example, you can have a Parent TODO for the original task, and child TODOs for the next-level activities in your TODO file. For the maximum impact, assign deadlines and schedules for each of the items (nothing fancy, can be as simple as “This Friday”).The advantage this structuring provides is that

(a) the next step is always known, and
(b) you can be sure of all steps being completed and progress is visible

Another important concept around TODOs is context. To put it simply, some activities can only be done in a certain environment, or using certain tools. They are the ‘meta-tags’ which help you classify what you are doing.

For example, a call needs a Phone, reading email needs a computer or some gizmo that can access the mails; attending an in-person meeting means that you have to be physically in a work place etc.

If you can assign context around your TODOs, you can better utilize those short time-slots that become available throughout the day (e.g. waiting for a meeting to start). To take the earlier example, I would track the context as:

  1. TODO: Create the Report @WORK DEADLINE: This Friday (8/17)
  2. NEXT ACTION Find out the submission date from the boss @ANYWHERE:@CALL (DEADLINE: today)
  3. WAITING Gather the data from my team @EMAIL (DEADLINE: today)
  4. NEXT ACTION Analyse and reformat the data @WORK:@COMPUTER
  5. NEXT ACTION Update the report document @COMPUTER (DEADLINE: tomorrow)
  6. NEXT ACTION Review the document with my boss @WORK (DEADLINE: tomorrow)
  7. NEXT ACTION Send out the report @EMAIL (friday)
  8. NEXT ACTION Confirm receipt of the report @EMAIL or @CALL (friday)

The words prefixed with ‘@’ are the contexts, and help you decide if you can do it right now, or need to wait for the next step. Many of the NEXT ACTIONS can be done parallelly (not in this example though – which is a bit trivial, and too granular). BTW, if you are tracking TODOs at this level, it is better to use a custom tool rather than just plain lists in a spreadsheet. I happen to use the excellent Org-Mode mode for Emacs – though there are quite a few custom applications built for this purpose and more which do just that.

In fact, the task-tracking genre seems to be a a very popular software category on all platforms – with all the bells and whistles you could wish for. Do play around with the tool of your choice for a few days though before locking down on the one that fits your work-cadence. After all, it is one application that will be used the most through out your day.

Conclusion

One man’s religion is another man’s belly laugh.
– Robert A. Heinlein

These are some of the techniques I use on a daily basis to gain control on the constant stream of information and the seemingly chaotic and unplanned work that seems to turn up. It does work for me, though is definitely a custom tailored workflow that may not suit everyone.

Do let me know what you think, and how you bring in sanity to your work day!

Further Reading

  1. http://inboxzero.com – Inspiration for most of the mail related tips and workflow
  2. Getting Things Done – The Art of Stress-free productivityThe book for learning GTD methods
  3. ATPO – A comprehensive list of outliners and to-do trackers for the Mac
  4. Org-Mode – The all-in-one note taking, calendaring and everything-else outliner for Emacs