Archive for the 'workhack' Category

Mac seduction

Saturday, November 24th, 2007

I used Macs a lot at University and whilst I didn’t completely revile them they certainly weren’t compelling enough to convert me. Price-wise the divide was large and software support was niche at best. Apple has come a long way since then playing an excellent strategic game supporting the progression of the Mac hardware as the ‘every-platform’ through BootCamp and their support ofvirtualization software, Parallels.

For me however the seduction was not one of purely access to a large variety of software – I’d seen the Mac find leading software products in almost every category of software I cared about. For me the issue was the taxing burden that poorly realised user-interfaces on Windows Pcs that wore me down. As time becomes a more precious commodity I found time wasted battling interface which could have been spent doing frustrated me to despair.

A few weeks into owning my new Macbook and I am still amazed at how few battles I’ve had to fight to be productive on it. I am discovering new software to replace my Windows favorites – where it was FeedDemon its now NetNewsWire (I think Newsgator may be able to attribute a portion of sales to the growing numbers of Mac converts); Windows LiveWriter (which I commended the Windows Live team highly on – Mac version please?) is currently surplanted by a trial version of MarsEdit; Firefox has surprisingly been replaced by Safari – I don’t know how long this will last as I am a great fan of the rich set of plugins available for Firefox but for now its probably the lighter information load I am dealing with on the new machine that is making Safari such a pleasure.

On the bang for buck front – I went with the standard MacBook and am glad I did so. For the price of a low to mid-range laptop you get a faster, quieter more pleasant to use machine. For all the tasks I’ve thrown at it I’ve not yet hit anything that has made me need to think about the hardware. And that’s the way it should be.

One final note: having used the Mac’s DVI out for connecting with my telly I think if you have a DVI enabled TV then a MacMini represents incredible value for you.

Twitter as a platform

Thursday, July 19th, 2007

A point I covered in earlier posts about Twitter which I would like to revisit is that of Twitter’s usefulness being less about letting people know ‘What I’m doing now’ (which, as readers of this blog may remember, I don’t find that useful) and more about it as the nexus point between various gateways.

Reviewing what I said in one of the earlier posts :

Something I haven’t heard much in the current conversations about Twitter and that I think is important is that one of the key strategic strengths of the service is infrastructural – the link between IM and mobile network messaging and the web is a useful one which many applications will build upon. I think one of the players in the industry, whether Twitter or Jaiku or a new player to come (and regardless, likely to be acquired by one of the big companies) will benefit from owning a reliable set of gateways maintaining these links.

Being a platform is hard work

As anyone using the service would have noticed – its hard work maintaining gateways and services and in general ’being the platform’ or nexus point for a variety of different consumers.

Some proof of this; another company, IMified who are in a very similar business to Twitter, recently plugged Twitter into their own service whilst the Twitter IM bots were out of action to allow users of Twitter to keep on Twittering :

Over the weekend we added Twitter as a new IMified service. We definitely feel their pain trying to keep an IM bot up and running. We’ve had our own issues in case you haven’t noticed ; )

And this cheekiness :

It appears the Twitter IM bots are still down, but have no fear, we just added support for notification updates to go along with the release of status updating last week. What can I say, we’re opportunists!

But being a platform can also pay off…

One of the coolest bits of functionality that’s actually useful that Twitter has afforded another service I use, RememberTheMilk, is the ability to use the SMS and IM gateways to post tasks to my task lists. This saves me money and time when I am out and about and I think of something I need to do/remember.

A ‘QuickAdd via SMS’ option to Google Calendar should be a straight-forward (and bloody useful!) addition  if utilizing the Twitter platform. I am sure a variety of other services leveraging SMS/IM will appear (Google/Yahoo/MSN Search?) benefiting from the effort the Twitter people have undertaken to ensure the infrastructure they provide stays accessible (and I am not saying they are there yet…).

If I make bold (and possibly long) assertion; assuming people continue to find use for these short message/short instruction services and the Twitter team can keep it all hanging together, ironing out the kinks and interruptions, we will see them become the platform of choice for short-message-in/short-message-out type services and in the acquisition path of a multi-national telco!

