September 2006 - Posts

WPF - Now, thats what I am talking about

Some people are still questioning my thoughts about what's so good about GUI, WCF and such.

Take a look at and see what I mean. This NY Times Reader appears to be the best _WPF_ app to hit the streets. As iterated by Scott here, it was first available to and users and now it is available to all.

It adapts well to your device and screen resolution and I think Scott pretty much sums it up in his post.

Sex Visual sells, the more erotic exciting, the better. It is not a debatable statement. In the conferences I have been in, audiences will find a visually-appealing demo much more engaging than one that sells plumbings and gnarly XSD'isms. No, I am not saying one is a better technology than the other. What I am saying is that - Eye candy engages - and that, to me, is half the battle won.

Most people still dont know and dont want to know what goes at the server-end side of things and all those messy EAI, ESB, AIX, HL7 blah blah adapters, protocols and such and they shouldnt. I am betting that SOAP will become as obscure as TCP/IP one day and that SOAP talks will disappear from mainstream technology conference agendas one day. Have you ever seen talks on HTML or TCP/IP these days ?

While people will wow at the new programming model of _WCF_ and the wonderful separation of technical impediments from business contracts and logic (my demo of Reliable-Messaging in WCF usually drives this point home when I changed the bindings from Http to Tcp to MSMQ without touching a single line of code), the audience will instantly applaud the first vector-graphics, 3D Animation WPF application they see. And they could easily do the most complicated GUI very easily with mimimal .NET code.

To showcase a wonderful WCF application and what transcends underneath the hood and what goes onto the wire, you would still need a good GUI application to show the listeners, dispatchers, plumbings at work. In many cases, you would want to use WPF to enable that for full effects. (Hey, since they have downloaded the .NET 3.0 runtime, you might as well make the best mileage out if it and use all its components, right ?)

Well, it looks like my friends VittorioB and CraigM has already gone on that path with their amazing WCF Live Service Trace Viewer. Yes - there is a WPF component in there as well. i-smile

My thoughts exactly ...

In reference to my post here, plus my very early post here, I have always try NOT to be drawn in all the hype, fluff and marketing innuendos designed to drive FUD and irrationality.

I try to focus on what users really want and that really is all that matters.

Coincidenally, bu showed me this Foxtrot comic strip today and it looks like Bill Amend has also echoed my exact thoughts.

Foxtrot and Web 2.0

Have I wasted my last 3 years ?

I remembered speaking to some people during an architectural review as well as during a "Meet the Experts" Lounge in the just-recently concluded Microsoft TechED Asia 2006 in Malaysia and I made the comment where I said something to this effect:

openquotes.pngIf I had to re-live my career for the last 3 years with the hindsight of today's technologies, I would NOT have chosen to go down the server technology route with MTS, COM+, WS-*, _WSE_, _WCF_, I would have chosen GUI and focus on client-side technologies with the benefit of knowing what _WPF_ could bring ...closequotes.png

Some people asked me what I really meant what I said. I do ... and ... apparently, David Chappell has the same thoughts as me as well.

... and Savvy Advertisers dont use (Obscure) acronyms

WTF ? Marketing

W T F ?

I spotted this advertisement across many major lamposts outlining the major roads to the WorldBank/IMF Bankers and Governors meeting held in Singapore this month.

While the entire country prepares itself to welcome about 22,000 delegates with security precautions, road closures, road re-paving and tons of marketing dollars and campaigns to showcase itself to the world such as this, I felt that the poster above is done in an amateurish way.

One glance at it and I bet my last dollar the instinctive reaction is that Savvy Bankers use Intellectual Property. While I agree with the context and meaning of the message, I would question how its targetted.

In any case, I, and the rest of the world, would be wrong. A closer look at the icon on the bottom right corner reveals a Cisco, Inc logo:

which effectively means, Savvy Bankers use Internet Protocol !?!? That would explain why there portray of an image of a person trying to surf (wirelessly). I would suspect that Cisco, itself, is supplying the networking equipment and infrastructure to make sure anyone and everyone can surf wirelessly around the meetings and events.

