# Sunday, July 6, 2008

The boys over at Desktop Alert are headed to Iraq on Wednesday to install their life saving mass communication software at US Military bases in Baghdad and Tikrit. Howard, the founder of Desktop Alert, was humbled when chosen for this assignment. I met Howard five years ago while teaching a class on .NET at CUNY in Manhattan-and he is as crazy as I am, so we hit it off. Since then I have acted as a business and technical advisor to Desktop alert and most recently architected the latest version of their software about six months ago. (Massively distributive application, right up my alley.)

To have played a small role in the success of Desktop Alert and to contribute in helping our brave men and women in uniform-and in the line of fire-is overwhelming. Having lost someone very dear in Iraq three years ago makes this even more special.

Good luck and godspeed Howard and team. I'm so proud of you.

posted on Sunday, July 6, 2008 6:41:42 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Monday, June 30, 2008

Yesterday was my last day of MBA classes and needless to say I was out partying hard last night. I woke up early for some strange reason and decided to get a jump on my book chapters for the upcoming Programming SQL Server 2008 from Microsoft Press.

My VPC died on me so I decided to give SQL Server 2008 RC0 an install on a spare machine (what better to do on a Sunday morning with a hangover). I remember reading that if you have SQL Server 2005 Express edition installed you will have trouble installing RC0. So I went in and uninstalled everything on a spare machine, too hungover to reformat. I figured I am an MBA now, I should make myself more efficient.

Well, even with nothing left of SQL Server 2005, I still got a very mean error message (well after I entered in all the account, mixed mode, information):

"The SQL Server 2005 Express Tools are installed.  To continue, remove the SQL Server 2005 Express Tools."

I was not happy since I had already removed it. So I started removing Visual Studio 2005 too. That did not work. So I decided the next thing to do was Google. Someone else had to have had this pain already. Found this post from Jason Follas. He said that if you have Red Gate SQL Prompt software installed, as I did, it leaves a bad registry key and showed how to fix it. Read the blog post here.

I can't live without Red Gate SQL Compare and SQL Data Compare so I did not mind losing some time. They save me day and days of time over the year. The good news is that Red Gate left a note on Jason's blog that the issue has been resolved.

I guess the MBA was lost on me. Oh well, at least I can write TSQL and google for install problems...

posted on Monday, June 30, 2008 12:01:05 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, June 27, 2008

Unless you have been living under a rock, you should already know about the controversy over the nHibernate mafia's Microsoft Entity Framework's Vote of No Confidence.  The manifesto says that the upcoming Entity Framework (to be released soon via .NET 3.5 SP1) is just not usable. As far as ORMs go, there are some valid points working against EF- in order of (my) importance:

  • Lack of Lazy Loading (The EF team said that they had "explicit" lazy loading, but that is just playing with words and the team has since retracted from that.)
  • Lack of persistence ignorance (at best this is inelegant design, at worst it will cripple the performance of your application and make it a burden to maintain)
  • Too many merge conflicts when using a model in a source control environment
  • Bad design for TDD development (and in my opinion, CI as well)

The manifesto also brings up some Domain Driven Design issues that I feel are less important than the above four bullets. To their credit the normally reserved EF team has responded quickly and nicely to the manifesto. On the heels of last week's transparent-design process announcement, Tim Mallalieu gave a detailed reply which has started a good discussion and wiki. They are listening and that is good.  Since the Entity Framework is starting work this week on v.next, they have also put together an advisory council including Eric Evans, Martin Fowler, Paul Hruby, Jimmy Nilsson, and myself.

To some degree the vote of no confidence worked, they got Tim's attention. I think that the manifesto has some very valid points, but I also think it lacks professionalism. Anyone can say something sucks, it is more important to give valid feedback, suggest solutions, and engage in a dialog. (The vote of no confidence was just too in your face-and a dialog was stated only because of the professionalism of the EF team.) In addition there are some mafia style attacks on anyone who does not agree with them, most recently against the always honest and open Julie Lerman.

So this blog post sounds like an endorsement of the Entity Framework and ORMs in general, right?


