Skip to Navigation | Skip to Content



MerbCamp and Merb | October 15th, 2008

The first MerbCamp went down in San Diego this past weekend and Nitobi joined the fray in force by sending four Ruby hackers and as an awesome sponsor.

Sprint!

Brock Whitten (aka sintaxi), Rob Ellis (aka silentrob), Joe Bowser (aka infil00p) and I (aka brianleroux) arrived in sunny San Diego on thursday evening. After a good nights sleep, we dispatched to the Merb Sprint to help the guys get Merb 1.0RC ready for prime time.

I’m not entirely sure I personally was much help; but we did uncover bugs and tested for new ones. First impression: the Merb core is a solid group of guys. They care about a quality release before anything else and a quality release is bug free and simple for anyone to get up and running quickly.

What I do know is that I learned a tonne. I was a real treat to pick up Merb from the guys who are authoring it. Not so much about Ruby, how to or anything. I learned about the motives and philosphy behind Merb. The Merb opinion, if you will.

In Merb’s opinion you should have an opinion of your own

Merb is the evolution of opinionated software popularized by Rails. While Merb does possess very strong opinions they remain weakly held. Its about optional opinion and future proofing technology. Sure, you can be up and running with a default Merb stack in couple of minutes (and build yourself a shitty blog in another three). If you don’t share an opinion about the choice of ORM, templating or JavaScript technology (or any aspect of Merb actually) it is easily customized, extracted or supplanted.

Opinion, practice and technology change. The variability of change is the only constant in technology development we can depend on. The flaw with the Ruby on Rails framework is that opinions do not scale. Choosing a technology or approach and prescribing to it wholly is choosing maintenance hell if not historical obscurity. Enabling software for change and evolution is future proofing it. This is not about convention over configuration. We can have convention, less configuration and options at the same time. Merb is on the path to achieving a Ruby web framework that does this.

The first key architectural choice in Merb is that absolutely everything is a gem. This enables some rather obvious benefits of package, dependency management and of course a unified distribution model. Merb is innovating here utilizing the concept of a meta-gem which is just an empty gem with dependencies for merb-core, merb-more, etc. I’m expecting this concept will influence future versions of RubyGems.

The second critical architectural choice is a supported Public API and event hooks for extending and integrating directly into Merb. Adding functionality via monkey patching is powerful and utilized extensively by Rails. However, monkey patching (and alias_method_chain) is a slippery slope that falls into the dark pit of unexpected consequences; It leads to mysterious behavior violating the principle of least surprise and, as an effect, collaborative extension and maintainability becomes increasingly difficult. Having a supported public api that the core development team is committed to maintaining enables extension and integration in a sane and maintainable way.

Read the code

Having absorbed all this. I promptly returned to our hotel and started pouring over Merb’s code. Well, I might have had a few beers first, but seriously: read that code. Merb’s codebase chooses clarity over cleverness. No fucked up metaprogramming backflip nijitsu (perhaps a little bit but its well documented: mime.rb for example). Well documented. Clearly organized. It is some of the very best Ruby code I’ve had the pleasure of looking through. I came to Merb largely at Brock’s encouragement and its internalized attention to performance. I’m staying for the readable code and philosophy.

The actual Camp

Others have done the blow by blow blogging and, I personally twittered the shit out of each session, so I’ll spare you the nitty gritty details of everything. On a higher level: this was one of the very best organized events I’ve attended. The wifi was strong but if that wasn’t enough the venue had drops for power and ethernet (and of course Joe had a lan cable) in every single seat. Each presentation was streamed live. IRC was packed. The lunches where great. The swag kicked ass (tshirt, flipflops AND a frisbee). The content of each session was meaty and everyone speaking was candid, open and genuine. Awesome? Yeah man. Awesome.

Thanks MerbCamp. We’ll see you next year.

Posted in JRuby, Uncategorized, brian.leroux, nitobi, ruby, software | No Comments » | Add to Delicious | Digg It

