Microsoft Architect Council and OBA’s
I had the pleasure to be invited to the architects council yesterday,
which was presented by Philippe Destoop and had as primary subject OBA's,
also known as Office Business Applications.
Microsoft recently set up a blog concerning the council at blogs.msdn.com/architectsrule and Philippe just updated the blog with the latest info on the new OBA reference application pack for health plans.
They already released a pack for loan administration (amongst others) just to prove that these application packs don't only cover 'hello world' or 'currency converter' examples.
So what are OBA's ?
This definition is solely based on my perception after reading the articles on the microsoft architect journal and the meeting yesterday, so please do correct me if I'm wrong...
Office business applications are what Microsoft detects as the need for businesses all around the world to manage the complex knowledge people are storing in local excel and word files. Or as we would put it, IT minded people as we are, in a mainly un-controllable, hard to scale and highly un-automated storage. Microsoft consultancy services (and all other mainstream IT'ers) around the globe are faced with the complex challenges of migrating these 'tactically placed solutions' made by programmers with an awful lot of business knowledge to process driven, load-balanced, scalable and managed strategic solutions.
A quick example to illustrate:
Some companies have applications in MsAccess which contain over 50,000 lines of code or MsExcel files of over 2Gb, updated and managed over years by 'end user computing programmers' and then at some point the application 'explodes' and the strategic solutions people (read architects and business analysts) are called in to design a solution that scales better, but with the same ease of use and extensibility!
Until recently the only solution (provided and supported by Microsoft) to be made was to set up a strategic solution, being a custom-build tool to do the job, or buying in on a package containing the required logic.
The problem however remains that these applications are harder to cope with than the office tools people are accustomed with. Business people do like the office package, alot! There is nothing as easy as to update an excel file, include some macro's and complex formulas, add some fancy graphics and go to a customer and sell your product. The problems the strategic solutions will have to tackle at that point, for instance high grade of unpredictable customisation, occasionally connected scenarios etc are really hard to tackle.
Or when in place require a great mind shift from the 'business side'.
So Microsoft reflected about it and tried to tackle the problem thinking primarily about the end user, the customer, the business ... They came up with a set of tools/ideas to implement these complex strategies and presented them to us yesterday in an open discussion.
So what did they present?
They came up with an interesting approach to tackle the problem from and end user view. Namely use the new tools/bits/parts Microsoft provides you to create a manageable layer on top of your LOBS (Line of Business) applications.
They started pointing some problems with a pure SOA approach (on this subject ofcourse), namely that services are still hard to relate to business activities. So add an additional layer of flexibility called a 'process tier', which can be an entire enterprise service bus or an easy to use (still a little hard to configure at the time however) component called the Business Data Catalog. This will provide you a caching enabled, read-only (for the moment) view on your 'strategic applications', an give you the opportunity to handle this data within word / excel apps.
Say what ?
Indeed, this abstraction layer will provide you data from SAP / Siebel / Oracle / Mainframe applications and databases and an easy way to handle these within smart documents / smart tags and action panes.
In other words: The user will be able to fill in a Word/Excel document in a process driven, manageable way.
So far all was looking perfect.
Then they hit a topic which troubled me, they provide 'patterns' and related these to the design patterns of the gang of four. However in the presentation it looked a bit like a showcase of what the new 2007 office system could do for solving your business needs. Although respectable, the fact that they tried to relate to the GoF troubled me. So when asked for my opinion, or to be precise when the 'discussion round' started and I couldn't stop myself anymore ![]()
I tried to point Philippe at the fact that although these solutions look really well and most business are in fact eager to receive such apps, the term patterns was either confusing or the presentation/slides didn't reflect what they where trying to do.
For me a pattern is an in-field proven solution, loosely coupled with any technology/language/toolset which provides an answer to a well stated problem within a given context. (*)
This however was not met in my humble opinion, the solutions were given and working samples will be provided (which is a plus ofcourse), but the actual problem / context was not clearly stated making it hard to figure out which pattern is thé best solution.
Don't get my wrong, I think the idea of listening to your business is the best approach to providing software with an added value. I do think however that these 'components/parts' still have a life ahead of them before they become 'patterns' with major adoption. The problem for starters is that these solutions are based on technology, namely office and to be more precise 2007 office system.
My 2 cents:
Providing a clearly stated problem within a context and stating the concept of your solution with pro and cons and then showing a technology driven sample would already help ...
I do think the council was providing a clear view of what Microsoft is targeting in the near future and the counter-view of what architects in the BeLux believe are the troubles ahead is a good starting point for building stable/manageable applications / structures.
Some points still remain on the agenda for the next time namely how to manage these newly created smart-documents and applications ? When will the Business Data Catalog be capable of providing read-write access to your strategic apps ? What if your big company can't update all workstations to 2007 office system in the near future ?
I feel confident however that these problems / subjects will be tackled ...
(*) As I was trying to make my point I had an embarrassing moment, I was busy trying to state that the gang of four wrote the book while SmallTalk was booming (sort of) but that the patterns remained usable for all these years. While I was saying this, in my head I was already trying to state that the way it was presented made it hard to do this. At a given moment I paused because I thought somebody wanted to react on my comment (but didn't) and I finished of my sentence. ... awkward silence ... I then realised I finished a sentence I didn't even start saying ....
Brackets on an Azerty mac keyboard

If you own an azerty mac keyboard you must have noticed the lack of the following keys:
\ { } [ ]
Quick tip:
\ = alt + shift + /
{ = alt + (
} = alt + )
[ = alt + shift + (
] = alt + shift + )
Just so I don't have to tell this over and over again to the new adopters...
How to generate a random string in c# 2.0
Although this is common knowledge to most dev's,
I justed wanted to share some possible approaches for generating a random string in C#.
Approach 1: Create a static method in a utility class that will return a defined length of random characters.
One possible implementation could be:
static class Generator
{
private static Random _random = new Random();
public static string RandomString(int size)
{StringBuilder builder = new StringBuilder();
for(int i=0; i < size; i++)
{//26 letters in the alfabet, ascii + 65 for the capital letters
builder.Append(Convert.ToChar(Convert.ToInt32(Math.Floor(26 * _random.NextDouble() + 65))));}
return builder.ToString();}
}
Advantage:
- can produce multiple length strings
- can easily be updated to provide string with lowercase/uppercase/numbers in it
Approach 2: GUID
Just use a GUID if may contain numbers, letters and the character '-'
string randomString = Guid.NewGuid().ToString();
Advantage:
- Simple, always unique
Disadvantage: always 36 chars in length
Approach 3 (humor): Be Lame
![]()
Be lame and try the following
string randomString = System.IO.Path.ChangeExtension(System.IO.Path.GetRandomFileName(), null);
DisAdvantage: only produces strings of 8 characters and the idea is really way off...
Any one else fancy to post a (humorlike approach to a) random string generating solution ?
Booting XP in safe mode through Parallels

Just a quick tip, which took me 15 minutes to find
When you need your windows xp to boot up in safe mode through Parallels you need to press fn-F8 (Apple key-F8) while starting up the virtual machine.
Added a wordpress Picasa plugin
Just finished a minor change to my blog, added a random picasa images plugin.
I did have to do some minor tweaking as there is no real good plugin available (readily working I mean).
I started from the following: PicasaWeb wordpress plugin by Rawlison which worked (partly) and used the user interface of Vague Dreams plugin, after trying many others.
The link to image didn't work, and there was no space between the images, so I added/changed that.
You can visit my Picasa Web Album Widget page for the new plugin and the install guide