My first problem with ORMs in general is that they force you into a "objects first" box. Design your application and then click a button and magically all the data modeling and data access code will work itself out. This is wrong because it makes you very application centric and a lot of times a database model is going to support far more than your application. In addition an SOA environment will also conflict with ORM.

I prefer to build the application's object model and the data model at about the same time, with a "whiteboarding" approach that outlines the flows of data and functionality across the business process and problem set. Maybe it is the MBA talking but I tend to be "business and customers first" when I design a system. (Those of you that know me know that I have designed some very large and scalable systems in my day.) I usually like to "follow the money" as Ron Rose of Priceline taught me 10 years ago.  In addition, I prefer a very agile design process where you are constantly making changes to your design in the early sprints, the database and object model are both part of this process.

My second major problem with ORMs is that ORMs are a solution to a problem that should not be solved. Developers who write object oriented and procedural code like C# and Java have trouble learning the set-based mathematics theory that govern the SQL language. Developers are just plain old lazy and don't want to code SQL since it is too "hard." That is why you see bad T-SQL: developers try to solve it their way, not in a set-based way.

The premise of EF, LINQ, nHibernate, and Luca Bolongese’s original premise with ObjectSpaces, is that set-based theory causes an “impedance mismatch” between data access and all the other (more procedural) coding we do.  And it’s ORMs to the rescue to resolve the impedance mismatch.

So ORMs are trying to solve the issue of data access in a way that C# and VB developers can understand: objects, procedural, etc.  That is why they are doomed to fail. The further you abstract the developer from thinking in a set-based way and have them write in a procedural way and have the computer (ORM) convert it to a set-based way, the worse we will be off over time.

What I am saying (and have been saying for a long time) is that we should accept, no, embrace the impedance mismatch!  While others are saying we should eradicate it, I say embrace it.

ORM tools should evolve to get closer to the database, not further away.

One of the biggest hassles I see with LINQ to SQL is the typical many-to-many problem. If I have a table of Ocean Liners, vessels,  and ports, I’ll typically have a relational linking table to connect the vessels and ports via a sailing. (Can you tell I am working with Ocean Freight at the moment?) The last thing I want at the object layer is three tables! (And then another table to look up the Ocean Liner that operates the vessel.) Unfortunately, this is what most tools give me. Actually I don't even want one table, I want to hook object functionality to underlying stored procedures. I really want a port object with a vessel collection that also contains the ocean liner information. At least the Entity Framework does this however I have major concerns about the performance of the code it produces.

The ironic thing I’m now seeing is developers who are lazy and don't want to learn SQL using tools that will produce SQL for them. The SQL is bad, and now those same anti-SQL lazy developers are struggling to read pages of generated and near-unreadable SQL trying to solve performance problems. They’re dealing with SQL that’s more verbose and orders of magnitude harder to understand than what was needed in the first place!

So where do we go from here? We can't just keep pretending that this mismatch problem can be solved and keep throwing good money after bad. As Ted Neward said that is the Vietnam of Computer Science.

I say that developers should start embracing the impedance mismatch. I also say that Microsoft and other ORM vendors need to realize that embracing the mismatch is a good thing and design ORM tools that allow this. (This is the advice I will give at the EF council.) I am not anti-ORM (even tho I did trash LINQ on stage at TechEd last year), but I am pro using the right tool/technology for the right job. ORM is real good for CRUD and real bad at other things. Let's start from there. To quote Ted, "Developers [should] simply accept that there is no way to efficiently and easily close the loop on the O/R mismatch, and use an O/R-M to solve 80% (or 50% or 95%, or whatever percentage seems appropriate) of the problem and make use of SQL and relational-based access (such as "raw" JDBC or ADO.NET) to carry them past those areas where an O/R-M would create problems."

Hopefully "cooler heads will prevail."


Update 6/29/08

My fellow RD Greg Low brought to my attention that my discussion on Linq to SQL above is very similar to an email he sent not to long ago. At Triton Works (the ocean containers) we used his example in our own entity model debate and I realized after he pointed it out to me that the words above are just too close to his, so I am giving him the credit above. (Though he did not call programmers lazy and anti-SQL, I did.)

