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…
Finally Level Eighty!
Completely off topic but it explains the shameful lack of posts recently:

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).

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.
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.
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?
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:
- Creating the new source files for the new classes and associated unit tests.
- Adding the new source files to source control.
- 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.
- Define the test classes and their test methods for the methods of the new classes.
- 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?