Managing a large codebase

Tuesday, July 17th, 2007

Anyone who has worked at an organization with more than a few developers for a reasonable period of time would have felt the pain associated with a growing codebase. The word ‘legacy’ creeps into the everyday language and the number of maintenance tasks soon exceeds the amount of time spent writing new code.

The maintenance tasks hopefully make your existing clients happy (‘serve the client in front of you’) but the reduction in new code generally means less new features per developer and therefore is naturally linked to a reduction in your ability to increase the amount of product you can sell to your clients.

There is of course a correlation with the amount of code you write to the amount of maintenance it requires however exactly to what factor this is depends entirely on your processes and how they affect the technical debt you incur.

Relish deleting code

My first piece of advice to any developer (you never know when your own codebase will become a multi-developer maintenance monster) is to relish deleting code. Most code, after-all, is the application of standard algorithms and patterns to specific problems and is therefore not that useful or unique once it is no longer required.

Don’t keep code around just in case. You have it under version control so as soon as it is orphaned then delete that sucker. Have an active deprecation process that is regular and ruthless!

Campaign actively to deprecate unused functionality within your organization as well. The temptation to keep functionality around just in case is not reserved to developers; product development, sales and marketing all fall into this trap.

It is costly to leave unused functionality and code intact because it costs an organization in a number of ways:

  • Developers have more complexity to deal with and this will always result in waste.
  • Users have more unnecessary complexity which affects the usability of your product which in turn affects how your product is percieved.
  • Technical debt is incurred over time - its like continuing to pay rent on an apartment you already moved out of.

The global namespace is not your playground

Making changes becomes the focus well before the codebase even reaches the inflection point of maintenance outstripping new code. This is because many features of any given software product are built on top of existing features.

The enemy of change is the dependency and the easiest way to create unnecessary dependencies is to create globals because if its in the global scope then other coders will use them. Declaration scope and JIT inclusion of necessary dependencies are your friends – use these wisely.

Those entry points into your codebase that are necessary because they are utilitarian or because they kick your application off should at least be namespaced off into a structure by using a pattern such as the Singleton. Don’t be fooled – a Singleton is still a type of global but it is much easier to attach documentation to and control the signature for it.

Divide your code into layers to assist in reducing coupling and avoid having lower layers called directly from layers that are not immediately above them. For instance – if your page or front-controller calls your database directly you will find you reimplement the same query creation code, query execution and object population code over and over. Its much better to abstract this functionality to an object hierarchy which can specialise in these tasks as there is nothing useful in seeing lowlevel logic scattered through-out the logic behind your presentation.

Much of this advice is available from a variety of sources and I do recommend reading up further on the topics I have mentioned if you found that some warning bells with your own organisation’s codebase started to ring. Codebases can become massive – particularly when their are multiple developers involved multiplied by a few years of time. Some continual investment in keeping the house clean will pay off by allowing you to spend more time on new code.

Back to Virtual Reality

Sunday, June 10th, 2007

After a very satisfying break for a few weeks, holidaying in Turkey I have caught up with work and am now back online, back to virtual reality. I can highly recommend holidaying in the real world – I plan to do more of it.

I will hopefully cover some of my holiday on this blog over the next few weeks – we have many hundreds of photos to review and share – I can’t emphasise enough how great a destination Turkey is for holiday that both satisfies needs for relaxation as well as for new experiences.

I’ve also got a bunch of web development related posts I want to put together now I have completed some projects at work that were monopolising my time. Hopefully some of these experiences will prove valuable for those of you involved in building cutting-edge web applications.

Even better, if I could inspire people to visit a place like Turkey (which disappointingly has seen a downturn in tourism in recent times despite offering such amazing drawcards in its people and its overwhelming number of brilliant attractions) it would reward the effort I will put in to documenting my travels.

Look forward to a return to posting frequency benefitting from the reinvigoration my trip has provided me.

Holy-grail for calendar access with Thunderbird/Google Calendar?

Monday, April 16th, 2007