That, however, would not explain the obscurity of the advertisment and its message. Gosh, I would think TCP/IP is an obscure abstract now that no one else would need to know of it even though it is the major underlying internet transport protocol.

In fact, I would argue - the more savvy you are, the less you need to know about about the plumbings. How many people would (want to) know how their household plumbings work and the standards involved other than that they can turn on the tap and do wonderful things with it ?

In the same context, I am betting that the SOAP protocol would be obscure one day as well and just be known as "Web Services" or whatever flavour rule the day.

Now, which would be a better advertisment ?

Great agile applications use SOAP ?


Great agile applications use Web Services ?

I rest my case - the marketing people who came out with the image shown above should be canned. No questions needed.

SOA + RIA + OSS = Web 2.0

OMG - Spare me. You have got to be kidding ... Lets just move on.

Windows Workflow: Scheduler and Threads

I dont think the world has seen so much emphasis on a feature of product even before pre-launched. In this context, I am talking about _WF_ and the emphasis on a non-feature, actually - that it is a non-product and it doesnt come with batteries host included.

Windows Workflow consists of an activity library and a framework, a runtime engine, and a runtime services components. Most of these will work out-of-the-box and some of them comes with extensibility mechanisms which you can further enhance or customize on.

All of those must run within a host application process - which you have to build.

In other words, Windows Workflow is just a framework with managed APIs and not a designed as a product. It would be a lot of work to build your own host, which is why I wouldnt recommend it. You can implement workflows in existing hosts such as IIS6 or a Windows NT Service or soon-to-be-shipped - WAS in IIS7.

That said, if you want ready hosts of domain-specific workflows with user-customizability, you can always look at Windows Sharepoint Services v3.0. I believe BizTalk 2008 will be a host for Windows Workflows when it ships as well.

Anyways, one of the key points that confuse many developers is how workflow instances are scheduled by the workflow runtime engine. There are 2 ways - via a Synchronous and an Asynchronous approach. Both of them are implemented via the ManualWorkflowSchedulerService and DefaultWorkflowSchedulerService respectively.

Obviously, if you dont tinker with the WorkflowRuntime with regards to the Scheduling Services, it will use the DefaultWorkflowSchedulerService service. It creates and manages the threads that run workflow instances in an asynchronous manner on the runtime engine and it supports multiple workflow instances queued in the runtime thread pool. In other words, this default scheduler will automatically queue the workflow to run on a thread from the process-wide CLR thread pool. With this default setting on the WorkflowRuntime, the workflow will always execute asynchronously on a different background thread which, in turn, explains why so many of the SDK samples waits for the workflow to finish by blocking the main thread with an AutoResetEvent.

However, you can use the ManualWorkflowSchedulerService if you crave for synchronous execution of workflow instances. The workflow instances are executed on the calling thread from the host application, thus blocking the execution of the host application until the workflow instance becomes idle. To do so, the host must donate threads to the workflow runtime, which will then use this donated thread to execute a workflow.

Running a workflow with the ManualWorkflowSchedulerServic is slightly different as well. It involves a two-step process. First, you call Start on the workflow instance. But that is not enough as it only prepares the runtime for this instance and does not actually run the workflow. We have to be more explicit by calling RunWorkflow and passing the Workflow's Instance ID. This is how a thread is donated by the host. The WorkflowRuntime will then use this calling thread to execute the workflow synchronously. In other words, the workflow instance will execute on the same thread as the calling program.

Subtle differences, but understanding it will enable the use of the right tool to do the right job.

Transcending Across All Boundaries: The Power of Community


I remember it was very late last year / early this year when I had a conversation with Martin Kulov, who is the Director .NET Development of the National Academy for Software Development in Bulgaria.

Basically, Martin pinged me and we talked about his idea and dream of bringing a PDC/TechED-style event to the Balkans, where he sees an increasing demand.

