Archive for June, 2006

One of these kids…

June 30th, 2006 3 comments

is doing his own thing. A few months back, Kathy Sierra blogged about the books that are on her “virtual coffee table“. Maybe this is obvious, but I’m an absolute sucker for books – in grade school, we’d order books from these little catalogs (I’m sure it was a fundraiser of some sort) and inevitably my parents would spring for more than a couple. I have very found memories of “delivery day”, walking up to the front of the room and taking my bushel of books back to my desk. A couple of times I weaseled out of the annual holiday play just so I could read during the practice sessions and if you’ve ever seen my Amazon account or, well, walked through my house, you’d know I’ve still got a thing for books!

I’m also a fan of lists like Joel‘s management training program or Guy Kawasaki‘s ten favorite books (and you can see what I’ve been reading…though it’s a bit out of date and of course my proverbial book shelf). Anywho, the other night I looked over at my coffee table and saw this rather interesting collection of books (sorry it’s a little blurry).

Books on my coffee table.

Ironically, I bought Beyond Java at JavaOne and, well, I think you’ll see a trend here (as evidenced by these entries from RailsConf). Can you tell which book stands out? I bought Java Puzzlers because I’m pretty sure anything by Bloch is worth reading (I cannot wait for the next edition of Effective Java) and, well, his talk at JavaOne was darn interesting. Anyway, I’m heavily influenced by guys like Dave Thomas, Andy Hunt, Justin Gehtland, Stuart Halloway, Mike Clark and several others (hmm, common theme – NFJS!) and given their propensity towards things other than Java I’m listening. That’s *not* to say I have anything against Java nor do I think Java is going away, in fact it bodes well that Sun is pushing hard into the dynamic language world (take a loot at Phobos). BTW, the other two books (as if you needed me to tell you) are Agile Web Development with Rails and Enterprise Integration with Ruby.

Just as a golfer uses more than one club to play 18 holes, I think a competent developer should know more than one programming language. Saying that I’m spending most of my spare time looking into alternatives to Java is simply a way for me to expand my mind. I was a tad irritated by all the Java bashing last weekend but there is an awful lot the Java camp can learn from the Rails guys (and vice versa I should add). I don’t know where Ruby or Rails breaks down yet, but I’m pretty darn interested in finding out…

Categories: Development, Off Topic, Rails, Rants, Software Tags:

FoA Bits and Pieces

June 29th, 2006 1 comment

Ryan and I had a rather interesting package waiting for us yesterday – a translated copy of Foundations of Ajax (I think Korean, but we’re not really sure). I dig the new cover and I’ve got to say, it’s pretty cool to see our book in a different language!

Here are a couple of pix:

Foundations Translation Front Cover

Foundations Translation Back Cover

There’s also a new review on Javalobby. I would like to say that at least a few of the examples run without a Servlet container ;) and given this particular site’s audience, I’m betting people will be just fine. We certainly could have delved into patterns a bit more and I would direct people to Christian Gross’ Ajax Patterns and Best Practices and Michael Mahemoff‘s Ajax Design Patterns (also check out his excellent Ajax Patterns web site).

All in all, a pretty positive review. As I’ve mentioned before, given more time, we would have written some examples in some other server side languages. I was happy to hear that the book has helped the reviewer (Schalk Neethling) and thanks for noticing the tools chapters – lots of people seem to miss those somehow!

By the way, that *was* Ryan on Future Tense a while back talking about Ajax…

Categories: Ajax, Book Reviews Tags:

Who Should Run Software Companies?

June 27th, 2006 No comments

A couple of weeks back, Joel posted My First BillG Review which was mostly about the time Bill Gates reviewed his spec for the Basic programming language. While a very interesting read, there were a few quotes I just had to call out. Love ‘em or hate ‘em, Microsoft has been very successful (sometimes employing questionable practices) and Gates is a key aspect of that – he’s a darn smart customer.

Joel has a couple of quotes that I just had to call out:

Watching non-programmers trying to run software companies is like watching someone who doesn’t know how to surf trying to surf.

