Archive for June, 2008

Staying Focused Despite Distractions

Maintaining Focus

New ideas are great. For me, they’re like the adrenalin you feel going through the first big loop on a roller coaster. Ever been on Air at Alton Towers? It’s just like that. The buzz you get from that initial bright spark and the subsequent rush of unlimited possibilities is something that every entrepreneur thrives on. It’s what keeps us going. The only problem is staying focused.

I’ve been tempted in the past to drop one project half way through only to pick up another one that I thought to be more exciting. And, if I’m honest with myself, I’ve been guilty of that more than a few times.

The number of unfinished projects that are gathering dust in some remote folder on my computer is reaching an embarrassing level. I bet some of you are in exactly the same boat. You know what I’m talking about. How did the project that began as a world changing idea somehow fall out of favour and eventually become forgotten about and abandoned?

Well, I’ve been putting some thought into this very problem and I’ve come up with a few ideas that identify the causes of ‘project abandonment’ in the hopes that it’ll help to curb this tendency in the future:

Confidence of Success – Having doubt on the possible success of the current project often makes new ideas look more appealing, simply because they’re new and unexplored.

Negative Feedback – Receiving negative feedback is never easy, even if you’ve asked for it. Having people tell you your idea isn’t as good as you thought it was can be a hard pill to take.

New Competitors – Throughout the development of a project it can be very disheartening to see new entrants to the market with a similar project launch themselves directly at your target market.

Lack of Strategic Focus – Having a plan with realistic, achievable milestones takes a lot of work. Keeping to them takes even more effort and a new project lets you avoid that (at least for a while).

Code Soup – As a project gets more and more complicated, so does it’s source code. No system has a perfect architecture and despite best efforts, I sometimes take short cuts which I pay for later!

A New Big Idea – Having a new idea can put pressure on your ability to focus on what’s in font of you. We can only do so much at the same time and we need to acknowledge that.

This last point is different from the rest in that it is in no way related to the state of the current project. What you’re working on right now might be going perfectly and success with it could be just around the corner, but simply because this next idea for a project is ‘new’, it can appeal on this one point alone.

A Vow To Stay Focused on Existing Projects

Clearly, I’m struggling with this so I’m going to make a little pact with myself. I’m going to vow to complete all of the projects I’m working on large and small before taking on any more. Everything else will just have to be put on hold for another day, because despite how tempting they may look, it’s better to have two finished projects then four unfinished ones.

New Ideas to Improve URL Shortening

Ideas to Improve URL Shortening Services

The use of URL shortening services has exploded since the introduction of micro-blogging sites like Twitter and Jaiku. The most popular ones include, and The tight restrictions on the maximum length of a Twitter post has created a surge in demand for these simple services.

The only problem is, they’re nowhere near to reaching their potential.

These services could be so much more useful and interesting. And there are loads of simple ways to improve them. They should be leveraging the unique data they receive and help make the service more interesting to everyone. Additionally, as Aidan Finn rightly points out, they’re not always appropriate either as they remove contextual meaning from the text used in the link. This text is a key navigational tool often used by readers to help them decide if something is worth visiting.

This got me thinking about ways to improve this relatively simple service, so I’ve come up with four straight forward ideas to help add value and make them more useful.

1. Add Statistics

Neither Twitter or Jaiku or any other micro-blogging tool provides any form of analytical statistics for their users. Other than our list of followers, we have no way to see who’s viewing (or cyber stalking) our profiles. By adding simple statistics to one of the popular URL shortening services we could see a) who clicked them, b) how often, c) and from where.

The statistics of the URL’s activity could be made public, or alternatively, simple user accounts could be added to the system to allow users to see and manage all their URL links created from within the service over time.

2. Allow Custom Links

