You never debug standing up

Submitted by Robert MacLean on Wed, 02/08/2012 - 09:28

humility_road_signBeing a professional developer means following standards, standards that are set by smart people (smarter than me at least) and when you start to break those standards will wrong. I know this! However this past Friday I broke many a rule and failed, because thought I knew better this one time. So this post is a retrospective of what went wrong, so that I never forget again.

The project is a fairly complex backend system for a special mobile device, and when I mean complex I mean in size and scope. We have VB.NET, C#, Java, JavaScript and a ton of inline SQL! The work itself is done by three different companies with three different agreements, policies and methodologies! That sounds like a recipe for disaster but it isn’t – we have exceeded every goal! That is until Friday.

On Friday we get told the customer is coming at 9am on Monday for a demo! We have 8 hours to get ready for it! The software is in a state between alpha and beta and we have known issues that need resolving by the demo. So we worked hard and make great headway until about 3pm. Then we hit an issue everyone in the room thought was on the mobile device. The first problem is the mobile dev company isn’t onsite today, so we are really guessing at the issue.

confidenceWe start experimenting at fixes, pushing 7 builds to QA in an hour (in reality we are lucky if get 5 build to QA in a day). At the same time we are adding bug fixes and tweaks for other items too! Then the answer comes in the mobile device developer – they breaking because their expectation of the spec is not the same as ours. More fixes and adjustments and then the server just stops.

At this point, I am looking at my watch, I have a two year old son sitting at school and it is almost time to pick him up. tick tock. Being a single parent means I MUST leave and soon. The mobile guys have gone offline completely. Another dev from the third company is needing to go and propose (she said yes Smile)! We are all rushing, skipping testing, skipping building locally before checkins… I even checked code in without comments! NOTHING, no matter what I try it keeps breaking, tick tock, same error every time, tick tock, I can’t find it, tick tock, the PM is looking worried and looking at me to solve it, tick tock. OUT OF TIME.

I apologise and leave, feeling crap. I failed. I let a client down.

Saturday, I sit down to dig into the code. Now without the time pressure, and I read the stack trace properly for the first time (stopped assuming what it was saying as I was when I was rushed) and quickly found the issue and resolved it. One code checkin (built first locally, with check in comment, and assigned to work items etc…) and it is working. The test client works too!

In retrospect what should I have done is simple: We knew there is a demo, it was late notice but we had chance to choose what to show to the customer. We should’ve set a cut off time after lunch for fixes and changes and then just not included broken things in the demo. Rather have taken that after lunch time and made sure the demo showed 80% and that 80% worked 100% than rush to get 100% to show and in the end break it all.

I should’ve also stepped back earlier and done something else for a second – get coffee or something. Just to clear my mind and calm myself. Stepping back always helps, just think of how many times you ask someone for help and in explaining it you solve it yourself.

Finally skipping the standards that make us professional leads to disaster and I should’ve made sure the following standards were kept!

  • make sure it builds locally before checkin
  • check in comments
  • assign each checkin to a work item
  • test locally before checkin
  • If we have a deadline, then we get everyone in the room to make it happen. We win and lose as a team.
  • The more detailed the spec is, the better for everyone.
  • Do one thing per checkin (keep those checkins small and focused)

Monday has come and gone, the customer loves it and the demo was great. We succeeded. It required sacrifice from the team of some of their weekend, a sacrifice that if we have acted more professionally and clear headed could’ve been avoided. This doesn’t happen often to me, as I am often surrounded by professionals and when one of us loses it the rest helps push that one back into place, so this post really is a reminder why we do that for each other and what others can learn.

Management is doing things right; leadership is doing the right things – Peter Drucker

MVP for a third time :)

Submitted by Robert MacLean on Tue, 01/03/2012 - 09:30


364 days ago & 829 days ago, I blogged about being awarded a MVP from Microsoft and I am proud to announce that I have been awarded a MVP for a THIRD time!

Thank you to all that were part of making this happen, I am very honoured by all of you.

What is an MVP? In short it is a thank you for helping Microsoft communities. The long version can be found here.

Do you work for Microsoft?

Submitted by Robert MacLean on Thu, 09/08/2011 - 10:34

I was communicating over email with recently and they assumed that I worked for or at Microsoft, when questioned why they think that (this wasn’t a technical email or any other factors) they pointed out my email signature which has (highlighted in image) that I am a Microsoft MVP and a Microsoft Ranger.


If you aren’t in the Microsoft ecosystem I can see how you may assume that means I am an employee. So let’s clear this up:

I AM NOT A MICROSOFT EMPLOYEE. What I say cannot and should not be assumed to be related, endorsed or sanctioned by Microsoft.

So what are those two things in my email signature?

  • Microsoft MVP: This is an award from Microsoft for service to the community. You can read more about it here.
  • Microsoft Ranger: This is a team of Microsoft staff and external people that work together to produce content and tools to help people. I have worked with Microsoft and even at their offices, but not as an employee. You can read more about the Rangers here.


