“Explaining current site workflow with the use of quantim theory and contemporary dance.”
Why are you using such an insecure and old browser? Please be aware that this site will not display properly in Internet Explorer 6. You can either upgrade to Internet Explorer 7 or use a proper browser such as Safari, Firefox or Opera.
Recently on Twitter
“@zachinglis are we thinking about the same Rails Underground? The one that only costs just £180 early bird b4 June 25th?”
“@RickNunn aggressive cuddling? That's my favourite sort!! ;)”
Engineering the client
Posted by Jonathan Conway on 2009-02-12 Comments
The problem
So, it looks like in the next few weeks I’m going to be untangling some prickly client side javascript not to mention the html being generated on the server, being vomited into the browser. Don’t get me wrong, I’m not totally innocent. There was a time a few years ago when Rails Ajax helpers and RJS were the new hotness that I too was responsible for architecting such an intertwined morass into a web application.
I can’t quite remember about when I started doing things the “proper” way, it was probably around 2006 when various Javascript libraries started appearing making it so extremely simple to bind events to the dom that I just didn’t have an excuse anymore. It was also with the push to REST and thinking of web applications not just in terms of their UI but also as web services. At first it was like the first time you did TDD, slow and frustrating as you came to grips with this new paradigm. There were times when I’d think how I could of completed the application by now if I just cheated by attaching events inline and spewing server side HTML into the DOM. Of course as the projects grew larger and larger I started noticing an odd positive side effect of doing things the right way and that is it was easier to support sustained velocity.
A common misconception of Agile is that it’s all about getting things done quickly with nothing more than a badly thought out list of requirements on the back of a post-it note and pragmatism as an excuse for shoddy engineering. It’s no wonder once in a while you get some company blogging about how Agile failed within their company. Quite often it wasn’t the Agile process failing, it was the engineered architecture or lack of it that ultimately brought diminishing returns each week to the doomed project.
The Solution
There’s been quite a bit of chat in the past how software engineers are quite happy to architect cathedrals on the server side, worshipping every good design principle and slapping the unfortunate down who dare break the build. But it’s sad, neigh frustrating to see the same intelligent developers go about the client side as if it were some unloved child. A reason I was given a few months ago as to why the client side development had been neglected on a project was that it was impossible to consume JSON and build/alter views on an Agile project where the page design and user workflow would be constantly in flux from week to week. This could be true if the web application was designed purely from rich user interface perspective where a large amount of interactivity was demanded from the user interface. Doing this from scratch without a suitable framework could be a world of pain. However I’ve always found that taking the path of Progressive Enhancement within an Agile project has always delivered consistent and continuous productivity that can be supported throughout a life of a project even as it grows in scope and size. If you think about it, progressive enhancement is better suited to Agile development. It’s always been easier for me or a front end developer on a project to change the behavior of a page through Javascript when there isn’t such a tight coupling between the view and the server.
In the previous paragraph I used the word coupling, a word known and hated by most software engineers. It’s this separation and reduction of coupling that has brought about the popularity of frameworks like Sproutcore that has brought MVC to the client. A framework well suited to the previous problem of what do you do when your client wants the same rich user interaction they get on a desktop application within a browser, but you have to deliver the project in a sustainable way that can be accessed with nothing but a browser (Lynx exempt). With Sproutcore universally available technologies such as HTML, CSS and Javascript can now be used to consume and emit data as JSON/XML on the browser without the need for third party applications such as Flash.
There are a few things to watch out for though. Say, you’re writing your semantic markup and unobtrusively enhancing the view. You decide to bind your events individually to dom elements via ID’s or CSS selectors instead of inlining them. Good for you, you’re now officially less evil. However then your application goes into production and users being what they are use your application in ways you didn’t predict and weren’t in the original interaction workflows. Suddenly they start using the comments feature as if it were realtime chat. You also forgot to implement pagination and the whole page crashes the browser rendering it unusable until your next deployment with pagination in the card set. It could be minutes, it could be days depending on your development schedule and QA process. Something that could of saved you or at least given you vital time to get a fix out the door would have been the use of Event Delegation. Doing this would not have only greatly reduced memory requirements it would have sped the browsers response up a bit. Anyway go read about it on Dan’s blog, he’s far more knowledgeable than I with client side technologies.
Conclusion
So, the point of this article wasn’t to preach the benefits of progressive enhancement. It was to ask software engineers to consider good end to end, server to browser architecture/interaction. To consider the client design in the same careful and loved way you go about your server side code in order to support continued sustainable velocity within Agile projects.
Ruby Manor
Posted by Jonathan Conway on 2008-11-21 Comments
It’s a bit late to announce this but tomorrow at 10am Ruby Manor will begin. It’s a grass roots community driven Ruby conference that’s going to be nothing but awesome. I’ve been very lucky to be allowed to talk about Neo4J at the conference and the Neo4J.rb Ruby wrapper by Andreas Ronge.
Slides will be up on this site after the talk and I think it’s going to be recorded as with the other talks so keep watch on the Ruby Manor site for that.
Humanscale Freedom
Posted by Jonathan Conway on 2008-09-30 Comments
I’ve been lucky enough to work from home lately and coupled with the fact that the new offices don’t have Aerons has meant my back has suffered. I’ve had a bit of a dodgy back since ‘99 after I was injured in a martial arts tournament. Since then prolonged periods of sitting without proper back support can leave me in agony.
It’s been Aerons for me for about 4 years now, so I thought I’d try something else out as although I’ve found them to be very comfortable I often find myself fidgeting in them. Also I couldn’t find a cheap enough Aeron with the posture-fit enhancement as I find that worlds better than the standard lumbar support. Luckily in Clerkenwell there’s a number of office furniture specialists selling ergonomic chairs that I could peruse and try out a few other makes.
First chair to try was an Ergohuman retailing at around £420 inc VAT in the UK. Sure it was comfortable after I’d adjusted it but further investigation into the manufacture and terms of the warranty left me worried. Let’s just say that the 10 year warranty only covers the frame of the chair while the mesh etc are covered by lesser periods. Also I’d bought my mother in law a slightly cheaper chair by the same manufacturer and it lasted less than 3 years. Wasn’t really impressed by that.
It was while I was going through the billionth adjustment on the Ergohuman chair that I remembered that it actually takes me around two weeks before I’ve adjusted an Aeron chair so it’s a perfect fit. In fact it takes me so long to get the adjustment just right that I used to forbid anyone else at my old place New Bamboo from sitting in my chair for fear of the sacred balance being disrupted in the Aeron universe;).
Luckily the next chair I tried out was the Humanscale Freedom. It looks sort of technopunk from the back and it’s got very few adjustments. All I can do is adjust the seat depth, the height and the position of the back rest. Everything else such as the reclining tension adjusts itself as if by magic. This is going to sound weird, but to recline you just lean back and to stop it from reclining you stop leaning back and it holds you in that position perfectly. Meaning there’s no actually fix recline position leaving me to move freely (and stop fidgeting). But let me clarify that although the chair doesn’t have a fixed recline it does support my back perfectly preventing me from falling all the way back, out of my chair and onto my arse.
The nice thing about this chair is that it comes with a lifetime warranty, is more comfortable than an Aeron and cost substantially less than a brand new Aeron with posture-fit. Of course when I say that it’s more comfortable than an Aeron you’ve got to remember that it’s all personal taste and the magic of the self adjusting Humanscale might be a little bit too weird for the average joe.
Out and about in October
Posted by Jonathan Conway on 2008-09-30 Comments
Well Septembers been a nightmare of a busy month for me so it’ll be nice to get out and about in October. Apart from the usual LRUG meetup on the 13th of October I’ll be pottering my way down to FOWA to watch some great speakers on the 9th and 10th.
Another event I’m quite excited about is Merboutpost which is hosted on the days of Merbcamp in the US. The cool thing about Merboutpost is that apart from meeting other cool people in the UK interested in Merb they will also be streaming the talks live from Merbcamp. So it really is the next best thing for someone like me who can’t attend Merbcamp this year.
RailsConf Europe
Posted by Jonathan Conway on 2008-09-05 Comments
I’ve just got back from a bloody great time in Berlin. RailsConf Europe though less well attended than previous years was definitely better than last year.
For one thing I actually found the calibre of speakers to be not only better but also the talks to be a magnitude more interesting than last year. I’m actually looking forward to next years RailsConf and would encourage everyone to to go, especially if you’re in Europe.
It was great to meet so many interesting and talented people this year, these include fellow Cabooser’s, the Exceptional guys (very nice people!), Applicake and so many other great people.
If you’re looking for my slides they should be up on O’reilly RailsConf site or you can get it here in pdf and of course in quicktime format here thoug the pdf version also includes some speaker notes if you’re interested.
Search
Archives
- February 2009 (1)
- November 2008 (1)
- September 2008 (3)
- August 2008 (1)
- July 2008 (1)
- June 2008 (1)
- May 2008 (1)
- April 2008 (2)
- March 2008 (4)
- February 2008 (1)
- January 2008 (1)
- December 2007 (2)
- November 2007 (5)
- October 2007 (3)
- September 2007 (4)
- August 2007 (1)
Flickr
Popular
Linkage
My tumbler
Mor.ph
My Caboose Facebook Profile
New Bamboo
Luke Redpath
Jamie Van Dyke
Peter Cooper
Ismael
Caroline
Monster Gym
Pat Allan
Cristi Balan
Phil Barker
Jaigouk
London Made
1click2fame
Levent