I have long found Outlook a pain-in-the-butt to use and a few years ago switched back to Thunderbird (I had been a user of the Netscape Mail client in a former life…).

I find Thunderbird is much lighter and quicker at filtering mail than Outlook. There are better clients but all seem to have their own quirks which have kept me from adopting them.

The main difficulty with replacing Outlook with Thunderbird is that it lacked a good calendaring option. Incompatibility with the other Outlook stalwarts in my office meant I was forever having to ‘View Source’ on email bodies to see when a meeting was to be held so I could go and manually enter it into Google Calendar (my primary calendar which I share with my team). Fortunately I found the Lightning plugin to add a calendar to Thunderbird but I was still manually updating meetings in Google Calendar.

Now I have just come across this excellent tutorial on setting up what might be the holy-grail of calendar setups and want to share it with all Thunderbird users and frustrated Outlook users. Here is the short version of the tutorial for experienced Thunderbird users :

  1. Install Thunderbird 2, RC1
  2. Install the Lightning plugin so Thunderbird can read Outlook meeting requests and place a calendar in the Thunderbird interface.
  3. Install the Google Calendar provider to allow Lightning to add two-way synching with Google Calendar.
  4. Add the XML address for your primary Google Calendar (Found under “Calendar Settings >> Calendar Address”).

And you are done – test it by setting a meeting in the calendar within Thunderbird. You should see the meeting appear in your Google Calendar shortly (I had to manually refresh). More information at each the sites I have linked to.

Twitter is like crack for procrastinators

Tuesday, April 10th, 2007

Catchy title maybe; but hopefully anyone who is or will be experimenting with Twitter might consider this post and draw some value out of it.

The Steve Rubels and Robert Scobles of this blogoworld (notice its hard to refer to virtual domains, I keep choosing different ways to refer to the world of online information, I will continue to until I find one I like) are heralding Twitter’s importance via their virtual pulpits. After about a month of my own experimentation with the service I suggest tread with some caution when signing up for Twitter alerts to your phone or workplace IM.

For a basic description on Twitter see my previous post  ‘Tweets are the Ultimate in Disposable Content’.

Few of us have jobs which benefit from that much interuption and very little of the content available through Twitter currently could concievabley be relevant to our minute-to-minute activities at work. We cannot draw the same value out of the content as those whose jobs it is to evangelize web usage and cannot benefit from the immediacy of republishing new technologies the minute they hit blogland. I am not saying the hype around Twitter is necessarily wrong – there is useful or entertaining information on it but , like blogs it will be more useful to you at a time when you choose, for a task you determine.

As I covered in my earlier post, the value the author places on their own words is linked to the audience’s percieved value of the content. Lets put it this way there will never be twittershelves built for storing your favourite tweets from the Shakespeare’s and Dylan Thomas’s of our times. You will wait for them to publish a book and then you will buy that for your bookshelf because you know that a book will be the fruits of their considered thought and effort.

I think acknowledging that this will be how people value individual content items on Twitter will also will drive how people value Twitter overall. One of the key variables in the Twitter value equation is in the timeliness of the information – only timely information that truly provides value in being timely will serve the audience. This is not to say there wont continue to be a constant streams of banal chatter… it just means that this content will have an erosive impact on the audience – taking more from them than it gives.

To avoid being owned by your inflow of everyone’s presence information I’d suggest for now, switch it off. Then, have a think about what you will get out of it and how you might distill this information source down to an information flow that is there when you need it at a rate that will truly benefit you.

Steve Rubel has good suggestions about how to filter and utilize content (see his Gmail nerve center articles) however remember, he takes this stuff to the extreme. I don’t know enough about the particulars of his job to comment but for own jobs, I suggest thinking about what your job entails and determine how much of a need there really is to be up to the minute with all the comings and going of the internet.

Is this actually something you could catch up on once a week (or even a month!) and instead spend those valuable minutes or hours lost to Twitteruptions and use them to being productive in the actual tasks pertininent to you being a valuable employee (or betting on the dogs, whichever suits you best)?

I am interested in other people’s experiences with Twitter – let me know if you are using it, wont use it or stopped using it.

