Welcome CodeGear.com readers – a Mike Does Tech primer

It is an honor to have my blog featured on CodeGear.com. I am a longtime user of Borland’s products with a passion for cutting-edge technologies. Let me tell you about myself and what you might find of interest here.

Mike Does Tech was started when my caffeine-fueled talk proposal for the First International Rails Conference was accepted. The presentation was about rich internet applications, specifically using OpenLaszlo with Rails, and it was great fun to be a part of that seminal event and to meet so many cool people.

The rise of Functional Programming with its adoption, among other places, in new Microsoft technologies lead me to wonder whether OOP is dead — or at least if mutable objects as the dominant metaphor for programming may not be outdated. Imperative programming languages seem to be becoming more functionally oriented with each new release, and that is a good thing.

I believe in radical openness, so when it came time to take on new projects as a newly independent developer, I put my biases and braggadocio right out there for the world to see.

My blog posts waned in the final half of 2006 as my health rapidly diminished. I finally recovered my well-being and found my voice again when I confronted my then-diagnosed diabetes. I am doing great now. I mean, check out these biceps! Thanks for all the words of support.

When Borland’s newly independent CodeGear arm announced Delphi for PHP, I was hopeful that the highly re-usable component frameworks of the 90’s would find a resurgence in the great new dynamic languages, like Ruby, that are taking the development world by storm. Let’s hope.

CodeGear VP Mike Swindell shared his vision for Ruby with me weeks prior to their announcements at the second Rails conference, and while it comes up short of bringing the power of Delphi to Ruby just yet, I was impressed with their vision. These guys are going to bring the JBuilder code base to bear on Ruby, for starters — which is pretty huge — and who knows where it goes from there. Fucking geniuses, those guys are. I mean, c’mon, they read Mike Does Tech!

Speaking of geniuses, Avi Bryant and I had a provocative discussion about Smalltalk and Seaside — a fully realized component-oriented web framework in the spirit of WebObjects — that stirred the pot ahead of his featured talk at this year’s Rails conference.

CodeGear’s new Eclipse-based Ruby IDE holds a lot of promise. I am not sure that I can be lured back to IDE’s from VIM under any circumstances now that I have repented from my GUI ways to embrace Linux and the command line, but if anyone can do it, those guys can. Time will tell what they come up with, and if you care to subscribe to my RSS feed, you may well hear all about it first right here.

After reviewing all of this I am a bit surprised at how little I have actually committed to the page over the past year or so. I promise to do more in the coming months, including a new series, “Frameworks from the Edge,” where I will talk to the people behind some remarkable efforts with Erlang, Haskell and Scala. It should be fun.

Also, be sure to check out some earlier interviews with Dennis Kucinich, Amy Hempel and Scott Rosenberg. They’re my heroes and it was just a huge privilege to get to talk to each of them.

Finally, if you are looking for software developers who understand the promise of the new dynamic platforms and temper that with a wealth of experience in filling the needs of mature enterprise shops, drop me a line.

Thanks for reading.


Avi Bryant’s selective vision?

In Mike Schinkel‘s artfully crafted rant, Avi Bryant is “Seeing things the way in which one wants them to be (not the way they are)” — especially with regard to the need for clean URL’s. I can see the merit of both sides of this argument, and I think it speaks to the larger divide between page-oriented frameworks like Rails, and more flexible, but arguably less web-centric frameworks like Wicket.

Of course, for every Wikipedia, or other site that effectively uses clean URL’s, I could give you an Amazon — as Avi cited — or an iTunes music store, or a GMail, where URL’s are completely unimportant, and those applications do not ‘subvert the web’ or leave their users deprived. It is a design decision, whether the interface that the system presents through URL’s is important or not.

As to the wider question of whether Avi Bryant suffers from “confirmation bias,” or otherwise fails to embrace views that challenge his suppositions — well, I think we should refrain from psychoanalyzing each other through our blogs, eh? When I spoke with Avi, he actually agreed with me that learning Haskell or Erlang would be a great thing to embark on, challenging many of our pre-conceptions of what software should look like. He is an open-minded guy.

Finally, I should mention that clean URL’s in Seaside, as Ramon Leon pointed out, are quite possible. They are just not the default behavior.