He then proceeded to invite me to present in this conference in Sofia, Bulgaria this year. I cannot tell you how honoured I was to receive this invitation. However, I had to put this on hold due to heavy work and family committments. Lest you dont know, while Sofia is generally only 2 spots below Singapore in the usual Country dropdownbox due to its alphabetical legacies, both countries are very spaced apart geographically. To compound this, airlines dont usually fly direct between these 2 countries and therefore, the end-2-end flight map (that routes you to so many different places) will be a lot more mileage than what it appears on a point-2-point straight line on a map. Ultimately, this trip for me alone will cost the National Academy for Software Development in Bulgaria a lot of money and cost me a lot of time (which still equates to money)

I am a person trained and educated in Economics and this, obviously, doesnt make much economic sense. It is not like they have that much money in their coffers anyways since there were no sponsors. So I told him that if I could hook him up with other influential speakers nearer his region, it makes much more sense. With great content comes great value for the participants and that ultimately means that it will be a well-attended event. Who knows - someone may come along and drop their golden coin to sponsor it.

I then proceeded to ping my peer _MS RD_s / Speakers I know who would be interested in speaking in the Balkans. Of course, there were many. Sofia, is afterall, a beautiful city, so I was told. People like Richard Campbell, Stephen Forte, Ted Neward, Goskin Bakir, etc gave their full support.

My wonderful friend in New York, Stephen Forte, deserves full mention as an ultimate leader who was passionate enough to make sure this event becomes a success in the Balkans. He tried all ways, including trying to negotiate with the airlines for a cheaper fare in exchange for more travel awareness to the Balkans. In the end, his passion and hard bargaining and negotiation skills shone through and he won over _MSFT_ to be the main sponsor for this event by convincing them that this is THE event for Microsoft in that part of the world and this is THE time.

With Microsoft declaring themselves to be the main sponsor, other vendors, like Telerik, follow suit as well and voila - We have the birth of DevReach in the Balkans.

If you are interested, you may want to sign up here. The PR of this event can be found here.

I believe years later, when I move on to a new career path and DevReach becomes the de-facto PDC/TechED of the Balkans, I will look back at this episode and smile. I had a big hand to play to make this event and dream come for Martin and all the wonderful people of Bulgaria. The bulgarian software industry will grow, develop and mature and keep abreast of time and everyone is better because of it.

How did this happen: Through 2 friends who have never met (one in Sofia, the other in Singapore), using the power and the reach of the global community at work (and MSN Messenger), through extensive and collaborative networking, this event became a concrete reality.

Dont underestimate that power of reach and the community - It may make or break you.

Now, if you ask: "How did you and Martin know of each other again?"

Easy - through another reach for the community by the community, via my article on MSDN, he posted a comment on this blog (another collaborative community-driven tool) and we hooked up. The rest is history.

Martin, I am happy for you. You have done a great deal for your community and it is only fair that you see this dream of yours come true.

Make some time for me, I am sure we will catch up over coffee in beautiful Sofia one day.

Going for the best: Intel Core 2 Duo and NOT the Dual Core

So, after a massive HDD upgrading exercise, it is time to take stock of my own internal machines of notebooks and desktops and see how it fits into the arrival of Vista and Longhorn later.

Lunch with some folks from Intel and Dell last week in Malaysia revealed some interesting lookouts for me. I am told to wait for the Dell Intel Core 2 Duo machines. This is unlike the Duo Core Intel chips that Dell is selling right now. The Core 2 Duo(s) are a lot better as one of the world's best processors and is a lot more powerful and power-efficient than the Duo Core ones.

The main difference lies in the chip architecture, obviously. As put in the simplest way: "Duo Core chips are essentially 2 chips put together physically. The penalties (and constraints) lie in the bond that welds them together. Whereas, the Core 2 Duo chips is actually a single physical manifestation that is cut into 2"

This will explain how much better, faster and efficient the Core 2 Duo chips are going to be.

However, I was told during lunch that the Core 2 Duo chips are not available the DELL (APAC) online site yet - so I would have to wait.

However, I am well-known to be impatient and so decided to try my luck with my own special Dell connections back home in Singapore. As luck would have it, there are specific desktop and notebook models that are already equipped with a Core 2 Duo Intel chip. It is just not available online yet and the only way to get it today is to know someone in HELL (ooppps, I mean DELL) who can get it done for you. i-wink

