A few notes from RubyConf 2007:
(The sessions at RubyConf 2007 were recorded by Confreaks, and will hopefully be available soon on the web. I'll update this post with a link when they are.)
Ropes: an alternative to Ruby strings by Eric Ivancich
Interesting. Strings havealways been a problem area in various ways, SGI'sropes provides an interesting solution for someuse cases. In particular, Strings always show up as pigs in Java memory usage, what with the many, long-ish class names and method signatures, that have lots of duplication internally; I wonder if something like ropes might help.
See notes by James Avery.
Ruby Town Hall by Matz
Didn't take any notes, but the one thing that stuck out for me was the guy from Texas Instrumentswho said they were thinking of putting Ruby in one of their new calculators. He askedMatz if future releases would be using the non-GPL'd regex library, as the TI lawyerswere uncomfortable (or something, can't remember the exact words) with it (the licensing). See alsothe notes under Rubinius, below, regarding licensing.
But the big news for me, from this question, was the calculator with Ruby.Awesome, if it comes to be. I talked to the guy later and he indicated it was,as I guessed/hoped, the TI-Nspire. Sadly, he also indicated thecalculator probably wouldn't be available till mid-2008.
See notes by my evil twin, Rick DeNatale.
IronRuby by John Lam
Didn't go into enough technical depth, sadly. And the technical presentation included infoon the DLR and then XAML, which I don't think were really required.John had a devil's tail attached to his jacket or pants,which appeared about half way through the presentation. Really, I think everyone seemed to be quiteopen to IronRuby, no one seems to be suggesting it's evil or anything. Are they?
See notes by Nick Sieger.
JRuby by Charles Nutter and Thomas Enebo
Lots of good technical info. Tim Bray did a very brief announcement at the beginning aboutsome kind of research Sun is doing with a university on multi-VM work; sounded like it didn't involve Java, and given the venue, I assume it had something to do with Ruby.Sounds like we'll hear more about it in the coming weeks.
The JRuby crew seems to be making great progress, including very fresh 1.0.2 and 1.1 beta 1 releases.
One thing that jumped right out at me when the 'write a Ruby function in Java'capability was discussed, was how similar it seemed to me to what I've seenin terms of the capabilities of defining extensions in the PHP implementationprovided in Project Zero. That deserves some closer investigation. It wouldbe great if we could find some common ground here - perhaps a path to a nirvana of defining extension libraries for use with multiple Java-based scripting languages?
Rubinius by Evan Phoenix
Chad Fowler twittered: "Ruby community, if you're looking for a rock star, FYI it's Evan Phoenix. Please adjust accordingly. kthxbai".
I happened to hit the rubini.us site a few times this weekend, and at one point noticed thefollowing at the bottom of the page: Distributed under the BSD license. It's been a while since I looked at the Ruby implementations, in terms of licensing, but I like the sound of this, because I know some of theother implementations' licenses were not completely permissive (see Ruby Town Hall above). Ruby has still not quite caught on in theBigCo environments yet, and I suspect business-friendly licensing may be needed to make that happen. It certainly won't hurt.
See notes by Nick Sieger.
Mac OS X Loves Ruby by Laurent Sansonetti
Oh boy, does it ever. Laurent covered some of the new stuff for Ruby in Leopard, and had peopleaudibly oohing and ahhing. The most interesting was the Cocoa bridge, which allows you to buildCocoa apps in Ruby, using XCode, which (now?) supports Ruby (syntax highlighting, code completion?).Most of the oohing had to do with the capability of injecting the Ruby interpreter into runningapplications, and then controlling the application from the injector. Laurent's example wasto inject Ruby into TextEdit, to create a little REPL environment, right in the editor. Lotsof ooh for the scripting of Quartz Composer as well.
Apple also now has something called BridgeSupport which is a framework whereby existingC programming APIs (and Objective C?) are fully described in XML files, for use by frameworkslike the Cocoa bridge, as well as code completion in XCode. That's fantastic. I've had todo this kind of thing several times over the years, and, assuming the ideas are 'open',it would be great to see more people step up to this, so we can stop hacking C headerfile parsers (for instance). And I think I could live with never having to writea java .class file reader again, thankyouverymuch.
I suspect all this stuff is available for Python as well.
Laurent also showed some of the DTrace support. No excuse not to look at DTrace now.Well, once I upgrade to Leopard anyway.
Someone asked "Will Ruby Cocoa run on the iPhone?" Laurent's reply: "Next question".Much laughter from the crowd. Funny, in a sad way, I guess.
See notes by Alex Payne.
Matz covered some overview material, mentioned Ruby will get enterprisey: "Thesuit people are surrounding us".He then dove into some of the stuff coming in 1.9.Most of it sounds great, except for the threading model moving from green threadsto native threads, and a mysterious new loop-and-increment beast, which franklylooked a bit too magical to me. The green vs. native threads thing is personalpreference of mine; I'd prefer that languages not be encumbered with thethreading foibles provided by the platform they're running on. Green threadsalso give you much finer control over your threads. On the other hand,given our multi-core future, I think there's probably no way to avoid interacting with OS-level threads, at some level.
Behaviour Driven Development with RSpec by David Chelimsky and Dave Astels
I really need to catch up on this stuff, I'm way behind the times here. They showedsome new work they were doing that better captured design aspects like stories,including executable stories, with a web interface that can be used to buildthe stories. That's going to be some fun stuff.Presentation available as a PDF.
See notes by Nick Sieger.
Controversy: Werewolf considered harmful?
Charles Nutter wonders ifthe ever-popular game is detracting from collaborative hack-fests. The game certainly is quite popular.I played one game, my first, and it was a bit nerve-wracking for me. But then, I was a werewolf, and the lastone killed (the villagers won), the game came down to the final play, and I'm a lousy liar.
I kept notes again on a Moleskine Cahier pocket notebook,which works out great for me. Filled up about 3/4 of the 64 pages, writing primarily on the 'odd' pages, leaving the 'even' pages for other doodling, meta-notes, drawing lines, etc. I can get a couple of days in one notebook. The only downsideis you need something to write on, for the Cahiers, for support, and the last half of the notebook pagesare perforated. I don't really need the perforation, but it wasn't a big problem. They endup costing about $2 and change for each notebook.
I was, like usual, primarily surfing during the conference on my Nintendo DS with the Opera browser; good enough to twitter, check email, check Google Reader. It'sa good conversation starter, also. At one point, a small-ish, slightly scruffy Asiangentleman leaned over my shoulder to see what in the world I was doing, so I gave him my little spiel on how it was usable for the simple stuff, yada yada.He seemed amused.
In Giles Bowkett's "Debugger Support Considered Harmful",Giles makes the claim that "Ruby programmers shouldn't be using a debugger".
First, as a meta-comment to this, I truly love to see folks expressing such polarizing and radical opinions. Greatconversation starters, gets you thinking in someone else's viewpoint, devil's advocate, etc. At the very least, it's a change of pace fromthe REST vs everything else debate. :-)
Back to the issue at hand, debugging Ruby. I certainly understand where Giles is coming from, as I'vequestioned a few Rubyists about debugging, only to have them claim "I don't need a debugger" and "the command-line debugger is good enough". There is clearly a notion in the Ruby community, unlikeone I've seen almost anywhere else, that debuggers aren't important.
I twitteredthis morning, in reference to Giles' post, the following: "Seems like Stockholm syndrome to me". As in, if you don't have a decent debugger to use in the first place, itseems natural to be able to rationalize reasons why you don't need one. I have theexact same feelings for folks who spend almost all of their time programming Javamaking claims "the only way to do real programming is in an IDE"; because it's prettyclear to me, at this point, the only way to do Java programming is with an IDE.I've personally not needed an IDE to do programming in any other language, except of course Smalltalk, where it was unavoidable. Of course, extremely programmabletext editors like emacs, TextMate, and even olde XEDITkinda blur the line betweena text editor and an IDE.
My personal opinion: I love debuggers. If I'm stuck with a line-mode debugger, then fine,I'll make do, or write a source-level debugger myself(aside: you just haven't lived life if you haven't written a debugger).But I'll usually make use of a source-level debugger, if it's easy enough to use. Sometimes theyaren't.
Honestly, I love all manner of program-understanding tools. Doc-generators, profilers,tracers, test frameworks, code-generators, etc. They're tools for your programming kit-bag.I use 'em if I need 'em and I happen to have 'em. They're all 'crutches', because in a pinch, there's always printf() & friends. But why hop on one leg if I can actually make betterheadway, with a crutch, to the finish line of working code? Seems like a puritanical view tome to say "you shouldn't use crutches", and especially ironic for Ruby itself, which is a language fullof crutches!
Perhaps there is something about Ruby itself, which makes debugging bad. Or as Giles seems to be indicating, that testing frameworks can completely take the place of debugging. Some unique aspect of Ruby that sets it apart from other languages where debuggers are deemedacceptable and desirable. As a Ruby n00b, I'm not yet persuaded.
As for Ruby debuggers themselves, NetBeans 6.0 (beta)has a fairly nice source-level debugger that pretty much works out-of-the-box. Eclipse fanaticscan get Aptana or the dltk (Dynamic Languages Toolkit).I think it would be nice to have a stand-alone source-level Ruby debugger, outside the IDE, becausehonestly I think TextMate is a good enough IDE for Ruby anyway.
BTW, Rubyists, I'm getting tired of the Sapir-Whorf references.
Saturday was day 2 of the Ruby Hoedown 2007. I had to leave early and so missed "Using C to Tune Your Ruby (or Rails) Application" by Jared Richardson,and the final keynote by Marcel Molina, Jr.
Nathaniel Talbott, one of the conference organizers, mentioned before one of the sessions that thesessions are being recorded, audio and video, along with the slidespresented, and will be available on the web shortly. With some kindof a Creative Commons license. Wow! I wish more conferences did that.I won't dive into details on the sessions below, since the info will beavailable soon, verbatim.
Sessions I did attend:
Building Games with Ruby - Andrea O.K. Wright
Andrea discussed a handful of gaming toolkits for Ruby.Supporting everything from MUDs to 3D. A few of thetoolkits were wrappers over SDL.
- test/spec -Clinton Nixon - layers an RSpec-inspired interface on top of Test::Unit
- a strategy game written in JRuby, using Swing - didn't get the presenter's name
- methodphitamine - Jay Phillips - a more powerful alternative to Symbol#to_proc
- Ruleby - Joe Kutner - a pure Ruby rule engine
- tyrant - Patrick Reagan - a way to run Rails applications without each user needing a development environment
- generating Ruby classes - Luke Kanies - dynamic code gen
- Iron Ruby - Brian Hitney - Ruby implemented on the CLR
- static sites with Rails - Brian Adkins - how to enable mostly static pages with Rails
- Thoughtworks test strategies - Dan Manges - how TW designs tests for teams
- myDecisionHelper - Tyler Start (sp?) - self-help web app
BOFs over lunch
Went to Rick Denatale's "Smalltalk for Rubyists; Ruby for Smalltalkers". More the former than thelatter, unfortunately for me. But still interesting and informative.
Does Ruby Have a Chasm to Cross? - Ken Auer
Great talk; like Bruce Tate's keynote on Friday, referencedthe book"Crossing the Chasm"(just added it to my 'wanna read' list).Ken's talk came at it from a different angle: being there, when Smalltalk was just aboutto 'cross the chasm', but didn't make it. Why didn't it? What can we learn from Smalltalk's tragic history?
All in all, great conference. I'll be there next year, assuming they have it again.Maybe I'll have some more Ruby under my belt by then.
Forgot to mention in the previous post that I used my Nintendo DS-Lite with theOpera browser, again, to do some lite surfing, email checking, twittering, duringthe conference. Very convenient.
theRab tweets: "i'm afraid to google 'ruby hoedown' so i'll just patiently wait for your blog post". Here you go. BTW, no need to be afraid of Google (at the moment).
TheRuby Hoedown 2007 is a small conferencecovering Ruby topics, held in Raleigh, NC. At Red Hat HQ, the same place wherebarcampRDUwas held last week.
Friday was just a half day afternoon session, though there was a testing workshopin the morning that I didn't attend. A bit over a hundred attendees, I'd guess, manyfrom out of town. Usual list of sponsors, with one surprise: Microsoft; thoughobviously that's not a complete surprise.
I recognized a lot of folks there from last week's barcamp, and some from theerlounge meet-up.Some"Old Dudes Who Know Smalltalk"were present, including my evil twin, Rick Denatale, and someone I hadn't talked to in ages, Ken Auer.
Sessions this afternoon:
Exploring Merb - Ezra Zygmuntowicz
Merbis Ezra's pocket-framework for web serving. Lighter thanRails. Ezra stressed twice that Merb "doesn't use cgi.rb" - I'm showingmy n00by-ness by assuming this is a good thing.
Between this session, and the campingsession at barcamp, there appears to be active and interesting developmentstill in the web server framework arena, at the lowest levels.Like the days in Java, before servlet. Sigh.
One cool feature of Merb is supporting directstreaming of content. For example, if you need to returnthe contents of a file, you just return the file handleof the file where you would normally return the content,and the file gets streamed on your behalf. Handles uploadstoo, and it sounded like a lot of people use it just forthe upload capability. Ezra also mentioned someone using Amazon S3 as their store, and making use ofthis feature, where Merb was really just the gatewaybetween the streams (to/from S3, to/from client).
Next-Gen VoIP Development with Ruby and Adhearsion - Jay Phillips
General notion here is that setting upAsteriskis hard, because the configuration files are large, monolithic, and complicated.Adhearsionmakes that simpler,as your configuration becomes small Ruby programs.Which maybe you could imagine sharing with other people("Want my call-center scripts?"), compared to the situation today where granular sharing isn't reallypossible.
I don't have much need to set up a VoIP box, otherwiseI'm sure this would be fun to play with. Jay did mentionthat Asterisk has VMWare images available, which wouldmake it even easier to play with, although Adhearsionis not current available on those images. If I onlyhad more time.
Keynote - Bruce Tate
Really good talk discussing how Ruby became aspopular as it is, how Java became as popular as it was (is?), what has dragged Java down in recent years, and some future thinking and advice.
Best piece of advice: "Java didn't start assomething that was complicated, it evolved into somethingthat was complicated. Ruby is not immune to this."
SmallTalk was mentioned; yes, sadly, withthe capital T; so Bruce wasn't one of us I guess,he at least knew it was good stuff.OTIwas even mentioned.
Bruce mentioned the ultimate plan for Ruby: TGD - Total Global Domination. Hmmm, thatreminds me of something.
I asked whether the presentations would be available on the web, and theanswer was yes. In addition, the sessions are being recorded (audio and video)and will also be available on the web at some point.
Looking forward to Saturday's sessions.
I certainly hope no one mistakes me for some kind of Ruby fan-boybecause of my brand spankin' new Picante Chuck Taylors. Or was that Cayenne?I swear, my wife got them for me for Christmas, I didn't evenpick the color!
I do love 'em.
And to be honest, I am becoming a bit of a Ruby fan-boy.
Time to do a little photoshopping of that picture at the top of my blog page.
I've finally taken the Ruby plunge. It's taken a while. My buddyChris Grindstaff recommended I look at it years ago. I had heard of it, and it sounded interesting, but coming from Chris, I took a closer look. Started following it from afar. Eventually boughtthe book. Still didn't really do anything.
Finally, as I have been posting flickr pix in my blog entries,and copy/pasting the html into new entries, it was time to automate, and thus getf4b was born. Simple command line program,and thus easy to integrate intoTextMate and Eclipse.
(Quick aside: I edit all my blog posts in .html files usingTextMate, then paste into roller when I'm all done.)
So, Ruby. I'm an old smalltalker, so I don't need muchconvincing on the gorgeousness of the language. I am a little suprised there's not much interest from theold OTI crowd in Ruby. They'll come around.
The little program I wrote uses a Ruby gem named 'flickr' to do all the flickrAPI work, but there are some issues. Check the code and you'llsee how I had to hack the photo URLs a bit. I needed to figureout how to get program arguments, the name and location ofthe program being invoked, some basic string parsing, and howto do 'here doc'. Everything else was pretty natural.
Actually, the hardest thing was figuring out to 'require' a gem. Ithelps to require 'rubygems' first, and then use require_geminstead of require for a gem. The doc didn't really make thatclear.
More later, I'm sure.
Photo 'Ruby Falls Barn' with a nice CC license, by Brent Moore. Found using the Flickr's Create Commons Search.