Amen. I have to admit, I find it very odd when manager types expose this belief that “management is management” – we don’t have to “get it” to sell it. Frankly, I don’t buy that, I think even at the c-level, these guys need to have a pretty darn good understanding of the limits of the products and technologies they sell. They don’t have to be able to program it, but they *must* understand what can be done and where the edge cases are. It’s pretty scary what happens when a technology company is run by an organization other than the one that produces it.

The next paragraph is just pure gold though:

“It’s ok! I have great advisors standing on the shore telling me what to do!” they say, and then fall off the board, again and again. The standard cry of the MBA who believes that management is a generic function. Is Ballmer going to be another John Sculley, who nearly drove Apple into extinction because the board of directors thought that selling Pepsi was good preparation for running a computer company? The cult of the MBA likes to believe that you can run organizations that do things that you don’t understand.

Software isn’t the same as adult snack foods. In MBA-land, all the good little students were told it doesn’t matter what the peons do, as long as you have a degree from our school you’ll be able to run *any* company, no matter what it does. Sorry, software is just a different beast and you best understand what you’re getting into. Anyway – as usual, a great read!

Categories: Off Topic, Rants, Software Tags:

Podcast with ZeroLogik

June 27th, 2006 No comments

While I was in Chicago, Ryan and I did a podcast with the lads from ZeroLogik. We had a fantastic time chatting about a *wide* variety of topics (seriously Shane if you ever find yourself in need of another voice, just let me know). I want to thank Shane and the rest of the lads for all their patience – we’ve been trying to get together with them for a while now. One night we mixed up the time shift, another night Ryan didn’t have power and we were supposed to talk last Wednesday but the travel gods conspired against me. Anyway, we finally got everyone online at the same time last Thursday after the guidebook and all is well!

I haven’t had a chance to listen all the way through but I have to say the hotel wi-fi was a little, well, spotty so on more than a few occasions I wasn’t always sure what had been said – or even if my words got through (though that really doesn’t sound like me)! I’ll warn you right now, ZeroLogik carries the explicit tag in iTunes… Here’s a link to their blog and the mp3.

Categories: Ajax, Software, Talks Tags:

RailsConf Day 3

June 25th, 2006 No comments

In my experience with conferences, the last day things start to get a little more sane. People slow down – they’re usually exhausted from several hours of drinking from the firehouse (of course some of that ain’t just learning water either…) and at least a few people have already travelled home (wi fi is almost usable!) so the numbers start to drop. Today is no different – I didn’t need to arrive at my first session 20 minutes early just to get a decent seat, in fact, after a great chat with ThoughtWorker Joe O’Brien (thanks for the tip on the backpack and the girls are adorable!) I was able to saunter up to the front of the room about a minute to 9.

My first session was on open source testing tools in Rails by Dave Hoover. Dave covered Watir and Selenium with a shout out to Sahi. Over the years, I’ve tried various UI level testing tools and have always been left disappointed. Most are just too brittle – change something innocuous like today’s date and all of a sudden you have failing tests all over the place. Many used proprietary scripting languages further raising the barrier of entry but worse, you typically had to plunk down some serious change on licenses. Lucklily, the open source world is coming to the rescue and while both of the tools Dave demoed have their issues (Watir is basically Windows only and Selenium has an odd syntax) it’s certainly good that we have options.

I’ve read a bit of what Phil Windley has said about identity but I’ve never really worried too much about it – after all, I’ve spent so much of my time developing corporate solutions where it was handled by others. Sure, I’ve been annoyed at the volume of logins I need and it concerns me how much of that data is spread all around the web but after seeing Matt Pelletier of Eastmedia talk about Open ID (in a talk related to one I attended on Friday) it sure makes me want to explore that solution. While there are still issues to be worked out (and features to add such as reputation services and attribute verification) it feels like there is a lot of promise in this space. Based on the questions the audience asked, people have clearly thought through some of the ramifications of identity and privacy (more so than many large companies apparently).