The specifications given to me looked awesome and the "special" price quoted to me by my own Dell connections take the cake - so it looks like I will be one of the first in my part of the world to own a Dell Latitude D620 / D820 that comes armed with a Core 2 Duo chip and the price I am getting for that is just sooooo GOOD !

With that in tow, x64 Vista - Here I come, baby !!! i-laugh

Speaking in the Enterprise Architecture Conference 2006 in Singapore


I will be speaking in The Enterprise Architecture Conference 2006 to be held in Singapore on 25-28 September 2006.

And no - for once, I wont be speaking on Web Services or anything Service-Oriented. Instead, I will tackle head-on a topic that not many people would not like to go near: Enterprise Architecture Security

I will be speaking on the second day (27 Sept 2006: 1430-1530) and quite a few of my governmental clients will be there as well in the audience.

The title is: Security Planning and Strategies In An Enterprise Architecture. The agenda is as follows:

  • Outline of the key Enterprise-based security issues and counter-measures, that is technology-agnostic
  • An examination of general security threats and how to plan and implement security policies and controls for often-performed computer security activities
  • Key best practices in terms of security that can be applied to practical real-life scenarios and implemented solutions such as IP and Data security
  • Auditing and monitoring of systems within an Enterprise

If you are in need to spend SGD2,000 i-wink, I hope to see you there.


Architects and Code: Orthogonal or Not ?

One of the topics presented during the Architecture Track in the just-concluded Microsoft TechED South East Asia 2006 was done by IASA.

It was done via a very interactive session with the floor questioning the panel from the IASA Malaysian chapter about the value of being an architect and topics of the like.

One of the questions from the floor was: "Do you believe that architects should be writing code ?"

It seems that 3/4 of the panel members agree. Some even going on bragging that he is still doing it in assembly, C++ language. hmmm ... In the interest of keeping the session on time so that that the attendees can get home on time amidst the KL jams - I kept my mouth shut.

Let me open them now.

Architects shouldnt code. Period. My thoughts. Period. To prevent myself from rambling, which is what I always do when I have a strong opinion on something, let me list them in point forms.

The term "architect" is a very nebulous term. The hype around it with all the wannabees printing it in bold font on their cards out there (I know a couple of them in Singapore who does them with no shame), who have no idea what is the difference between horizontal and vertical scaling, doesnt make it any better. For better or worse, I only believe in one type - and that is the all-emcompassing solution architect.

Afterall, aint what all customers want is a solution ? Do you think they really care what is underneath the solution more than that this solution works well, is kept within their budget, perform effectively and efficiently within the constraints of their environment ? Therefore, in this context, I will speak in the context of Solution Architects.


  • In the past, code influenced architecture. The limitations of written-code in a chosen-platform in a defined-era is the damning evidence of the limitation of the architecture. VB3 anyone ?


  • Biasedness based on preference. A solution architect that has a decade long experience in writing code is usually one that doesnt see the other side of the fence, doesnt know that there are better solutions and worst - refuse to want to see it. Most of the people in this category are usually skilled in one platform over the other and it is very hard for people like that to sit down and analyze a problem without a pre-conceived notion in mind in a very neutral manner. Because of this, the likely solution they are going to propose will have the same limitations of the platform they have been so comfortable with. I dont question the depth. Where is the breadth ? These guys should remain what they are good in and be experts in their domains and probably be paid better than a solution architect. For those who argue that they are equally well-versed in both sides of the fence - Good for you. Stay there. It is very likely you are drawing a lot more than an architect. If you are not, you just need to sell yourself better.


  • It is all about the business. Solution Architects bridge the gap between (the returns of) the business with the (returns of) technology. So, yes, they should be just as apt with the Finanical Calculator as much as an Integrated Development Environment or a Installation Panel or Console. They understand the entire depreciation cycle of an enterprise solution much better than the differences between a thread and a process. So yes, the higher the level the language they used to code in (I am talking about 4GL), the better. Bragging how much you still do your work today in First or Second Level Programming Lanaguages doesnt do you any good. In fact, it makes you look bad. It shows the lack of touch you have with your business, how it is run, what are the constraints and the entire business and revenue model. Writing performance drivers, assemblers, kernels, runtimes has nothing to do with a company's business model in a world where Moore's Law still rules.