Did I mention Wicket yet? It is really cool…especially if it could be combined with JRuby

CodeGear Ruby IDE beta is now open to the public [corrected]

Borland’s CodeGear arm is showing some progressive thinking by opening up their beta program early for RedDiamond aka RBuilder aka whatever-they-eventually-name-it. Go sign up.

Correction: Sorry about that, folks. Although there is a publicly accessible URL to sign-up and hundreds of cards with that same URL were passed out at RailsConf, the CodeGear folks aren’t ready for a massive, indiscriminate influx of beta testers. I know that seems a little…arbitrary…I mean, anyone reading this blog is smart enough to be a beta tester in my book. I am working to get a clarification. Meanwhile, email me and I will let you know the way to get into the beta as soon as I can.

Now that several other blogs are linking to it, I have restored the link to the sign-up. There is still some confusion as to whether CodeGear management wants it publicized yet, but I am taking the position that it is a publicly available URL, so I am publishing it while they figure it out. Feel free to sign up, but strive to be a valuable participant. They don’t want to drown in the noise of too many new testers.

Sweet, sweet relief

I’ve learned to love TextMate, and then VIM, in the course of the last 18 months. But when I am coding in Ruby with Rails, I still have that middle-of-the-night, feeling-my-way-around-the-room in the dark sensation. Sure, the Rails console is handy, and I can see how proficiency with VIM, or even Emacs, could lead one to becoming a text hurling Ninja. These are hard-won skills, though, worthy as they may be. And me, I am spoiled.

I grew up with Delphi, then used Eclipse — which had plugins for everything, and everything was visual. Class browsers, stepping debuggers, variable watchpoint outputter thingies, call stack displays — having your entire application, code, variables, inheritance trees — everything — right in front of you was just another days work. It was expected. You visually merge your source branches with Subclipse. You want to refactor? A visual list of what code modules will be impacted appears before your eyes. You get the idea.

Oh, and all of it just worked. I am sure that I could have automatic code completion and most of the other features I am describing in VIM — if only I were one of the seven people on the planet with the right set of VIM add-ons and knowledge of the arcane key combinations that make them work. I am working on it. Really. But why must it be so hard? Maybe it is me.

So I have been more than a little excited that CodeGear, the independent developer tools arm of Borland, is as enthralled with Rails and Ruby as the rest of us are these days. These guys basically invented the commercial IDE (well, ok, when you ignore what Doug Engelbart and Alan Kay did, but, you know, c’mon, they did *everything* first, we have to share the love here) with Turbo Pascal and have been doing it better than everyone else (certainly Microsoft, but maybe not JetBrains — hey this is my opinion, so give me some slack here) ever since. Anyway, these guys know how to make great developer tools and Rails will be forever changed by their attention.

The announcement came out first thing on Monday that the Eclipse-based Rails development environment first pre-announced right here at Mike Does Tech (yeah, me!) is officially Coming Real Soon. The press release featured DHH’s response to that pre-announcement, a direct quote from this blog also (yeah, me — again!), but while that quote was attributed to DHH, yours truly forgot to request that a certain PR guy attribute the quote’s origin to Mike Does Tech. And that is ok, because I am not *that* much of an attention whore, anyhow.

Half-assed attention whore though I may be, I am no vendor’s mindless fanboy. CodeGear VP Mike Swindell offered to give me the skinny — or, at least, more of the skinny than he gave me several weeks ago — on what the product will look like, and what it will do. I did my best to ask the Tough Questions, because, frankly, they have a hard road ahead. Rails programmers look askance at IDE’s, and I think some of that has to do with the resource intensive nature, and general Java-based clunkiness, of Eclipse. Or maybe it is the unmitigated evil-by-association of Visual Studio. (Shame on you if you use their tools.) At the very least, IDE’s are associated with cubicle drones, and not trendy Powerbook slinging Rails heroes with bad facial hair — present company included. But I think that is about to change.

[Aside to Microsoft over that whole Linux-is-violating-our-patents thing: On behalf of one of the many “developers, developers, developers:” Fuck you, fuck you, fuck you. How stupid can you be? Do you think any of us will *ever* recommend your software for anything ever again?]