If you’re read any of my other posts on RailsConf (day 1 and day 2) you may sense a theme: metaprogramming. I’m really interested in this topic (partially due to my upcoming teaching assignment…more on that later) so I had to attend Stuart Halloway‘s talk (besides, I knew what a great speaker he is so I probably would have gone to anything by him). Stu went through a number of tricks in Ruby such as to_proc, indifferent access, and whiny nil. One thing I’ve really noticed about the Ruby/Rails community – they get the Pareto principle, they really understand that 80%, that good enough, is well, good enough. I’m not sure what it is, but on so many of the Java projects I’ve worked on, we’ve really gotten bogged down worrying about that edge case, that thing that happens once in a while, we seem to focus too much on the what if. For whatever reason, that doesn’t seem to be a problem in Rails land. While certainly some of that is language related (Java forces you to work in certain ways) but a lot of that is just attitudinal.

After showing of some cool Ruby-fu, Stu went on to describe how certain things are done in Rails including class reloading, ActiveRecord accessor generation, transactions, and (my personal favorite) how data gets from the controllers to the views. If I count up all the time I’ve spent pushing data into and out of forms on a web page…and the pain that has caused (hmm, is that int value really 0 or has it just not been entered yet?) it makes me want to cry. Rails makes so much of this cruft just go away and I love that! A great talk by a fantastic speaker.

After lunch mister Tomcat/ant himself, the chief photographer for all things O’Reilly, James Duncan Davidson did a talk on deploying Rails apps (I’ve never seen James live before – he has quite an interesting background!) As I mentioned in an earlier post, I’m actually quite surprised at how *hard* deploying Rails apps can be. Dave challenged the community on Friday to fix it and I expect things will quickly improve, but for such opinionated software, for a framework that makes so many things so darn easy, deployment is really a weak link. James gave some good tips (of course every app is different so it’s hard to arrive at “this is what will work for you” type advice) and also pointed out some of the real land mines out there. With the brain power in this space, I know the problem will improve, it’s just a matter of when.

The event wrapped up with Q and A of the Rails core team (well, 3/4 of it anyway). Most of the questions were actually fairly technical in nature but the 80% answer came out on more than one occasion. I think the adherence to this mantra is the core strength of Rails – I really wish *that* would infect other languages and frameworks.

Anyway, I’m quite tired – been some long days here but tonight my wife and I will venture out for some classic Chicago pizza! All in all, I have to say I had a great weekend and I’m even more jazzed to further my work with Rails. I have mixed feelings about the news that next year the event will be cosponsored with O’Reilly, I suspect they will allow thousands in and probably triple the price and of course the event is moved to the West coast (Portland to be exact.) While I would like to go, we’ll see… Other than the spotty wi fi (which is now, btw, extremely snappy), the hotel was fine (well, my wife would have preferred for the pool to be open) and the dining options near by were, ahh, limited (surprisingly, the constant airplanes – like every 1-2 minutes – wasn’t too distracting). Still, it was great to meet some new people (though I understand where the cult label comes from), folks that have really been inspirational. Thanks to everyone that made this event all that it was!

Categories: Development, Rails, RailsConf, Software Tags:

RailsConf Day 2

June 24th, 2006 No comments

Well, I think more than a few folks spent much of last night in or around the bar because this morning it was quite a bit quieter at breakfast (let’s just say most folks wandered in closer to 9). As you might expect at a conference with 500 or so developers (nearly everyone with a laptop) the wi fi is, at best, spotty, still it’s quite something to see a bushel full of Macs at every table! Seriously, there can’t be more than 10-20 Windows boxes running around and from what I’ve seen a fair portion of those are actually running some flavor of Linux. Anyway, I started me day listening to Obie Fernandez of ThoughtWorks talk about the projects he’s been involved with over the last year or so. Clearly there is a lot of interest in Ruby and Rails at ThoughtWorks and considering how “enterprisey” they are, that bodes well for wider adoption of this “niche” technology.

While there were lots of details he couldn’t reveal, it was quite something to see just how many projects they’ve done (and the variety, from standard web apps to touch screen kiosks) – and more importantly, how interested customers (big customers at that) are in Rails. Regarding the “data center issue” (i.e., the excuse that we can’t use Rails because it’s not supported) Obie relayed a story where, when finally asked, the manager at the data center didn’t have any problem letting them do what they needed to do. This is the first time I’ve ever seen Obie live – but I get the feeling he had a long night ;) he seemed a tad tuckered, perhaps even a bit hung over, I’m not sure. All in all, it was very encouraging to hear his experiences – if ThoughtWorks is doing this much work in the space, I suspect they’ll have some influence on those that still think Rails isn’t ready for the enterprise.

