ucantblamem

Red with passion

18th Feb 2007

Last night I made an exciting discovery/revelation, but first I want to spend a couple of paragraphs setting the scene in my working life so far. I warn you now, they do jump a little, but hopefully you will get the picture.

In mid 2004 I stumbled across a web-design company called 37 Signals, while reading through their usability/accessibilty book “Defensive Design for the web“. 37 Signals (at the time) had just released an amazing web-based application called “basecamp” and in the process had created a framework called “rails” in the “ruby” programming language. I had a quick look into this rails thing, which looked like an astonishingly quick system for development, but sadly I never really had the time to pursue it fully and returned to my development of KindaContent (CMS) in PHP (and standards-based XHTML/CSS).

A couple of times over the last two or so years I have briefly revisited Rails (including an attempt at developing this site using it in 2006), but I never fully grasped the concepts and lazily went back to what I was doing before.

In Janauary 2006 I started work at SM2 (my current employer) as an interactive designer; Producing flash work, CD-ROM’s and site designs for the Joomla! CMS (as standards-based as it would allow me). In November of that same year my role changed dramatically as I started doing pretty solid PHP development (again on the Joomla! CMS).

My role has recently changed once again… I am now a User-interface developer. Considering the way SM2 is consistantly growing, we obviously are looking for good people to handle the development which allows me to focus on usability, accessibility and generally fixing up Joomla’s (relaxed?) use of HTML. I will still be able to do some PHP development, especially creating more modules/components to leverage the design team, but mostly I will be focusing more on making people-friendly software.

About a month ago now, I made a post regarding my distaste for the ugly manner in which Joomla! goes about its’ “business”. At the time I was also starting to realise some limitations of and my own irritation towards PHP… XHTML and CSS are such “beautiful” languages; They’re very straight forward and logical - well constructed XHTML and CSS looks like a work of art and makes me really happy.

Over the past year or so, as my frustrations with PHP and Joomla! have grown, Rails has become that “beautiful dream you have over and over again” - in my mind. About half way through reading “Advanced PHP development” it hit me like a brick to the head; The reason that I’m getting frustrated with PHP is because it’s sloppy! Not only that, the whole language is one giant hack - which is exactly what most Joomla! components are.

Anyone who knows me well, also knows that I’m a neat freak - everything has its’ place and stuff that I no longer need heads straight for the bin - which is probably why I have such an affiliation with properly seperated and neat XHTML/CSS.

Almost immediately after making my realisation about PHP, I visited the Amazon store and purchased “Agile web development with Rails” (second edition). I’m about halfway through reading it and I can’t tell you how lovely this framework is. There are some stark differences between this book and most others devoted to programming; The first and most pertanant being that there’s a big lack of commenting through the code. This isn’t an oversight by the Authors, it’s just that rails doesn’t NEED a lot of commenting. Rails is simply built in such a way that it reads back like english; Everything has a meaningful name (just as well-formed CSS should).

The other thing I really like about this book is that they actually take you through building an application (up front) before you even learn about the different components of the Rails framework. This is highly irregular for a programming book, but an immensly good way to learn such a well built framework.

The more and more I read, the more and more the philosphies remind me of standards-based deveopment: Striving for quality, meaning and serving people over all else. It really does make programming fun! (Yes, I said the word “fun” in the same light as programming).

So, I have had a lot of revelations in the past month and I’m already onto building my second (deployed) Rails app (this one will be commercial). BUT, it wasn’t until 20 minutes before starting to write this post that I actually looked up Ruby on wikipedia, which had this complete gem (pun intended) on the Ruby (programming language) article. I’ve highlighted my favourite parts:

Matz’s primary design consideration is to make programmers happy by reducing the mental work they must do, following the principles of good user interface design. He stresses that systems design needs to emphasize human, rather than computer, needs:

Often people, especially computer engineers, focus on the machines. They think, “By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something.” They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.

To hear that from the inventor of a programming language is highly unusual. It does, however, make sense when you put it in the light of David Heinemeier-Hansson’s philosophy for Rails - which is almost identical.

I guess Ruby has been courting me for a while, when I look back at it, but we’ve just never been properly introduced!

Leave a Reply