Friday, September 29, 2006


Is teaching kids, developers and dogs the same thing?

After a loooong pause this summer due to work I started taking lessons with Sydney again. What I really appreciate about the training is that the instructor does not train Sydney, but me. The instructor never gives a command to Sydney. All commands, and the way Sydney behaves, are explained to me and I do my best to teach Sydney. Instead of coming back with a programmed robot I get trained to understand what Sydney wants, needs and why he behaves the way he does.

I try to take a similar approach with the developers I work with but it is not simple; it is a lot faster to just fix the problem than take the time to explain and teach the developer what is wrong and then guide the developer to fix the problem. I failed at it yesterday evening when I fixed a problem in two minutes in front of the developer instead of couching the developer to fix it. I blame it on the late hour but I shouldn't have as I know better. I really do believe that MS Dos device driver project. Even worse; I fixed the problem with someone else present. A big no-no as it may make the person look "bad" in front of others and reduce self esteem. Sorry...

Back to the training with Sydney; I was a bit disappointed this summer as Sydney was great at home but was difficult to control in a parks with many dogs. The instructor explained the reason earlier this week; staying at home with no dogs around is very different from having another dog around, which is very different from having a female dog around which is completely different from having 10 dogs running around in a park. The only way is to take small steps at a time; don't expect miracles but encourage good behavior and ignore wrong behavior when possible.

(BTW: all the “lessons“ applies to raising kids; just replace "developer" or “Sydney“ with "kid" above…)

Thursday, September 28, 2006


Visual Lego & Microsoft Robotics Studio September CTP

I have been too busy lately to play as much with my Lego Mindstorms NXT as I had hoped. I constructed the TriBot and got it to do the basic tricks; wait for the ball to be dropped, drive forward, pick it up, turn around an drive back until it crossed the line etc. But the Lego NXT kit has a lot more to offer and the latest September CTP of Microsoft Robotics Studio shows some of the things you can do with it and other robot kits. The "Tutorial for Using MSN Live Messenger to Control a Robot" looks particularly neat:

You can download the September CTP here.

Visual Lego, on the other hand, takes a different approach. Instead of providing a "virtualization layer" for a lot of different bot hardware it is targeted squarely at the LegoNXT. It keeps the API as well as the operations a lot simpler. No need to run a .NET "host" program on the Lego brick, just turn on the NXT and run.


Thursday, September 21, 2006


Windows 95 Hero


I spend most of my time working at the site of clients so I am almost never in the office. Yesterday I was in the office for an internal project and I found the "Hero Award" and some other items from last millennium when I worked for Microsoft;

(Signed by David Cole and Brad Silverberg)

You can say what you want about Windows 95, but I have really fond memories of my time in Microsoft. I worked my ass off the last few months before shipping Windows 95 but I learned a lot and met a lot of wonderful, and interesting, people.

Tuesday, September 19, 2006


All good programmers are lazy

It is official, all good programmers are lazy

Lazy, because only lazy programmers will want to write the kind of tools that might replace them in the end. Lazy, because only a lazy programmer will avoid writing monotonous, repetitive code - thus avoiding redundancy, the enemy of software maintenance and flexible refactoring. Mostly, the tools and processes that come out of this endeavor fired by laziness will speed up the production.

The article goes on to claim that all good programmers must be stupid:

Why? Because if he's smart, and he knows he is smart, he will:
a) stop learning
b) stop being critical towards his own work
But there's a more crucial point why a good programmer must be dumb. That's because for him to find the best solutions to problems, he must keep a fresh mindset and manage to think out of the box (or rather, know its actual shape). In a way, this leads to the mindset of a child; incredibly creative because he never heard "no" for an answer.

I could not agree more. I have learned two very important lessons in life (both from my mother):

  1. Nothing is impossible.

  2. You can if you want

They both amount to the same thing; you can accomplish some incredible things if you put your mind to it (it has also made both of us incredibly stubborn but that is another story :-)

The article goes on to discuss another very important aspect of being a great programmer; troubleshooting

I know from my work that a good programmer, ..., will adopt this mindset of being dumb; he will start asking the most simple, child-like questions. Because he doesn't accept the parameters suggested to him that someone thinks make up the problem.

KISS people as Occam's razor strikes again. I only copied and commented on what I think are the key points in the article. Read it and let me know what you think.

Friday, September 15, 2006


The Borland Turbo products are back

The Borland Turbo products are back, but with a twist; this time they are free. I used the Turbo products a lot for my first consulting jobs and when I studied. They were far superior to anything else on the market. But then I hit a nasty bug in the Turbo C++ compiler (wrong offset in a class v-table) and I had to "port" everything to Microsoft C++ 6.0. The Microsoft compiler was a lot slower and used an old & ugly DOS user interface but at least generated the correct code.

I have never tried Borland Delphi but I will give it a try now. Many developers claim it's the best thing there is for developing Win32 apps and I am curious to see how much it has evolved from Turbo Pascal 4.2. Talk about memories; I thought myself programming from the Turbo Pascal help files and examples. Try that with .NET and MSDN!

The Borland Turbo Explorer products are pretty much like the Microsoft Visual Studio Express products but with a more severe limitation; you can only install one Turbo Explorer product per machine. You can download the Turbo products on the Borland site.

Thanks for the tip Valerio!