The next two talks I hit were on DSLs/metaprogramming. One of the things I find so interesting about Ruby is the ease with which you can create a DSL thanks to open classes and the “missing method” hook. The first talk was by Steven Hammond and he discussed his experience building a DSL for a game he’s working on. Steven focussed more on the background material – what a DSL is, when you need one and what the pitfalls are.

While Steven’s talk was more focussed on more philosophical issues Brian Katz did a deep dive on an authorization/identity DSL that he put together for one of his projects. I have to admit, much of his talk was above my Ruby-fu (and I don’t think I was alone based on some of the chuckles from the audience when he asked the audience if we understood some less than trivial Ruby) but I still found it pretty useful. He answered lots of questions about why he made certain decisions and he also explored the “meta-classes” which was pretty helpful. While I’ve understood the concept ever since reading about language workbenches, it was always pretty nebulous how’d you actually create one. I might not be ready to actually sit down and write my own DSL, but I feel like I know where to start!

The argument I hear over and over regarding Rails is that it isn’t “enterprisey” enough. While not nearly as widespread as Java or .Net, Rails is indeed being used to power something more than “yet another social tagging site” and that’s what Rick Bradely and Charles Johnson of Centerstone discussed in their talk on Rails and the Enterprise. Centerstone started out writing the prototypical Java EE application using JBoss, Hibernate et al but after getting started they quickly moved to Rails where they saw a significant decrease in the amount of code they produced (on the order of less code than the XML in their Java EE approach…) You might recognize this from Rick’s blog Following the Rewrite – while I wish he and his team were writing a tad more, it’s still a great example of yet another enterprise application that is being written in Rails.

Rick relayed a quote from his CIO which basically was: “A year ago, no one knew what Rails was, now they say no one uses Rails.” How many more applications have to be built before people realize how wrong that last line is? Obviously, there is a class of application for which Rails is clearly the wrong answer – but the variety of solutions that can be built with Rails is much larger than many enterprisey folks want to believe. But hey, as Paul Graham said yesterday, the value is in the margins so maybe I should just look at this as a huge opportunity.

Dealing directly with web/app servers is relatively new to me – at least as done in the Rails world. While I’ve worked with Apache, Tomcat, WAS, etc, I’ve never dealt directly with configuring them. Considering how key things like lighty and FCGI are to a Rails app, I figured I better attend at least one session on the topic hence why I went to Jan Kneschke‘s Accelerating Rails with Lighty. All I have to say is I have a *ton* to learn in this space and frankly I think it’s one of the things that the Rails world needs to overcome. At the end of the day, I’m a developer – I don’t want to have to deal (much) with issues like what mod I need to install and which app server works best with which web server. I think it’s interesting that for a framework that “just works” and is so opinionated, the deployment issues are the real hang-up. I’m not sure whether most Rails developers *should* concern themselves so deeply with the inner workings of lighty or FCGI. Again, some things were a tad over my head but there was a lot of material in this talk – enough that Jan went about 20 minutes over his scheduled time (no real sense of urgency in his talk…even when he knew he was running long, he didn’t really speed up his cadence).

Next up the indefatigable Mike Clark on testing! When you see how freaking easy Rails makes testing…well, it makes me want to cry actually. The functional and integration tests are fantastic, especially with the new named routes feature but the support for fixtures makes unit testing a snap too. I’ve written Java systems with thousands of tests but there were lots of areas we just couldn’t get to – with Rails, we wouldn’t have the normal excuses. Mike walked us through the essentials including why we as developers should care about testing, the basic asserts in Test::Unit, what Rails adds to the mix, and how straightforward integration tests actually are.

