RailsConf Day 2

Urgh, I’ve spent most of the weekend recovering from a cold and lack of sleep, so I’m finally at a point where I can write up the final day of the conference. In the meantime, I noticed that DHH has a great railsconf writeup, which covers many of the things I saw.

In the morning, Jim Weirich kicked off with a talk about how to write good libraries in Ruby. He pointed out that there a lot of really bad libraries out there that do hideous things and have weird side effects. Monkey-patching is OK, in an application, but in a library, you really have to keep control of yourself (“sufficiently encapsulated magic” as I once heard schwern call it). He presented some good advice, but most of it was really kind of obvious if you’ve worked in any dynamic languages before. I did get the impression that there were a lot of Java converts in the audience, for whom this might not have been so obvious.

As a side note, Tom showed me how to use Quartz Composer in the end of that talk. That’s a heck of a cool toy. I must play more.

Next up was why the lucky stiff. It was nearly James Duncan Davidson, as _why was a little conspicuous by his absence. But he showed up on time, and went on to talk about a number of things. Watching a talk by by _why is more like being at the theatre than a lecture. It’s hugely entertaining. If I said that he talked about how to use the * operator (splat), and his lovely sandbox library, it might sound dry. This would be to ignore the contributions of the Dragons, Foxes, Owls and huge cast of characters that assisted him on his journey.

After this, the main talks started. I went to see Rany Keddo talk about “How I turned my Bank job into a rails playground”. His answer: lie, steal, cheat. It seemed to have worked well for him though. The best bit had to be his picture of Gollum labelled as “DBA”. 🙂

After lunch, I went into Sean O’Halpin’s talk, “RoR against the Machine”. But I’ll admit that I wasn’t paying much attention; I was too busy working on my own talk. Which is a shame, as it sounded really interesting. The notion of having Virtual Machines as “MS Office Servers” sounded like a really cool hack.

I did manage to catch the very end of Hampton Catlin on “HAML: Naughty Boys Need Structure”. HAML is an alternative approach to writing pages which aims to sit between the extremes of XML::Builder, which is just code and erb which is interpolated markup. I’m not sure I agree with it, but it’s an interesting experiment.

After my talk, we all filtered into the main hall to hear James Duncan Davidson. His talk was entitled “The Web is a Pipe”. He was talking about how using HTTP as a substrate for integrating web applications is the way to go. Having used FastCGI, I really, really agree with him. Doubtless there are some times when you’ll hit performance issues, but it’s certainly a very sensible default.

The final talk was given by Dave Thomas. This was the most unexpected talk of the conference, and it completely blew me away. He started out talking about terrorism, apropos of the 5 year anniversary of 9/11. This seemed to shock most of the audience (although he didn’t say anything revolutionary—much of it was very reminiscent of Bruce Schneier). But he veered around to talking about risk. And from there to talking about Rails and FUD. And how to deal with it. He dissected several of the common tactics that are used to diss Rails. But, he emphasised, he’s not saying Rails mustn’t be criticised. Just that he wants valid criticism, not straw men. This was one of the best talks of the conference for me.

After the conference, we gradually filtered out towards a rather lovely curry in Soho…


RailsConf Day 1

What I done saw…

Unsurprisngly, after a brief introduction by David Black, DHH kicked off the conference with a keynote speech. Except that having no copy of Keynote on his laptop, he used TextMate instead. Hardcore! He went on to show off the RESTful ideas in Rails 1.2 (due out Real Soon Now™). I’ve done quite a bit of REST stuff at work, and the rails stuff completely kicks the butt of everything I’ve done. It has simple written all over it. But it’s not just the server! They’ve implemented ActiveResource, which is an ORM for REST based web services. So you get client and server! He also discussed the next project, SimplyHelpful which is aiming to clean up the views a bit. Looks really neat, but not scheduled until Rails 2.0. But it’s a plugin if you want it. Lovely.

P.S. deprecation warnings will appear in 1.2 as well. Pay attention; those things are gone in 2.0.

Afterwards, Kathy Sierra talked about passionate users. I have to admit to finding this one a little bit hard to follow. That’s because I do so little design I guess…

I wanted to see Dann Webb talk about the Unobtrusive JavaScript Plugin. Unfortunately, it “sold out” and I couldn’t get in. Instead, I elected to see Dave Goodlad talking about Rails speaks C. This was actually a really nice talk. A single topic well covered. He talked about how to write C extensions in Ruby, and then covered the use of BackgrounDRb for long running processes. Really useful.

Lunch was served in the conference venue itself, which I found a little odd. On the other hand, it was a great way to mingle with all the other delegates. But you inevitably get drawn to people you know… I quickly found Tom and Simon. Given that between us we are PHP, Python, Perl and JavaScript coders more than Ruby, it gave an interesting slant on the talks!

Post lunch, I listened to Jamis Buck talk about all the shiny new toys in Capistrano 1.2 (the shell is the big one, but parallel execution looks real handy too). He finished his talk early and then asked the question “Who doesn’t know what capistrano is?” I ducked out at that point to go and buy a copy of Building Scalable Web Sites from Josette on the O’Reilly stand. Simon mentioned it had a great chapter on Unicode, so I cribbed a few bits I’d missed for my talk. 🙂

