Productivity

I like to be productive. There are a number of tools that significantly help me in that.

Firefox tips and plugins

What is the first application you run when you sit down at a computer? It's the browser isn't it. Getting the most out of your browser can have a huge impact on your productivity, so it's worth paying attention.

  • Tip#1: parameterized bookmarks. When you create a bookmark in Firefox, you can include %s in the url and set a keyword. Then, when you type in the location box the keyword and some text, the bookmark will be invoked with %s substituted with the text you entered.

    wikihttp://en.wikipedia.org/wiki/%s
    msdnhttp://www.google.com/search?q=site%3Amsdn.microsoft.com+%s
    exhttp://www.google.com/finance?q=%s
    alchttp://eow.alc.co.jp/%s/UTF-8/

    If I want to look up something on WikiPedia, I just type wiki gps in the location bar. To see the exchange rate chart of USD against the Japanese Yen, I just type ex usdjpy. And remember that the quickest way to the location bar is with Ctrl-L.

  • Extensions.
    1. Rikai-Chan or PeraPera-Kun. Let's you translate Japanese words by simply hovering the mouse over them. This plugin alone makes Firefox essential to me.
    2. Firebug. Incredibly useful for web developers. Another plugin that makes Firefox essential to me.
    3. FastDial. This lets you replace the blank space in new windows and tabs with 9 configurable visual bookmarks. It may not sound much, but in practice it is very useful.
    4. Ghostery. It tells you who is tracking you as you browse websites, by showing the active trackers in the top right corner of the window.
    5. ChatZilla. An excellent IRC client in its own Firefox window.
    6. AdBlock Plus. This is so trivial I wonder why it is not included in Firefox by default.
    7. NoScript. JavaScript is disabled by default, you have to explicitly allow it per website that uses it. I myself don't use this always because it is too impractical to me.
    8. Vimperator. Makes browsing possible without the mouse, only with the keyboard, by vim-like controls. I am not using it yet, but my favourite hacker columnist swears by it so I will get into it soon.
  • Tip#2: open URL by pasting it in the window with the middle mouse button (only in Linux). It is not enabled by default, you need to set middlemouse.contentLoadURL to true in about:config.

Screen

If you use the Linux/UNIX shells a lot, this is an indispensable tool, and my personal favourite. It let's you have multiple virtual terminals in a single shell. Better yet, you can detach from it and reattach later to continue your previously started work. In fact if your connection to the remote machine crashes, or even if you accidentally closed your shell window, you can still reattach to the session later. Some basic tips:

  1. Start screen with screen -R sessionname, where sessionname is a keyword suggestive of the work you're going to do. This way you can always reattach to the session with this name, with the same command. To detach from the session, use C-a d. To get the list of key bindings, use C-a ? within a screen session.
  2. Start screen in the directory where you will be doing most of the work. This is convenient because that directory will be the starting directory of new windows that you create within the screen session.

Once you start using screen you will wish you've known it from the start.

Bazaar

Bazaar is a relatively new distributed VCS (Version Control System). My favourite features:

  • The checkout or branch of a repository becomes a repository on its own. (You can checkout or branch from it. This is of course a feature of all distributed VCS.)
  • Repository data is stored in a single .bzr directory in the root of the repository, unlike Subversion or CVS where all subdirectories have an annoying .svn or .cvs directory.
  • The somewhat unusual conventions adopted by the client tool make it very convenient in practice. For example bzr add without arguments will add all unknown files to the repository. bzr revert without arguments will revert all changes.
  • At the time of this writing Bazaar has the most robust file/directory renaming among all VCS tools, which makes merge operations consistent and straightforward always. (On the downside, its biggest disadvantage as compared to git is speed.)
  • Publishing your open-source project is surprisingly easy.
    1. Create an account on Launchpad.
    2. Login to your Launchpad account and upload your ssh public key. (Clever!)
    3. Run bzr lp-login username.
    4. Run bzr push lp:~username/path.
    5. A web interface at https://launchpad.net/~username/path will be automatically created with bug tracking and other project management tools.
  • I often subvert Bazaar as a diff tool. Suppose there is a directory where you want to detect changes in the future.
    1. Convert the directory into a repository with bzr init; bzr add; bzr ci -m init
    2. Later, to see if anything changed, simply run bzr diff

    For example I might do this when debugging a Tomcat-like project when I don't know where error logs are being written or JSP files getting generated. When I'm finished I can clean up the Bazaar data easily by simply removing the .bzr directory.

FreeMind

FreeMind is a mind-mapping software written in Java. It can create mind maps beautifully. With a rich set of key bindings it is easy and fast to edit the map using only the keyboard. It has PDF export function. Some wikis support FreeMind maps directly.

jQuery

Quote from the website: jQuery is a new kind of JavaScript Library. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.

jQuery is lightweight, elegant, intuitive and awesome.

WordPress

WordPress is one of the most popular blogging platforms and unless you've been living under a rock, this should be no news. What fewer people know is that WordPress can do for you more than just a blog.

In WordPress posts and pages are distinguished and behave differently. Posts are blog entries, they have a date, title, content, categories and tags. Pages, on the other hand, are arranged in a tree structure. With these features combined, WordPress is suitable as a project homepage with static information, news and event announcements, and user comments. The technology has proven track record, a lot of interesting plugins, and many great themes that you can easily tweak according to your needs.

I use WordPress for creating project homepages rapidly. For example http://www.openmapmaker.com/. There are many good free WordPress themes to choose from, and you can always replace your theme at any time. More importantly, with WordPress you automatically get a web-mased management interface that you can access from anywhere.

Last updated: Wed Feb 24 06:16:36 2010