When you first look at a Rails app, one thing you might notice is the gentle reminders (or is that just good old fashioned midwestern guilt?) about the importance of testing. After all, you’ve got directories that are just sitting there begging to be populated! Testing is just part of the culture, part of the community. Rails itself has a slew of tests, running rake causes all the tests to run and rake stats lets you know how much test code you’ve written. It doesn’t hurt that Ruby and Rails makes testing so much easier than it is in other languages; creating a little testing DSL is a snap thanks to Ruby. Want to mock out a class? No problem – just put a class of the same name in your mocks directory and stub out whatever method you want! We use mocking libraries on my projects, but they aren’t even close to that easy.

I think the emphasis on testing speaks highly of the Rails/Ruby community. After three days here (and I’ll admit, this is a pretty self selecting group) I can’t help but think there are a lot of really top notch professionals in this space – people that feel a responsibility to produce good, working code. I’m not saying these types don’t exist in Java or .Net, but it just seems to be part of the DNA of these individuals. I’m not sure what the cause and effect is here (are more adept developers just drawn to this or does Ruby/Rails just make it so natural?) but it really is something. I have to say, I wish my Java apps were this easy to test… Honestly, you would think the test infected nature of Rails would make it an easier sell at the enterprise level.

The last talk of the day was by Nathaniel Talbott (what a great first name!), creator of the aforementioned Test::Unit. Nathaniel spoke on Homesteading; basically, he was challenging us to do what we love, to “buy the ticket” and get out there and build something. We’ve got so many opportunities available to us, so many ways to create our own little businesses – we just have to execute. We are all at risk, whether we realize it or not, however we have to assess that risk and expose our assumptions. Anyway, there were so many great thoughts in his talk that I don’t think I can do it justice in this post but let’s just say between listening to him and Paul Graham, I’m really tempted to take the proverbial plunge. Nathaniel’s talk really was a call to action and I’m interested to see how many people take him up on that.

After dinner, we were regaled by the creator himself, DHH. David’s talk was more tutorial than inspirational but it was quite interesting to see where he is taking Rails. I can see where the arrogant label comes from but it’s also clear he has a real passion about software – and many of this opinions are rooted in sound thinking. A key theme was using the HTTP verbs to indicate the action on a controller instead of imbedding it in the URL. He also spent a great deal of time talking about intersection entities between many to many associations and RESTful web services. All in all, a pretty interesting talk – and I’m sure others will do it more justice than me!

Categories: Development, Rails, RailsConf, Software Tags:

RailsConf Day 1

June 23rd, 2006 2 comments

Clearly I got up too late this morning – by the time I got down for breakfast, the ballroom was *packed*: to the point where there weren’t three seats at a single table for the other Minnesota lads I hooked up with! After some intro material from the Ruby Central gang, Dave Thomas presented his keynote where he challenged the community to:

  • Improve data integration
  • Come up with a better solution to real world CRUD
  • Fix deployment

Frankly, Rails has to answer a few key questions if it wants to grow beyond the alpha geek stage – of course whether the community ever wants to be mainstream is a very good question. Dave challenged the attendees to meet the proverbial “average Java programmer” half way – otherwise, Rails will just remain a niche. Obviously Rails will continue to mature (heck, someday it might even be enterprise) and I think a lot of the things that Dave talked about will get fixed (probably soon). But the community is going to have to do it – the core team only has so much time. The message I took away is oddly similar to the mantra at JavaOne – participate, participate, participate.

My first session of the day was Mike Clark on Capistrano (apparently Jamis Buck had a passport issue so Mike pitch hit). Having only just toyed around with apps on my machine and having read other people’s accounts of deployment heck, I left thinking Capistrno is pretty much the cat’s meow. And it isn’t just for Rails dangit! Pretty much anytime you need to move some files around, cap can help. Obviously we didn’t get too deep into deployment (heck the Prag guys have a whole seminar devoted to) but it sure seems like it’s one of the rough spots that needs buffing (luckily there is a lot of energy in that space so I expect it’ll only get better – but don’t just take my word for it).

I choose poorly on my second talk; it was pretty disappointing. While there were a few nuggets in there about discovering what users need vs. want, I was really left wondering how this applied in any way, shape, or form to Rails – I mean seriously, how did that abstract get past the organizers? OK, so it wasn’t really that bad but had the room not been packed to point where the fire marshal would have disapproved, I just stuck it out. Luckily, the rest of the day more than made up one little blip.

