Irregular Injection of Opinion
RSS 2.0|Atom 1.0|CDF

 Saturday, 08 August 2009
Rebuild Day: Post #1, software audit and backup

Today is rebuild day for my primary machine, a Lenovo x61t. Moving to Win7 RTM and Office 2010 Tech Preview.

First up is pulling all the Data off my C drive.

This mainly means the data out of my profile folder. A key thing to remember here is to check your filesystem Virtualization folders for stuff that’s been put there by poorly written software. I usually backup to a hard drive but today I’m going to just push it across to my D drive partition- I made the decision last build to run two partitions again which is a move I’m pleased with.

Then it’s time to do an audit of the Program Files folder to determine which of the crap that I’ve installed over the past 7 months I actually need to install again. here is my list, not necessarily in order. Hopefully it might give readers a few pointers.

Polar Pro Trainer
Life Cam
Intelli Point
Live Mesh
Office 2010
VS2k8 + SPs
Expression Studio 3
Star Alliance Travel Desk
IIS + other goodies via Web Platform Installer
SQL 2k8 inc Books online
DevExpress Controls + Addins
Azure SDK
.NET Services SDK
Process Explorer
Sony Vegas
Live Writer/Messenger
eTrust + RAS Bits
K-Lite Codec Pack
Zoom H Series Driver

Office2010 | Windows 7|Saturday, 08 August 2009 22:35:53 UTC|Comments [2]|    

Simple Partitioning with Windows Azure Table Storage

While there are certainly situations where it makes sense to have a natural PartitionKey when working with Azure storage there are other times when all you really want is a simple way to bucket up your data into equal bins. The usual approach to partitioning is going to be some sort of hash function but if you decide to use a Guid as the RowKey for your data you’ve basically got a nice collision resistant equal distribution already, you just need to turn it into a partition key.

I was sitting on the plane back from Singapore having a bit of a think about this. Given that we can represent our Guid as a 128 bit Interger we can probably just do RowKey % PartitionCount  and get a nice simple ordinal for each partition.

So after my birthday dinner I did what any dedicated birthday boy would do and broke out Visual Studio for a bit of a hack around..

First problem was the ‘128 bit integer’ as .NET doesn’t have a native BigInt type. A quick bit of Tiwtter asking and @adjames suggested the BigInteger class in .NET 4.0, but, given this is Azure there’s no .NET 4.0 support quite yet. A bit of Binging (is that a verb yet?) found some posts on StackOverflow and an implementation of a BigInteger class on CodePlex.

A quick console application confirmed that my thinking on the plane was right.

static void Main(string[] args)
            int[] counts = new int[]{0,0,0,0,0,0,0,0,0,0};
            DateTime start = DateTime.Now;
            for (int i = 0; i < 1000000; i++)
                Guid g = Guid.NewGuid();
                BigInteger b = new BigInteger(g.ToByteArray());
                BigInteger c = new BigInteger(10); //Number of partitions
                int p = BigInteger.ToInt32(BigInteger.Abs(b % c));
                //Console.WriteLine(g.ToString() + " : " + p.ToString());
                counts[p] += 1;

            DateTime end = DateTime.Now;
            TimeSpan duration = end - start;
            Console.WriteLine("Took: " + duration.TotalMilliseconds + " milliseconds");

Running this confirmed that my RowKey values would be evenly distributed across the 10 partitions- my concern here was that the Guid algorithm might not be quite up to the task but all seems good.


6500ms for a million rows doesn’t look too bad on the face of it. I’m sure there are plenty of performance optimizations to be eeked out, but, they’ll pale into insignificance compared to a round trip to Azure storage via the load balancer. What I do need to test is that it’s not more efficient to rehash the Guid into 64 bits and then calculate the modulo. But that’s for another night- jaded now and hoping to do 100km on the roadie in the morning.

.NET | Windows Azure|Saturday, 08 August 2009 07:50:00 UTC|Comments [1]|    

 Wednesday, 05 August 2009
TechEd Africa – Session Recap and Bits

So I had a great time at TechEd Africa this year. Will definitely be trying to get an invite to come back next year.

As always you can contact me about my sessions