Ajax and Scotch, Patio edition | July 7th, 2008

Nothing beats a cool beer (or perhaps a delicious scotch) on the patio in the summertime. Come join the Nitobi hackers on the patio between Shebeen room and the Irish Heather this Thursday (July 10, 2008). We’ll be up to our usual tricks: discussing the latest technology with a fresh perspective.

Posted in Uncategorized | No Comments » | Add to Delicious | Digg It

Rogers Wireless Customer Service Failure | June 17th, 2008

My wallet and phone were stolen from the YWCA gym right out of my locker. The thief must have used bolt cutters when nobody was around. It was a real disappointment but the staff where helpful and after hours on various automated systems I had a police case number, my credit cards canceled and my phone locked so nobody could make long distance calls.

The bank was helpful and sympathetic. The credit card companies took it upon themselves to call me and the police to follow up about fraudulent charge attempts.

However, Rogers Wireless left me feeling like shit.

I called Rogers Wireless that night and they assured me the phone was locked so no calls could be made and to just go to a store the next day and they would help me get a new phone and SIM card. When I arrived at the store they told me I had to purchase the new phone and renew (thus extend) my contact. ‘This was not the impression the agent on the phone gave me.’, I said and they responded, ‘Those guys are retards. We only their sell phones. We’re like a car dealership.’. I’m not kidding you. That is what a retailer, with the Rogers sign and exclusively Rogers products told me. Those guys are retards? They had the good nature to call customer service on my behalf and things degraded to, ‘Its your own fault your phone was stolen SIR, not ours’. I felt like I was being scolded for even thinking they were going to help. I bought a new SIM card deciding I’d find a phone on my own and the agent hesitantly informed me, ‘uuuhhh, your phone was never locked’. I called customer service again and the agent sneered ‘those retailer people don’t know what they’re talking about.’ No long distance calls on my phone, at least.

I walked out tired, angry and disappointed. Negative and poisonous.

This incident represents an epic failure of a brand experience. The people in the store and on the phone represented a confidence destroying lack of professionalism and complete disregard for my misfortune. As a customer I, perhaps naively, expected to be treated better than that.

With complex pyramid scheme like plans, disparate messaging, disregard for the customer and belligerent employee hubris I doubt Rogers Wireless can continue to be a success as more companies enter into the wireless space. As a human being first and a consumer second I am now actively seeking better options.

Posted in rant | 5 Comments » | Add to Delicious | Digg It

Ajax and Scotch - TONIGHT! | May 22nd, 2008

At the Shebeen Room. Be there!

Posted in Uncategorized, air, ajax, brian.leroux, flash, flex, papervision3d, rant, software | No Comments » | Add to Delicious | Digg It

Enumerate a range of dates with Ruby | May 5th, 2008

Quick snippet, having fun with dates.


require 'rubygems'
require 'activesupport'

date_range = (DateTime.now-10.days)..DateTime.now

date_range.each { |e| puts e }

Posted in Uncategorized | 1 Comment » | Add to Delicious | Digg It

Papervision3D Training w/ John Grden | May 5th, 2008

This past weekend James and I had the pleasure of taking in some Papervision3D training.

Papervision3D, for the uninitiated, is a full fledged 3D engine in ActionScript 3. Its blazing fast and totally sweet.

John Grden is a great teacher and, as a result, the course was very approachable for programmer and designer alike. He was careful to ensure everyone was working at the same pace and no one was left behind. His descriptions where clear and whenever in doubt he pointed out additional resources for our own study outside the class.

Day one was high level, API and capability overview. Quick demos of the overall Papervision architecture, history and direction.

Day two was deeper, looking into the more advanced capabilities and getting us to code for ourselves. Animation, interactivity, effects, colladas and performance tuning. I had a little trouble getting Flex Builder to play nice but after some gentle coaxing I was able to create an extremely rudimentary demo, by hand, with no trouble.

Papervision is an impressive platform. The potential for creating an innovative user experience is there from enhancing your existing RIA with some simple effects to full blown game development. Not to mention a 3D AIR application. I found the API to be very approachable once I understood the concepts behind the library.

