As I expected, today was just as intense as yesterday, except longer. Some great sessions, and great information. I found out a fellow Missouri blogger – Duane Keys is around here, though I don’t think I’ve run into him. Hopefully next time we can get the name badges to be a little bigger – at least in the name/company part. ;)
However, it was also tough. There were a lot of great sessions, and it was hard to choose. A lot of Java, a lot of Ruby, and a lot of AJAX. So what does one do?
Facets of Ruby
One starts with Ruby from a master. The session was actually entitled “Ruby for Java Programmers” and was quite fun. Not just because Dave is a great speaker. But because of the gasps I heard from the audience when he demo’d ActiveRecord and with, oh, no code, persisted his objects to the Database.
But, one can’t just start with that. In fact, he acknowledged from the beginning that language selection was in some cases a religion, and that he wasn’t going to convert anyone to Ruby just by talking about it. He started with a simple code sample of the Fibonacci sequence:
def fib_up_to(max)
f1, f2 = 1, 1
while f1 <= max
puts f1
f1, f2 = f2, f1+f2
end
end
fib_up_to(1000)
And asked a simple question. What’s missing? Surprisingly, the first one was curly braces. And then parenthesis around the while. And then finally someone got to the “And it doesn’t have a type!”. To which Dave replied, that “Ruby doesn’t have types. Should we have this fight now or later?”.
He then went on to explain why he doesn’t think that’s such a big deal, and then went on even further to show why it’s an advantage. Yes, there are bad things about not having static typing (optimization, autocomplete IDEs, etc), but the power you get from Dynamic Typing outweighs that.
He also touched on Open methods and classes. He wanted to be able to say:
"cat".encrypt
instead of the Java Encryption.encrypt("cat");
. The problem? The string object doesn’t know anything about the method encrypt, sooo…
class String
def encrypt
"cat".reverse
end
end
Ok, he actually used a method to do a simple letter substituition, but the same principle holds that he just redefined the String class to have an encrypt method. And he said that people often say to him, “But Daaaave! How could you use a language with open methods and objects?” His answer: “Because most language assume you are stupid”. He then went on to a secret way to ensure that a developer didn’t go in and redefine the +
method in FixNum
. I can’t reveal it here, but I can say it involved a parking deck, Home Depot and a length of rubber hose.
Politics of Persistance
This talk by Bruce Tate seemed highly interesting. And in fact, it was for me. We discussed in an open-type format about various persistance frameworks, and what the state of the politics between them are. For example, I knew that Oracle was trying to buy JBoss, and also knew that Gavin King had gone to JBoss. I didn’t know that BEA had acquired Patrick Linskey’s company SolarMetric, and somehow that put a different spin on things for me (like maybe Oracle is really just trying to get Gaving since BEA has Patrick, and so they’ll just take JBoss while they are at it). All in all it was good, and I think we’ll take a closer look at the Spring JDBC and iBatis next week.
Rails and Ajax
This was very cool. I’ve heard a lot about Ajax, and seen it used (Google Maps I love you!), and used well. I had no idea that the tools for it were so darn good. Looking at the Prototype.js framework and the stuff from http://script.aculo.us I was blown away by the cool stuff you could do with fade effects. And then tying that into Rails and watching how easily it gracefully degraded with Javascript turned off was awesome. Dave also mentioned that Rails 1.1 is on the verge of release, and they will be adding a new RJS (Ruby Javascript) which you can use in place of a rhtml template.
The quote of the day came from this session when Dave called browsers “3270s that display porn”. Priceless.
Building Domain Languages Atop Java
Somehow I realized that I hadn’t attended any topics from Neal Ford, and this one looked great. And it delivered. He covered the concept of Domain Specific Languages, and in particular Language Oriented Programming, coined by Martin Fowler. What is it? An attempt to move towards a programming language or abstraction closer to the domain problem.
And what the heck does that mean? Let’s say you are keeping an exercise log (the example he gave). Would you rather type in:
public class ExerciseLog {
public static void Main(string[] args) {
new ExerciseLog().load();
}
public void load() {
FebruaryLog.add(
new Swim()
.onDate("2/01/2005")
.forDistance(1250)
.report();
}
}
or
swim on WED for 2150
run on TUE for 6.5
bike on SAT for 50
summary
Both of these are examples of domain specific languages, and depending on your target audience one might be just as appropriate as another. He then went on to touch on some tools for LOP and DSLs, including Antlr and the GOLD Parser Builder. It was really fascinating, and I think I will be able to use some of this real soon.
Client / Server Birds of a Feather
For the last session, Neal Ford and Scott Delap held a BOF on Client/Server. We got into some good discussions about MVP versus MVC, Tapestry, Macromedia Flex, EJBs and the pain of Java deployment. Scott then asked everyone who was considering using EJB 3.0 when, and I’m not making this up, all the lights in the room went out.
So, we decided to call it quits earlier and parted ways.
Dinner
Finally, Jay Zimmerman had invited me to the speaker’s dinner which was a great opportunity to talk with some of the other speakers. It somehow annoys me to no end that a lot of these guys are from Raleigh, and I didn’t meet them until I moved to Missouri.
We headed over to an Asian Grill type place, and had good discussion on coding, teaching, and living (and when it was appropriate to TP someone’s house that is for sale). We then were treated to a mini Nascar race between the grill and the airport to get Justin Gehtland out on time.
Tomorrow is going to be some good sessions on AOP, another technology I’ve kind of been overlooking, and then I get to head back to Columbia.
(As a side note, I got an email today that Charlotte, NC now has it’s very own Ruby User’s Group! Be sure to stop in an support those guys!)
I was really surprised there aren’t more bloggers. In Jared Richardson’s tools for developing (can’t remember the exact name) he was showing off cruisecontrol and mentioned you could subscribe to the RSS feed for the builds. Half the people in the room didn’t know what RSS is.
I guess blogging is more of a subculture than I thought, even amongst hard-core weekend conference attending geeks.
I also didn’t realize that carfax was a Missouri company. How many developers do you guys have? Our shop is relatively small, about a dozen or so java developers, twice as many RPG developers.