Here are the follow up notes from my sessions. I’m not going to provide the PowerPoint decks until I’ve done the other TechEd events around the globe. I’ve provided them to the event organizers who will stick them up on the password protected attendee site.

  1. DYN201 – xRM, Dynamics CRM as a Developer Platform
    Good session in a smaller room. I had this one back to back with my other CRM session so this proved to be a good warm up with many people attending both. I used the demos and decks from the half day Business Action World Tour event that happened everywhere in the world *except* Africa so I thought it was appropriate to show the folks over here the content. I also talked about the fact that I eat my own dogfood- we’ve built a company that I’m  major shareholder in called MedRecruit. Go and take a look at the site, it all back ends onto Dynamics CRM 4.0 and runs on Windows Server 2k8 on Hyper-V. If you like it… give us some Google-Juice from your blog and tell all your doctor friends. I’ll be eternally grateful!
    If you want to take another look at the content from this session then check out the Business Action Virtual Tour.
  2. DYN303 – Souping up Dynamics CRM with Silverlight
    This session is the one that Jian Sun is going to be delivering at Tech Ed Australia. He was responsibile for putting together the demos and I built the deck. This was probably the best session of the week for me. I felt the attendees got some great practical skills to go home with tomorrow and start building cool stuff. I promised a drop of the final demo solution that we built during the session. So here it is:
  3. AZP201 – A Lap Around the Azure Services Platform
    I love doing this session because I know the content really well and as a 200 level architecture+business value session I get to put my own spin on things quite a bit. First time I’ve really had the chance to cut loose and talk about competitive cloud technologies at a Microsoft gig though- discussed AWS, AppEngine and all of which (along with Azure) take quite different approaches to the cloud. Will be interesting to see how things shake out.
  4. AZP302 – Programming .NET Services
    Today was a deep dive on .NET Services. I thought this session went really well too, but, it’s always harder to really nail ‘ew stuff’ sessions because it’s not like you got a whole bunch of experiential wisdom that you can impart as best practice guidance. We covered the whole .NET Services platform with demos in 60 minutes. I also tried a new ‘demo’' to explain the Service Bus relay and Direct Connect upgrade via NAT Probing through having three volunteers throw foam balls. I thought it went pretty well- we’ll see what the evals say!

So. All in all a fantastic event. I’m looking forward to getting out to Australia and New Zealand Tech-Ed early next month now.

TechEd | Travel|Wednesday, 05 August 2009 17:17:16 UTC|Comments [1]|    

TechEd Africa – The Pre Event Post

So it’s 1830hr in Durban South Africa and today was the last day for TechEd Africa for 2009. This was my first TechEd for this year and the second time I’ve spoken at TechEd South Africa.

Before I give you links to the demo code I’m going to bore you with some photos of my trip down the Zambezi last week. There’s actually quite a story behind it that you can read all about over at the Intergen Blog.


 IMG_0103 IMG_0118 IMG_0125

 IMG_0143 IMG_0156 IMG_0167

IMG_0168 IMG_0170 IMG_0172


365 Days of Crocs | Adventure Sports | Travel|Wednesday, 05 August 2009 16:47:56 UTC|Comments [0]|    

 Sunday, 19 July 2009
Some Wellington Road Cycling Hill Climb Grades

Thoughts I’d start a post of some of the grades of the various hills (Road Cycling) around Wellington.

I’ve pulled these off various rides around the place. Have noted where some are averages. All data recorded on a Polar s625x


Hill Map Distance Height Grade
Makara Saddle. Karori Side.
Cnr Allington Road and Apex of Saddle
Average of 3
1.05km 87m 8.5%
Makara Saddle. Makara Side
Lamp-post in front of Church to Lamppost at top of Saddle
Average of 2
2.61km 186m 7.15%
Takarau Gorge Road Intersection to Top of J’ville
Intersection Makara Rd and Takarau Rd to top of Johnsonville on Cortina Road
11.07km 268m 2.2%
Aro Valley Up Raroa Road
From Traffic island at bottom of hill to top of hill on Raroa Road
1.96km 107m 5.7%
Adventure Sports | Gettin Fit|Sunday, 19 July 2009 08:46:29 UTC|Comments [1]|    

 Tuesday, 14 July 2009
Shipping a great 100% Silverlight Site for Microsoft

As a Microsoft Regional Director I’m often prepared to stick my head out and stir a bit of shit. One of the things I’ll often bleat about is the appearance of Flash on Microsoft properties. It therefore behooves me to put my money where my mouth is and deliver up great Silverlight sites ourselves.