It is all about the business, still.


[MS.TechED.SEA.2006] Developing Web Services: Tips and Tricks

What a great turnout and what a great rousing response I got for my 2nd Microsoft TechED South East Asia 2006 session titled: Developing Web Services: Tips and Tricks.

I love the Malaysian crowd. It has shown so much technical maturity and passion over the years I have spoken there and I appreciate all of you very very very much.

Thank you for all the mail you have sent me over the past few years

  • on your generous compliments for my presentations
  • on your Thank Yous for the topics I have taught and the issues I have raised that all of you could identify with
  • on your appreciation for my work I put in my topics and sessions because I work on the field - just like you and not just another Microsoftie
  • last but not least - on the numerous questions (via hands and emails) that were asked over the years - which I hope I have helped and answered.

I have received numerous requests for my code demos for this second session and here is the download for that.

I hope this is NOT the last I hear and see from the Malaysian Tech.ED crowd. Thank you all again.


Axis2/C Version 0.93 - REST Support on Http-GET and Http-POST is here

Apache Axis2/C version 0.93 is released. This should please the REST camp and highlights the momentum of how REST can be implemented in Web Services. If you are in KL next week, I will be briefly touching base on the REST-vs-SOAP style of implementing Web Services.

Key Features

  1. AXIOM, an XML object model optimized for SOAP 1.1/1.2 Messages.
    This has complete XML infoset support.
  2. Support for one-way messaging (In-Only) and request response
    messaging (In-Out)
  3. Description hierarchy (configuration, service groups, services,
    operations and messages)
  4. Directory based deployment model
  5. Archive based deployment model
  6. Context hierarchy (corresponding contexts to map to each level of
    description hierarchy)
  7. Raw XML message receiver
  8. Module architecture, mechanism to extend the SOAP processing model
  9. Module version support
  10. Transports supports: HTTP\
    1. Both simple axis server and Apache2 httpd module for server side
    2. Client transport with ability to enable SSL support
  11. Service client and operation client APIs
  12. REST support (HTTP POST case)
  13. WS-Addressing, both the submission (2004/08) and final (2005/08) versions
  14. MTOM/XOP support
  15. Code generation tool for stub and skeleton generation for a given
    WSDL (based on Java tool)
    1. Axis Data Binding (ADB) support
  16. Security module with UsernameToken support
  17. REST support (HTTP GET case) - New
  18. Dynamic invocation support (based on XML schema and WSDL
    implementations) - New

Major Changes Since Last Release

  1. REST support for HTTP GET case
  2. XML Schema implementation
  3. Woden/C implementation that supports both WSDL 1.1 and WSDL 2.0
  4. Dynamic client invocation (given a WSDL, consume services dynamically)
  5. Numerous improvements to API and API documentation
  6. Many bug fixes, especially, many paths of execution previously untouched were tested along with Sandesha2/C implementation

Download the above release here.

3 Terabyte of HDD in my own internal network

Almost 2 years after I upgraded the HDD of all my machines in my own internal network (2 Servers, 3 Desktops, 3 Laptops), I decided to do some HDD shopping and do another upgrade exercise at Sim Lim Square (Singapore) to replenish the dwindling space I have been noticing in my network.

This time, I came back with:

  • 2 x 500GB/7200 3.5''
  • 1 x 320GB/7200 3.5''
  • 1 x 120GB/5400 2.5''

I now have almost 3TB !!! of HDD running supporting all my machines - all run within a one-man-operation. Armed with all my data backup and an amazing Acronis TrueImage Enterprise Server software for cloning all my old partitions for restoring to my brand new shiny disks, I should be able to get all the new data transitions and migrations going in no time.

What does all these HDD space support ? Besides the usual VPCs for my cutting-edge demos, disk-images for clones, I have also tons of pictures, videos and music media for my jukeboxes. If I tell you the other operations my HDD is supporting, then I would have to kill you i-wink.

Here I am, hearing the hum of all the spinning HDD spindle motors at work. Ah - The sound of geek heaven.