Sunday, April 8, 2007

Desktop R.I.P? Don't Count on It!

There is an interesting article in this month's Wired with the title, Desktop R.I.P. The argument goes that as more people use applications like Google, Yahoo Mail, Flickr, SalesForce, etc. the need for a desktop will go away and that we'll all live in this Internet-based world where we can have a virtual desktop sitting on some hosted server or servers.

Personally, I don't think this is going to happen for a number of reasons:

1. Hosted applications are fundamentally rented software. In most cases, the rent also scales with the load, e.g. number of users, number of transactions, etc. While this is also true with desktop/server software (maintenance fees, upgrade fees, etc.) there is typically more flexibility in options.

2. Hosted cloud based applications are a return to the "dumb-terminal" concept that has been thrown around and largely rejected for the past 30 years. Why have a $1500 machine on your desk when all it does is act like a green-screen terminal? The PC revolution over the past 20-30 years has shown that having some local hardware makes a huge impact on the experience of software.

3. There are large software segments that will never go cloud, for example games. Do you think that Electronic Arts is going to be creating the equivalent of Google Desktop anytime soon?

4. Desktops are cheap. Servers are expensive. I can buy a desktop for $1199 at MDG. The equivalent Dell server is about $3600, albeit with better power management, smaller footprint, etc. However, in general the economic models don't make much sense - why give up a cheap, non-redundant client and push all that computing to highly redundant servers that are double or triple the price for the equivalent power?

In addition, desktops are getting cheaper. If the economic engine was that desktops were getting more expensive, then a hosted model could come in as a low-cost alternative. But desktops get cheaper every year and in the case of mobile devices, video game consoles, etc. they're subsidized. So why throw away all that local computing power?

5. The desktop is no longer a single desktop - a desktop is now a TV appliance, a mobile phone, a traditional desktop, an XBOX 360, a kiosk, etc. While it is possible to boil all these down to a browser based experience, the experience is pretty lack-luster and compromises the power of these devices in their local context.

Forget desktops - just look at your blackberry and compare your blackberry email built into the client vs. going to mobile.msn.com on your WAP browser. Which one would you choose?

6. Your data sitting on someone else's servers - for the majority of killer apps, this is a non-starter, especially if the data is in the United States. If you host your CRM data in a US data centre, you've now exposed your entire customer database to the reach of the Patriot Act.

So I think the idea of the desktop death watch is premature at best. In fact, it was supposed to die a while ago with the network computer. The Network Computer was supposed to kill the desktop in the mid-90s. The exact same vision as Google's - why have that expensive desktop running local apps when you could replace with a terminal and run everything in the cloud (and of course pay Oracle/Sun a fee for it). Oracle and Sun in the mid 90's were the Google of today - they had publicly declared war on Microsoft and used the exact same arguments - Windows is too expensive, too flaky, too hard to maintain, etc. so just give up on desktops and move to the cloud where everything will be secure, cheap, etc.

How many Network Computers do you see kicking around today?

Friday, April 6, 2007

SSIS and Visual Studio 2005 are very slow...

We've been using the Business Intelligence Studio as part of Visual Studio 2005. In general, we find its a well designed ETL tool, but for one problem - its too SLOW!

From what I can see, there are two basic problems: 1) the need to repeatedly validate packages against the database; and 2) the assumption that each package gets its own connection to the database.

Problem #1: Validation

The basic problem with the speed issue seems to be its constant need to validate against the underlying database. For example by default:

I have a project where we're doing replication of tables from a SYBASE database to a SQL Server 2005 database. For each table, we've created a package. We now have 50-60 packages.

Every time you open up the project, it re-validates each package against both the SYBASE database and the SQL database. Each build re-validates. Each execute in Debug mode re-validates. Each run in production re-validates. All this validation on a slow database connection makes basic development tasks very slow.

The same thing happens when running the package in DTExec or through the SQL Agent - it pre-validates every package. This is both good and bad - its good in that it means it will fail your package before trying to execute some bad SQL or badly mapped columns, but given that you're going to run the same package over and over again without a change, there should be a way to turn off this step for packages that haven't changed.

I've looked around and haven't seen any method to change this behaviour - it would be great to have some more lazy validation, e.g. once I have validated it once, don't re validate unless I actually make a change to the package.

Problem #2: Data Sources

In an SSIS Project, there are data sources that you can define once as a common data source. However, there seems to be two problems with the data source model:

1. You cannot store an ADO.NET data source configuration as a shared data source - these have to be re-created in each package. Given how common these of connections are, this seems to me to be a big oversight.

2. Each package when its loaded creates its own connection to the database. Its very slow to create a connection and then tear it down especially with either a slow network or a slow database (e.g. an old legacy connection).

