Blog Home  Sign In RSS 2.0 Atom 1.0 CDF  

  def Softwaremaker() :
         return "William Tay", "<Challenging Conventions />"

  knownType_Serialize, about = Softwaremaker()
 

 Sunday, December 29, 2013

With the official opening of the Marina Coastal Expressway (MCE) today, I have updated the traffic camera list of my SG-Drive Windows Phone application to include the traffic cameras associated with the MCE. I have also remove the older decommissioned cameras that is now in a "defunct" part of the East Coast Parkway (ECP).

To get the updated camera list - Select and Press the "Reset Traffic Camera Points" on the SG-Drive application. Again, all proceeds of the sales of this application go towards a good charitable cause.

Sunday, December 29, 2013 9:55:49 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, May 18, 2010
    Gosh, it has really been long since this blog saw some action and probably need some attention (weeding, trimming, re-planting, etc)

    After a long hiatus, I will be speaking again at a big event in Marina Bay Sands Singapore for our Future Of Productivity Launch on the 26th May 2010, keynoted by none other than Mr CEO - Steve Ballmer himself. Incidentally, this is also to celebrate our Microsoft Singapore 20th Anniversary. Agenda is here.

    I will be touching base on SQL Business Intelligence (BI), focusing on our latest and neatest trick in Microsoft Office 2010 / SQL Server 2008 R2 thus far - The Microsoft PowerPivot. I have no doubts that PowerPivot will further propel our SQL BI story further ahead in the very competitive BI landscape.

    If you have any doubts, do come by and I hope that we can set those to rest. The Business Intelligence breakout is in Track 3.

    It will be a very visible, high impact event, well attended by many C-levels, media and press and in a spanking shiny brand new venue that has only just opened its doors.

    Register early. See you there.

    Monday, May 17, 2010 9:37:22 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, December 03, 2007

    It has been a long time since I spoke in a usergroup meeting. This time, I will replicate what I did in Microsoft TechED Asia 2007 in KL in the Dec 2007 SgDotNet Usergroup meeting.

    Languages, Frameworks and Architectures
    New language solution frameworks are emerging to make solution development less cumbersome. For example, AJAX for building rich, interactive, internet applications, SCA for composing components into services, Ruby-on-Rails for building web applications, and Blinq for generating ASP.NET websites based on a database schema. This session will look at how these languages are evolving to include architectural constructs and where that evolution will go.

    If you are free, do come drop by with an open mind, dont take any notes and get ready to interact.

    Sunday, December 02, 2007 10:39:03 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, February 12, 2007

    While there has been much talk everywhere in conferences, events, blogsphere about Web 2.0 and such, this video touched me more than anything else. It was created by Michael Wesch, the Assistant Professor of Cultural Anthropology at Kansas State University. Amazing amazing summary of Web 2.0 in just under 5 minutes.

    After you sit through this video, chances are that you will catch your breath and go "WOW" ... and play it again. To the layman, you cannot get a better implementation that forms part of the bigger picture of Web 2.0 than this recently-released piece of work by Yahoo! called Yahoo! Pipes. This concept is well-explained via O'Reilly Radar here. Of course, my famous colleague is quick to explain he came up with this concept first.

    And doesnt the background music of that video just rock ? It is by Deus and is offered under a Creative Commons Attribution NonCommercial-ShareAlike 2.0 license, which is yet another example of the interlinking of people sharing and collaborating media ...

     

    My good friend and extreme brain in Singapore, Wee Hyong, pointed out to me he has been working on that recently and giving a talk soon on a much related subject hereDanaїdes: Continuous and Progressive Complex Queries on RSS Feeds

    Welcome to the social.

    Monday, February 12, 2007 2:54:14 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, October 05, 2006

    This little interview I had done with INETA APAC just got published here.

    Up Close with .Net Leaders

    In this issue, we get up close and personal with William Tay (Microsoft Regional Director based in Singapore) to understand what makes him tick and his passions.

    Check out his blog at
    http://www.softwaremaker.net/blog

    William Tay
    Microsoft Regional Director

    MVP (Solutions Architect)

     


     

    1. What are your visions for INETA APAC?
    My vision for INETA APAC is simple. I would like it to be the de-factor facilitator for the birth and co-ordination of usergroups in this region. In addition, I would love for it to add value to the younger usergroups by providing mentorship and guidance to their leaders as well as providing the in-between services to help usergroups grow to reach their potential.


    2. What does being a MSRD mean to you?
    It means being part of a closely-knitted group of independent Microsoft experts and professionals around the world and being that bridge between the product groups in Redmond and the read world.

    3. What do you think will be the next killer application?
    Great question. Surprisingly, I think a non-new application will be the next killer application. With the proliferation of the internet as a platform today, it is key that the mass-consumed killer application must be of a non-intrusive technology and instead work on top of the Internet to bring out its best. Any application/technology that re-invents itself by plugging the current holes as-is today deserves a shot to be the killer application, and it must not be limited to platform of choice. I think Cardspace and the propogation of the Federated Identities and the Metasystem on ALL platforms is my next killer application. If I have my way today - I will kill off all disparate identity systems, especially passwords and all those password minder / digital wallet systems that prey on top of the fact that security and human convenience is, most often, oxymoron to each other. What they are doing is essentially breeding more chaos into a system that wasnt designed for it in the first place. As an analogy, I tend to view it as "Re-arranging the furniture on board an already-doomed Titanic"

    Just like the above, any kind of distributed technology will always catch my attention. Once we get the intrinsics of the plumbings out-of-the-way (which I think may take some more years), I would love to see personal-portable computing. The ideal would be the concept of portable codes embedded in a chip that makes full use of the entire meshgrid infrastructure (again, a few more years to hit mainstream use once the vendors get their act together). With that, you can download your entire desktop workstation to wherever you are by carrying a small chip. There are pieces of it available today - but the entire picture would take some years to piece together.

    4. If you are trapped on an island without network connectivity, what would you like to bring? Who would you like to be on the same island?
    All the books I couldnt read because I have network connectivity ;) And on an deserted island where all dimensions of stimulation is key, there is no one else I would like to bring with except my wife and kid :)

    5. What words of wisdom would you give to fellow user group leaders?
    Stay with that burning passion that brought you there in the first place. If you stay true to that void of any distractions, only good things can result. The journey itself and the people you meet along the way is, most of the time, the ultimate reward itself. That said, do remember that great leaders look ahead of their time and one of the key things they do is to prepare, mentor and groom the next generation.

    Thursday, October 05, 2006 1:19:27 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, September 13, 2006

    devreach.jpg

    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 Microsoft Regional Directors / 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 Corp 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.

    Wednesday, September 13, 2006 1:40:52 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, September 08, 2006

    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.

    SPONSOR.jpg
    After domain registration, the most important hosting task is to ensure the dedicated hosting and then upload the website design pronto.

    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.

     

    Friday, September 08, 2006 2:53:12 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Sunday, September 03, 2006

    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.

    Sunday, September 03, 2006 8:41:45 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, August 21, 2006

    For the 4th year in a row, I will be speaking in Microsoft TechED 2006 Asia. This time, the event will return to its original roots back in Kuala Lumpur, Malaysia.

    Unlike the previous rounds, I wont touch base on any Level 400 topics and going nitty-gritty into details of <angleBrackets/> messaging or gnarly-XSD'isms. From previous experiences, it doesnt sit too well with the asian crowd. Instead, I am going with a couple of very interesting topics. One focuses on a specific implementation of identity and service-orientation, the other is for the audience to have a better idea on what Web Services are all about first before embarking on that journey.

    • ARC323 Federated Identities and the Metasystem \ Architecture & Team Development Track

    This session, I will explain the basis forces driving the concepts of the Identity Metasystem that has the world watching and waiting. How do we plug the missing gaps of the Transactional Internet? Imagine the WWW without passwords. Not only that, I will explain how this infrastructure setup can be used for business transactions other than for authentication. See demos that are not  seen anywhere yet in this region. [Level 300]

    • DEV243 Developing Web Services: Tips & Tricks \ Developer Technology Track

    What exactly are Web Services and When and Why do we use them? William explains the basis of SOAP in clear concise terms and coins up some tips to help you in your Web Services Development today and tomorrow. [Level 200]

    Of course, there are a whole hosts of reasons for you to attend this mega-event with tons of great speakers talking on some great topics gracing this event. KL has always been a very dynamic city and it should be a good time for all.

    And even if browsing through the event site doesnt attract you enough yet, how about this?

    I will be giving away 2 FREE MSDN Premium Subscription with Visual Studio Team Suite that is worth US Dollars 30,000 each to 2 lucky souls who will be attending my sessions. I may also give away other goodies like cannot-find and hard-to-get Microsoft Product Platform T-Shirts and NEW books.

    So - c'mon - what are you waiting for ? Sign up today and "Change your Destiny" ...

    MSTechEDAsia2006.JPG

    Monday, August 21, 2006 8:56:10 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, July 07, 2006

    This popped into my inbox a while ago ...

    image_emailing_securetheweb_072006.jpg

    Contests like this are just great. Not only are you receiving money (if you win... Who cares, even if you dont, a digital mutation of your idea may still evolve to a sellable one), you are competing with the best to generate a innovative, marketable, secured and (hopefully) usable product. The byproduct derived from the entire process would be similar to a mini-version of an RFC. Bad and unsecured ones would have been shot down and the good ones could be made better with a few ingenious tweaks.

    Now only if I can find 25.5 hours in any given day ...

    Friday, July 07, 2006 6:45:38 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  • Blasphemy ...

    It is finally published. After many, many, and I mean, many months of paying the process tax for this piece, it is finally LIVE !

    I started this piece with the first ever March 2005 CTP of Windows Communication Foundation (WCF, previously - Indigo) and I went through so many port demos and edit document cycles its so unbelievably painful ...

    But it is really good to see this in online form and shape.

    I started with this idea even though MSFT Corp has explicity stated that it will not support any form of interoperability between WSE 2.0 and WCF, even though it is "theoretically possible to develop Web services using WSE 2.0 in such a way that they can interoperate with WSE 3.0 (and WCF) by using only a reduced set of specifications"

    More importantly, the main reason for the motivation to write such a piece is written in the article itself and I quote:

    [BEGIN QUOTE]


    ...WSE 2.0 has seen 3 service pack releases since its official launch in 2004. It implemented the OASIS Web Services Security 1.0 specification which was the widely accepted interoperability standard protocols between secured web services as well as the implementations of WS-Addressing, WS-SecureConversation and WS-Trust. It was integrated very nicely into Visual Studio 2003. Even BizTalk Server 2004 carries with it a WSE 2.0 adapter for securing of Web Services. Thus, it would be fair to assume that there is more than its fair share of implementations in the market today.

     

    Depending on timing, budget, complexity and a whole host of other requirements, some of these applications will need to be moved and migrated to WSE3.0 and some to WCF. Aaron Skonnard has provided a great resource in his “Service Station” column on MSDN on a brief overview on the migration of WSE 2.0 applications to WSE 3.0 ones. However, as stated in his article, there are some major changes in the programming model and architecture in WSE 3.0 and migrating them from WSE 2.0 may not be trivial.

    Another very important factor to take note is while WinFX, and therefore WCF, is available downstream from Windows Vista to Windows 2003 and Windows XP. That is as far down as it goes. There still exists a huge installed base of Windows 2000 Servers out there running on server and data farms and if you need to implement the advanced Web Services stacks on those servers, WSE is still a very important strategy you cannot ignore.

    As noted in the above guidelines, even though Microsoft will not guarantee interoperability between WSE 2.0 and WCF, the good news is that there are a few WSE 2.0 common scenarios, which can allow wire-interoperability with WCF. I will illustrate them in the next section...


    [END QUOTE]

     

    So, this article will outlined WHAT that reduced set of specifications are and HOW to go about using them.

    Many Special Thanks go to Kirill, the Interop PM on WCF, who gave me a couple of tips to get over the port-over humps I had thoughout this piece since last year. And of course, I cannot forget Clemens, who is the catalyst to making this publication happen when he came onboard.

    I hope this helps at least someone out there. Enjoy !

    Friday, July 07, 2006 6:11:57 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, June 26, 2006

    It has been quite a while since I hit the speaker circuit for our Singapore .Net Usergroup (which I had helped co-founded).

    However, I will be there on the 6th July 2006 speaking on the Federated Identity Metasystem. Do register yourself and I hope to see you there.

    Monday, June 26, 2006 6:10:31 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Saturday, May 27, 2006

    Here I am - proud to announce that I will be doing a MSDN Redmond-hosted Webcast right from the other side of the hemisphere in Singapore.

    I will be speaking on concepts of Reliability in Soap:Web Services, why its needed, as well as the context of it in Windows Communication Foundation (WCF, previously - Indigo).

    More importantly, a 40GB Creative (another homegrown Singaporean product) ZEN MP3 player is at stake here waiting to be won. So, do sign up quickly for a chance to win this. Rules here.

    If you are one of those insomniacs in Asia-Pacific, do try to tune-in. I hope this blazes a trail for the other community leaders in Asia-Pacific to follow suit and show that we are right on par there with the best in technology.

    Click here for more details on this webcast.

    Saturday, May 27, 2006 6:03:37 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, March 15, 2006

    I will be speaking in Kuala Lumpur in a security symposium organized by Microsoft Malaysia on April 4th 2006. The event details can be found here and the agenda here.

    I will be touching on Web Services Security: Locking down the wire - Today and Tommorow.

    Some of my agenda items include:

    Registrations for the IT Pro track is here while the Developer track is here. I would love to see you there.

    Tuesday, March 14, 2006 9:27:15 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, February 08, 2006

    What a way to start off a new category on my blog called "Interoperability".
    I recently came across an interesting post in the forums that goes something like this:

    [QUOTE]


    Currently I'm working with Visual Studio 2003 in order to generate xmldsig signature. I'm using the class signedxml  to create the xmldsig signature and I get somthing like this:

      [Signature xmlns="http://www.w3.org/2000/09/xmldsig#"]
        [SignedInfo]
          [CanonicalizationMethod
    Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /]
    ............
      [/Signature]

    But I need the signature to be in a namespace that should be identified by
    the dsig prefix:

    [dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"]
    [dsig:SignedInfo]
    .....
    [/dsig:Signature]


    I really didnt think anything of this. At first glance, I thought the problem lies not in the code BUT the processor / validator that was used to read this.

    The dsig or any prefix, for that matter, doesn't indicate whether they 2 use different namespaces. Check
    the [default] namespaces and compare.

    Strictly speaking -

    • [ds:Signature xmlns:ds="urn:softwaremaker.net-foo.bar" /]
    • [dsig:Signature xmlns:dsig="urn:softwaremaker.net-foo.bar" /]
    • [Signature xmlns="urn:softwaremaker.net-foo.bar /]

    are isomorphically the same. If the end processor / validator reads it and treats differently, I believe that it should be a design flaw at the other end as it is really poor design to rely on namespace prefix.

    If you look at the XML-Digital Signature Specifications, Section 1.3 states that:

    This namespace is also used as the prefix for algorithm identifiers used by this specification. While applications MUST support XML and XML namespaces, the use of internal entities [XML] or our "dsig" XML namespace prefix and defaulting/scoping conventions are OPTIONAL; we use these facilities to provide compact and readable examples.

    Therefore, it is NOT necessarily to have a prefix to it as long as it points to the same namespace.

    However, I spoke too fast. Further explanations by the other party has made me put my thinking cap on. He provided 2 reasons being:

    1. Compatibility with our existing signer.
    2. We are planning to extend the signature to XML Advanced Electronic Signatures (XAdES) format. In that case the prefix is mandatory.

    I am surprised [which kinda shows how much I know, or dont know ???]. I spent some minutes digging into the XML Advanced Electronic Signatures (XAdES) specifications and true enough, it declares:


    The XML schema definition in clause 5 Qualifying properties syntax defines the prefix "ds" for all the XML elements already defined in [XMLDSIG], and states that the default namespace is the one defined for the present document. In consequence, in the examples of this clause, the elements already defined in [XMLDSIG] appear with the prefix "ds", whereas the new XML elements defined in the present document appear without prefix.

                                  XMLDSIG 
                                       |
    <ds:Signature ID?>- - - - - - - - -+- - - - -+
      <ds:SignedInfo>                  |         |
        <ds:CanonicalizationMethod/>   |         |
        <ds:SignatureMethod/>          |         |
        (<ds:Reference URI? >          |         |
          (<ds:Transforms>)?           |         |
          <ds:DigestMethod>            |         |
          <ds:DigestValue>             |         |
        </ds:Reference>)+              |         |
      </ds:SignedInfo>                 |         |
      <ds:SignatureValue>              |         |
      (<ds:KeyInfo>)?- - - - - - - - - +         |
                                                 |
      <ds:Object>                                |
                                                 |
        <QualifyingProperties>                   |
                                                 |
          <SignedProperties>                     |
                                                 |
            <SignedSignatureProperties>          |
              (SigningTime)                      |
              (SigningCertificate)               |
              (SignaturePolicyIdentifier)        |
              (SignatureProductionPlace)?        |
              (SignerRole)?                      |
            </SignedSignatureProperties>         |
                                                 |
            <SignedDataObjectProperties>         |
              (DataObjectFormat)*                |
              (CommitmentTypeIndication)*        |
              (AllDataObjectsTimeStamp)*         |
              (IndividualDataObjectsTimeStamp)*  |
            </SignedDataObjectProperties>        |
                                                 |
          </SignedProperties>                    |
                                                 |
          <UnsignedProperties>                   |
                                                 |
            <UnsignedSignatureProperties>        |
              (CounterSignature)*                |
            </UnsignedSignatureProperties>       |
                                                 |
          </UnsignedProperties>                  |
                                                 |
        </QualifyingProperties>                  |
                                                 |
      </ds:Object>                               |
                                                 |
    </ds:Signature>- - - - - - - - - - - - - - - +
                                                 |
                                              XAdES
                           
    Readers must take into account that the XAdES forms build up on the[XMLDSIG] by adding new XML elements containing qualifying information within the shown [XMLDSIG]ds:Object element, according to the rules defined in the present document. This ds:Object element will act as a bag for the whole set of qualifying properties defined in the present document, conveniently grouped.

    So, there are 2 questions to answer here:

    1. Is there a way to handle the Digital Signature prefix in the SignedXML Class in .NET Framework 1.1
    2. If so - How ? If not - How ?

    I decided to spend some time on this and after much disassembling some of the System.Security.Crytography.XML binaries, I found out to my dismay that the answer to Question [1] is NO. This is because the constants and the URIs of the XML Digital Signature functions in the System.Security.Crytography.XML space are found in the XMLSignature class and that class is declared as an internal class .

    Therefore, the answer to Question [2] would be to build our own customized Digital Signature stack. This may actually sound harder than it is. Truth is:- With Reflector and work done behind the MONO-Project and published on Koders.com, I hacked a workaround in a few hours time. That actually means that I didnt really do much testing on it and so I disclaim myself from any liabilities, including, but not limited to, mistakes, injuries, deaths, etc caused if you choose to use it.

    You would use this assembly just like you would with System.Security.Cryptography.Xml. The namespace would be Softwaremaker.NET.Security.Cryptography.Xml.PfDsigInterop.

    Do take note that I has ONLY implemented the XML Digital Signature in this assembly.


    Imports System
    Imports System.IO
    Imports System.Security.Cryptography
    Imports System.Xml
    Imports System.text
    Imports Mono.Xml
    Imports System.Text.UTF8Encoding
    Imports Softwaremaker.NET.Security.Cryptography.Xml.PfDsigInterop

    myRSA = New RSACryptoServiceProvider
    myRSA.FromXmlString("...")

    Dim doc As XmlDocument = New XmlDocument
    doc.PreserveWhitespace = False
    doc.Load(New XmlTextReader("..."))

    Dim mySignedXML As SignedXml = New SignedXml(doc)
    mySignedXML.SigningKey = myRSA

    ' Create a data object to hold the data to sign.
    Dim dataObject As New DataObject
    dataObject.Data = doc.ChildNodes
    dataObject.Id = "someSWMId"

    ' Add the data object to the signature.
    mySignedXML.AddObject(dataObject)

    Dim ref As New Reference
    ref.Uri = "#someSWMId"
    mySignedXML.AddReference(ref)

    mySignedXML.ComputeSignature()

    Dim xmldg As XmlElement = mySignedXML.GetXml
    ' Append the element to the XML document.
    doc.DocumentElement.AppendChild(doc.ImportNode(xmldg, True))

    ' Save the signed XML document to a file
    Dim xmltw As New XmlTextWriter("...", New UTF8Encoding(False))
    doc.WriteTo(xmltw)
    xmltw.Close()

    To verify the signed XML, we would just have to use back the System.Security.Cryptography.Xml found in the .NET Framework. At least, the .NET stack got the design of the namespaces and the prefixes right.


    ' Create a new XML document.
    Dim xmlDocument As New XmlDocument

    ' Load the passedXML file into the document.
    xmlDocument.Load("...")

    ' Create a new original SignedXml object and pass it the XML document class.
    Dim signedXml As New System.Security.Cryptography.Xml.SignedXml

    ' Find the "Signature" node and create a new XmlNodeList object.
    Dim xmlnsmgr As New XmlNamespaceManager(xmlDocument.NameTable)
    xmlnsmgr.AddNamespace("SWM", "http://www.w3.org/2000/09/xmldsig#")

    Dim nodeList As XmlNodeList = xmlDocument.SelectNodes("//SWM:Signature", xmlnsmgr)
    signedXml.LoadXml(CType(nodeList(0), XmlElement))

    myRSA = New RSACryptoServiceProvider
    myRSA.FromXmlString("...")

    Return signedXml.CheckSignature(myRSA)

    You can download my [prefixed-XMLDSIG] custom assembly here. Do let me know if you have any comments or feedback. Enjoy !!!

    [AUTHOR UPDATE]:


    I have spoken to a few experts [on the standards body] about this and it seems that the concensus is that the prefix is NOT needed at all.

    The XAdES specifications did not EXPLICITLY state that the prefix is needed so I don't see how the conclusions are drawn that prefixes are fixed. Maybe I am missing something.

    It looked to me like all the spec was saying was that the *examples* used those prefixes.

    It strikes me as surprising that any specification worth its salt would specify a *fixed prefix*. It would have been too restrictive and not something that many vendors would agree and abide.

    I have advised the other party to check with the other parties/vendors for this. In the meantime, I will pull this assembly offline until I get better clarifications.


     

    Wednesday, February 08, 2006 1:18:02 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, January 20, 2006

    Sounds like SPAM ? It is not.

    This is a 100% ASP.NET 2.0 based CMS solution -- best of all it is free -- check out this blog post for some sites built with it.

    All the info you need is here. Let me know your thoughts if you are using it. I will be embarking on it very soon.

     

    Friday, January 20, 2006 1:22:50 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, January 19, 2006

    Microsoft announced Go Live licenses this morning for Windows Communication Foundation (WCF, previously - Indigo) and Windows Workflow Foundation (WF) , which lets customers use the January Go Live releases of WCF and WWF in their deployment environments. Do note that these are unsupported Go Lives.) 

    More information about the Go Live program is at http://msdn.microsoft.com/winfx/getthebeta/golive/default.aspx.

    There are also a couple of community sites for WCF and WWF here:
    http://windowscommunication.net
    http://windowsworkflow.net

    The community sites give users everything they need to start using WWF and WF today.  If you have some great samples, do post them to the sites;  The WCF sample gallery and WF activity gallery allow you to host the samples/activities on your own site and create links to your own site from the galleries.

    As mentioned, I will be introducing more WWF Blogging to this site. Do stay tuned.

     

    Wednesday, January 18, 2006 9:58:09 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, January 13, 2006

    If you want some more of this, email me or comment your email here.

    [Update:] Sorry, many people have written in to me and all invites have all been given out.

    Friday, January 13, 2006 4:37:14 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Saturday, January 07, 2006

    It seems that Microsoft is copying the Google G-mail thingy with the invitation lists to its beta software.

    I have got a couple of invites to give away for the MSN Messenger (Version 8) or better known as Windows Live Messenger. Drop me an email or leave your email here if you are interested in this beta program.

    [Update:] Sorry, many people have written in to me and all invites have all been given out.

    Saturday, January 07, 2006 12:31:36 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, December 26, 2005

    One of the things that I thought <Input TYPE=radio> had always lacked is that it only allows it to be specified as part of only ONE group - which is dictated by the NAME attribute.

    Therefore, with this code


    <INPUT TYPE=radio NAME=names VALUE=1>William Tay
    <INPUT TYPE=radio NAME=names VALUE=2>William Gates
    <INPUT TYPE=radio NAME=names VALUE=3>William Tell 
    I can do this: William Tay William Gates William Tell

    However, if I wanted something with a 2-dimensional twist to it such as something like this:


    Please Vote your Favourite Topics via a Preference Gauge

      Order of Preferences
    Topic 1 1 2 3
    Topic 2 1 2 3
    Topic 3 1 2 3


    I will be stuck somewhere in between because while I can select my order of Preferences (in terms of 1, 2, 3) for any of those topics, I cannot prevent other uses from selecting a Preference 1 for more than 1 topic. This kinda distorts the voting statistics as someone may vote a Preference 1 for all topics which is not meant for business functionality intent.

    While, there are a few ways to do this, such as using a combination and tweaking of dropdownlists and other <input type>, I had some trouble searching for the same function to be served via a more intuitive Radio Input Type.

    So, I decided to write a small javascript snippet to be implemented via the onclick event-handler of the <Input TYPE=radio>. The parameters to be passed into the javascript function are all the same for all the radio buttons so it will be very easy to do this programmatically in your favourite language.

    The trick would be to manipuate the VALUE attribute to slot in a second Radio Group name and thereafter, have some javascript code manipuate the other radio buttons. Here is my documentation including the parameters to be passed into the javascript function:


    /*
    Documentation:
    <INPUT TYPE=radio NAME=n1 VALUE=1_1 onclick="javascript:ClickAnotherRadioGroup(this.value,this.name)">

    The Value of the Input Type=Radio must be a delimited string
    The Value to the left of the pre-defined delimiter is the name of the Second Group Name
    This means that while NAME signifies a Radio Group, the x of VALUE=x_actualvalue signifies the Second Radio Group
    Eg.
    (a) - <INPUT TYPE=radio NAME=n1 VALUE=g1_1 onclick="javascript:ClickAnotherRadioGroup(this.value,this.name)">
    (b) - <INPUT TYPE=radio NAME=n1 VALUE=g2_2 onclick="javascript:ClickAnotherRadioGroup(this.value,this.name)">
    belong to the same Radio Group (n1)
    (c)
    - <INPUT TYPE=radio NAME=n2 VALUE=g1_1 onclick="javascript:ClickAnotherRadioGroup(this.value,this.name)">
    (d) - <INPUT TYPE=radio NAME=n2 VALUE=g2_2 onclick="javascript:ClickAnotherRadioGroup(this.value,this.name)">
    belong to the same (but different from above) Radio Group (n2)
    However, (a) and (c) belong to the same radio group as well (g1) WHILE (b) and (d) belong to another group (g2)
    The Value to the right of the pre-defined delimiter is the ACTUAL VALUE of the Input Type=Radio
    Note that if the ACTUAL VALUE of the Input Type=Radio uses the same delimiter, we can change our own delimiter in this function
    */


    Now try this with the Javascript implementation:


    function ClickAnotherRadioGroup(v,n)
    {
     var f = document.forms(0);
     var n2 = v.split("_")[0]; // Retrieving the second grouped value
     for(var i=0; i<f.length; i++)
          {
     if ((f.elements[i].type == "radio") && (f.elements[i].checked) && (f.elements[i].value.split("_")[0] == n2))
      {
       var c1 = f.elements[i].value; var c2 =  f.elements[i].name;
       if ((v == c1) && (n == c2)) {} else
       {
        f.elements[i].checked = false;
       }
      }
     }
    }
    Try this now:

    Please Vote your Favourite Topics via a Preference Gauge

      Order of Preferences
    Topic 1 1 2 3
    Topic 2 1 2 3
    Topic 3 1 2 3

    I hope this snippet will help someone as much as it has helped me.

    Monday, December 26, 2005 3:59:59 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, December 13, 2005

    I am making my speaking rounds again in the usergroups and what is a better way than to start it here with our own Community Launch of VS and SQL 2005.

    Spore DotNet Usergroup, together with SQL Usergroup of Singapore, is launching our very own event on the Dec 17th 2005 to the members of both usergroups.

    We are getting the best speakers out there (and I really mean the well-seasoned experts out there) and with plenty of sponsors and support (Culminis, INETA, Product Groups), we may even try to usurp the World-Wide Launch that was held in Nov 29th 2005 in Singapore. .

    Anyways, I will be on the topic of Web Services in VS 2005 and I hope to be sharing it with the community. If you are free on that Saturday (Dec 17th 2005), do register here and drop by Microsoft Singapore.

    Do come by and Say Hello. I may play Santa and give out some freebies.

    Tuesday, December 13, 2005 5:35:10 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, November 08, 2005

    As mentioned in an earlier post, the traces of what I did here is starting to show more and more as launch dates near. I had flashed the poster. Now here is the WW-Launch video.

    To see the keynotes by Steve Ballmer at the Worldwide Visual Studio 2005, SQL Server 2005, and BizTalk Server 2006 Launch, see here.

    So much for my 0.002 seconds of fame.

    Tuesday, November 08, 2005 4:52:19 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, November 02, 2005

    William Tay at VS2005, SQL2005, BTS2006 Launch

    One of the posters scheduled for the WorldWide Launch of Visual Studio 2005, SQL Server 2005 and BizTalk 2006 on Nov 7 2005 at Moscone West Convention Center.

    The traces of what I did here is starting to show more and more as launch dates near.

    [Update]: Now, the VS / SQL 2005 World-Wide Launch video to complement the poster above can be seen and heard here. So much for my 0.002 seconds of fame.

    Now, aint that a cool drummer dude ?

    Wednesday, November 02, 2005 6:59:36 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, October 18, 2005

    Fellow Singaporean Microsoft MVP, Aaron Seet has a very interesting take on the above subject. It is a definite read.

    Tuesday, October 18, 2005 9:21:11 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  • Fellow Microsoft Regional Director from Australia and personal friend, Adam Cogan will be in Singapore to present on 2 topics to the Singapore SQL Server Usergroup and our very own Singapore .NET Usergroup.

    [Starting at 1830 hrs]
    What's new in Reporting Services 2005 + Developing Custom Report Items

    Reporting Services makes viewing your data a breeze and SQL Server 2005 brings database reporting to a whole new level. In this session you will learn how to take full advantage of the new Report Designer that is integrated into Visual Studio 2005. We will discuss the core product improvements, reporting improvements, the better integration, and the richer developer experience.

    You will also discover how to create and implement Custom Report Items - custom data visualization controls that allow you to make powerful reports.


    [Starting at 1945/2000 hrs]
    15 Rules to Better Code + Tools to Keep your Code Healthy (including FX Cop)

    Are you looking to eradicate bugs and ensure consistency? Learn how to take control of your code, ensuring large, complex source code can be simplified, cleaned and maintained. The focus is on the most popular .NET languages (C#, VB.NET) for both Windows Forms and ASP.NET; however, you will learn how to maintain quality code in any language.

    As a project or company grows, managing code standards throughout your team becomes virtually impossible. Consistent code is crucial to future development and maintenance. Learn how to review your web apps and projects.

    The tools he will explore include FX Cop, SSW Code Auditor, and Re-Sharper

    I hope to see you there.

    Tuesday, October 18, 2005 12:36:08 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, October 07, 2005
    Thursday, October 06, 2005 8:23:33 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, October 05, 2005

    Another speaking assignment that landed at my desk is for me to talk about "Web Services Security: How to track along the Security Standards Jungle" on the 21 October 2005

    Somehow, I tend to attact the dry topics . This event is owned by OASIS and XMLOne Usergroup. More information can be found here.

    If you are around the vicinity, do feel free to drop by and catch up.

    Wednesday, October 05, 2005 12:52:22 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, September 02, 2005

    Besides the BOF which I may be moderating, I am also involved in the Ask-The-Experts (ATE) sessions in PDC 2005. This time around, I will be placed in the APAC regional table, where I hope I can meet up with a lot of customers or like-minded people from my region and hopefully answer some questions based on my expertise with issues with regards to Web Services (SOAP), Security-Interoperability, Indigo (or I prefer to call it the ServiceModel, not WCF) and the likes.

    So, you are from APAC and are going to be at the PDC, I hope to see you at my table.

    Friday, September 02, 2005 12:00:20 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Sunday, August 21, 2005

    To-Do List

    ...
    Task 579: Upgrade to dasBlog 1.8.5223
    Task 580: Make more money
    ...

    Features worth the upgrading effort

    • All the security features + Anti-Spam + Syndication features
    • Ability to pre- and post-date entries
    • Permalinks based on Title and Date optional (Just check the urlTitle of any of my blog posts and you will see what I mean)
    • More++ can be found at Mr Scott ComputerZen's site of treasures

    I have also removed all those useless referrals ...

    Sunday, August 21, 2005 11:06:49 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, August 16, 2005

    I just broke the piggie, took what has been accumulated in there for the last 2 years. Add that to the bank I just robbed and therefore it looks like I will be there.

    Tuesday, August 16, 2005 12:29:23 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, August 10, 2005

    As timeline nears for Microsoft TechED Asia 2005 in Singapore (24th-26th August 2005), I have managed to firm up my topics. Besides the usual rather cryptic session topics and synopsis (Sessions [1] and [2]), I have added 2 of my own pre-packaged flavours into the mix (Sessions [3] and [4]). I hope the latter 2 sessions will be able to provide a cool new refreshing look at distributed computing (Web Services, ESB, EAI, WS-*) to the audiences and hopefully draw in some good crowds.

    ...so, 4 topics for the Softwaremaker. It is time to get to work on that.

    1) Programming Indigo
    William introduces Indigo for the first time to the masses in Singapore. He will explain the basis of its design and programming model and looks at the Whys and Whats of it. Indigo is a huge framework and he will bring the audience in for a quick sneak peek of the future of the Windows Communication Foundation and why it is not just another WS-Toolkit.
     
    2) Building Secure Web Services Using Indigo
    William introduces Indigo for the first time to the masses in Singapore. He will explain the basis of its design and programming model and looks at the Whys and Whats of it. Indigo is secure-by-default and offers many ways to tap into pre-existing security mechanisms for building connected, un-trusted boundaries. William will also share his thoughts on the interoperability aspects of WS-Security as well as the best way to move forward. William will also explain why WCF != WSE 4.0++. 
     
    3) Transactions in Web Services and WS-OtherThings Developers Love to Hate
    The above interesting refreshing Title IS the Synopsis. Enough said.
    WS-TxAndWS-OtherThingsDevelopersLoveToHate.jpg
     
    4) SOA, SOAP, WS-*, BP-1.0, WSE, ESB, EDA, WCF, EAI: Making sense of all the FUD
    Tired of being fed the same stuff over and over to you again and yet have no idea what you are eating ? If you know these acronyms all too well but have no idea what they meant and how they fit into the grand scheme of things OR if you ever wonder sometimes if they are just fluff or stuff, this interesting refreshing session will address some of your Fears, Uncertainties and Doubts.
     
    Birds Of A Feather Discussion Session Forum
    1) Preparing Indigo
    2) Migrating ASMX to Indigo
    3) SOA, SOAP, WS-*, BP-1.0, WSE, ESB, EDA, WCF, EAI: Making sense of all the FUD
     
    I am also in the midst of assisting INETA APAC to help co-ordinate a huge joint 3 Usergroups (WHAM BAM BIG BANG) session on one of those TechED nights. Steve Riley from Corp will, as usual, do what he does best and present on a security topic to all 3 Usergroups (Singapore .NET Usergroup, Singapore SQL Server Usergroup, Singapore Windows Usergroup). There will be a great networking event after his presentation. All in all, this should be a great event and will provide some value to those who cannot make it for the TechED day events.
     
    I hope to see you there.
     
    Wednesday, August 10, 2005 7:40:20 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, July 15, 2005

    As you can see from the comments I left there and I am re-producing it here:

    One of the things I noticed is that the .svc extension is strange if you look at it from a endpoint angle. Having

    http://abc.com/def.svc/mex
    http://abc.com/def.svc/ep1
    http://abc.com/def.svc/ep2

    is rather unnatural. I had a couple of attendees who actually thought it was a typo in the HOL (the HOLs are full of typos, btw) and changed it to

    http://abc.com/ep1/def.svc
    http://abc.com/ep2/def.svc

    Of course that didnt work as well. They had a hard time grappling with the unnatural look and feel of it.

    I would think that receiving client applications would do a double-take on this as well once they look at the actual endpoint address

    Getting rid of the physical file extensions would be a great and welcomed idea! Afterall, it is good convergence with the servlets of J2, Remoting and httpHandlers of .NET, Content Management Servers and others as well.

    If I am not wrong, isnt that how REST Web Service works as well ? Something like http://abc.com/ep1 or http://abc.com/getSomething. It is a verb thingy. There is really no physical file on the other end.

    To me, its simpler as well as now if I have to change any type information, it will be in the .config file only and nothing more. God forbid customers to deploy multiple physical files as well ... and to some of us who are used to doing inline scripting in these asmx or svc files (for debugging and testing purposes, not for production use), .NET 2.0 already gives us dynamic compilation in App_Code


    To me, the solution is clear: Dump the svc file extensions

    If you have other ideas, opinions or just want to echo my same thoughts, do feel free to drop by Steve's post and let him know !

    Friday, July 15, 2005 9:54:04 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, July 12, 2005

    After so many years, I have finally activated my first PSS call to Microsoft. All these years, I have been prowling Google and MS user-and-newsgroups rendering help and sometimes receiving help as well. Never had I once need to activate a PSS call. Power to the MVPs

    However, I had this pressing problem that couldnt be solved and because of that, I had to skip a few cool demos which kinda sucks.

    The problem revolved around the installation of SP1 on top of Windows Server 2003. It just rolls back halfway during the installation process without giving me a reason why. I also noticed that it happens during the installation of this file cladmwiz.dll, which is strange because I am not running any kind of clusters.

    It was definitely a long and tedious day with a very helpful person from PSS Microsoft. There were language muckups because the APAC PSS center is based out of Greater China and it takes a good 3 minutes just to make sure we get the Case Reference ID correct. Patience is definitely his middle name.

    Finally, we came to the troublespot and found a way to workaround it. The problem were the UDDI Components that was installed on my Windows 2003 Server machine. Apparently, SP1 doesnt like it enough to install itself on top of it.

    Here is the workaround:

    1. Extract this attachment to the target machine.
    2. Extract the sp1 package with the following command line: [sp1 package file].exe -x
    3. Run the following command line on the target server: uddisp.exe install [sp1 path]
    4. Then, uninstall UDDI component through Add/Remove Program
    5. Install the service pack 1 again.

    I hope this helps someone out there as days and days of googling resulted in nothing. This will also save some poor soul from activating the PSS for help.

    Now in the first place, why isnt this documented ? It seems that I am the only one in the world who uses UDDI on Windows Server 2003 SP1.

    You know what ? Somehow, why am I not surprised ?

    Tuesday, July 12, 2005 10:36:27 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, June 30, 2005

    I had the recent pleasure of meeting up with active blogger Mitch Denny who is one of the Microsoft Indigo Ascend attendees which I conducted last week in Sydney, Australia.

    He spent some time blogging about what was learnt during the 3-day session. A very good read here, here and here for all who is interested in knowing the color of Indigo.

    What a cool dude. You rock, Mitch !

    Wednesday, June 29, 2005 6:09:31 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Saturday, June 04, 2005

    My own little test utility tool - Manual SOAP Post has been seeing a fair number of downloads and I have received some good compliments on it as well as good feedback.

    Actually, it is really nothing to shout about. It is one of those tool things that people have been using under the hood and therefore taken for granted. Since I have been doing a fair amount of work in terms of wire-interoperability, I figured that an abstraction (or proxy)-neutral tool would be good from a common point. So, I am being explicit in crafting out a message (bypassing the various abstractions that SOAPHttpClientProtocol, WebServicesClientProtocol, ServiceModel.ProxyBase brings), it would be good to send the same (W3C) SOAP message to different endpoints running different implementations and platforms and see how interoperable is that message from a single console. It is also a great tool for testing / troubleshooting a production environment.

    This new version just consist of a couple of minor enhancements (due to public feedback):

    1. The Windows Form application can be re-sized now. . I had missed that out in the earlier version.
    2. Explicit inclusion of other HTTP Headers can be added into the transmission of the SOAP Message.
    3. SSL / HTTPS Testing should work fine now. Because this is a test tool, I have set it to trust all X509 incoming certificates. So, use it ONLY for testing within a trusted application domain.
    4. Timeout can be set in the configuration file now.

    As I am doing a fair amount of work with Indigo, I discovered that version 1.0 of Manual SOAP Post cannot dispatch a properly-formed and valid message to an Indigo endpoint that had an implementation of the basicProfileBinding with FormatMode=ContractFormatMode.XMLSerializer. After spending an insane amount of time spent digging into the HTTPHeaders in the wee hours of the morning, I found that the Indigo is very anal with the charset. Specifically, the header of Content-Type: text/xml is not enough. It was good enough for an ASMX and a Web Services Enhancements (WSE) 2.0 endpoint. But Indigo wanted more. So, I had to include the charset=utf-8 into the media-type before it would open its doors to talk to you.

    This is now fixed in this 1.1 version of the Manual SOAP Post. You can explicity add extra headers into the transmission in the configuration file which renders it slightly more extensible.

    If you are interested, get it here and Enjoy and keep those feedback and criticisms coming.

    [Author Note:] Please uninstall previous versions of Manual SOAP Post before installing the new version. Thank you.

    Saturday, June 04, 2005 6:12:18 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, May 04, 2005

    Ian Yates interviewed me for what turns me on for MSDN Magazine SEA Edition. Read about it here.
    © MSDN Magazine SEA Edition

    Wednesday, May 04, 2005 4:26:50 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, April 11, 2005

    If all things should go positive, I will be addressing the Malaysian Independent Developers (MIND) Usergroup Community on May 7th 2005 in Microsoft Malaysia, which is located in KLCC Petronas Twin Towers (which incidentally are the world's tallest towers)

    This is the first time INETA APAC has activated any member of its Speaker Bureau out of their localhost(127.0.0.1)-application-domain (sorry for the geek slang...) I am preparing a 4-hr marathon session on nothing BUT Web Services. Some of the sessions are deep technical 400 series and it is definitely not a session for the faint-hearted nor the casual observer on a Saturday afternoon. This would definitely be an angle-bracket fest.

    My proposed topic abstracts are as follows:

    WS-Yesterday - History and Evolution - by William Tay

    • SOAP vs others as a Distributed Computing protocol
    • Service-Oriented Application Programming
      • Lessions Learnt
      • Applied Principles

    WS-Today – Demystifying WSDL and Best Practices (Part 1 and 2) - by William Tay

    • What is WSDL ?
    • Critical role in Service-Orientation
    • Core Elements and Definitions
    • Discovery Views
    • Best Practices
    • Coming soon to a parser near you:
      • WSDL 1.2 ?
        …or is it…
      • WSDL 2.0 ?
      • WSDL concepts in Indigo


    WS-Tomorrow – Service-Orientation, Indigo and you - by William Tay

    • Indigo in Theory
    • Core Indigo Concepts and Principles
    • Indigo Messaging Model

    The slides are here. Go geek out.

    Monday, April 11, 2005 9:34:53 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, February 16, 2005

    In some of my recent XML SOAP Services demos and presentations, I found myself needing to manually post a SOAP message to a listening (W3C) SOAP Services on http and also on the tcp transport protocol.

    While doing that, I can also change the SOAP Message on the fly and post it instead of having to change the way VS.NET XMLSerializer serializes the types and then recompiling and running it again. Besides saving time, it does add an element of oommph as well as there is no break in momentum and more importantly, audiences really do see and can appreciate what is going onto the wire real-time.

    Being able to change the messages on the fly as well also lets you see very quickly and clearly what the receiving endpoints can or cannot do. In this sense, with just a few tweaks of the angle brackets, I can generate SOAP Faults at will and it gives the audience great examples for learning how and when SOAP Faults are generated. For example, changing the element names OR re-ordering the elements of a SOAP Message and see what and how the receiving endpoint reacts. I will leave this as an exercise to the reader.

    I have written a small tool to help me do that. Recently, I have just added an ability to the application to allow it to post SOAP messages over the TCP Transport channel to a listening Web Services Enhancements (WSE)-enabled SOAP Service.

    Granted, most people will still need to manually pre-compose a SOAP Message before-hand. Do this as part of your pre-presentation work and save the messages for posting to the receiving endpoints later. Of course, if you are an angle bracket freak like me or Tim or Radovan, then you should all feel comfortable typing them into the textbox.

    Seriously though, this tool allows you to save your SOAP message scripts as part of your preparation work. You can either post these as files (via the OpenFile Dialog button) or copy-n-paste those scripts into the textbox.

    I believe that this can serve some basic purpose scenarios. Do note that besides doing presentation work with this, I think this is a great tool for developers who need to further test their SOAP Services to make sure it is able to generate the exact SOAP Responses (SOAP Faults and all) with every single differing SOAP Request.

    For example, users testing their WSE-Enabled SOAP Services can change the wsu:Timestamp element to test the service timeouts or play around with the wsse:Security elements of _WS-Security Specs_.

    [Pre-requisites]:

    [Notes]:

    • This will only work for the Request-Response MEP for WSE-Enabled SOAP Services

    [Upcoming Plans]:

    • Incorporate the ability to listen for incoming SOAP Messages as well. So it will work for truly asynchronous, duplex type SOAP Services as well
    • ...

    I have made it available for download here. I plan to make the source codes available once I incorporate most of the features the market wants.

    Please feel free to leave your comments and feedback in this post so I know how to better improve it.

    Wednesday, February 16, 2005 12:03:56 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Sunday, February 13, 2005

    I have spent some time preparing on a topic on WSDL and I will present this in our March 2005 SgDotNet gathering.

    Synopsis:

    With all the power of abstractions that most major IDEs to today offer, inner technical plumbings are often ignored and worst - Misrepresented and Misunderstood. This can lead to choosing the wrong technologies and solutions to solving specific problems. When it comes down to troubleshooting the nooks, crannies and crevices at crunch time with no extra help, nothing beats a dirty pair of hands, a hammer and a screwdriver. William attempts to get everyone's hands dirty with a detailed look at what transcends within one of the most core and matured XML Service Technologies of today.

    Some of the things that will be covered:

    1. What is WSDL
    2. Critical role in Service-Orientation
    3. Core Elements and Definitions
    4. Discovery Views
    5. Best Practices (Interoperability, Extensibility, Versioning)
    6. Coming soon to a parser near you: WSDL 1.2 ? …or is it… WSDL 2.0 ? >>> If we have time
    7. RPC-Encoding Vs Doc-Literal WSDL Concepts in Indigo >>> If we have time

    If you are available or around the area on the 10th of March 2005, why not drop by Microsoft Singapore and sit in ?

    The difference between this presentation and the ones I had done before for our own usergroup is that I am representing INETA APAC in this event. Thus I will be speaking in the context of a speaker from the INETA APAC Speaker Bureau. I really hope that INETA APAC can sort out some of their administrative details in time and be able to subsidize some of the pizza money for the food we intend to have. Heck, this is the only way I know how to keep some of them awake while staring at the monotonous angle brackets...

    Register yourself here.

    Saturday, February 12, 2005 11:41:40 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, January 28, 2005

    Some of the folks in the Spore DotNet Usergroup got together one night to run a practical project. The idea behind the link is to build a bridge to access Visual SourceSafe over the internet. It was built successfully with the help of SCCBridge.

    Incidentally, SCCBridge relies heavily on SOAP and DIME for its purpose and it is therefore no surprise that Web Services Enhancements (WSE) 2.0 was heavily involved in use here.

    "Both the server and the client are written in C# in Microsoft Visual Studio .NET. In the project is used library SharpZipLib created by Mike Krueger (for more info see http://www.icsharpcode.net/ ). The algorithm for text files comparing was taken from The Code Porject site, and was written by Shankar Pratap."

    Friday, January 28, 2005 3:28:07 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, January 20, 2005

    If you can see this correctly, then Julie Lerman's BLInk still works with this version of dasBlog 1.7.5016.0

    Posted from BLInk !

    Wednesday, January 19, 2005 10:56:15 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Wednesday, January 19, 2005

    If you are reading this, I am already successfully migrated to dasBlog 1.7.5016.0. There are so many wonderful enhancements to this version. I especially love the Anti-Spam features of it via the Captcha image Comment Post and the ReferralSpam blacklist.

    Incidentally, I had written up an article on DevX before on "Spoof-Proofing your Logins" here. Do check it out.

    Thanks Mr Computer Zen, Scott Hanselman for the excellent contributions to this project.

    Trust me, I wasted no time in drawing up the referral blacklist. The much-desired feature of allowing the author to draft up a blog post first before publishing it (IsPublic = true) is also here now.

    Wednesday, January 19, 2005 1:19:53 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, December 28, 2004

    Some people I spoke to in the US and Europe still cannot comprehend the drastic devastation of the Asian earthquake and Tsuamis. I like how William Rees-Mogg puts it across in his article on the Times.

    “...The earthquake itself is said to be 1,000 kilometres (620 miles) in length; the seabed was opened up as though by a zip fastener; this event threw up a gigantic wave three storeys high, which travelled for thousands of kilometres...”

    “...If such an earthquake happened in Europe, we would be able to trace the fault from London to Rome, or to Berlin...If a tsunami ten metres high stormed its way up the Thames, half of London would be under water. If such an earthquake ripped through the San Andreas fault in California, it would virtually tear the state in two, and cause trillions rather than billions of dollars of damage...”

    The quake is caused when the Indian plate moved into the Burma plate. There is said to be a 1000 times more energy released from this compared to the devastating Kobe Earthquake in Japan in 1995. In fact, this has caused some of the lands and islands in South Asia to move and may need a redraw on the map. This should give people an idea of how huge the swells and Tsunamis were.

    In my earlier post here, I mentioned that Singapore was spared by the physical shock of this earthquake and Tsunami...however, Singaporeans are NOT spared.

    So far, 7 and counting have died. All holidaying and visiting in Sri Lanka and Phuket. 450 Singaporeans are in Phuket at that time and hundreds of holidaying Singaporeans are still not accounted for from Malaysia, Thailand to the Maldives.

    There are so many holidaying foreigners in Phi Phi Island of Thailand who have been killed or missing as well. Most of them are beachgoers and surfers catching the what-were-once the beautiful southern beaches of Thailand.

    What also was very sad is that there are reports of many women and children who drowned on the shores of Aceh, Indonesia. They had noticed that unusual low tides and had rushed out in hordes to admire the beautiful low-lying corals. What they didnt realize is that this is usually a sign of a fast impending approach of a major seismic wave as it gathers its energy for a major strike. Fishermen at shore, who knew about the symptons of receding water to be a sign of an approaching tsunami, were too late in warning their wives, children and other people. The entire shoreline of Aceh, Indonesia is destroyed in this disaster.

    “...If the trough of the tsunami wave reaches the coast first, this causes a phenomenon called drawdown, where it appears that sea level has dropped considerably.  Drawdown is followed immediately by the crest of the wave which can catch people observing the drawdown off guard...”

    “...As a tsunami nears the shallower water close to the shore, the viscous drag of the continental shelf slows the front of the wave. The first sign of an approaching tsunami is usually a significant retreat of the sea. As a result, the trailing waves pile on top of the waves in front of them (like a rug crumpled against a wall), thereby significantly increasing the height of the wave before hitting the shore. Although a tsunami advances much slower as it approaches land, its momentum is powerful enough to flatten houses, buildings and trees and carry ships far inland...”

    We also should not forget that there are so many bodies that have been washed out to the Ocean, probably not to be found, leaving many affected families and relatives grieving for the missing...a death with no confirmation of a body. I dont know if there are any griefs in the world that can be more painful than that.

    While watching the footage of the scenes of destruction on TV, while heart-wrenching as it is, it is heart-warming to see people of all colors and races carrying each other and helping each other out. Nobody cares what you are, who you are, where you are from or what your beliefs and ideals are.

    For me, for that one moment, the entire world unites.

    Tuesday, December 28, 2004 12:23:47 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Monday, December 27, 2004

    I had a chat with Julie Lerman this morning about the Asia Quake that killed thousands with its unprecedented Tsunamis. It is important to note that Tsunamis are NOT tidal waves as it is not caused and has nothing to do with tides. It is actually seismic waves caused by earthquake or volcanic activites. This was the largest earthquake in the world in the past 4 decades with an 8.9 on the Ritchter scale. Coastal places like Phuket, Maldives and Sri Lanka were hard hit with fishermen villages and holiday makers.

    Here in Singapore, we are very lucky to be protected by a big land mass called Indonesia. So all we felt here are slight tremors that just shook hanging lights. Things would be bad if the Tsuanmis were to hit from the other side...with our small island state and many tall buildings, a 30 footer would wash our city center right into the sea...

    With all the da** violence happening in Thailand, India and Indonesia, all it takes it an act of God and thousands are killed...doesnt matter what color or race you are, whether you are muslim or not, or whichever tribe you are from...

    People still dont understand after all these years of civilization...<sigh>

    Julie emailed me right on the onset of receiving the news and worrying for her friends in Chennai (prev known as Madras). Her blog is also the first out of so many technical blogs I read that posts news about this. Being so involved with INETA, she has contacts and friends all over the world.

    With all these tragedies caused by these calamities, it is definitely nice to find gems in friends like these, no matter how distant they are and it tends to bring out the best in people and human nature.

    It is just very disturbing to see that it takes a disaster to bring that out...

    Aftermath.Reflection()

    Sunday, December 26, 2004 9:58:31 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, December 24, 2004

    This is a Godsend. Will refer to it before installing the Longhorn Client HEC Build 4074 on my VPC to churn out some Indigo stuff.

    Excellent resource !!!

    Friday, December 24, 2004 2:21:39 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, November 04, 2004

    I could not use the newer features of the FreeTextBox since I upgraded to this dasBlog version 1.6.4121.2.

    Newer features that didnt work (for me) in this FreeTextBox version include those that requires a Web Dialog Popup, namely:

    • Insert VB.NET, C#, J#, T-SQL Code
    • Font-Fore Color
    • Font-Back Color

    ...Until today...

    Thanks to Kenneth Solberg who helped me out. We managed to devise some kind of hack around it. Without knowing the full cause of this bug, I would not call this a solution. It is a hack, at best.

    The hack includes these steps:

    1. Save a copy of the web.config file from the dasBlog root to the ftb directory
    2. Open up that web.config file from the ftb directory
    3. Edit the Authorization Config section to such: <authorization><allow users="*" /></authorization>
    4. Remove the Authentication Elements from the config file
    5. Save that web.config File back to the ftb directory
    6. Save a copy of the SiteConfig Folder and Contents from the dasBlog root to the ftb directory as well
    7. Refresh and Click on the Font-Fore Color, Font-Back Color and Insert Code Buttons of the FreeTextBox and watch the wonderful Web Dialog pop up successfully.

    Since there are many questions around regarding this, I have updated and answered a question with regards to this on the temporary dasBlog Wiki site here.

    Hope that at least helps someone.

    Thursday, November 04, 2004 1:49:56 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, October 29, 2004
    Friday, October 29, 2004 3:35:20 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions