Friday, July 13, 2007

"Sell Out"

Yes, I admit it. I am a sell out, a turn coat, and a fair weather friend, at least as far as it goes when it comes to development platforms and methodologies.

You see it all began 5 years ago.... (Cue the time warp ripple effect)... when I had just bought my first computer. My previous 2 computers were bought by my Dad (thanks Dad) and were an NEC V20 (no, that's not a Vic 20, but a 12Mhz XT clone, almost a 286) and a 386SX Magnovox (it ran Windows 3.1, I was so excited, it had 8MB of RAM, ah those were the days). Anyways, enough rambling, back to the point. I had just discovered Linux and now that I had a new computer, it was time to install it! I was taking Computer Science at UNB at the time, and could do most of my homework on Linux (C, C++, Modula2, COBOL, except VisualBASIC, had to dual boot Windows 98 for that). I was enjoying the fact that I could install so many programs for free. It was a dream come true for a poor struggling university student.

As time went on and I moved into the work force I discovered Java, and then Java running on Linux, and then a web development framework called Tapestry. It was awesome. It was a Model View Controller framework with a property pull model. Most frameworks at the time were a push model, you wanted to change the text on a button, you had to issue a command to change it, with Tapestry, you changed the string that the button monitored, the button changed it's text. I know it sounds petty, but it really was a better model. In fact Visual Studio 2008 and to some extent .NET Framework 3.0 will/do support this model, 5 years after Tapestry had it, and I realize that probably WebObjects on the Mac had it too as it inspired Tapestry (just in case an Apple Web geek reads this).

So I loved my Tapestry, built many a website with it. Discovered Eclipse, loved it. Got into Object Relational Mapping first with Torque and then with Hibernate. (For those who don't know, ORM basically means that instead of having to deal with data from a database as fields, I could model the whole record as an object and deal with it in a very Object Orientated (OO) way). Life was good. Then my job went down the tubes and I was looking for new work.

That is when I met ASP.NET (I was freelancing for a great company, I just can't tell you their name). It was at ***** that I discovered ASP.NET and suddenly all of the stuff I used to have to do by hand (like crafting HTML, CSS, XML, SQL Statements, etc) and had to build from scratch (don't even go there), where included. It was a hard learning curve, but now that I know it, I can never go back. Too much is given to you "out of the box". I guess there is a reason why Microsoft has gotten to the top (other than the stealing, the lies, the cheating, and the buying off of key officials. Well, ok, some of that I made up. Well, the last one is made up as far as I know....)

Let me give you an example: Portals. I couldn't find a good portal technology that didn't mean rewriting my whole website system (and we had built a good one) from scratch or trying to adapt the Sun Microsystems Portlet Specification to the platform. When I opened the Visual Studio 2005 box, it was included!! All I had to do was build or buy Portlets (WebParts as Microsoft calls them). Then there was Authorization / Authentication, Data Presentation (Grids, Datalists, Forms, etc), Validation (though Tapestry had that), Navigation and Menus, Reporting. Then there was C#, it finally introduced Properties (but to be fair Delphi / Pascal had them long before C# and I loved Delphi before I got into Web Development) and operator overloading. And now there is LINQ, Entity Data Models, and AJAX Extensions. It's too late, I am hooked.

The only regret I have is that Tapestry had an awesome IOC container, that Microsoft has yet to catch onto (though they are trying with their Web Client Factory, but it's just not the same...) I'm going to look into Spring.NET and see if they are doing any better.

So I admit it, I'm a "Sell Out", but I would do it all over again.

No comments: