31 May 2009, 10:00pm
Productivity:
by

1 comment

Habits

Habits and habit forming can be an interesting aspect of human behavior: they seem to fall in to two broad categories in my mind.  Habits are either hard to start and maintain until critical mass is achieved and after that can still require conscious maintenance to maintain. Or habits are easy to start but risk becoming all consuming: absorbing more and more time and energy.

An example of a hard to start habit for me is writing blog posts: it took a force of will to start me writing initially and it requires constant energy to keep me writing new posts.  Interruptions over even a week to my writing can be enough to disrupt my writing habit sufficiently to halt it.  At which point Inertia comes into play with devastating effect, to make the restarting of the habit hard.  It seems that a lot of virtuous habits like regular exercise and eating healthily also fall into this category.

A habit that is easy to start and yet easily becomes all consuming for me is playing computer games, usually this doesn’t get too out of hand as most games have a finite length and amount of content which limits the duration of the disruption.  Yet some games, especially MMOs like World of Warcraft (WoW) have a seemingly endless stream of content which means that it is possible to spend an almost infinite amount of time playing the game and still not complete it.

These ‘time sink’ games can be a real challenge to getting anything else done, my usual solution to this situation is to stop playing the game by unsubscribing…

8 Apr 2009, 7:37am
Miscellaneous:
by

leave a comment

Finally Level Eighty!

Completely off topic but it explains the shameful lack of posts recently:

Level 80

I finally got my Orc Shaman ‘Urki‘ in World of Warcraft to level eighty!  I only started levelling him in January so I’ve been pretty slow (restrained) but now I can finally start playing in the arena (PvP).

Artisan Riding

I also managed to get the artisan riding skill so I can use epic flying mounts.  Having an epic speed flying mount (this is my current) makes a huge difference to travel times, which I hadn’t fully appreciated before.

23 Mar 2009, 1:00am
Miscellaneous:
by

leave a comment

Changes!

You may have noticed that the layout of this blog has changed and a few new features have appeared.  I have implemented a couple of things I have had on my to-do list for a while now.

Three Column layout
I have been finding that a two column layout does not have sufficient space for all the widgets I would like to have, without having to resort to a really long second column.  So after a bit of thinking and some research I converted my current theme into a three column layout.

I found the following two posts very helpful when converting my theme into a three column layout: Adding Extra Sidebar to your WordPress Theme and How to Create Multiple Dynamic Sidebars for WordPress Widgets.  I also found the CSS Edit application by MacRabbit to be an essential tool for easy CSS tweaking, its so good I actually bought a licence.

Most Popular Posts Widget
It is important to be able to point visitors to the most popular content to keep them interested.  The ‘Most discussed posts’ widget provides a customisable list of the most commented on posts on your blog.  There are other widgets that can list the most popular posts by visits (page views) but they require extra database activity to record the visits which I’d rather not have to use on my hosting plan.

Google Reader Widget
This widget interacts with Google’s Reader service to provide a list of your recently shared items in Google Reader.  This is a great widget for sharing the posts or articles you have found most interesting with your readers, you can even add comments to each item.  This won’t completely replace my Friday linkage posts as there are sites I find without going through an RSS feed but it is something I have wanted on my blog from its conception.

Twitter for WordPress Widget
I have been using this Widget to display my latest tweets for a while now.  However due to not having enough space in the second column I’ve never been able to have more than my last tweet visible.  Now I am using a three column layout I can now have my last few tweets displayed which I think makes them a bit more coherent.

RSS Icon Widget
An RSS feed link and icon is something I have been wanting to add to my template for a while, this handy little widget lets me do just that without any template voodoo.  Although it would be nice if it could also give and icon and link for the comments feed too.

The main thing I have left to deal with is some further minor tweaking of the theme and to replace the current banner with something a less geometric and a bit more fluid and interesting.  For the new image I had been thinking of something to do with ink in water but so far I’ve not found the sort of horizontal image I’d like.

Recent Software Discoveries

In the last month I’ve come across several useful pieces of software which I thought I would share:

Launch Bar (Mac OS X)

Launch BarOne thing I noticed when I switched from using Windows PCs at home to using Macs was that there did not seem to be an obvious equivalent to using the run command (Windows Key + R) to open directories, URLs and launching programs.  The built in Spotlight application can launch applications in a manner similar to run but not open applications or URLs.  Launch Bar is a Mac only application that addresses this and adds extra features like a calculator, targeted Google searches (maps, general, groups etc) to allow you to access any file or application on your Mac or URL on the web quickly and easily.  I highly recommended this application: I now wish there was a Launch Bar equivalent for Windows!

Remember the Milk (Web)

Remember The MilkI admit I was very skeptical about a web based To-Do list application but I kept hearing people raving about Remember the Milk so I eventually decided to try it out myself.  Despite using GMail for almost a year I really was not expecting the responsive and feature-rich user interface this site provides.  There are so many little details that make this one of the most progressive To-Do list applications I have used in years e.g. entering dates is super simple: want tomorrow then enter ‘tomorrow’, want this Friday enter ‘friday’, want the 27 of February enter ‘feb 27′.   It puts grown up To-Do list applications like Microsoft Outlook to shame!

