Tech Blog

Jay's Technical blog

I don't get ORMs...

29 November 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

Well, at least the ones I've tried.  Let's take a quick jump back down memory lane... something that Frans Bouma said to me way back here (http://theruntime.com/blogs/jaykimble/archive/2005/06/01/63937.aspx#63954) struck a chord.  I don't know ORMs that well, and despite my misgivings over Dynamic SQL, I thought I would take a second closer look and see if I could use an ORM to quickly prototype something.

Scott also chimed in (http://theruntime.com/blogs/jaykimble/archive/2005/06/01/63937.aspx#64010) and told me that I was missing the boat.  The addition of a single field means that you gotta go do a bunch of work. 

Before I continue I want to point out that I don't mean to offend anyone who I have mentioned... I just wanted to mention that you pointed me down a path that I want to discuss my opinion on.

Ok, so I decided that if an ORM could help me prototype a little faster than I just might abandon some of my own views and try it... BTW, my professional goals are to get both better and faster at what I do (which is why I use CodeSmith, CodeRush, Refactor, and others); I figure if every programmer in America were to do this for themselves maybe there wouldn't be any concern of outsourcing/offshoring us all (but that's another discussion).

I guess I should come clean with the couple ORM products I looked at (although again I don't want to embarrass anyone).  I looked at NHibernate, NJDX, RapiTier, and eXpress Persistent Objects for .NET (I also looked at Codus and there were a couple additional open source ones that I have forgotten).  I was looking for time savings... especially in the area of maintenance where a new field was needed in the database.

I was thinking that I would end up with some kind of dynamically built Business Object

What I found out was that most of these required me to create my own Business Object that I then mapped back to the database.  Many would do both Dynamic SQL as well as use Stored Procs.  In general, I liked some of the products.  My issue was that I really don't see the difference from what I'm doing with Templates.  All of the ones I looked at would require me to do something with the app to output an additional field.

The only thing that looks easier is related to the advanced querying you can do with an ORM using Dynamic SQL.  I think it's rare that someone needs these types of querying functionality.  I think that SQL 2005 facilities for returning CLR objects looks much more promising to me.

One final disclaimer: as previously mentioned I actually liked a few of the products I looked at.  eXpress Persistent Objects for .NET and NJDX, for instance, seemed to make it fairly easy to create a business object and start using it.  I'm not sure how much time either one buys me (but I'm not done looking yet either).

[BTW, stuff I owned, was given to me or I could possibly get for free was at the heart of my selection of products... I guess I should read Jason's How-To-Select an ORM Guide]


A quick post...

17 November 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I have a couple small items that I want to mention. 

If you are subscribed to my blog and not the Codebetter main feed (what's wrong with you that you're only subscribed to me???) you may have missed a review I posted for BitRock InstallBuilder Professional in our reviews area.  You can check it out here.

Also, I wanted mention a freebie; Component Factory has released a free .Net GUI Control library (for Windows Forms not web)  called the Krypton Toolkit.  This library offers MS Office style components.  A couple other important things is that it is targeted at .Net 2.0/Visual Studio 2005, and it is free for commercial use.  You can read about/get it here.


Web 2.0 (aka how to bring down the man)

10 November 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

[I guess it's been awhile since I wrote a post like this... I know some will flame me, some will agree, and some will ask me what the heck I just said]

So I have spent the last couple weeks trying to regularly read some blogs... I've been way behind and wanted to get myself re-integrated back into what's going on before I posted anything philosphical that I think is pertinent to the current news. 

In the last couple weeks I have been reading about Web 2.0, the recent Gates Memo, etc.  Scoble even commented on the memos yesterday.  I want to discuss this stuff a bit.  As an Intranet/Extranet Developer since around 1997 who cut his teeth programming  Client-Server apps (well sort of), I have a few thoughts on this. 

I read Mr. O'Reilly's piece a few weeks back on Web 2.0.  I've also been keeping up with MS recent adoption of "web 2.0" technology (the Live stuff and Atlas).  I've been sitting back taking all this in and trying to see where it goes.  Is it better or worse for me?  Let's also factor in things like ClickOnce.

We're being lead to believe by the Tech Media that all of this is the final showdown of the two sides... they want to pretend that its the Web guys (using PHP, JSP, Perl, etc). vs. the old Desktop folks (with Microsoft being shown as the poster child for the desktop app). 

I don't think that this is the case.  I also don't think it's old school single server/mainframe technology vs. client-server/smart client technology.  It's also not Web Services Vs. Ajax.  I could go on and on.  And, Scoble!  It's also not the college students vs. the old school developers.  It's far from that. 

If anything it's the next generation of technology.  I don't really see that much difference between a web service and an Ajax enabled page.  I can call both from a Desktop app, so I don't need a browser at all. 

Is it about services?  In some cases, yes, it is; in some cases, it is not about services at all. 

Is it about combining multiple information sources? Nope, not really.  And, yes, absolutely. 

I think the reason it's hard to tell is that innovation is happening in all the camps.  The real struggle is that the media seems to want Microsoft to fall, so they think that pushing HTML/Browser apps as the solution to everything.  The message to developers is that it is stupid to build anything but a browser-based web app; this in turn will cause the OS to no longer matter and we all can run Linux (or the Mac, etc.), and put the evil giant (aka Micro$oft) down! 

Ugggh!  Doesn't anyone understand that there are times to write web apps and there are times to write desktop apps.  Let me take a page out of my current job.  We have a Worldwide reachable system that is a glorified browser-based reporting app (I never give all that many details, so forgive me). 

I also have a set of business users who control the direction of things as well as report bugs request changes/fixes which sometimes require nothing more than a database table to be updated.  Currently what happens is that I engage our DBAs whenever something needs updated in a database table.  This makes even more people involved... sometimes these are routine items that take place on a regular basis but can't be scheduled and the updates can't always be predicted.  We are currently dreaming up a maintenance tool to take some of this stuff off of me and our DBA team (after dreaming will come design... I do work in an SDM shop after all <grin />).  We have some features in the web site that do similar things as our new tool will do.  We have however decided that the new tool will be a Desktop app for a number of reasons.  First and foremost is that we decided that there is no reason a web site user should be able to delete, add, or update data of this nature.  It makes sense that the only place you could do this is from our corporate network.  Since we have a few complicated features (stuff that is not impossible for Ajax, but way too difficult to do), we have decided to use a desktop app instead.  ClickOnce sounds awesome for this task to me!  I don't know if I'll get to use it, but I can hope. 

Let me give you a non-windows-based discussion (one I will give you a little more detail on).  I have one guy I write software for.  He has nothing but Macs in his place of business.  There are really 2 apps that I have created for him.  First of all, he has a web server running Tomcat and I have a web app that his customers use to enter data into.  I also have written a RealBasic app for him that uses AppleScript to place the data into Quark documents (he's in the publishing business).  I'm in the midst of upgrading this Mac OS X App so that it spits out XML, because the latest version of Quark reads XML.  In the next month, this will all be automated.  I will still need the mac app, and my plan is to add some additional features for him (like a data editting facility).  Why not do this in the Web app?  2 reasons really.  The first is that I don't think web-users should be able to have this level of power to control the database.  The second reason is that I'm not that good with JSP (ok, I suck... although I'm trying to get a little better with it).

So here's the point of all this.  Does the web still matter? (and when I say that I mean "do browser-based apps matter?")  Absolutely they do.  Do Windows/Desktop apps still matter?  Yep, they absolutely do!  It's my whole "right tool for the right job" speech.  Look at what you're doing, choose what makes sense.  If both make sense then choose the method that will be the easiest for you (or your team) to do.  Everything else on this matter from the tech media is pure hype trying to bring down the Man (Microsoft).


MS doesn't know how to name products...

07 November 2005
Jay Kimble

[WARNING! This is an archived post and as such there may be things broken/missing here.. you have been warned.]

I know I have been out of commission for a couple months (I just finished my last How-Select-Guide for a while).  I also know that others have may have commented on this, but I feel a need to rehash (I've been out of commission and have been saving this one up).

I think the codenames are actually better than the marketing names for a number of MS' new products (BTW, in case you've forgotten I'm the CodeBetter guy who has a decent knowledge of marketing to developers).  I won't comment on Vista, for numerous reasons, but mainly because marketing OSes is a little outside my field of knowledge.  I do want to comment on the names "Windows Presentation Framework" (WPF) and "Windows Communications Framework" (WCF).  I liked the codenames better for both of these.

Let's start with WCF which was called "Indigo."  [I must admit that I haven't played with Indigo, yet, so someone will need to correct me a bit... I have read a bit, BTW].  First I refer you to the Wikipedia entry on Indigo.  Indigo as you can see is a color between Blue and Violet.  It is a special color in that it can't be reproduced on a computer screen and that the human eye is relatively insensitive to.  Basically, Indigo is a color, but it is a very special color... To the human eye, Indigo --the color-- is hard to distinguish between Blue and violet, so therefore making a class using Indigo --the framework-- would probably not look all that different from a regular class (not too many changes would need to be made to the class), and it's magic would be seemless.  Indigo also sounds special and it requires me to go look it up... WCF sounds like I should already know what it is.

To explain my misgivings with the WCF marketing I imagine this conversation
 MS Marketer: It's.. uhmm... Windows Communications Framework... you know the framework you use with Windows for... uhhh... communications. 
 Me: Ohh, you mean they have created a serial/networking communications framework?!!?
 MS Marketer: No, WCF is for building next generation libraries for remote communications
 Me: ohh, so it's a peer-to-peer networking component that only works in Windows
 MS Marketer: <exasperated>No!!!</exasperated>  It's the COM+ replacement.
 Me: Ohhh... I get it... I think

Now WPF vs. Avalon is a different story.  I don't need Wikipedia for this one.  Avalon is a word that can mean "heaven." [Update: OK, maybe it's not exactly heaven, but maybe more like "legendary place", but the concept is still the same...]  WPF/Avalon is the new graphics framework for Windows Vista (it will also be available for XP).  It provides a very cool set of features.  If you choose Avalon as its name, you are saying that this framework is heaven... it is the objective to which all GUI object models hope to achieve...

WPF smacks of a lack of creativity.  Again the name exudes no emotion and causes me to assume that I already know this technology (since I understand GDI+).

Apple understands what I'm trying to say.  Their presentation layer on Mac OS X is NOT Macintosh Presentation Layer or even OSX Presentation Layer... it's Aqua.  What's Aqua? it's fluid like water... therefore easy to use (at least that's what the marketing means to me).

Two bonuses... Visual Studio 2005 or Whidbey.  All I can say is that Whidbey is an Island in Washington State.  Looking at the tourism site, I can see that it has some decent parks and recreation... I great place to have a picnic, to go hiking, etc..  This says to me that if I had a development IDE called Whidbey, the development environment is a place that seems less like work and more like recreation.  What about Visual Studio 2005??? It's just a new IDE released in 2005.

Yukon vs. SQL Server 2005.  Yukon is a rugged territory in Canada.  Rugged to me means that the product is tough... while this is a strong assertions, if it proves out then Yukon would definitely be a great name.  Do I need to even comment on SQL Server 2005?

BTW, I could have added the wordy names for the newer PocketPC OSes.