Rapid Red

Your rapid development experts

Ruby on Rails by proven experts.

Sunrise and sunset

I’ve finished my first month of Marathon training. Every week I do two short runs and a long run. Every week but one per month I nose the run lengths up. My long runs are up to 8.3 (I am heading to 20 miles eventually), and my short runs are up to 4.5 miles (they are heading to 6). This morning, I caught the sunrise for my long run—6.4 today for a recovery week—and missed the heat. It was exhilarating. The sky exploded, and I was in particularly high spirits.

I’m a slow runner, so I have a lot of time to think on my runs. This morning, as the sun came up, I thought about the parallel sunrise in my career. I’m establishing an essentially new company with a new base of clients, one that appreciates and needs rapid development more than a safe programming language. [From Java to Ruby](http://pragmaticprogrammer.com/titles/fr_j2r/index.html) is all about that transition, from a manager’s view. I know I’m not the only one sensing the shifting mood in the industry.

But I can sense that we’re moving beyond the hours of anticipation just before dawn. Part of Ruby on Rails is the language, and part of it is great leadership driven by an intensely opinionated benevolent dictator. But part of this sunrise is the promise. With the strength of Ruby and metaprogramming, it should be possible to continue to build with ever increasing leverage. If I’m right, Rails as it stands today will be the first ripple in a wave of metaprogramming frameworks. Most of them will sit on top of the Rails foundation.

Streamlined
—————-
If you’ve not seen it before, [Streamlined](http://streamlined.relevancellc.com) represents exactly this thought for me. Scaffolding captured our imagination because you can put something in front of your customer quickly, and the code just melts away as you extend it. But we all know the limitations in the template:

  • scaffolding did not manage relationships
  • scaffolding did not have a viable layout
  • scaffolding provided no support for common features such as security

But here’s the deal. With Ruby and with Rails, you can change the template, provide a richer meta-model, and get out a better application. The question was always this: did you have to change Active Record, or add mindless repetition, to have enough metadata to generate an application that was close enough to the real thing? Could you do this with minimal code generation, and with a metaprogramming model that would lead to a viable extension model after the initial generation step? In short, could you preserve the spirit and simplicity of Rails, and provide a scaffolding layer that is closer to production strength?

In short, could we take DRY to a whole new level? That’s the challenge that Justin and Stu at Relevance LLC are taking on. After looking at the first alpha release of Streamlined, I think it’s promising. Sure, Streamlined needs better styling, and needs to flesh out the metamodel.

But what we have here is something that’s potentially fundamental and flexible. Streamlined is taking scaffolding beyond scaffolding. That concept radically changes the playing field for languages like Java. With this idea, you go well beyond building with bricks. You’re building with prefab house parts. And the scary thing for Java is this: the concept is fundamentally sound, and will be replicated.

Sunset
———
If you can imagine it, and you can build it, and you can generalize it… you can streamline it. Now with Java, if you want to do hardcore metaprogramming, you’re probably going to say, [Gavin](http://www.hibernate.org), [Rod](http://www.springframework.org), [Geert](http://www.rifers.org), go write me a framework. And that is a completely different playing field. The population of metaprogrammers in Ruby is about to increase exponentially. And when 10% or 20% of the Ruby population gets it and starts delivering on the promise, the playing field is so fundamentally unleveled that Java will not, cannot, catch up. For each new day, as the sun rises in one place, the sun is always setting somewhere else. This happens all the way around the world, until the sun ultimately sets for good, just as it did for July 14, 2006

Only Java won’t die, any more than C++ did or COBOL did. It just will continue a transition toward niches: a poor applications language, a good mobile computing language, a decent language for systems programming and middleware. The setting sun represents leadership, and it’s a long process. In short, Java becomes an enterprise programming language. Ironically, the same thing happened to C++—it became the language for systems programs, middleware, and high-performance enterprise applications. Does that sound familiar?

As the sun on Java’s leadership continues to set, you should expect to find the niches for other languages, like Ruby and even PHP, to increase. And increasingly, if you find yourself wanting to build a simple, green-field database-backed web app, your peers should douse you repeatedly with cold prune juice until you stop. Don’t fight it. Enjoy it. This is really a time to be embraced.

Blog