Tweets are the Ultimate in Disposable Content

Monday, April 9th, 2007

Following on from my previous post on the fast-food like properties of web-content I thought I would look at the service which embodies the latest acceleration in content consumption, Twitter.

For the uninitiated, a ‘tweet’ (as referred to in this post’s title) is a single message sent via the Twitter service. Twitter is a short-message system which can be accessed by numerous applications and devices; primarily, but not restricted to, web, IM and mobile. Messages are by default public and therefore you could think of it as ‘mini-blogging’ where messages can be posted as easily as sending an SMS or IM.

The rise of Twitter in the early adopting set (lets face it, it hasn’t hit mass market yet) has seen the introduction of a new, even more throw-away type of content. The plethora of states, moods and emotions punctuated by links to sometimes vaguely interesting content really leaves a faint impression. The experience lacks cohesion and any real filter determining significance or relevance of a particular content item. This gives it a sort of fun lightness and I guess the beauty of it is in the aggregate of the impressions you get from someone’s Tweets you follow.

There has been plenty of discussion on blogs about Twitter – all discussing what amounts to the same thing – does this medium have future? Not to be silent on the subject I do think it is a service which will be a place alongside other internet-mediums like blogs and IM. I think it will be in a form evolved from the one we know today – one of the reasons being that many currently heavy users of Twitter in this experimental adoption phase will stop or at least severely par back their usage of the service as they realise its capacity to cause constant distraction, fragmenting their thinking and to generally get in the way of Getting Things Done. I’ll touch more on this in a subsequent post.

Something I haven’t heard much in the current conversations about Twitter and that I think is important is that one of the key strategic strengths of the service is infrastructural – the link between IM and mobile network messaging and the web is a useful one which many applications will build upon. I think one of the players in the industry, whether Twitter or Jaiku or a new player to come (and regardless, likely to be acquired by one of the big companies) will benefit from owning a reliable set of gateways maintaining these links.

The direction the presence products will expand will be in their ability to filter and summarize the content they deliver – experimentation with Twitter and Pipes will be interesting as the service will need to overcome its procrastinatory qualities. With the internet already being the procrastinators achilies heel the last thing we need (and I am assuming I might be representative of at least some of us in this) is a stream of random information flashing on GTalk or our mobile phones constantly to distract us from what we are actually doing.

Where Twitter-like applications could come into their own is if they can combine the users current geo-location, mood or other information to tailor very relevant alerts to them. Currently however its like trying to work with firehose to the side of your face.

Users tend towards efficiency

Wednesday, February 7th, 2007

We seem to rediscover every few months that many users are typing the name of the search engine they are on into the search box. I read many disparaging remarks directed at this very large group of users and I wonder why the remarkers would think this behaviour is ‘clueless’ or ‘dumb’?

Forgetting what the user ‘should’ do, lets consider the two options for a moment. Firstly, in terms of physical and functional composition, both methods of navigating the web comprise of a single field and respond to the enter key; so no difference there. Further, one is placed at the top of the screen, the other often nearer to the centre. I’d say thats one factor that the search box has over the navigation bar.

Moving on, the navigation bar will in most cases punish you for mistyping. Google and other engines will offer a link to (most likely) the site you intended. Now thats handy! I’ve started using the search method for those times its handy. Google Desktop makes it easy to get to a search box (just hit ctrl key twice). This is much easier than ctrl-tab a few times combined with another key-combination to open an URL (and then you get to type the URL…). Who wants to be doing what they ‘should’ do anyway? That sounds clueless to me!

Not all instances of a search engine name being entered into a search engine is for the above reasons, though. ‘Google’ is entered into the Google search engine because who can remember where all their products are housed. Google, in their effort to deliver a ‘simple’ homepage, avoid the portal type page so typing ‘Google’ can be all users can do to find their many great products.

Another point to consider are those keywords put into the navigation bar which aren’t legitimate URLs are often sent to a search engine in browsers such as Firefox. Who wants to spend time repetitively typing the fairly redundant ‘www.’ and ‘.com’ anyway…?