What wasn’t particularly interesting about my conversation with Swindell is probably what matters most to those of us who program in Rails using TextMate or VIM today: that we are within months of seeing a development environment with a feature set very much like that of JBuilder, but tuned very specifically to the needs of Rails developers. What made that uninteresting is that these kinds of rich environments are not news outside of the Rails world. Take some time to look at what JBuilder can do, though, and you realize that within a year, probably, Rails development using such powerful tools will be commonplace.

But this article is not really about that. It is easy to see how a CodeGear-authored, Eclipse-based Rails developer tool will appeal to the many developer shops that cannot get the bitter taste of Java’s complexity out of their mouth. Did you really think that Struts + Spring + Hibernate + a bunch of other layers would simplify your life? How silly. I couldn’t run away from that crap fast enough.

The question that matters is how do you convince a command line jockey (and an aspiring text Ninja, like myself) to forsake the mythic and obscure powers of the prompt for the seemingly superficial and blingy (but handy) IDE? The answer is, you don’t.

Finally, I quote Swindell from our conversation on Monday:

We looked at how developers are building Ruby on Rails apps today. There is a lot of command-line development, a lot of TextMate, a lot of VIM, and one of the challenges that we wanted to solve was, how do we bring the power of the IDE to the command-line developer? Since there are so many things being done at the command line with RoR, how do we introduce that to the IDE developer without hiding everything that is happening? Looking at that paradox, we came up with an IDE innovation we call Commanders. It is bringing the command line and the console into the IDE, and merging them.

We have integrated all of the IDE features directly into the command line so that anything you can do in the IDE is exposed to the command line. So you get all of the power of the command line, married with all of the features in the IDE. Everything that you are doing in the IDE is reflected in the command line, so nothing is hidden from you. You can see everything that is happening. You don’t have to decide which approach to take. It is essentially a meeting point between the command line and the IDE.

Of course, you can bring the command line into VIM and Emacs in various ways, and, to a lesser extent, to TextMate. But what Swindell describes sounds like more than that. The IDE, including the Rails workspace within Eclipse, and the Eclipse workspace itself, become tools that are opened up to the command line, and the command line becomes a tool that is usable within the IDE. Within Eclipse.

It begins to sound like a late-night kitchen knife commercial — Wait! There’s more! — but the deal becomes:

  • Eclipse, a very capable editor and development environment in its own right
  • A whole world of Eclipse plugins for everything from visual modeling down to svn code diffing and management — much of it free and open source
  • A Rails workspace via a (very unfortunately) as-yet-unnamed CodeGear product (hey CodeGear marketing, wtf?)
  • A command line interface to and from the IDE
  • Ultimately, but not in the initial release, the team development features of JBuilder (a very mature and respected product, for good reason)

Pretty sweet, eh? You’ll thank me when the public beta happens later this summer. Or, if you are one of those lucky bastards heading to RailsConf, where CodeGear will be showing this off, sooner.

Delphi for PHP is exceeding CodeGear’s expectations. The VCL for Ruby? Still very much a possibility, but not an immediate priority for them. But what I was most impressed with was that CodeGear wants to drive Rails adoption. They hear from unhappy Java folks every day. Swindell said, “We are really treating our Ruby on Rails effort as our Next Big Thing,” and he meant it.

I am excited to see where this goes, and I promise to stay on top of it to bring you as much information — and screen shots! — as soon as I can. I love Rails, but that fumbling around in the dark thing, that not having modern tools thing, it sucks. Sometimes you have urgent business to attend to, and the last thing you want is to have trouble finding your way. Fear not, relief is in sight.

Formatting US dollars with Ruby

This was surprisingly hard to find, so I thought I would post it here. This line will format a number as US dollars, including commas. In a Rails view, you can just use number_to_currency, but in straight-up Ruby, you can do this:

sprintf('$%0.2f',value).gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")

Just another reminder for me that I need to brush up on regular expressions. 🙂

Mindmeister goes live

Mindmeister went live last night, and I just can’t recommend it highly enough. I usually have about 20 mind maps going at a time, for everything from my current development tasks to personal and family goals. Having them centralized in a great web-based user interface has been hugely beneficial. I’ve certainly become addicted during the private beta phase.

Great work, guys.