Kicker - My first WP7 app

Submitted by Robert MacLean on Thu, 08/11/2011 - 10:59
Update: This application has been retired - it was my first game (ever) and my first WP7 app and so it was for my son and for my own learning and experimentation. My son has moved on to Angry Birds, I have more impressive apps and as a game, well it wasn't going anywhere. With all that I have retired it away.


Kicker, is my first WP7 application and is a simple time waster. I don’t want to use the term game, because there is no challenges. Touch the screen and unless you are unlucky, you score a goal.

This was written mainly for my young son, who had a game like this on my old Nokia 5800 and he loved it so really just porting it across.

You can get it online RIGHT NOW!!


Social everywhere doesn't work

Submitted by Robert MacLean on Thu, 04/07/2011 - 16:50




Not being on a social network is like having a company which doesn’t appear in your favourite search engine - it is just a requirement of being online in our era and for a long time I have tried to get to the utopian world of an integrated social experience where everyone was everywhere and my updates, posts, pictures etc… trickled across all social networks, so no matter what you did you could hear what I had to say or was doing etc…

This was a stupid idea and I thought I would share my learning’s about that process.

Problem 1 – He with the most friends wins

With Facebook I feel into the trap of accepting every friend request, loading my address book into it and basically any other “tricks” I could to increase my friend count. This meant that logging on to Facebook was a stream of conscience from people I really didn’t care about and so overtime I moved away from Facebook as the value I took out of it was low.

The solution to this was to create a set of guides for people to be my friends on Facebook. I am not going to cover all of them, I’ll just focus on two of them but I had about 5 or 6 which I use to decide who to keep or accept requests from:

  1. Time span rule – if I have seen you or had more than a Christmas email for 5 years or more, you are out.
  2. Override – I can keep anyone for any reason breaking any other rule Winking smile 

Using my rule set I trimmed from over 300 friends to less than 90 and Facebook is now a daily visit site because I do care about the thoughts of those 90 people.

Summary: Be very selective of who you follow on your social networks.

Problem 2 – The right tool for the the right job

110772_strip_sundayOne of the problems with Facebook friends, is that many of the those people were “frendors” or people who I just saw in the passages at work. Facebook isn’t meant for great communication around work however there is better choices for them:

  • LinkedIn – This is great for business partners, frendors, business contacts and key direct co-workers. This ensures that the value of the conversation is higher because it is more business focused and people do care deeply about their careers on there.
  • Yammer – This is for people I work with, regardless of anything else. This is also great because it is a walled garden so we can have those private conversations that are company/team specific.
  • Twitter – We met at an event, you want to hear from me or want me to hear from you but we don’t care about much else Twitter makes a great place to put people while I evaluate their value and should I try and add them to other networks. Many people start off here and move to the others.

Sure there are a few people who are on more than one network, but those are exceptions to the rule. Most people end up in one place.

Summary: Facebook for friends & family, LinkedIn for your professional career, Yammer for co-workers & Twitter for all else.

Problem 3 – Auto post is not your friend

I personally spend more time in Twitter than any other network, and I eventually had it setup that every tweet went to Facebook & LinkedIn too. The problem is Twitter is really unfiltered and I do post a lot of jokes or half baked ideas which detract from my professional value on LinkedIn or are so technical that my friends & family on Facebook scratched their heads with confusion.

Thankfully this can be fixed: Don’t auto post. LinkedIn supports this with a setting you must enable, Yammer does this by default and for Facebook don’t use the standard Twitter app rather use the Selective Tweets app. All these require you tag a tweet with a special tag, for it to auto post, i.e. Facebook it is #fb, Yammer is #yam & LinkedIn is #li

So if I post something on Twitter and want it on Yammer & LinkedIn I append the tags and it is on all three networks but not on Facebook!

Summary: Post selectively to the right social networks.

Introducing BBD

Submitted by Robert MacLean on Wed, 04/06/2011 - 12:20

BDDAny day I open my email and see an email from Peter Searle (the BIG boss at BBD, where I work) in there, I wonder if a trip to HR is in my near future Winking smile, today though is something far more awesome and rather that tell you myself I thought I would share Peter’s words because it is just fantastic:

More than 25 years ago Barone, Budge and Dominick, also known as BB&D, was begun by a group of people dedicated to delivering software solutions to clients. Initially, the work was done in an attic, and those people were Sandra Barone, Tom Budge and Ralf Dominick. 

The current corporate identity was created in the eighties with the founding of the company.

BB&D now employs more than 400 software professionals. We are South Africa’s largest independent custom software development company, and we serve customers in both South Africa and internationally.

In moving forward, we will never forget where we’ve come from. On the contrary, we will even further imprint the attitudes and values that have made BB&D what it is today.

We are taking the core values, achievements and expectations that have become so entrenched into the company’s make-up and are transitioning them into a fresh new identity that resonates with the next generation of the new BBD.

We are now BBD. And our brand line is – combined intelligence.