As a certified “enterprise” developer, I’ve never really had to deal with authentication issues (there was always a group for that) so I figured I better take a look at the session on identity and rails. Kiran Dandekar of VeriSign gave a fantastic overview of identity (reminiscent of Dick Hardt’s Identity 2.0 talk at OSCON 2005). Kiran and Mike (I think!) talked quite a bit about their Personal Identity Provider (based on OpenID). Considering what it allowed you to do (imagine never creating another login again – and selectively choosing what information was given to each site) I am very interested in pursuing this for my login needs. VERY cool stuff.

Next up was a session from Amy “” Hoy on how to overcoming scaffolding addiction. While Dave argued for better scaffolding, Amy was advocating running in the opposite direction. Her talk walked us through the basics in an effort to prove we don’t really need the generated code. Sure, it might look cool, but at the end of the day, the only way to learn is to jump in.

The evening was jam packed – keynotes from none other than Martin Fowler and Paul Graham plus a command performance from Why the Lucky Stiff. Fowler’s talk was fantastic! He talked about the drive towards simplicity and the significant influence that Rails has had on software (something that was quite evident at JavaOne). He also said something that really stuck for me: quick doesn’t have to be dirty. Languages like Ruby, frameworks like Rails allow us to be quick and clean, something that is very powerful.

He also talked about the need for a conversational relationship with customers instead of one where we simple write down a stream of “this is what I want”. He emphasized the need for rapid feedback allowing us to converge on a solution based on mutual exploration. He quoted the tracer bullets method from Prag Programmer emphasizing that if the bullets are cheap enough, fire-aim, fire-aim, fire-aim is a heck of a lot more efficient than aim-aim-aim-aim-aim-aim-aim-fire! Of course rapid feedback is also likely to mean a more engaged customer which naturally leads to a better solution.

After talking about what happens when we are freed from worrying about plumbing code (we can focus on solving actual business problems) he talked about post modern software development. Basically, the idea is that rather than creating these perfect (modern) structures where everything is the same, we essentially just hack things together. Take UNIX – it’s one of the stablest operating systems out there and it is mostly just a hodgepodge glued together…but it works! Funny, isn’t that the story in nature? He challenged us to change the way we think and to focus on gluing scraps together, to just deal with the complexity and the inconsistencies. His parting words really rang true though – at the end of the day, it’s about the community. We’re what matters, we’re what make a difference.

After grabbing a bite to eat, I was very excited to hear Paul Graham live. I’ve read plenty of his stuff and listened to the odd pod cast here and there but I’ll admit, I bought my ticket based largely on the keynotes (how can you go wrong with this crew?) As expected, Paul did not disappoint (he was hilarious!) and I can’t wait to read the online version of his talk… Of course there were lots of memorable lines (I’m working on a quote post for later) but his main point was “look to the margins.” He preached the values of being an outsider discussing the freedom that comes with being small and obscure. Successful companies are often victims of their very success – they can’t cannibalize themselves. They often overlook certain opportunities because they lack prestige or aren’t large enough (or enterprise enough!) If you’re not sure what to do, Paul advised that you just make something. Seriously, after listening to this guy, a startup just sounds like a good idea!

OK, at this point, I’m twelve hours into a day devoted to a technology I don’t even get to use in anger (I’m amazed at just how many people are making money on this stuff) but we’re not done yet! Oh no, it’s time for Why to regal us with his music and humor. You know, I’ve heard the buzz before and I think I even listened to a podcast from SxSW or something but I’ve got to tell you, if you haven’t heard him live…well, something is clearly lost in translation. Maybe Paul was just a great warmup act (I mean no disrespect), but Why was ridiculously funny! The whole Koala bear thing was great but the, ahh, interesting Ruby hacks were right up there too. I’m sure I only caught half the jokes but let me say – if you ever get a chance to see Why live, do *not* miss it.

Well, that’s enough for now – my wife is already snoring and tomorrow is another long day!

Categories: Development, Rails, RailsConf, Software Tags:

Rails Guidebook

June 22nd, 2006 5 comments