I’m looking forward to building something a little more substantial with it … soon! Until then, here’s some resources:

Main site:
http://blog.papervision3d.org/

Documentation:
http://www.papervision3d.org/docs/as3/

Developers blog:
http://dev.papervision3d.org/

Mailing list:
http://osflash.org/mailman/listinfo/Papervision3D_osflash.org

Posted in Uncategorized, air, flash, flex, papervision3d | No Comments » | Add to Delicious | Digg It

Ruby case statements in ERB | March 14th, 2008

Fail spectacularly if you happen to indent incorrectly (but not intuitively). Thankfully, Jamis Buck points out a simple solution on the Ruby mailing list:


<% case number
when 1 %>
one
<% when 2 %>
two
<% else %>
something else
<% end %>

Thank you Jamis!

Posted in Uncategorized | No Comments » | Add to Delicious | Digg It

Ruby recognized | March 10th, 2008

Each year O’Reilly publishes on their blog a State of the Computer Book Market analysis. It is an excellent indicator of computer programming language trends. Geeks love their books and programming geeks adorn their desks with as many reference books as possible. Despite living in a hyper connected world we cannot risk even one moment without access to the more obscure and arcane intricacies of our chosen languages and toolsets.

And Ruby is cleaning up: officially recognized as a “Mid-Major Programming Language”. And in good company too with Visual Basic and ActionScript.

Perhaps its the growing body of knowledge or perhaps its just the beauty and simplicity of the language itself. Probably a little bit of both. Its nice to see such a fun and rewarding environment growing into the hearts of the mainstream. We love Ruby here at Nitobi and we have grown a good number of Ruby projects and expertise. With Java and, soon, .NET support we’re looking forward to bringing Ruby to even more places. And adding more books to our shelves!

Posted in .NET, IronRuby, JRuby, java, nitobi, rails, ror, ruby, software | No Comments » | Add to Delicious | Digg It

Tab sweeping | February 8th, 2008

Ever since Firefox introduced tabbed browsing and session saver kept things alive after crashing, surfers everywhere use the tabs to store the sites they’re interested in and want to take a closer look at — but aren’t going to bookmark — at least not yet.

In the “Getting Things Done” philosophy we should always Do, Delegate or Defer any action item immediately to stay on task, be productive and focused. Well, as much of a GTD guy I want to be I always end up with a swath of tabs by Friday. So be it. I’ll defer them to this blog.

More REST and Less Code with Merb

The RESTful way of development is old hat for many Rails guys at this point and the one common complaint is the repetitious boilerplate scaffold code with respond_to for each mime type. Merb is learning from Rails and, in particular, the Merb Responder and “provides” inteface abstracts these idioms from the controller cleaning things up. I love it.

Flash based PDF viewer

Viewing PDF documents isn’t too bad but if you can avoid the jarring effect of the loading dialogue and provide a slicker web based interface then why not. Check out Issuu for their inspired user experience that is web based and by far one of the best viewers for PDF I’ve come across.

RESTful Authentication: The Definitive Guide

Not only authentication but authorization with roles and permissions and, possibly the kitchen sink too. This is the most comprehensive guide I’ve seen to the common pattern of user accounts in a web based software system.

Posted in Uncategorized | No Comments » | Add to Delicious | Digg It

Ajax and Beer 2.0 | February 6th, 2008

Tonight its on, like Megatron, another installment of the formidable meetup. Now with more beer!

If that isn’t enough, you find myself and other Nitobians out tomorrow night at DemoCamp Vancouver. Do we have something to demo? Come and find out.

If demos and presentations aren’t your thing then do not despair, my hacker friends, this Sat we’re hosting Nitobi Hack Day 2.0. We have beer. We have shwag. We have giant sandwich. Join us in capturing the elusive Balmer peak and score some free stuff.

Posted in Uncategorized | No Comments » | Add to Delicious | Digg It