Twitter (Web)

twitterTwitter can best be described as a micro blogging system where all blog entries (called tweets) are one hundred and forty characters or less in size.  Users can follow each other which is similar to subscribing to a blogs RSS feed.  This produces a constant stream of tweets which you can either view through your customised twitter home page or through a client like twhirl (below).  Twitter is very useful for exchanging micro updates over the course of the day with your friends and people you respect or find interesting, especially for details that you would not bother with a blog post about.  Although be careful who you follow or you may get more information about what they are currently doing than you would prefer.

Twhirl (Windows & Mac OS X)

twhirlTwhirl is a client application for twitter that runs on the adobe Air platform (essentially Flash for the desktop).  I had been using twitter via the default web user interface until last week when I switched to twhirl.  I had heard of twhirl before then but had been put off it as it used Adobe Air and I’ve been burned in the past by Adobe faulty auto update software before which had put me off free Adobe software.  Twhirl has been a very pleasant surprise in terms of quality and ease of use: I especially like the option to fade out the UI if it goes out of focus (e.g. you switch to another application).  It even has built in tools to shorten URLs, which is very useful due to twitters message length constraints.

Have you discovered any great software recently?

Effective Work Breaks

I have made an interesting discovery since I started taking our new puppies to work with me: I actually seem to be more productive now than I was before I started taking the puppies to work!  The pups generally need to be taken outside to relieve themselves and run off some energy every hour or so for about ten minutes.  These puppy induced breaks are fairly practicable and not skippable unless the pups are asleep at which point I think it is better to let sleeping dogs lie.

Previously I had been using programs like Work Rave and Anti-RSI to make sure I’m taking sufficient work breaks, mostly to keep me sane and free of RSI like injuries (I still recommend these programs).  I confess I am guilty of skipping breaks suggested by these applications fairly frequently, which perhaps is not a smart thing to do as it increases the likelihood of fatigue, injury and lowered productivity.  I had thought this system to be effective but I’m finding puppy breaks even more effective: possibly due to the lack of a skip option.  As puppies with full bladders cannot miss a break without risking an accident!

I think perhaps this lack of a skip option to puppy induced breaks is giving me more of a sense of having to make the most of the time between the breaks, this is helping me focus which results in increased productivity (which is not what I would have expected).  This is a most welcome and unexpected side effect to having the puppies at work with me: aside from the obvious benefits of canine companionship and having a very good excuse to go for a walk at lunch time!

I have found over the years that any sort of regular break gives me a chance to pause and reflect about my current task and that is very useful for considering options and possible solutions to problems.  The end result is that stopping to reflect about what I am currently doing regularly results in a superior end product than just hammering away at a task.

Do you have regular breaks and do they help or hinder your productivity?

2 Feb 2009, 1:00am
Software Development:
by

3 comments

Writing dirty

Starting to write something new like a new application, class, feature or any written work like an essay or blog post even can be very daunting.  Defiling the blank screen or sheet of paper with your first scribblings can be very intimidating as you know you probably will not get it right the first time.  This can lead to avoiding starting a task: especially one you are unsure of where to begin, even when you have the required technical ability to complete the task.

I experience this myself from time to time: I know what I need to do but I am unsure of where to begin and I will find myself actively stalling starting the task and do anything else instead.  Later I will do the task and wonder why I put it off for so long: completing the task is easy but starting is somehow hard.  The best way I’ve found of combating this sort of block is something a friend introduced me to and they called it dirty writing: it has nothing to do with erotica (sorry!).

The core of this method is that when you go to start a task you start writing immediately: it does not matter if what you are writing is any good or even compiles.  It just matters that you are putting something down that you can then re-factor into something worthwhile.  Otherwise it is very easy to sit at the ‘not sure where to begin’ stage for a long long time, which is highly inefficient.

For example if I am writing a new feature in a C++ application I will generally get started by:

  1. Creating the new source files for the new classes and associated unit tests.
  2. Adding the new source files to source control.
  3. Inserting the skeleton infrastructure into the files e.g. include guards and empty class definitions into the header (.h) files and #including the headers from their implementation (.cpp) source files.
  4. Define the test classes and their test methods for the methods of the new classes.
  5. Start adding methods and member variables to the classes in the header files and add empty implementations in their source files.

I find the above works quite well as defining the unit tests before I start to define the feature classes helps focus my mind on the interfaces of the new classes and what it is exactly that I require to implement the new feature and no more.  I find if I start by writing the new feature first and then the tests that my implementation tends to end up more bloated with unneeded methods and code.  You will notice that steps one to three are pretty basic, no advanced design or thinking is required, they just serve the purpose of gaining momentum in the task until I reach the stage I can start in on the meat of the task at hand.

How do you get past the mental block that a blank screen or piece of paper or empty source file can cause?