In the past we’ve done some really cool ‘hardcore’ Silverlight projects that we’ve shown of at events like Mix. These include TextGlow and Buttercup. This time around we’ve delivered a Silverlight based site to help support the Technical Preview of Office 2010.

It’s 100% Silverlight and I’m not going to go into the technical details as a bunch of the team (linked below) will be doing that.

We kicked around the idea of using Silverlight 3.0 for this project- we knew the ship date and given that it was just three days before our go-live we decided that we’d err on the side of caution. This really comes down to the adoption of the plugin; Silverlight 2.0 has pretty good adoption, particularly among our target demographic but 3 days just isn’t long enough to get the number of plugin installs up to a decent level. At the end of the day whether your running with Flash or Silverlight you are making a trade-off between plugin availability and functionality even if just choosing between versions on the one platform.

We’re running Silverlight streaming. The video clips that are coming from the production company are have fantastic production values: certainly make me jealous. It would be a shame to stick them in a nasty grainy low bitrate codec but at the same time we’re catering to a global audience. Silverlight Steaming means that we can delivery a good experience for everyone around the world and then for those of us with great internet connections (thanks Telstra Clear cable!) we can deliver a full 720p HD stream in the same UI. We worked with iStreamPlanet who are providing the streaming services over the LimeLight CDN.

The main application is hosted in the Rackspace Texas data center. It just wasn’t practical to run this out of the Intergen Wellington data center in the short time frame we were working to. The backend platform is, unsurprisingly, Microsoft server products: Win2k8 and SQL2k8.

So there you have it. Money where my mouth is I think you’ll agree.

Links to posts from the team:
James Newton-King who built out the server side technology and headed up our release management blogs on more of the technical details:

Aaron Hall from our Dunedin Office jumped on the Tin Budgie and spent 2 weeks in Wellington working on the mobile version (visit it on your WinMo or iPhone device): with Microsoft 2010

Chris Klug who lead the Silverlight development side of things: Chris also has some tips we learnt along the way…. in fact make that Chris has crap load of great technical deep dive content that I emplore you to go and read so you can learn from our experience.

I’ll call out the rest of the team as they blog or tweet about this.

Intergen | Silverlight|Tuesday, 14 July 2009 08:37:45 UTC|Comments [0]|    

 Tuesday, 07 July 2009
Hill Repeats This Morning

So I got up early this morning, did some email and proposal writing and then got out for a good hard session of hill repeats.

I have the luxury of having the Makakara saddle just a few minutes ride up the road from my house.


I’ve typically done the shorter Karori side in the past. Today I did three laps up the Karori side and two up the Makara side.


It was dark so I couldn’t see when I had properly pressed my lap button so I have a few more laps that I probably needed. Stats look good though


The short laps got progressively slower: Sub 5 minutes is a good time for me at the moment and only the first was (4:57).
The long laps the 2nd was faster but both were still not super fast. 13:46 and 12:55

Average power for the final long lap was 360 Watts… So shouldn’t be too hard to knock that time down a chunk given I should be coming 400 watts for a CP10 effort.


Other interesting stats. The Karori side is steeper at 8.5% gradient to 7.2%. 86m on the Karori side, 186m on the Makara side.

Gettin Fit|Tuesday, 07 July 2009 22:57:05 UTC|Comments [0]|    

 Sunday, 05 July 2009
Back on the Bike: A filthy ride in WLG

So all was quiet for me with a big travel load the last couple of weeks. Spent an amazing week in Redmond last week and kinda wish I had my bike with me- Seattle in Summer is rather alluring to be honest!

Got out for a MTB ride with my brother today. Not far, but, we got a couple of hours in. We did a lower loop of Makara Peak then up to the top, down Zacs and Varleys and home along the road.


The Yellow Mojo got really filthy. You can at least still tell it’s yellow.

Adventure Sports | Gettin Fit|Sunday, 05 July 2009 07:35:26 UTC|Comments [0]|    

 Sunday, 21 June 2009
Sunday Morning Ride: Getting some kilometres into my legs (and backside)

So my goal this morning was to get some base kilometres in. I was originally hoping to do >100km but in the end my ride on Friday just took a bit too much out of me. It turned out being a slow and grinding 90km. I tried to mix things up by going a route I normally wouldn’t for parts of the ride.