Links generated by the current URL shortening services don’t give any context. The text used in the links give no hint as to the content of the source of the link. It would be nice to have an option to choose the text used in the shortened link rather than have the system generate one for you. Obviously the number of available and meaningful URL’s is limited, but it doesn’t necessarily have to be three characters in length (such as I’d be quote happy with an eight or nine character URL if it gave me some idea about it’s content.

For example, the shortened URL for this post could be rather then the context free

It’s a small improvement, but something that would make these services a lot more useful.

3. Secure RSS Notifications

Simple statistics could be provided via RSS to centralise and aggregate the activity on the URL. It would be a great way to deliver analytical data. Each URL could have it’s own feed (example: or user’s could have an aggregated feed of all their URL’s (example: These could be rendered private or public, allowing the owner to control who has access to view it’s popularity.

4. Go Social

Perhaps there’s also a social networking angle to this. These URL services could build communities around the people who link to the same resources. It would be a great way to connect readers with similar interests, who otherwise may never find out about each other.

It would also be another way to add authority to links into blogs and other news content, albeit just a small portion of the actual number of links likely to be linking to a particular resource. Normally, authority in blog search engines like Technorati and the new Twingly service rely on pinging services to gather data on the number of links back to a resource, but these only work for blogs and news sites. Whereas the URL shortening services, by their very nature, knows who’s linking to what without the need for complex systems.

Tell Me What You Think

I think these are all simple, interesting concepts that would improve the current URL shortening services, and I’d be keen to hear what anyone else thinks of them. Maybe these are totally useless ideas, but I thought I’d throw them out there. If any of the URL shortening services want to adopt any of these ideas, I’d be delighted if they did. It would make them far more useful, and leverage the data that’s passed through them. If not, I’d be tempted to put together something myself. Shout if you want it.

Awareness is Key to Kicking a Bad Habit

Golf Tips for Web Developers

Yesterday evening I had a pro golf lesson with the very capable David Lavelle. The lesson started off with me hitting a few balls so he could see my swing. Straight away, he was able to tell that my grip needed work and that I was standing too close to the ball.

Within five minutes he was able to show me a new grip, change my stance and correct the distance between me and the ball. It felt a little uncomfortable but I stuck at it.

It made an instant difference. I began hitting the ball cleaner and it flew far straighter then before. It was an amazing feeling to see such an immediate improvement from just a few small tips.

You Can’t Beat Expert Advice

If you don’t know what you’re problems are then there’s no way you’ll be able to address them. Having an expert take a look at my golf swing allowed me to see what faults I had.

Before yesterday, I had no idea that my grip was all wrong. I was also blissfully unaware that my stance was the cause of most of my drives skewing off to the left. So with the new knowledge from the 30 minute lesson I now have an angle to improve my drive and my overall game.

Developers Have Bad Habits Too

The golf lesson and the advice David gave me got me thinking about applying this approach to other aspects of my life, like writing code.

As a developer I’m always looking for new ways to improve my skills. I’m an avid reader of many different developer blogs like Sitepoint, jQuery’s John Resig, and Irish PHP and open source evangelist, David Coallier. I keep up to date on new frameworks and other modern approaches to make my code more readable, scalable and extensible. I also refactor my code as often as possible to prevent it from becoming stale and unreadable. So in general, it’s safe to say that I’m constantly trying to find new and better ways to architect my software.

But it’s not perfect, and I’ve no doubt that I have as many bad habits in my coding style as I have in my golf swing. My recent golf lesson, and the advice given to me by my instructor has made me think about how I could use the same approach to improve my skills as a developer.

Learning to Learn

If you’ve ever heard of the Conscious Competence Learning Matrix, you’ll know that there are four steps to learning anything new. These are:

  1. Unconscious Incompetence
  2. Conscious Incompetence
  3. Conscious Competence
  4. Unconscious Competence

(thanks to Louise from Optimum Training for showing this to me)

This matrix outlines how humans learn. Basically, it highlights the steps taken during the learning phase of anything new. These four steps can be explained as:

  1. We’re unaware that we don’t know how to do it
  2. We’re aware of it, but we still don’t know how to do it
  3. We know how to do it but we have to concentrate really hard to do it
  4. We know how to do it and can do it instinctively without thinking

For me, it’s the first stage that I struggle with. I’m constantly worried that I’m missing something new. That a new framework or a new approach will somehow pass me by and I won’t hear or learn of it.

However, once I do hear about something new, I’ll voraciously pursue it until I’ve either satisfied myself that it’s not relevant or I’ll convince myself it’s the next big thing and I’ll spend time adopting it into my armoury of development tools. Either way, I’m constantly trying to get passed the stage of unconscious incompetence. I’m eager to learn, but I can only learn what I know I don’t know.

Becoming More Open About My Code

I think every developer, myself included, could benefit from expert/peer advice on their own coding practices. Just like in the golf lesson, a 30 minute meeting with another developer could help highlight some weaknesses and help to identify aspects of my coding style that could be changed easily yet deliver maximum impact on the quality of the code.

I’m keen to get this type of advice, as I’m used to working in isolation away from other developers. So to help get around this I think I’m going to become more open about the way I code and start to publish parts of my work so I can start to get some feedback from the community on the most effective way to write software.

Helping Each Other Out

If there are any web developers reading this who would like to discuss their coding practices or get feedback on their approaches to solving the everyday problems of the web I’ll be happy to give my two cents. Email me or leave a comment here.