FYI, we went with POAN or Plain Old ADO.NET, ocean containers are old school.

The inspiration for this post came from not only the public debate on the EF vote of no confidence but also a private email discussion on nHybernate, EF and Linq to SQL between:  Greg, Andrew Brust, Rocky Lhotka, Sten Sundbland, Joel Semeniuk, Barry Gervin, and myself. I won't tell you who was on what side. If you want to know, you will have to ask them. Hint, hint, Canadians are lazy and anti-SQL. :)

posted on Friday, June 27, 2008 9:04:49 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [4] Trackback
# Friday, June 20, 2008

Looking over the PDC content for this fall you can definitely see a trend: Cloud Services. This is to counter Amazon's S3 offering.

First let's define what Cloud Computing is and what it means. Cloud computing is not Gmail, Hotmail, or even Google Documents. (This is why you won't see Microsoft Office moved to the Cloud in a very robust way, that is just web access for popular productivity software.) Cloud Computing is replacing an application's hardware and plumbing infrastructure with a service hosted by someone else. For example let's look a typical corporate system:

  • Back-end data storage (SQL Server, Oracle)
  • Back-end application server (IIS + .NET, COM+/ES, Tuxedo, even CICS (that dates me))
  • Front end machine to access the application (Either a workstation via a browser or windows app, or mobile device)

It gets expensive for small and even large firms to build the network, firewalls, domain services, user accounts and of course the hardware (with its underlying RAID arrays, UPSes, racks, power, etc.) Sometimes this is a barrier to growth (or even entry) for small to medium organizations. Not only do you have to learn all about subnets and RAID arrays, you also have to learn about UPS and power strategy, and manage a development project. (Man, I just want to write some stored procedures, who cares about an UPS and RAID array!)

This is a problem, epically for start-ups. You have to build a rack before you even build a company and product. That is expensive and an up-front fixed cost. More than likely you will build a rack that at overcapacity so you can grow, since it is time consuming to add more capacity later on. Also, you usually have to hire people to help you figure this out. Building a rack is expensive and also expensive to maintain.

Cloud computing is providing the back end infrastructure, the first two bullets, to firms as a service. The beauty of this model is you pay for what you are using, bandwidth, storage, and clock cycles. So a startup does not have to spend $20,000 on a new rack, they can pay a monthly cost to host their application in the "cloud" and only pay for what they need. In the beginning this will be a small fee since a startup has no customers and then the fee will grow (as revenue grows hopefully!) Amazon S3 is attracting many startups and is changing the dynamics of funding a startup since they don't need as much expensive hardware and IT expertise.

So many critics of Microsoft say that they are missing the boat by not putting MS Office up in the cloud to compete with Google Apps. While Microsoft may have to compete with Google one day in this space (I personally prefer offline Office + a service like SharePoint to share my documents.) that day is not today. The real battle will be over the true Cloud-infrastructure and ultimately the stack.

Selling customers on your Cloud platform locks them into your technology. So if Microsoft offers storage (SQL Server Data Services), application synchronization (Live Mesh), workflow/relying (BizTalk Services) and application tier (IIS as a service? or at least VPCs) services, they will get developers to use the Microsoft stack (SQL, .NET, etc.) for another generation. Throw in Hosted Office and Exchange, and they are really hooked.

Judging from the PDC content, with sessions all around Microsoft Cloud services, I think that they get it. Too bad we have to wait until October, but I sure hope that it is good stuff.

posted on Friday, June 20, 2008 11:05:42 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Sunday, June 15, 2008
Copy of 060308 TechEd  2008 Influencer Roundtable - Group

Somehow I got the shaft and was stuck in the back when Bill took his photo with us at TechEd. I volunteered to lay down in front but the photographer did not like that idea.

posted on Sunday, June 15, 2008 9:47:28 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, June 13, 2008