What can we learn from all this anyway? Well next time you consider calling a user stupid, stop yourself and look for the efficiency they are seeking. It can teach you alot about how you could make your application easier. Not everything needs to be reduced to a unthinking action but its worth taking the thinking out of the tasks that don’t require it so that effort is most effectively spent.

Maybe browsers should ditch the navigation bar? Maybe the navigation bar and search box should be one? I’d like to know your thoughts.

Pragmatic Development: first things first

Wednesday, February 7th, 2007

Since you are here and reading this I figure you have time to try something out. Don’t worry, this may just save you some time in the future or it may even lead your current project to success earlier.

It sometimes takes an external reminder (something that snaps you out of the myopia that can take hold when working) to provoke you into acting on an simple optimisation; whether it be in your own day-to-day workflow or in your business practices or in the flow of activity your customers pass through.

In web development, a common issue that is overlooked when in the midst of upgrading functionality to a property is that the entry page linking to that feature is underperforming in the delivery of users. I have seen teams toil away, moving mountains only to ignore that traffic will not make it to their creation!

Take the time now to consider your current project. How effective is the page where your users land upon to login or to navigate to your tools or content? Do you measure this page? Is there a high incidence of users bailing without further progression? Are they going to the areas you want them to? Have you made adjustments and measured the affects of those?

I build time into my schedule to do this regularly and always find adjustments that need to be made which would have been overlooked if I had just kept my head down, plowing forwards. I am more recently trying take a similar approach and analysing how I use my tools and whether I can simplify or automate regular tasks.

If you do make some discoveries which are not to your liking, I suggest you take some time to address this before embarking on further development. It will be time well spent.

A few thoughts on Enso

Monday, January 29th, 2007

Its hard to say whether Enso will go the way of my experimentation with browser gestures. Others I work with use the gestures fluently now making me envious of their reduced barriers to productivity. I do think I lose much time transitioning from pointer devices to the keyboard and back so I am inclined to think the people at Humanized have something.

For the uninitiated, what is it? I’d recommend watching the video they have placed on the frontpage of their site. The short rub is that Enso overloads your caps-lock – holding it down reveals the Enso dialog which hovers above your OS, transparently waiting for input. Its a command prompt for navigating your applications or for applying simple commands to your context; for instance some selected text.

It is clearly a polished product – I recognise a few elements from earlier memes they had successfully set loose into the sphere. Some elements such as their use of modal messages which appear in the user’s field of view are smart but maybe not as clever as they present them to be. But maybe they are – I am still training myself to look for the Enso interface in front of me rather than in the task bar.

I can’t help but wonder whether the task of testing this software out is somewhat of a catch-22. To test it properly requires one to learn a few keywords which drive the system and also to train themselves to use Enso rather than existing (slower?) ways of achieving goals. If you succeed at this then the system is probably working for you already and the ‘test’ is over before it has begun.

I guess it comes down to whether you believe this is a significant adjustment to the drag that ‘modern’ interfaces such as windows afford you. I personally think that windowing is working against you for most of the time. Fiddly dragging and resizing is time costly and doesn’t deliver much. If you need to fit two documents side by side then there should be a button or a command for it. Moving these things manually seems like pushing unnecessary work to the user.

Humanized present Enso as being grounded in the study of human computer interaction and they present a manifesto of how life using computers could be much easier. I don’t disagree, but is this product a step forward? Enso takes us back as much as it takes us forward. It reminds us of lessons many developers already know – of the effectiveness of the commandline. It consolidates what Google success has been teaching us – that typed text can lead to an infinite number of destinations and they have made even Googling a few clicks closer by having access always available from the keyboard alone.

Those with Google Desktop who have put up with its (in my experience) fairly regular crashes would be familiar with a similar capacity, in this case overloading the control key, a double-press brings up dialog Enso-esque but of course has in actuality beaten Enso to market to what appears Enso’s most interesting application thus far.

I do persist though as navigating many tabs and windows is my own personal goal and Enso may offer a path of lesser resistance to them. I will let you know how it goes.