Archive for January, 2006

I’ll Be Speaking At Canada On Rails Conference  2

Cat.: Rails
16. January 2006

I am excited to announce that I was selected as one of the 15 speakers to present a talk at the first world wide conference on Ruby on Rails. This conference is shaping up to be one of the most exciting events in software development this year (another one being the RailsConf 2006). It would be a shame to miss it, so if any of you are planing to attend, please pre-register here.

The tentative title of my presentation is “Less Technology — Reclaiming the Software Development Craft, One Scaffold at a Time”. I am not in the position to divulge the topics of the other 14 presentations, but I can assure you that some of the speakers are planing to tackle some of the most contentious and controversial aspects of the contemporary Rails development. I cannot wait to hear all these ambitious talks unfold.

If you’re interested, please drop me a line what areas of Rails development would you like to see tackled at the conference. I’ll see if I could squeeze some of your questions/concerns in.

Ruby On Rails Is Like Red Wine  32

Cat.: Ruby
08. January 2006

Fifteen, twenty years ago North America was a culinary wasteland, save for the rare pockets scattered along east, west and south coasts. A brief trip to places like New Orleans would shock and jolt the palate of the plain white crustless bread, stake-and-potatoes visitors. Of course, let’s not forget other fine culinary spots, such as Manhattan, San Francisco, and several other islands in the otherwise homogenous sea of mediocrity.

Things started to change rapidly in the nineties, reaching levels of unprecedented sophistication in dinning and wining. Today, we can enjoy the incredibly opulent selection offered to us through stores such as The Whole Paycheck (er, Whole Foods), but things were drastically different only fifteen years ago.

I remember how unpopular wine drinking was not that long ago. Especially in my neck of the woods (I live in Vancouver, British Columbia, where most locals still mentally inhabit the 19th century time zone). Up until very recently, this was a beer country. All normal, regular males were expected to drink beer. Wine was mostly available in those hideous 4 litre carton boxes, and tasted like pee that went bad. Anyone caught preferring or, god forbid, drinking wine was declared gay on the spot. It used to be very hard to smuggle a bottle of import wine into one’s apartment.

At social gatherings, wine drinking was reserved for the female population. Men were either expected to chug beer, or go with some hard booze.

Luckily, things started changing for the better, and now we have pretty decent selection of import wines from all around the world. Plus, straight men are not afraid that they’ll be labelled as ‘faggots’ if they are seen drinking wine in public.

What Does Wine Have to Do With Ruby on Rails?

Programming languages and development platforms are kind of similar to alcoholic beverages. Majority of software developers choose products that belong to the beer category. Sure, there’s plenty of variety there, but in the final analysis, it’s all beer after all. Thus programming languages such as Pascal, Perl, Java, C#, ColdFusion, PHP etc. are basically just different varieties of beer (like, dark beer, pale ale, lager, etc.) Languages such as Assembler and C are more like hard liqueurs (e.g. whiskey, tequila, vodka). Languages such as Smalltalk, Python, Lisp, are like white wine — sophisticated and enchanting.

Finally, languages like Ruby (with all its domain specific flavors, such as Rake and Ruby on Rails) are like red wine. Red wine is that special gamut of products that demand incredibly high level of devotion and finesse, thus creating its own breed of aficionados.

And like the friction that wine drinkers were having with the overruling beer crowd, Ruby and Ruby on Rails users are today experiencing similar friction coming from the ‘beer crowd’ of programming languages. Most of the dissent seems to be coming from the ‘plain vanilla’ lager crowd (the Java consumers). There’s also some dissent coming from the ‘white wine’ crowd, but in a much more civilized fashion.

I wonder if the same cultural evolution, that helped promote the spreading of the red wine culture throughout North America, will happen for the ‘red wine of software development’, that is, for Ruby on Rails? At this point, it doesn’t seem very likely, as anyone who’s using Rails seems to be labelled in a knee-jerk fashion as being ‘queer’. It is obvious that the mainstream crowd of software developers (i.e. the beer drinking crowd) is extremely uncomfortable with the uprising of the red wine drinking crowd (i.e. the Ruby on Rails). The beer drinking crowd confesses that they simply don’t get what could possibly be so enchanting about enjoying the red wine.

Hopefully, cooler heads will prevail, and the medical findings that red wine is actually beneficial for one’s health will pave the way toward adopting the red wine consumption on a larger scale.

How’s that for less code?  8

Cat.: Python, PHP, Java
07. January 2006

Bob Ippolito, speaking about the upcoming flashticle, offers proof in the pudding for things I wrote a week ago:

This is a total of a whopping 117 lines of very liberally spaced Python code that defines all three database tables and fully implements every feature of both sample applications.

The PHP version of the pizzaService backend […] is 138 lines of code, is one big security flaw (doesn’t escape SQL properly, big surprise), is MySQL specific, and it doesn’t include the DB schema and can’t create any tables for you (thank you tg-admin sql create).

The Java version of the BirthdayOrganizer backend, which I won’t even bother linking to, is well… ginormous. 246 lines of XML configuration sludge in 5 files, 29 lines of SQL schema in 1 file, and 3004 lines of Java code in 45 files. Holy crap. If you add that all up, the trivial BirthdayOrganizer example is only a hair shorter than all of flashticle! And the BirthdayOrganizer example builds on top of 15 Java dependencies and requires a J2EE server plus ant. Friends don’t let friends code Java. Oh, and it’s also MySQL specific, but you better be damn well sure that there’s a stub implementation you can subclass and an XML file you can mangle in order to support something else if you so choose to write that 200 lines of code to support a single three column table database.