BBD work together with our clients, sharing knowledge and ensuring we can deliver solutions that improve their business.  This meeting of minds, connecting and building on each other’s brilliance enables us to design solutions for them that mark the way forward.

In essence, we are more than the simple sum of our parts. Our combined intelligence is the greater whole.

Very proud to be a BBDer Smile

[MVP Summit 2011] - On learning

Submitted by Robert MacLean on Mon, 03/07/2011 - 17:51

MVP Summit is over for 2011 for me, in less than a few hours I board a plane and start the ~23 hour trip home. This was an awesome trip filled with learning both about Microsoft but also personally and the experiences had here rate among some of the best in my life:

  • Being able to attend a special dinner with various Microsoft technical fellows and vice presidents was amazing. My hero, Anders Hejlsberg was there and so were many other geek rock stars (Hanselman, The Gu and so on). What inspired me is the humility they all have. The whole dinner was amazing.
  • Shooting real guns for the first time was ridiculously fun and I thank Martin, Mike & Chris for offering me that unique experience.
  • Then heading to the snow (the real stuff this time, not the ice version Canada gave me) and snow boarding. I even threw snow balls!
  • In South Africa we drink a piss we call beer and don’t think much about it – but here in America they do care. They have hundreds of micro breweries and so many technical terms for the beer. It is just staggering! It is also a lot of fun to go and sit in a brewery and drink the freshest of the fresh beer Smile
  • Then the Museum of Flight was just geek paradise for someone like me who loves the idea of flying (I do not think of 23 hours in economy class as flying) and space. Even the 4d simulator where you can go inverted and upside down was awesome. I even found time to be President of America for a few seconds.
  • But most amazing was the new friends I made and the old friends I met up with. It was just awesome in every aspect, but especial mention must go to Rudi Grobler, who left SA with me, shared rooms, and did all the awesome things above (except the special dinner, next year he will be there) and Rein Hillman who put me & Rudi up at his house, opened his family and shuttled us ALL round Seattle.

Oh, and if you wanted to know how many Dr Pepper I consumed – 17, excluding how many I can get on the planes Winking smile

[MVP Summit 2011] - It's cold

Submitted by Robert MacLean on Mon, 02/28/2011 - 08:09

What I learnt at MVP Summit today?


It’s COLD, really, really cold. It’s raining and windy, which makes it colder.

This explains a lot about Microsoft & Seattle:

  • Lot’s of micro breweries – cause beer helps with the cold
  • Lot’s of coding – cause it’s too cold to go outside
  • Lot’s of awesome friends – cause nothing rocks like chatting to a friend at a fire in Starbucks

[MVP Summit 2011] - Touring with the local

Submitted by Robert MacLean on Sun, 02/27/2011 - 09:29

Day 2 of Summit has been a blast as Rudi Grobler (friend of The show) and I, spent the day seeing a different side of Seattle and surrounding as we were shepherded about by Rein Hillman, a local to these parts. Having a local with a car makes a huge difference – you eat and see things that no tour guide will ever tell you. Like:

  • The best Tereyaki: Yummy Tereyaki
  • The biggest geek shop: Fry’s
  • Some awesome board game shop
  • A few of the local bars – most were closed though, so no planning on our side.

All in all, a lot of fun and food Smile 

In the evening we headed down to Kent and the ShoWare Center to watch ICE HOCKEY! Which is an insane sport where I do not understand a thing that happened except goals – rest was just too fast and complex for my brain. I wish I had half the skills and reflexes those guys have.


Time to hit the pillow, tomorrow is all starts and I need my energy!

Enabling Flip 3d with Logitech Performance MX Mouse

Submitted by Robert MacLean on Mon, 01/24/2011 - 09:31


I purchased a Logitech Performance MX Mouse (to replace my other Logitech V450 mouse) which has a number of fantastic features:

  • Darkfield optical sensor which works on everything, including glass
  • The awesome and tiny wireless pickup that can remain plugged in all the time.
  • Ability to charge off of USB and still work! 
  • 7 Buttons

imageOne of those 7 buttons defaults to a feature called Application Switcher. For Mac users this is exactly like Expose and for Windows users it is like a full screen task switcher. 

In fact on Mac runs Expose but on Windows this is a custom application and really doesn’t have the feel or the polish that the Flip 3d (the Windows+Tab thing) which ships with Windows Vista and Windows 7.


imageSo how do you change this? There is many posts about using macro’s, assigning specific applications or even hacked drivers but from my own experience this is no longer needed and it appears most people do not know about it because it is so well hidden.


The first step is to download the latest version of SetPoint, the mouse software, from Logitech which at time of writing is 6.2. However the mouse actually ships with 4.7, a version over 3 years old! This is really odd since the mouse was only launched less than 1 year ago!


imageOnce upgrade go to the Button Settings section, select the button and set the task to Other this will bring up a dialog with a massive drop down full of options. If you look in here for Flip 3d or maybe some alternative on application switcher you will not find it. However there is an option called Document Flip, which you guessed correctly is Flip 3d.

Set your mouse to this and viola!