Blog Home  Sign In RSS 2.0 Atom 1.0 CDF  

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

  knownType_Serialize, about = Softwaremaker()

 Wednesday, April 27, 2005
Tuesday, April 26, 2005 10:28:06 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Tuesday, April 26, 2005

    ...and it is in Longhorn Client with Speech Recognition.

    I have just finished attending Richard's demo and I must say it has convinced me of the future. He was speaking on the "Future of Speech Recognition in Microsoft" in the MSFT Corp APAC Regional MVP Summit 2005 here in Singapore.

    Without going too much into details, he showed many cool demos (what is a Speech Recognition prezzo without demos anyways) where he uses a Wordpad as a prop, then proceeded to do more cool demos by speech-enabling a ASP.NET 2.0 Web Application. One word to describe it all C...O...O...L

    He then proceeded to say "Bring up Windows Media Player" and then said "Play Beethoven Symphony No. 9" before the sweet sound of classical music piped through through his notebook's speakers. I am no classical music fan BUT it sure did sound sweet to my ears. This will sure bring a hot date with a gorgeous babe to second base .

    Everyone was clapping, wooing and wowing at all these demos. However, one thing that I found was very good which I felt was lost on the audience is that when he typed the word "MVP" as part of a long sentence in Wordpad, the client echoed back the letters "M.V.P" instead of the word "mufffp". Now that is cool. . Have I finally seen Computing Intelligence at the personal user level ?

    Now, this is what Computing should be in the future. Bill Gates kept talking about making it simpler and seamless. I think he meant Natural as well. Typing and QWERTY is NOT natural, although it may seem to the endless hordes of graduates and youngER professionals I met over the past few years who can type or SMS at light warp speed. However, they cannot seem to carry on a decent intelligent conversation face-to-face. INK and Speech technologies is making computing revert back to the primitve ways on how man carries on in his commumication patterns (and it is about time) --- and that is to speak and write...and NO ! Typing is not innate to the human being. After almost 4 decades, I still cannot type in a decent way.

    Microsoft has spent a tremendous amount or resources and investment in harvesting these technologies and innovating it to make it easier for the end user. It is not about XML, Web Services, etc. These facets shouldnt just be a blackbox to the end-users. It should be invisible to them. This bodes well for the computing landscape of the future

    By far, the best presentation I have seen in this summit. You can read more about the Longhorn Speech API here and Longhorn managed speech APIs on Windows XP here.

    I am a believer.


    Tuesday, April 26, 2005 10:28:34 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Thursday, April 21, 2005


    I am on a roll. Since I tinkered with some client-based programming here as part of a small weekend project, I suddenly get this huge urge to do some more geeky client-GUI stuff.

    I have generally been doing much of my work in the distributed systems area and therefore are known to be much of a server guy or a (W3C) SOAP, XML geek to many. However, like many of people who has ventured into the software development world of Windows, it usually starts at the desktop...and for me, it is VB3 - VB6, including VBA. OK, I risk the MFC, C++, Java, C# people spitting at me here so I better stop.

    Anyways, I have always love the Internet Messenger (IM) and the genre of Presence Technology it brings. To think that if I had those technologies back in the late eighties while I was away in university in Canada, I wouldnt be writing those huge 'costly' paper stacks of letters to my folks back at home every week and I would still have kept in contact with my childhood friends. Hey, what can I say, I was too lazy to write them...

    MSN Messenger is what I have always used as my IM, and then again, I have not used any other. It is currently in Version 7 at the moment and the enhancements that come with each version never seem to amaze me.

    However, one pet peeve I have is the "Turn on What I am listening to" feature which I think, in my opinion, is for people with a narcissistic streak in them. There is nothing that turns me off than to imagine all the contacts in my list displaying the songs they are listening to at that moment. I dont know about you BUT I would be hugely embarrased if I have Britany Spears's I Am Not A Girl, Not Yet A Woman on my playlist.

    So, I thought I do some mucking around with the MSN Messenger Window to see if I could do some Windows SubClassing into its Windows Handle. For all those of you who dont know the essentials of Windows are, I took the liberty to quote Aaron Ballman from his link I have referenced above:

    All GUI applications on Windows are driven by getting messages from the operating system, and translating them into events for the user to handle. So when the mouse moves, a window is given a message telling it that the mouse has moved, and here are its current coordinates. Or when the user presses a key, a different message is generated and a window is alerted. This message dispatching is how all events are fired in REALbasic -- the system lets the framework know something has happened, and the framework passes the information along to you in the form of an event.

    If you are going to try writing a GUI component in REALbasic, you will most likely need a way to hook into this magic function that the OS calls in order to receive notifications of what the user is doing. For example, if you wanted to write a TrayIcon class you might want to be notified when your icon is double-clicked on so that you can fire an action event. Before we get into the details of how to accomplish this, you should be brought up to speed on the terminology and concepts involved.

    If you're coming from the world of C/C++, .NET or even Visual Basic, the magic function being described may be familiar to you. It is traditionally called a WndProc (pronounced 'wind-proc') and it's short for window procedure. You let the system know what WndProc to call by specifying one in a window's class definition (called a WNDCLASS) structure, which is then registered with the system. Every window created with that class definition will have its WndProc called by the system for all messages. The OS knows when to call the WndProc because there's a loop in the application known as the message pump which handles all the message passing. A typical message pump will look something like this (in C):

    I had done some of those Windows programming before back when I had more hair so this is not a foreign concept to me. I dug out my old Win32 API Programming book to get myself acquainted with all the Windows Handles API again. I must say that I really enjoyed that as it did bring a sense of nostalgia to me. All the technical documentation about Windows Handles, Message Pumps, Windows Subclassing, Function and Memory Pointers and \0String Buffers\0 did get me excited for a while.

    Then, I took a couple of nights off from sleeping (Hey, I have a real job...) and started doing some programming work against the .NET Framework...and before you know it, I have cooked up something that I would humbly think is quite respectable. Check out the screenshots on this page. OK, I admit the Application UI is nothing to shout about and I am ashamed to say I have failed Design, Usability and Color-Coordination 101 lessons in school. .

    Basically, I allow the user to feed into the MSN Messenger their current location (I will explain more later...), the host machine's date, time and timezone as well as some user-defined caption. Since there is a clock element involved, I had to add a timer to constantly update MSN Messenger on the current time. The timer frequencies can be set as 1, 5, 10 seconds and 1, 5, 10 minutes. And for those who have some bandwidth restrictions (I believe MSN Messenger sends a packet over the network to inform all your contact list on you next message text), there is a UPDATE ONLY ONCE feature that updates once and then disables the timer.

    As for the location, as I have many contacts on my list who travels frequently and they like to put their current location on my MSN Caption, so I figured this would be a useful feature and I wanted to make it automatic with no user intervention. I then wrote up a simple Where Am I Web Service that returns the Country name and code of your current location based on your IP address. An IP address is pretty accurate in telling your current whereabouts country-wise. Your IP address that you sent to my Where Am I service would be the public-interfacing IP address of your Wide-Area-Network. In this sense, you could be booting up this little application in Japan, Panama, Canada or the US and it would return your current host country automatically.

    (On a more geeky note, I have invoked this Where Am I Web Service asynchronously [not via a duplex channel], so there is no Freeze-Hanging effect once this application is loaded. It really is quite cool to see your host country being reflected in your application once it returns from the service)

    Now, wouldnt it be much more cooler to display all these Location and Time settings on your MSN instead of showing off what you are listening to ? Now, if everyone uses this tool, it would be nice to see everyone on my contact list from all over the different countries from all the (5 ? 6 ? or is it 7 ?) continents in the world.

    I also played around with the system.diagnostics and processes a bit so that ONLY one instance of the application be loaded at only one time. This is really one of those rare times that I have done development work without any considerations for object pooling, scalability, load-balancing and the handling of muliple connections, etc that comes with the domains of distributed systems. Way cool. I like it !!!

    I added some enhacements to it as I figured that there are way more narcissistic people than I think there are. (Oh, btw, I am blogging --- Am I narcissistic then ?) BUT I had to think of something more useful and functional. Then I realized maybe people would want to show what they are currently working on at the moment. This could be done via the Active Window Handle API. You could then show off to your boss that you are currently working on your assignment at the moment. However, do take note, you would be announcing to everyone that you are surfing for Internet Pornography as well so use this feature with care...

    Of course, all these features can be turned on and off with a knob. Anyways, I have tested this with Windows XP and 2003 Server and it works. Other than that, you are on your own. You would also need the Microsoft .NET Framework 1.1 for this. You can get it via your Windows Update or download it here. Since this is freeware, please read the license before downloading and installing it.

    Download it here now. Enjoy !


    1.  To add more features
      • Someone mentioned to me to show the current available computer memory at the moment. This could be bragging rights for someone with a 2 or 4GB RAM Machine or someone who is willing to contribute their system resources to the SETI @ Home Project. Let me know via comments on this post if you would like this feature.
    2. I dont really know how to remove that irritating headphone icon thingy. Let me know via comments on this post if you know how or could offer any advice.
    3. Hyperlink the text. Again, I dont really know how to do this so I would appreciate any advice and such.

    I hope this serves as some kind of feedback to the MSN team as well so they know what to include for MSN Messenger 8 next time.


    Thursday, April 21, 2005 2:51:11 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Sunday, April 17, 2005
    Your Dominant Intelligence is Logical-Mathematical Intelligence
    You are great at finding patterns and relationships between things. Always curious about how things work, you love to set up experiments. You need for the world to make sense - and are good at making sense of it. You have a head for numbers and math ... and you can solve almost any logic puzzle. You would make a great scientist, engineer, computer programmer, researcher, accountant, or mathematician.
    Pretty accurate. Not Bad, Not Bad...
    Sunday, April 17, 2005 7:22:37 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  • I am preparing for a few road trips soon and in that meantime I am also expecting some important business emails to come in. Since I am using a normal 3rd party pop mail server and dont have any fanciful Microsoft Exchange APIs to play with, my best friend here is definitely my Outlook 2003.

    Over the weekend, I created a simple web service which allows the invocations to be able to SMS me on my mobile phone. How this is done will remain a secret for now. So, now I need to hook into Outlook events, specifically the Application_NewMail() event which triggers automatically when a new email is received. The objective is to leave my Outlook 2003 running at home and set a timing process to pull mail from the POP Server periodically. Once a mail is received and I will do some rule-based processing to make sure it is from the important business contacts I am expecting, I will invoke a Web Service from within Outlook itself.

    Sunday, April 17, 2005 2:08:48 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( (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

  • Lets take a look at the meaning and symbolism of the color Indigo. I will attempt to slot in my own views on how the color maps into the technology.
    Monday, April 11, 2005 2:02:17 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  • There was Viper (I am sure there is a play somewhere here with COBRA or izzit CORBA ?), Falcon, Wolfpack, COM+ (I dont think it has a codename), .NET Remoting and now Indigo, which happens to be Green at first.

    Of course, the Development and Database tools were codenamed after places (Everett, Orcas, Yukon, Whidbey, ...) Incidentally, the belief was that the further the codenamed "place" was from Redmond, the later the shipping dates will be. I dont really know the accuracy of that though.

    Of course, my interest has always been in the domains of distributed computing and I have been on Viper since Day 1 and moving along with each new evolution of distributed computing technology. I am deeply entrenched in Indigo today, which some people have argued it is more of a revolution of distributed systems in terms of its perception. I dont disagree. However, I always chose to believe that Information Technology should be deployed for the sake of Business Innovation and not just for the sake of technology. This hasnt happen before BUT I strongly believe it is set to change with the coming of age of technological (horizontal) and business (vertical) standards and Indigo is set to deliver that set of technological standards while enabling vertical standards to be built on top of it. Put it all together and you get real Service-Orientation which preaches to the idea that Business drives IT and not the other way around.

    Monday, April 11, 2005 1:15:19 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Friday, April 08, 2005

    Singapore is a hotbed for a lot of great technology conferences this year. I am invited to present in quite a few of them this year. Of course, most of these presentations are very centered around XML Services, Service-Orientation and Distributed Systems. These are a couple of the events that I will be presenting in the second quarter of this year. I am looking forward to SDA.NET Conference 2005 as I will be presenting a couple of sessions on Indigo and I am also very excited to have 2 mysterious internationally-renowned speakers (whom I will disclose later) whom will be presenting alongside me as well. All 3 of us will be bringing Indigo to the plate during this event. If you are around Singapore during the 24-27th May 2005, please do not miss it.

    I will update on the details of the synopsis once I have it.


    If these events are not enough to whet your geek passion, there are a lot more great ones coming up in the second half of this year. Stay tuned to this space for more.

    Thursday, April 07, 2005 10:04:36 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  •  Saturday, April 02, 2005

    I dunno --- I think 1 GB is already a lot. Now, we have 2 GB !

    When will the war hit the breaking point ? When it reaches 1 TB ?

    Saturday, April 02, 2005 11:57:01 AM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions

  • As usual, I find the documentation of the Indigo CTP bits rather lacking. This is to-be-expected for any CTP Releases. Besides the declaration of attributes, Indigo makes heavy use of configuration to enable an Aspected-Oriented style of programming (AOP). This is really good as it really separates the technical goo from the functional business gunk. This is all good BUT the documentation for the configuration section (plus the schematic view) is rather lacking from the CTP documentation.
    Friday, April 01, 2005 10:25:10 PM (Malay Peninsula Standard Time, UTC+08:00)  #    Disclaimer 
  • Blog reactions