Blog

January 30, 2008

Tour the Ages

A quick mention of a small site I worked on for Gravitate (external link) which launched just before Christmas.

Tour the Ages (external link) are a specialist Irish historic and archaeological tour company for those interested in exploring ancient Ireland. Based on designs provided by Gravitate I developed and populated the XHTML and CSS templates, as well as adding some PHP functionality into the mix.


November 2, 2007

Web Scripting's Future(s)

Ars Technica has an interesting post (external link) on the storm brewing around the proposed ECMAScript 4.


October 21, 2007

New Toyota Ireland Site Launched

After an intense few months work, the new Toyota Ireland Web site (external link) was launched earlier this week.

Newmedia (external link), the long-standing Web design agency for Toyota Ireland, asked me to provide all development-related frontend and backend services on the project. I'd like to talk briefly about that work here.

This was a reasonably tricky project for all involved (it is the first iteration of the site not to be handled by the original developers (external link)) due to various legacy issues and the multiple internal and external dependencies which have built up around the site over time.

The majority of early work on my part involved analysing these various dependencies, documenting as I went, and finding ways to maintain backwards compatibility on public interfaces whilst still enabling the new iteration to move forward as envisaged by the designers.

As Joel Spolsky (external link) puts it in Things You Should Never Do (external link), rewriting code from scratch is usually a fatal error. Instead of a rewrite, I put the .NET codebase through a heavy refactoring phase - interfaces were tightened up, class-level documentation was improved, error handling was improved, deprecated functionality was removed. Custom-written data access and logging classes were replaced with SubSonic (external link) and log4net (external link) respectively in order to provide more reliability and flexibility moving forward. This was done in close consultation with the original developers who gave generously of their time.

Having come through the other side of this project relatively unscathed, here's my advice for any developers undertaking a similar project:

  • Define your responsibilities clearly and (within reason) don't operate beyond them.
  • Don't assume current stakeholders will have the level of domain knowledge necessary for the level you'll have to work at. Try to speak to previous developers and tap their domain knowledge.
  • Reuse everything you can, but question its merit before you do. Do not rewrite code unless you absolutely have to.
  • Document your code as you go.
  • Don't waste your time prematurely (external link)- or micro-optimising (external link).
  • Beware of The Iceberg Principle (external link). Project stakeholders unfamiliar with software development will consider the visual interface to be the majority of the work.
  • Build at least a 20% buffer into all your schedules, particularly when working with legacy code.
  • Try to move out of your comfort zone at least once on each project. For example, use an established Open Source library (licence permitting) or try out a new design pattern. A project that you learn nothing new from is worthless to your continued development.
  • Accept that any software system is, amongst other things, a codified set of compromises and that you may have to implement things you think are misguided. Offer your advice by all means, but if that advice is rejected implement and move on.

Dime store advice aside, it will be interesting to see how the new Toyota site (external link) gets received. Why not let me or Newmedia (external link) know what you think?


September 7, 2007

New Identity

No, I haven't changed my name to Homer Thompson (external link).

You may have noticed my shiny new identity adorning this site. Commissioned from talented designer Erin White (external link), I wanted to convey the agile nature and approach of my work; how it's not merely about delivering rote technical solutions, but also about thinking creatively to bring technology, people, and process together for the best overall solution.

I think we've captured those lofty ideals perfectly and I hope you agree. As always, feel free to let me know your thoughts.


August 20, 2007

jQuery

Simon Willison (external link) has posted a nice introductory article to jQuery (external link), my personal favourite from the numerous JavaScript libraries out there. Recommended reading.


August 13, 2007

Shoulders of Giants

Refactoring a reasonably complex class library at the moment, the following is as relevant as ever:

…there are two ways of constructing a software design: One way is to make it so simple there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiencies.

Tony Hoare, Turing Award Lecture, 1980

Developer Tools for Windows

One of my first ports of call when setting up a new development box is Scott Hanselman's site for his handy list of developer and power user tools for Windows (external link). If you're a Windows-based developer check it out.


August 9, 2007

My New Web site Launched

I hope you like it!