And so it begins! I’ve had the pleasure of seeing Dave Thomas in the past and as I expected he’s on top of his game today. Funny and articulate, I think I’d sit and listen to Dave explain actuary tables, discuss a hot new time share investment, heck, even just read the phone book. I’ve never heard Mike Clark live but he’s top notch! The only complaint I can make at this point – the ~100 or so of us are overwhelming this little wireless network. Apparently an “industrial grade” installation is coming this afternoon (thank god – otherwise this could get ugly).

The morning section has largely been a Ruby overview – a level set as they say. While I’ve read through Pick Axe, it never hurts to hear another twist on the material (especially blocks and symbols). So far I’ve taken a ton of notes and I’m (surprise) even more interested in finding new ways to “sneak” Ruby into my daily work.

The section on meta programming was particularly interesting. The beauty of Rails is, to a large degree, thanks to the amazing capabilities of the Ruby language itself – all calls have receivers (though you can warp your mind a bit when it comes to class of Class…), definitions are active (the code can change on the fly) and classes are open (so you’re always free to add or modify methods on *any* class). I’ll admit, as a recovering Java addict, my first thought when I encounter open classes is not a positive one. While the thought of the proverbial chim chim adding to (or changing) one of *my* classes makes my skin crawl, in the hands of competent developers it’s a darn powerful feature. Luckily Dave shared an inside tip on how to fix the situation where a lesser mortal mucks up a class they shouldn’t (lets just say it involves a trip to Home Depot)… Still, the whole meta programming concept really appeals to me – I want that power! Of course it means we have a greater level of responsibility but then we are professionals right? Heck, carpenters don’t use “safety saws” to build a house, why do developers deliberately hamstring themselves?

Frankly, I think this is a numbers game. The average Java application requires significantly more developers than the average Rails app so the chances that you’ll have a couple of, shall we say, less than excellent developers is much higher in the Java space. So, if you’re one of the silver backs, you want your language to make it harder for the feces hurler one cube over to, well, screw things up too badly. Personally, I think I’ll take the more expressive power over the safety…

Lunch was a blast! We (Ben from Minnie, Gary from California, John from DC but thinking of moving to Minnie!) wandered over to Chipotle (mmm, burritos) where we engaged in a far ranging conversation on billable rates, why Ruby and Rails rocks, thoughts on An Inconvenient Truth, whether the greater level of transparency afforded by the blogosphere has contributed to the level of cynicism in modern politics…for a while there I thought I was at a model UN meeting or something. It was good times!

The afternoon was Rails in a blur – basically, Mike and Dave wanted to introduce us to the key concepts, places to avoid, and topics we should perhaps focus on over the course of the long weekend. Of course they did the standard MVC lecturelet but they had an interesting twist: think of the controller as the CEO, involved in strategy but not the details – which are carried out by the admins (in other words the model) while the outside view is handled by marketing (the view component). Good analogy!

There was a very interesting conversation about code in the view and whether or not web designers can “handle” that. Mike was pretty adamant that most web designers were more than capable saying that while we as server side guys dabble in web stuff, the view folks want to dip their toes into our waters as well. In other words, don’t sell the front end guys short – they’re probably sharper than you think ;) Again Dave had sage advice for dealing with designers that can’t stand a little code – get rid of them.

The advice from the scaffolding section was pretty spot on too. While great for showing off and exploring, as of now, it’s just not up to par for production code. But don’t forget, when you use scaffolding to build a structure, eventually the scaffolding comes down… After learning where not to go (components, engines, XML-RPC/SOAP), Dave and Mike pounded through a number of topics including testing, routes (however you pronounce it), REST, Simply Restful, plugins, and deployment.

All in all, a great session (participants raised over $8,000 for charities) and I’m even more interested in attending a Pragmatic Studio session (not sure which one though…) One interesting note – sure am seeing a large number of Macs (shocker) as I wander around! And my wife made this comment when I got back to the room “there sure are an awful lot of geeks here”. Yes dear, there really are!

Categories: Development, Rails, RailsConf, Software Tags:


June 21st, 2006 No comments

