Patrick Verbruggen's Blog

Built To Change

Browsing Posts published in September, 2008

While I know a few organisations that are still on .NET 1.1 and VS2003, Microsoft is already 3 or 4 generations generations ahead. Yesterday, they introduced .NET 4.0 and Visual Studio 2010. Not surprisingly, modeling tools seem to be one of the big centers of attention.

Read all about it here.

The Visual Studio 2010 Web site is here.

Most of us live at least part of our lives online. Doing so, a lot of information about you, your life, your finances, the people you interact with, etc. accumulates online, gradually, sometimes over quite long periods. I sometimes wonder how safe all of that information is locked away and how easy it would be for others to access it. 

If you want to store a lot of information online, you really have no choice but to intrinsically trust the companies you choose to store it with. You could of course opt to spread it around, but that usually makes it more difficult to use or harder to access.

Then there’s the issue of how to get access to that information. Usually, you have a user account and a password. Your user account name is very often publicly known (like your email address), so all that’s keeping anyone from accessing your information is your password.

Personally, I use Google’s stuff extensively (sorry Microsoft: they had the services before you did…)

Every email I’ve ever received on all of my email accounts since April 2005 is also stored in Gmail, so are all of my non-work related chat sessions (mostly with my daughter and some of my friends), Google Calendar contains my personal agenda and a kind of “one-line-daily-diary” I’ve been keeping since 2005. All of my pictures (both public and personal ones) are on Picasa, and most – if not all – of my personal documents are stored in Google Docs. I use Google Reader to read my feeds, and my search history is kept by Google too.

All of these things are accessed from my Google user account and password.

As I was thinking about this, I realised that someone who would be able to guess my password would get to know a lot more about me than I would be comfortable with. A possible intruder would know my joys and sorrows, what I do and what I don’t, what I like and don’t like, what I’m interested in, where I’ve been, when I’ve been there and for how long, where I plan to go in the near future, who I like and who I don’t, what I own and what I payed for it, how much money I make and what I spend it on.

In short: that person would have an insight into my life that goes beyond what even my closest relatives have. And all of that is protected with nothing more than a simple password.

OK: now I’ve managed to scare myself. Excuse my while I go change my password into someting very long and horribly unguessable…

Microsoft has just released the RC0 of Silverlight 2.0 and is placing Rich Internet Applications clearly front and center (which is completely in line with Microsoft’s other “moves towards the cloud”).

There’s a lot of showcases on that site. Take a good look at them. If you’re a WinForms developer, you should check out Netika’s GOA Winforms For Microsoft SilverLight, or one of the many other similar things.

If you do, you’ll know what you’ll be using pretty soon instead of WinForms. Be prepared!

No way would I treat this email as one of those from Africa:-)

I just saw a 1TB harddisk advertised for 105€. That’s less than 11 cents per GB. The first harddisk I ever bought about (must have been somewhere around 1986, I guess) cost around 500€ (or 20.000 Belgian Francs, back then). It had a size of 20 MB (yes, you’re reading that correctly: MEGAbytes), or 0,02 GB. That’s a cost of around 25.000€ per Gb.

The cost per Gb for harddisk storage space has come down over 225.000 times in 22 years. Amazing.

It’ll be standing room only at the PDC Keynotes. Better train myself in getting up early. Should be no problem because the 9 hour time shift always makes me wake up at 3am anyway…

It’s probably been there for ages, but I just found out about it now via Mick Breeze’s blog: get the Microsoft BizTalk Server Performance Optimization Guide.

We’ve been hearing a lot about Windows 7 these past few weeks, and now it appears that this was no coincidence: Microsoft intends to take the wraps off at the PDC, and we will all get a pre-beta copy.

I do hope it’s better than the milestone build of Windows Vista (then still called Longhorn) we got at PDC 2003, because that one really - eh – sucked :-) Not to mention the fact that it wasn’t anything like the final product. Among other things, it still had WinFS, remember anyone?

For those of you that were still wondering if cloud computing would really catch on: Oracle and Amazon have just announced that several Oracle products can now be licensed to run on Amazon’s EC2, while backups can be made on Amazon’s S3 web service through the Oracle Secure Backup Cloud module.

One of the big advantages of such schemes is the almost instant availability of additional computing resources. Need an additional server? Just add it in a matter of minutes, all software is pre-installed. Pay for it while you use it. Don’t need it any more? Stop using it and stop paying for it instantly.

Such fine-grained flexibility is a typical feature of cloud computing that is next to impossible to provide locally in your own datacenter, especially if it’s of a modest size. If you buy a server, you’re more or less stuck with it untill it becomes obsolete. If you temporarily need additional resources, you need to buy more iron, and hope that you can find a use for it once the temporary need goes away.

