Wednesday, September 12, 2012

Its is buggy world

I would normally not want to talk about bugs, because they are a fact of life, but today two bug related issues happened. The first one was spending 30m with a developer who was stuck with bug. He had previously been asked to validate a series of assumptions, he had only partially done that, and it looked like we were making only little progress until in a post meeting cafeteria moment he mentioned that he was using yet another feature of an API, something that had never been mentioned before. That was the aha moment, and hopefully fix the bug.

The second bug was in code that yet again I was refactoing. You might remember I have a coroutine like functionality my F# super monad. I had taken that feature out to extend the monad and when I put it back in, one function failed to compile. As this is my typical late evening programming, I was watching TV, web surfing, and watching skateboarding on youtube. And suddenly what had been a routine exercise of coding became a pain and I ended up going to bed at midnight with an unhappy feeling. I'll admit I wondered if I was getting too old for this, no being able to do it! (i.e. programming).

So I started my day ready for action; I have three programming slots in one day: going to work, coming back and late evening. I missed the first slot: I missed my bus and was offered a drive. So it was only this early evening on the way home that I managed to get my laptop out and proceeded to carefully analyse what was happening. Like with all bugs this one was behaving illogically. But then I noted something even more strange: the compiler error was "talking to me"; It was giving the types "human names" even though I had no type anotations (see a previous post on why I try not to explicity declare signatures).  Was this a compiler bug? Sure enough, the function just above my problem had some old type anotations, so I reversed the order of declations and the bug was gone.

All this to say that when you are debugging you really need to apply a very rigid enumerative logic approach, and that yes, compiler bugs still happen, and that finally I am not getting too old for this type of fun.

No comments: