November 2011 GTUG Meet

For the November meet, we decided to run a panel discussion again as the previous one was pretty well received. This time the focus was on the use of Python, Ruby or Node.js for web development and it was pitched as a battle between the different technologies. We got an experienced representative from each camp to share their thoughts – Declan McGrath (talking from the Ruby corner), Alan Kennedy (taking from the Python corner) and Richard Rodger (talking from the node.js corner) – and we coaxed the shy and retiring Joe Drumgoole out to chair the event. We had a fantastic response to the event with over 100 folks turning up for the showdown.

To kickstart the panel, Declan, Alan and Richard each had to speak for about 10 mins about their technology giving a bit of history and highlighting how it is used in a web development context.

Declan went first, giving some background on both Ruby and Rails. He highlighted the fact that Ruby combines both OO and functional programming thus making it a powerful, flexible language. He noted some of the key points of Rails – MVC, good JS support, intelligent routing, easy REST support, etc – and commented on some of the newer features which are appearing – asset pipelining, http streaming etc. [Slides here].

Alan spoke next, focusing on the requirements of web frameworks in general and how Python fits those needs. Alan highlighted issues including routing, form handling, security, internationalization, templating as important issues for web frameworks. Alan noted that Python has a large number of options for web frameworks, ranging from very simple frameworks such as bottle to very comprehensive ones such as django – developers need to clearly understand their requirements prior to choosing, but Python certainly offers something which will meet their requirements. [Slides here].

Richard then got up to talk about the new kid on the block which is receiving a lot of attention right now. Node.js is a server side Javascript framework which is designed to run in a Chrome V8 engine. A key characteristic of node.js is that it is not thread-based; rather, it’s based on events, making it much lighter than thread-based servers and thus delivering excellent performance. Richard provided some performance data from some sites he had worked on which really showed how well it can work in production systems. He then highlighted some of the pros – performance, can be written in same language as front end leading to developer productivity – and cons – you’ll probably get fired for suggesting it be used in production! [Slides here].

After each person had set out their stall, Joe asked a few questions and then it was opened to the floor. The questions were quite varied and it is difficult to capture them meaningfully here, so I’ll just note a few interesting points that were made.

  • Node.js is wanting when it comes to MVC, but a common design solution is to just use the backend for serving JSON encoded data and make the front end responsible for structuring the information;
  • RoR is probably the most in demand in Dublin at the moment;
  • The education system is not doing enough to serve industry needs relating to these technologies, although there are some folks who are trying to move things forward;
  • Python has excellent integration support for many different types of systems – it is quite straightforward to integrate given libraries in quite a few languages into Python code (Dec noted that Ruby must have some support for this, given that most Gems are written in C, but was not so clear on the details).

There were some other questions about comparing each in terms of longer term maintainability, in terms of whether they were really well thought out systems for their problem space or whether they brought a lot of legacy baggage thinking, whether runtime performance was such a critical issue  and more, but I didn’t get to capture all of these points.

Joe summed up by noting that the best web framework for you is almost certainly the one your are most familiar with – this will enable you to get stuff out the door most quickly. That said, it is useful to have awareness of the pros and cons of other technologies. Of the technologies discussed, Python is probably the most general in terms of how it is used – for web development, it has a rich set of web frameworks which is both good and bad; Ruby on Rails is a very well designed system for web development and can do most things very well, but might lack some of the more esoteric functionalities that exist in Python land; node.js offers the possibility of writing front end and back end code in the same language and achieving high performance, although it is still in its infancy and has many limitations when compared with the others.

While the session was pitched as a battle, there was never going to be any single winner – the purpose of the discussion was to explore the strengths and weaknesses of each of the different solutions and I hope that the folks walked away from the session having obtained some greater handle on this.

I had promised to talk about Google Developer Days in Berlin, but as the panel discussion had a bit of momentum, we decided on the fly to keep it going and drop the GDD talk – for anyone who is interested, the slides I had prepared are here and I wrote a blog post on it here.

There’s nothing lined up for the last Tuesday in December as it’s a bank holiday – we might do something small between Xmas and New Year but it’s less likely than more likely.

Sam Dutton will be with us at the end of Jan to talk about Chrome Development Tools.

We’re working on getting the video from this session online – will tweet when this is ready for consumption.

About morphousmusings
Engineer, thinker, tinker, drinker, talker, walker, hiker, biker, liker, lover

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: