Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 159

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 162

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 165

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 168

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 171

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 173

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 175

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 197

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 201

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 224

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 225

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 226

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316

Warning: Creating default object from empty value in /home/jfcouture/jfcouture.com/wp-content/themes/platform/core/library/class.layout.php on line 316
Montreal On Rails Second Edition Report

Last night was the second edition of Montreal On Rails, with 50% more stuff! (3 presentations instead of 2) My thoughts on the presentation:

First up was Chris Scott, who presented the extjs Javascript framework. Notes to future presenters: please make sure you take 15 seconds to explain what the framework is and why I should care at the start. Don’t wait 5 minutes where you’re setting up your example to finally drop a ‘btw, extjs is a widget framework’. The presentation started slowly with basic stuff and moved on to bigger and better things at the end. I was really impressed by the layout management possibilities that extjs offers.

There was a lively discussion after the presentation comparing extjs to Protoype. Someone pointed out the obvious that prototype isn’t a widget library, but extjs seems to also cover a lot of what the prototype/scriptaculous combo can do.

I’m not a fan of javascript widgets library. I just don’t think it’s a good idea to want to emulate all desktop application functionalities in a web application. Working with the constraints of the web browser forces you to look for simpler alternatives.

Second presentation was by Chris Lamothe who did a demo on how to add user authentication to your rails application using acts_as_authenticated. It was geared toward newbies. He also briefly mentioned a plugin I didn’t know about, role_requirement, that adds basic role based security to acts_as_authenticated.

“Client-side debugging in Firefox” was the title of the last presentation, by Terje Tjervaag. Actually, he quickly presented a couple of Firefox plugin like Web Developer Toolbar, Firebug and YSlow. If you don’t know about these plugins, download them now! There’s no way I’m going back to using Firefox without Firebug (except for the increased slowness and memory usage). It allows you to poke at and modify anything in your web page, live. Terje seems really knowledgeable about testing the view/javascript/browser issues of an application and I hope he can do a more advanced presentation someday explaining how he does it. Right now, my automated testing stops at the models and controllers.

Suggestions for next presenters: although it’s nice to show live how to do things, you don’t have to type everything in front of the audience, especially when we can see the complete examples commented just below what you’re typing. It’s OK to copy paste. You can also have a basic rails application already setup with what you need. This would help speed up presentations next time.

I hope I don’t sound too critical of the speakers. They did a really good job and I realize that speaking in front of people is not easy. I wouldn’t have done better myself.

The best part of the night was after the meeting, as we went to McClean’s for burger and beer. I had an awesome discussion with Marc-André Cournoyer (read his report), Carl Mercier and Francois Beausoleil (who will be doing a presentation on piston next time). We exchanged war stories and talked about every subject concerning rails from deployment to testing to plugins we use. I hope we can do the same next time!

Note: The next meeting will apparently be at the StandoutJobs office. I bet this is just a ploy by Fred to make sure every rails programmers in Montreal wants to work for them. ;)

Popularity: 23% [?]

 

8 Responses to Montreal On Rails Second Edition Report

  1. I would have to agree with your critique of the presenters. I was torn on how to go about doing things, but had timed it to under 20 minutes at home. Unfortunately I type a lot slower in front of a crowd, and I repeat myself a bit more too. At one point I originally had all my code ready to cut and paste, but then realized everyone would see it as I was doing it and that would defeat the purpose. I still thought it was smart of Chris to have his code in comment below just in case he messed up, but you’re right, it does add an unnecessary step.

  2. jfcouture says:

    My critique was about the presentations, not the presenters. ;)

    If I ever do a presentation, I know that my hands will be shaking way too much to even be able to write a single sentence on a keyboard.

    You just raised another interesting point for future presenters: your presentation will take twice as much time in front of the crowd as when you practice at home. At home, you’ll be speaking faster and your demo will go perfectly. Even if you finish before time live, that just leaves more time for questions!

  3. [...] installed it yet. Used it at work today to great effect. You can read more reviews of the night here and here, while photos have been posted on Flickr and videos might pop up on Youtube. top [...]

    • Daisy says:

      I was a sucker for pinikcg the wrong langue to start with. University didn’t help with this teaching both a php and a JSP module, I chose JSP to learn further for my dissertation due to the average wage of JSP developers. Only after did i find the demand for jsp is very low compared with other languages .

    • Andesi says:

      Specifically about up and down. up is called from a cpmoonent at the end of a string of n owners to locate one of its containers. In particular, the first one that matches a certain selector. I see some problems:- Another programmer (or the same after a few months) can change the target container so it doesn’t match the selector anymore, so now he has (at least) two things to change- Or he could insert another matching container in the line, so now the selector gets (may get) the wrong container.- Or the up-calling object starts being used in several places, some of them have the intended container, some of them don’t- In a container-nested-line of n containers, with a selector that implies k comparisons, in the average case up makes nk/2 comparisons.Proposition: I have succesfully changed the up uses I’ve found with:1. state that the event eventName has to bubble with setBubble()2. instead of calling up(), call fireEvent()3. in the cpmoonent previously searched with up(), put a listenerThis avoids the points before and, instead of nk/2 comparisons, it’s just n/2 indirections.Besides, you can set listeners in several points of the owner-line, unlike using up()About down(), it traverses the whole subcomponent tree, those are n cpmoonents, with n usually greater than in the up() case.Again, for a selector with k comparisons down() makes nk/2 comparisons on the average case.Use of variables have 0 comparisons.

  4. Chris Scott says:

    Thanks for the critique, Mr. Djief.

    >I just don’t think it’s a good idea to want to emulate all
    >desktop application functionalities in a web application

    I disagree, of course. since I started using Ext, I spend almost no time niggling with momentum-sapping css layout / cross-browser issues. A javascript widget framework, particularly Ext, frees you to focus on solving what it is your client is paying for.

    wouldn’t you use a datagrid widget at least?

  5. Fred says:

    Haha, nothing wrong with that! ;-)

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>