Get over here with your webcam ready, click the “Show the world” button and record a 5 second video clip telling the world why you are a PC. Then see your face plastered all over the billboard in Times Square, NY.

Using XML schemas to describe data that you need to exchange with 3rd parties is great. Schemas define a machine-readable format that can be directly re-used by developers on the “other side”. Now isn’t that a win-win situation if you ever saw one?

However, while I think that schemas should be regarded as contracts, if you are designing schemas that will be handed over to business partners, you should think about them long and hard. Once you hand them over, there’s no turning back: these schemas now live in a world over which you have no control. You do not know how and where they will be used, nor can you estimate what impact a possible change may have on your business partners.

Handing out a schema is like signing a contract: it becomes carved in stone. Schemas you have shared with business partners should be regarded as immutable. There’s really no such thing as a schema change. There’s only new schemas… 

That’s why I’m all for building schemas with flexibility in mind. They should only be as strict as they really, really, really need to be (and even then subtract another 20% :-) ). If you’re the schema creator, you have to keep that in mind all the time, and you must think about the possible scenarios that may result from what you are doing.

Don’t think about schemas as a developer, think about them as a business user.

Here’s an example: do you really want to refuse a 100.000€ order message with an “invalid messsage” error the moment you receive it – annoying the crap out of your customer, your salespeople, and probably your CEO in the process – because the customer’s software may not be as strict as yours and he accidently misformatted the order date? Keep in mind that there (usually) are humans in your organisation, who can look at that misformatted date and either interpret it, or pick up the phone and call the customer. The goal is not avoiding errors, the goal is allowing the order to be processed even in case of correctable errors.

In other words, you should be able to deal with a lot of eventualities in the business processes that sit behind your interfaces. That’s the place where you really define your level of flexibility. Your XML schemas should allow for that flexibility.

A good way to think about that is to regard messsages you receive from customers not as something that needs to be stuffed in databases and therefore needs to be tightly controlled.

The XML order message you receive from your customer isn’t the order itself! 

Instead, it’s just the trigger that starts your internal order process, during which you can validate, correct, enrich, and route the data to wherever it needs to be. The result of that process is an order (and probably some other things as well).

Your customers, salespeople and CEO will be grateful…

I overheard a developer at a customer site the other day talking about an interfacing project he was working on. Since the “other party” was the logical owner of the information (and also the customer, in this case), it was up to that other party to define how the data being exchanged would look like.

He then explained that he received specifications from the customer. The specs described an XML message format, and contained an XML schema and some sample XML files. However, when he tried to validate the sample messages against the schema, every single one of them failed, for various reasons. When he called them about this, they said that the schemas weren’t “real”, they were just intended to support the documentation.

It really baffles me why someone would want to do this. What is the purpose of using an XML Schema if it is (knowingly!) wrong? A schema is very easy to read for an XML processor, but very hard to read for humans, so it serves no purpose as documentation.

A schema should be much more than just documentation: it should be a contract between parties, carved in stone, and signed in blood (however, more on that subject in a later post!). Using a schema to describe data, and then having the actual data deviate from the schema should be punishable by law. It is pointless and creates confusion.

If you decide to use XML, then XML Schemas should be the basis of everything you do. Without schemas, XML is nothing more than a bloated, complicated and oversized data format with little or no added value, hard to process and validate.The only advantage left is that it may be slightly easier on the human eye…

Today is the funeral of Patrick Tisseghem, one of the most respected members of the world-wide SharePoint community, who suddenly passed away 2 weeks ago on September 3rd.

I’ve known Patrick for years through our involvements in the Belgian Microsoft developer community. We went to a couple of TechEds and PDCs together, and although these last couple of years we haven’t had much contact because I was less involved in the community, I still have fond memories of those times. I’ve come to know Patrick as a friendly guy who excelled through the knowledge of his subject, his wittiness, and his sincerity.

Goodbye, Patrick. You will be missed. My sincere condolences to Patrick’s family, friends, and colleagues.

If you’re doing BizTalk development, chances are that Business Activity Monitoring (BAM) is just one of those things you are aware of that they exist in BizTalk, but you just never got round to using them in a project, so you more or less keep guessing what they can do and how they work. (Hey: don’t look at me :-) )

Microsoft has made a BAM Training Kit available, so that excuse isn’t valid any more.

Get it here: Business Activity Monitoring (BAM) Training Kit. And while you’re at it, also get the BAM Installation & Configuration Guide (scroll to the bottom of the page).

James Taylor makes interesting statements regarding Application Development 2.0:

  • Collaborate don’t compete
  • Declare don’t code
  • Iterate don’t finish