Went from Karori out to Johnsonville via Makara. Then back past Karori, down throug Aro Valley and up and over past Happy Valley. Then around the bays once, over the hill from Mirimar to Worser Bay, back around past the airport and home via Oriental Parade.


The little spike out the side of the map in J’ville was me riding towards Churton Park and then seeing the weather. In the end the weather was fantastic- a touch windy around the South Coast but apart from that lovely.

Average power is understandably a chunk lower than Friday. Climbed 1130 meters which is a nice reflection of my efforts to include a few more hills today.


I listened to a bunch of interesting podcasts on the bike today.

  1. Neil deGrasse Tyson on Point of Inquiry talking about the Pluto Files. I listened to the Pluto Files audio book last month while on holiday so was interesting to hear this interview. Unsurprisingly (CFI is a secular lobby org) they got to talking about ‘teach the controversy’- the answer of course… there is no controversy. (Cool shirts here for all of you readers who think the earth is older than 10,000 years… and yes I do have readers who think it’s less than 10,000 years old.)
  2. Charles Platt talking about Working at Wal-Mart on Econtalk. I found this very interesting if maybe a little shallow. Platt worked at Wal-Mart for a week which I don’t think really qualifies him to reach some of the conclusions he did. Nevertheless a interesting interview particularly about the aggressive devolution of tactical decision making at Wal-Mart.
  3. Professor Doug Richards on TVO Big Ideas as part of their best lecturer series. Richards is a Bio-mechanist and was talking about stretching. An interesting topic given how much my legs were hurting at this point in time. F couple of interesting ideas I drew from this lecture.
    1. I think there are some great opportunities to build on the use of Elasticity when I talk about cloud computing to use other metaphors from materials science- viscosity, plasticity…. look out for an interesting blog post on this some time.
    2. It confirmed my feelings that whitewater kayakers (of which I am one) should be VERY careful when stretching their shoulders. I’m a big believer that shoulder stretching is actually qhite risky for paddlers as it means we end up with shoulder joints far more prone to dislocation.
  4. Austin Dacey on Point of Inquiry talking about the United Nations ‘Human Rights’ Council and the Religious Defamation resolution. As you’d expect, my position on this is that it’s a steaming pile of manure and I do also agree with Dacey that hate speech laws in general are free speech stifling bullshit. The answer is more speech not less speech. I’ve not listened to Point of inquiry for a while and it was good to get back to listening to some of these again.
  5. I finished with making a start on this weeks Economist which is my regular read. I got through the whole of the technology quarterly on my Friday ride.
Gettin Fit|Sunday, 21 June 2009 00:57:45 UTC|Comments [1]|    

 Thursday, 18 June 2009
Amazing Morning to Ride A Bike in Wellington

I got out for a totally fantastic ride this morning. Just went on my own but half way around realized I really should have got my %&^$%* together and called @RowanSimpson so sorry fella! Sunday maybe?

I went for what I felt was a fairly cruisy ride, but, unless my power meter is telling porkies it was actually a pretty decent ride. I’ll usually do about 280 Watts average for a 2.5hr (60-70km) ride but this morning average was 310 Watts. Hopefully this means that I’m improving both fitness and leg strength.


Was basically a flat ride. Came down from Karori, around the Mirimar peninsula to Happy Valley Road, turned around and came back again to the office. Out @ 0530hr in the office by 0800hr- marvellous!


Got a lovely photo coming back around the peninsula as the sun came up.

Track 013

Gettin Fit|Thursday, 18 June 2009 22:01:47 UTC|Comments [1]|    

Your Help Needed: Laptop Bags for Grant Braes Primary School in Dunedin

So a friend of mine is on the board of trustees of a school in Dunedin. They have just acquired 20 laptop computers. The first ever laptops at the school but they need bags for them.

I’ve hustled around the house and found a couple of Tech Ed bags (Tech Ed South Africa 2007 and Tech Ed New Zealand 2008).

I’m looking for others who are able to find an old bag they neither need nor want. If you can I’d love to be able to get it to Grant Braes primary school for you. I am flying down to Dunedin for work on Monday so anything that can get to Intergen in Wellington (Lvl 7, 126 Lambton Quay, Wellington)  tomorrow I can take down with me.

Rambles|Thursday, 18 June 2009 01:24:36 UTC|Comments [0]|