Introduce your drastic UI changes... slowly


We are in the middle of a somewhat sudden rebranding exercise.  One of the main colours that was used prominently in the previous theme of the website is now being retired as the UI is simplified.


So here is what we have right now:



And here is where we're going (currently in development).



Where's the Yellow?


In every case where we ask one of our existing users the first response is always: Where's the "Company Yellow"?

There's of course a marketing message that will go out with our latest release. 

But here's the secret developer compromise.


We can reduce the yellow, slowly, overtime


The old header background will remain.  But in the Javascript that's run on every page, we introduce a small piece of script that modifies the opacity of the background header.

var days = (new Date("2013-08-20") - new Date()) / (24*60*60*1000);  // remaining days until 2013-08-20
var opacity = (days > 0) ?  (0.5  * (days / 14)) : 0;   // starts from 0.5 opacity to 0
$(".header-banner").css("opacity", opacity);

What this does, is that over the course of two weeks, the yellow's opacity reduces from the original (50% at this next release) to 0%.  So as days go on, the yellow header begins to fade, and after two weeks, it will simply disappear!

I wonder what'd be the water cooler conversation.  Each person will wonder what happened to the yellow as it slowly faded out of our lives.

Chrome, the Trojan Horse we didn't know about


I do not like where Chrome browser is going, and I'm typing this on Chrome.
Let me explain, there are a few pieces in this puzzle.

Language and API

  1. Google is working on a javascript pre-compiler, Dart.
  2. Google argues that because javascript will never be as fast as native code, Dart will eventually run on its own VM. Dartium. The Dart development browser has two VM's, the Javascript VM (Chrome's V8) and Dart VM.
  3. Dart provides its own methods to talk to the browser and access features such as storage, camera, geo.


  1. Google splits off from WebKit and starts its own browser engine Blink.
  2. Google says this will allow them to drop support for legacy features in WebKit and focus on new stuff. What I think they mean is that eventually Dart VM will be included side by side with the chrome Javascript VM (V8).
  3. I think this was never about WebKit. This decision is purely so that they can structure the chrome development to be completely in-house, and they can dictate including a second VM, without having to get approval from Apple's Safari guys.


  1. Google continues to manufacture the Chromebook. Even with a very low market penetration.
  2. The Android operating system is under the ChromeOS group. Now that may seem strange. Android has huge penetration, Chrome OS is unheard of. Why are they structured like this?


  1. Oracle sued Google for Java infringements, and Google does not licensing Java from Oracle. This means Google can't use a number of improved Java VM from Oracle who holds much stronger patents. Aka. Java performance on Google Android's Dalvik VM can't go faster because Google doesn't license those techniques from Oracle.

Joining the dots

  1. I think Dart will tie the whole thing together.
  2. Dart will provide API to Android, allowing developers to work directly with Android OS without going through the Dalvik VM.
  3. Dart will provide javascript developers ways to call the Operating System functions through Chrome browser, even APIs that aren't finalized by the W3C. Because Google will dictate these APIs.
  4. Chrome OS will run Dart natively, yes right now it's just a notebook that only runs a browser. But what if that browser now has access to OS level APIs? Suddenly it's a device that can run code that goes outside of the browser.
  5. Both javascript developers currently writing Chrome apps as well as Android developers will suddenly form that army that will be able to develop Dart apps. These will run across Chrome OS, Chrome Browser and Android.
  6. Dart is Google's version of Microsoft's .NET Framework. Born out of a necessity to control the entire ecosystem and with a gentle push (lawsuit) from Oracle. To give them a complete framework and API that they can control completely, without having to ask for approval from anyone.
  7. Chrome browser is the Trojan Horse that will allow Dart to run on Windows & Mac. It will run on Android and ChromeOS (which Google controls).
  8. The only places where Dart won't run are going to be few: WindowsPhone and Windows RT - neither OS Google cares or has any plans to support. iOS currently has Chrome (without Dart) - it remains to be seen if Apple will bow to public pressure if Google plays the card to include Dart within the iOS Chrome browser. But I think that war will come, especially since Chrome is the gateway drug.
  9. So while we're bashing Adobe's Flash and MS' Silverlight for being non-standard and plugin architecture degrades the security of our systems, Google's been ramping up to ship another VM right under our noses.

Windows 8 - Export Google Reader OPML for Bing News

Let the hacks begin!

Windows 8's Bing News app was updated in the last few days and with this new version, an ability was added to allow us to add our own Sources.  RSS sources.

A number of my favourite news sites proceed to discuss this is a good direction to eventually be a viable Google Reader replacement.


My lament is that it doesn't seem to accept OPML, a common XML-based description of my RSS feed collection.



Hmm, I wonder how does Bing News store the RSS feeds that a user has chosen.



Windows Apps data are stored within the user's App data.  In my case, it is right here.


Having a quick look around, the custom Source feeds are stored in


JSON format is a simple javascript format.  So really, the hack is not even a hack, just converting OPML (XML) to JSON.

A powershell script, like this opml-to-bing-news-json.ps1, could do it.




  1. Download your Google Reader files from Google TakeOut.
  2. Open the ZIP file and copy the subcriptions.xml file to the same folder as the Powershell script
  3. My region market is "en-au" - check your state.json file to see if you have a different market.  Change it in your powershell script ps1.

    Run it like so...

  4. You should have these files now:

  5. Overwrite the state.json file in AppData with mine...
  6. Restart Bing News

  7. Bonus.  When I launch my Surface RT, all my feeds are already synchronized there too :-)

Retrospective - Australian SharePoint Conference Sydney 2013

I had planned to post this as soon as I finish my session - but you know, conference.  Lots of friends come visit during these events and the evenings do a lot of damage to your hair, and possibly liver.  I don't often get opportunities to chat with so many SharePoint experts in such a short span of time.  Lots of catch up, lots of thoughts, A LOT of ideas.


As for my session, Building SharePoint Solutions with Microsoft's TypeScript: how and why.  I think it went well.  I really wanted to thank the audience for being so kind, and stayed awake through the presentation.  As promised, here is my presentation:




A huge thanks to the organisers, speakers, vendors and attendees for such a fantastic conference.  I hope to see you guys again soon.

How to create your Windows 8 Start Button with PowerShell

Before I go on, I have to say I find the Start Menu unnecessary.  There are already many ways to get to your Start Screen:

  • Throw mouse to lower-left corner (with the mouse)
  • Press the Windows key (on your keyboard)
  • Swipe in from the left edge (touch screen)
  • Press the Start button (any device with a hardware start button)


That said, Windows is still about choice.  And here's how you can add your own "Start Menu Button"

  1. Create a shortcut.
  2. Type in this:
    powershell.exe -Command "Add-Type -AssemblyName System.Windows.Forms; [Windows.Forms.SendKeys]::SendWait('^({ESC})')"

    (all in one line)
    This sends the Windows key (CTRL-ESC) via Powershell.
  3. Configure the shortcut to run minimized
  4. Change the Icon, I select this icon from the bootux.dll file %SystemRoot%\System32\bootux.dll) 
    (All the icons are white, select them to see what they look like) 
  5. Drag the shortcut and pin it to the task bar, on the far left.
  6. Now you have that familiar Start menu button back.  Click it and you'll get the Start Screen to pop up. 



  • Does not appear to work in Windows RT, but if you have a Surface just hit that start hardware button