Yesterday Yahoo! announced a deal that will outsource their search engine to Google. For those of you who don't remember, Yahoo use to outsource their search engine to Google about 8 years go, and Google ate Yahoo's lunch. That said, this is the final nail in the Microsoft-Yahoo merger. So the real question is "what's next" for Microsoft. They have three options at a high level:

1. Go Nuclear. Launch an all out court battle against Google-Yahoo starting with a lobbying effort in Washington, DC. We saw how effective Netscape, Sun and Oracle used the US Government to bring Microsoft to heel. (And more recently Google's complaints about Vista.) Microsoft saw how effective (some say Bill Gates was never the same after that experience) the nuclear option is and may just decide to go down this route as payback for both the Yahoo hubris and the old IE trial.

2. Do nothing. Remember how big and bad AOL was 10 years ago? Netscape? They were the hot new kids on the block that was going to dethrone Microsoft. Ten years later, Microsoft is still making buckets of money, revived interest in its development platform with a new push in 2002 (.NET) and AOL is practically bankrupt and Netscape disappeared (oddly enough at the hands of AOL, sound familiar to Google-Yahoo?) Microsoft can argue that the creative destruction of the Internet companies is more of a threat to Google than themselves. The Google model has not changed in 10 years: PageRank is old and outdated (still gives you irrelevant results and forces you to search like a techie). In addition PageRank is being gamed and people are getting frustrated. People are exchanging, buying and selling links on web pages with the sole intent of manipulating search results. Someone will come up with a better system and out Google Google. (Memo, it won't be Live Search.) Microsoft can sit back and develop its Mesh and Cloud computing offerings (Web as a platform) and watch Google struggle with growing pains, more defections, US regulatory issues, and challenges from hot new startups and see where the chips fall. My guess, both MS and Google will come out ok with this strategy.

3. Acquire a large portal. This is an attractive option, but nobody has the eyeballs that Yahoo! has. Only MySpace and Facebook have the eyeballs and they have problems making money.

So if you were Steve Ballmer which would you choose?

posted on Friday, June 13, 2008 9:52:58 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Sunday, June 8, 2008

On May 22nd and 23rd  the New York chapter of the International Association of Software Architects (IASA) held its first annual two-day IT Architect Regional Conference where I was a speaker.  This event received the highest rating of any conference run by IASA to date.  It was considered so successful that we are already planning the 2009 version. 

IASA is a vendor-neutral association of/for/by architects all over the world.  The New York IASA chapter is one of the most successful IASA chapters in the United States. Sponsors of the event included Sun, Oracle, Microsoft and Robert Half.  Although this was a regional conference attendees came from as far away as Nashville Tennessee, Boston and Redmond Washington. 

The conference featured over 30 speakers from sponsor companies, the local architect community and others arranged in common keynote sessions and four breakout tracks (Enterprise Architecture, Software Architecture, Infrastructure Architecture and Architecture Fundamentals).  Keynote speakers included presentations on:  Software Plus Services, presented by Joseph Williams, Chief Technology Officer, Microsoft Enterprise Services; Interesting Real-world Architectures and the Handbook of Software Architecture presented present by Grady Booch, Chief Scientist, IBM Corporation; The Next Generation SOA Grid--Not Your MOM's Bus, presented by David Chappell, Vice President and Chief Technologist, Oracle and Technology Strategy in the World, presented by Paul Preiss, President of IASA.  The Breakout sessions also featured many presentations by local architects from companies such as Bloomberg, Group Health, Hartford Insurance, Weightwatchers and Microsoft.  

For more information about the conference agenda see http://www.iasahome.org/web/itarc/nyc/agenda.

posted on Sunday, June 8, 2008 5:40:39 PM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback
# Friday, June 6, 2008

My buddy Dan Fernandez filmed me on Channel 9 showing Ranking and Windowing and Common Table Expressions from my TSQL talk this week at TechEd. Apparently our discussion of our partying together in Istanbul, Cairo and Las Vegas was censored by the Channel 9 staff. I guess you will have to just use your imagination on that one. :)

posted on Friday, June 6, 2008 7:46:09 AM (Eastern Daylight Time, UTC-04:00)  #    Comments [0] Trackback