I just wanted to take a moment to talk about Crossing Borders. The series has been particularly rewarding, and also particularly frustrating. I have never gotten so many love letters and hate mail from the same set of articles. The premise is that Java developers can learn a whole lot about solving different problems in different languages. Let me share a couple of interesting stories with you.
Erlang
==
A couple of weeks ago, I published a “Crossing Borders” article on the [Erlang](http://www.erlang.org/) programming language. Now, some of these frameworks or languages genuinely get some serious use, and deserve a serious look from Java programmers. And others get about as much practical use as a brush at a boys camp. They are firmly in the realm of academia, or niche problem solving. I publish them to get people to think about the way they are solving problems. Last week, at [NoFluffJustStuff in Orlando](http://nofluffjuststuff.com), I met a guy who asked me a little bit about Ruby, just out of curiosity. Imagine my surprise when he said “I can’t really use Ruby. It’s too bad too—you see, I have a completely blank slate. I’m developing a soft real time system with lots of distribution and concurrency.” Twilight zone. I suggested Erlang. He went home and did a little research and found some bindings that would talk to his [Spring](http://www.springframework.org) core.
Seaside
===
I got all kinds of hate mail for this one. The premise of [Seaside](www.seaside.st), and other continuation-based approaches, is that you can simulate a stateful programming model on a stateless application server (by definition, most application servers use a stateless programming model, and leave state management to application developers which is a real pain) by taking a snapshot of the state of your system and putting it in the http session. There was even a flamefest on The Server Side. But no one was talking about the real problems of the continuation based approach, which has a real chance to completely revolutionize the way we code web apps in Java, and elsewhere.
By far the most interesting communication that came out of my dabbles in Seaside was not related to technology at all. Glenn Vanderburg turned me on to some of the history behind Seaside. It turns out that I got a few of the details wrong, and [Avi](http://smallthought.com/avi/) blogged about it. He took exception to my comment that Smalltalk had rusted at the station. Out of that little interaction came many thoughtful conversations with active developers in the Smalltalk community, leading me rethinking that position and including the ideas in [From Java to Ruby](www.pragmaticprogrammer.com/titles/fr_j2r). Here’s the direct text:
Iâve come to respect the Smalltalk programmer base. Sure, theyâd like to see growth, but rather than bemoan what Smalltalk isnât, they celebrate what it is. Georg Heeg had this to say:
> “I just saw your article about Seaside. I love the picture of the ‘five times faster’ ‘lightweight’ ‘train rusted at the station.’ It is so wonderfully contradictory. It reminds me of the 27-year-old picture of ‘the craggy aloofness of the kingdom of Smalltalk…where great and magical things happen’ [Byte Magazine, August 1978].”
> Indeed, within this vibrant and colorful community, strange and wonderful things do happen. The language is still incredibly productive, and people still use it with fantastic leverage to solve difficult business problems. And important innovation is still happening within that community. …
Rails
=
Anything I write about Rails gets lots of attention, both good and bad. I really don’t know why some Java developers are so dead set against learning from migrations, or Active Record, or Rails templating, or Ajax in Rails. The approaches are rock solid, and extensible. I’m not saying that all of the decisions in Rails have been good…like pluralizing database table names. (That decision bucks about 30 years of convention among data modelers.) But the Rails framework does have some radical innovation that can do us all some good.
Crossing Borders
====
I like the premise of the series. I hope that you have enjoyed it as much as I have. It looks like I’ll be doing a few more of them before it’s all said and done.