For the next slot, I watched Alex Payne talking about “Securing Rails—a whole stack approach”. He covered a huge amount of ground in a fairly short time. From the obvious things like SQL Injection, XSS, CSRF all the way down to databases and firewalls. He gave out loads of tips, which I still need to sit down and digest. #1: Use h() everywhere!

I was really curious to see Simon talking about Django and what Rails can learn from it. I have to say, Django looks hugely impressive. It’s clear that they’ve taken a very different approach to Rails in many ways yet still come out with something similar. Personally, I loved the way in which Django uses very richly specified domain models in the Python classes in order to build up an “instant” admin interface. Really cute stuff.

I’d talked to Till Vollmer beforehand about his talk on Localization. It turned out we had quite a few slides in common. However, the rest of slides gave a good overview of the seemingly myriad array of plugins available for i18n and L10n for Rails.

After the sessions, there were “Drinks and Canapés” served. The drinks were good, the canapés slightly miserly, so I headed off to a noodle bar with a few guys before the evening session. I’m not sure how great the idea of the evening session is. I was alright because of the food, but some people must have been getting really hungry. 🙂

Anyway, with 6 members of the Rails core team assembled, David Black fired off questions submitted by the audience. There were quite a few insightful ones in there, but I liked:

Q: When should you not use Rails?

DHH: Lots of projects come with an “Enterprise” label and are doomed to fail, regardless of technology. Please don’t let Rails be associated with them. 🙂

Post-Q&A, DHH got to give the last part of his talk from the morning, which he hadn’t given because of time constraints. This was basically an extended rant about Vendoritis. He used the recent security incident as an X-ray to analyze the rails community and found it suffering from Vendoritis (entitlement & indignation). He concluded that we have to help make the community a better place in order to try and solve things. Get involved. Make it personal. It’s everybody’s job to keep the rails community healthy.

However, the funniest bit was his translation of the MIT license: “I don’t owe you shit”. (in response to some of the whingers)

Thanks to my ineptitude at advance planning, I had no hotel room, so I had to head back to the train pretty sharpish after that…


Unicode for Rails

I finally gave my talk this afternoon. I rushed through things in 40 minutes; I was planning on 45, but I started a little late due to microphone difficulties.

The talk seemed to go down well; a few people came up to ask questions afterwards. My official hecklers, Tom and Paul were noticeably silent. They didn’t try to pedant-me-to-death afterwards, which is good. Although it probably means I had too much detail in there for mere mortals!

I’d also like to give a huge bouqet of thanks to the hyper-lovely _why for his fabulously encouraging words along the way.

Anyway, please take a look at the slides for Unicode for Rails if you fancy. One thing I added at the last minute and didn’t get a chance to show on screen was the links slide. In particular, I recommend checking out Julik’s Unicode Slides.

I practised by giving the talk to a collection of fluffy toys that we have around the house. We now have the most well-unicode-educated giraffes in existence, I suspect. 🙂

On a slightly less fun note, I’ve just read Tony Finch’s summary of UTF-8 in email, which is far, far hairier than in HTTP (which has most of the complications built in at least). Worth checking out if you do much email.


RailsConf Europe is Over

I’ve gotten back from RailsConf. I actually got back a few hours ago, but went to bed and couldn’t sleep (idea! ping! awake!). So, I thought I’d start writing up stuff whilst I thought of it…

The conference itself was pretty well organised by SkillsMatter and RubyCentral. There were a couple of minor hiccups which caused confusion—the main one being the rescheduling as some talks got a much stronger interest than expected, meaning that they had to be moved to larger rooms. Thankfully, there were helpful little orange elves to answer questions all over the place, so it wasn’t a big problem.

One slightly unfortunate behaviour was the shape of the venue: three tracks were on the lower ground floor; one was on the 2nd floor. So there was a lot of healthy exercise to get the Rails geeks going up and down stairs (the lift was too slow!) But the venue as a whole was very good. Extremely central —200 yards from Tottenham Court Road tube station.

The wireless was terrible. That seems to be standard for conferences unfortunately. It seemed that the DHCP server was handing out 24 hour leases, and then only 100 of them in the main hall, which was a real pain. At least it meant I concentrated on taking notes!

All the talks were recorded and should be up soon, hopefully! I really want to catch some of the ones that I missed. The best thing I can say about this conference is that I was incredibly torn between the choice tracks. They had a fantastic array of people and ideas.


Pizza On Rails

I’ve just gotten back from the Pizza on Rails pre-conference event. I was a bit nervous, because by all accounts I knew nobody who was going. Thankfully I bumped into Paul Hammond within 5 minutes of arriving. He introduced me to Rob who deals with That sounds like fascinating stuff—over 12Tb of data, including all past legislation and amendments. Lots of SGML though, poor man.

In turn, Rob introduced me to Paul Battley who will be heckling my Unicode talk. I’d better tread carefully. 🙂

Eventually, we wandered over to another pub, which was slightly less noisy. The thunder storm going on around us was fabulously entertaining.

At the pub, I found Dan Webb who graciously explained the innermost secrets of the UJS plugin, which brings unobtrusive JavaScript to rails in a rather lovely way. I’ll definitely have to look closer at how that works. I owe Dan a drink or two for the time he spent talking slowly to me about various bits of JavaScript. It’s really great that somebody is willing to take Rails’ JavaScript usage forwards like this.

Anyway, now I’m at the office surveying the remnants of the same storm that I have to cycle home in. Bleargh.