This causes problems for us with so many packages. When I open my project, Visual Studio opens each package and validates it. This causes a connection to created to every database in the package in parallel! With our old SYBASE database, it simply gets overwhelmed when Studio tries to validate 50 packages all in parallel.

My only solution so far is to consolidate packages together - I've been taking 20-30 packages and combining them into a single monster package. This reduces the connections created and speeds up validation. However, this strikes me as unreasonable from a re-usability perspective as it reduces package modularity.

I've done a bit of searching around these settings and I haven't found any way to configure the way that packages are validated - if anyone knows of a way, put a comment up so I can be corrected!

Thursday, April 5, 2007

Is it a Web Site or Blog?

Tecnorati claims they are monitoring 57 million+ blogs. In the past 30 days, I've seen news.com, nationalgeographic.com, wired.com, yahoo.com, cnn.com all show up on blog search engines.

Is a blog simply now a web site with postings? Isn't that any web site with update-able content?

How do we define a blog if everyone is now "blogging" including large corporate editorial boards?

Even wikipedia's definition of a blog seems really out of date now that corporate blogs have jumped on the bandwagon:

A blog is a user-generated website where entries are made in journal style and displayed in a reverse chronological order.

Isn't this just a web site these days? Is a newspaper site a blog? News.com and Wired certainly seem to want to claim this and they do show up in most blog search engines.

My prediction is that in a year from now the whole idea of a "Blog" will be ubiquitous and therefore an irrelevant distinction.

Expression Web and Blend will be available for MSDN subscribers

In a smart move, Microsoft has announced that it will provide Express Web and Blend products as part of the premium MSDN subscription.

See my last post on Microsoft Expression - from the first look of it, this is a great new addition to the .NET Studio Family and will help to extend the reach of the average .NET developer into the semi-creative space, e.g. user interfaces, rich media, web pages, etc.

Let's just hope it doesn't mangle XAML, HTML and CSS code like the good ol' days of FrontPage. :) Otherwise, I'm going back to Dreamweaver.

Wednesday, April 4, 2007

Microsoft should let Apple have the Toy Market

I was in Best Buy and saw some computers running vista with all the bells and whistles turned on. From what I could see, it was more annoying than cool. The whole presentation layer strikes me as something from a bad PowerPoint presentations - too much overuse of transitions, sparkly effects that provide no re all value, etc.

Microsoft, let Apple have the toy market. Give them the 1-5% of the consumer market that wants a dumb terminal with a fancy TV like interface. Concentrate on your strengths and where the money is long term. It's also where Apple will not be able to compete since they don't have the developer tools and programming language support that you get with Microsoft developer tools (.NET, IIS, SQL Server, etc.)

We've been getting exposure to Microsoft's new expression products and I can tell you first hand that its VERY COOL technology. And its cool not in the gee-whiz bang kind of way, its cool in how seamless and effective a tool it is. If you think about how difficult 3D applications used to be and how developer-centric these applications ended up being as a result, this changes the game.

So when you see Vista as a consumer OS, ignore it. Its important for Microsoft to compete in this space just maintain control over the desktop, but the real power of the newest Microsoft technologies and more importantly developer tools is in the use of 3D and rich media technologies to power money making applications.

So let Apple have the hip-cool market and concentrate on building applications that have been powering the Microsoft business market since VB 3.0 struck in big almost 15 years ago - medical applications, financial applications, business work flow and processes, logistics, medium sized businesses, etc.

VB 3.0, Access, ASP.NET, Visual Studio, etc. all were successful because an average business could get some instant productivity boost by hiring some decent intermediate programmers and get them rapidly developing business applications. Now with Expression, Microsoft can now add graphic designers, HTML coders, and digital media experts into the mix and power some very cool applications that have up to this point been out of reach of most average development shops.

Here are a few examples:

http://www.microsoft.com/products/expression/en/community/spotlight/Thirteen23.mspx
http://channel9.msdn.com/Showpost.aspx?postid=109413

Countdown to Mix 07 in Las Vegas

Microsoft is hosting its Mix 07 in the Venetian Hotel in Las Vegas from April 30-May 2.
I will be attending and probably doing some press as well. Please feel free to send me a note and I'll try to find you there.

Sunday, April 1, 2007

Test Driven Development within Visual Studio 2005

I found a little product that makes test driven development within the VS 2005 environment a breeze - check it out at www.testdriven.net.

It allows you to run any unit tests you have under the debugger, through the command line or launched in NUnit by simply right clicking on the unit test. This makes it much easier to integrate your tests into your development environment and allows for debugging driven through your NUnit tests.