I’ll be the first to admit, I don’t travel all that much. Sure, I’ve been to Greece and Spain but those were big occasion kind of trips – I don’t really travel for work. Today I took what is normally a short, trivial hop from good old MSP to ORD. Heck, the Twin Cities is so close to Chicago, you could practically fly down for lunch! But of course that wasn’t about to happen tonight…oh no.

As I suspect a few of you know the Wyndham O’Hare is host to the first annual RailsConf (and if the ride over from the airport is any indication – we’ve got some serious alpha geeks in the hizzie). Ordinarily, I would expect to make the hop in about 45 minutes or an hour but you see, we had some “weather” in the midwest today and apparently O’Hare “fell behind” a bit. We were delayed leaving the big Minnie – well, we pushed off from the gate just a few minutes late but of course we had to take a tour of the airport (seriously, who in their right mind thinks of departure time as when the doors are shut?) Basically, we were nearly 45 minutes late just getting in the air.

Of course the delay gave us some time to play the Tetris game that is carryon bags and the overhead bins. Maybe we’re just too nice here in flyover land but when I left San Francisco, they were checking bag size pretty carefully – if it didn’t fit in the box, it was getting checked. Clearly, whomever is responsible for that in our neck of the woods has Wednesdays off because some of the bags people tried to smuggle on board would comfortably fit the Stanley Cup.

This being a short flight, most people didn’t want to check their bags further exacerbating the situation. The *packed* flight combined with bags that really should have been checked (seriously, if you can’t put the bag in perpendicular to the bin and still shut the door, it’s just too big) meant we had a few crabby campers on board (I thought one guy was going to throw some punches – he was *not* happy that his sacred bag was being checked. Never mind that it was too big to fit in the bin…). Eventually we were in the air and after failing at a Sudoko (man, Will Shortz must just weigh his cash – I swear every third person was working through one of his books), I was pleased when the pilot said he was beginning his decent into O’Hare.

I’ll have to ask Ryan for clarification, but I think this is pilot code for “we’ll be in the air for another 45 minutes” because shortly after giving us all some false hope, he reported (from the flight-deck) that we were in a holding pattern waiting for ORD to “catch up” with their backlog. Sigh. I got really excited when he told the flight crew to prepare for landing – which again, must be code for “don’t tell the chattel, err passengers, but we’ve got another 30 minutes”. Eventually we did land – more than an hour late, after being locked in a tin can for more than 2 hours (man, another hour or so and I could have been in California) we were on the ground in the windy city, happy days, the ordeal was over!

Ahh, but there was a catch. You see, apparently O’Hare only has one or two jet-ways (it’s not that big an airport I guess) and, well, we pulled up to a gate that didn’t have one so we were just going to have to sit and wait until the ground crew “got around” to bringing one over (perhaps from Midway). Amazingly, this only took about 10 minutes but by now, I was convinced that driving would have not only been faster, but much less stressful (though it would have cost more when you factor in parking and gas). We were finally able to deplane (wow, according to my spell checker, that’s really a word) and amazingly our luggage wasn’t lost (don’t laugh, it’s happened to me…on a trip to Chicago). Of course it took us a while to find the magic “door number one” where our shuttle would whisk us away to the hotel. As you would expect, we just missed the van so it was the full 15-20 minutes watching anxiously (we looked like puppies and kittens at the shelter) as van after van drove by. I guess a mess of huddled geeks just isn’t as irresistible as a small ball of fur…

Of course we did finally get the hotel – more than five hours after starting our journey (any longer and I would have thought I was in a Greek tragedy); while I don’t think I would have actually driven down, flying didn’t save me that much. Oh well, I’m here and I’m pumped about RailsConf! I’ll do my best to blog along (and unlike JavaOne, I’m wired up – it only took me 20 minutes, and Safari, to get my complimentary wifi hookup. But hey, I’ve got an Aeron so whose complaining?) All right, I’m crawling into bed…

Categories: Off Topic, Rails, RailsConf, Rants Tags:

My Cubicle

June 19th, 2006 No comments

Like most people in this line of work, I work in a cube so I really identified with a local radio station‘s “my cubicle” – a play on James Blunt‘s hit You’re Beautiful. Thanks to Andy for passing that my way!

Categories: Off Topic, Software Tags: