Heh. Funny story - I was once asked to clone the Foxtel STB in Australia for a competitor - they wanted to be able to take the box along to a demo at Foxtel, plug it in, and show the same interface as the real Foxtel STB, but better. So, taking the company's in-house middleware, and a UI framework that I had recently written, I went about cloning the Foxtel box, screen by screen, keypress by keypress.<p>This was in the 90s, and STB interfaces were in their infancy - there were no animations, or alpha blending, or huge databases of films, including images of jackets etc - it was mostly just text and some simple vector graphics. All of which made my life as a programmer much easier, thankfully, because I only had about a week to get the thing done.<p>The funny part of the story comes in when I discovered that the software was just full of bugs. I would press a button on the remote control on a certain screen and the STB would reboot. This proved to be a bit of a problem for me, because I had to try and figure out what we were actually supposed to do, but as I wasn't allowed to disassemble the actual Foxtel code and see what it was trying to do, I was quite perplexed.<p>3 days into the week my boss was starting to get edgy - I had all of the most common screens up and running, but he could see that I had logged a whole bunch of bugs into the bug tracker, and I apparently wasn't making much progress in getting them fixed. So he came by my desk to see what was going on. I explained to him that the bugs existed in the original STB that I was copying, and the best replacement functionalities that I could come up with led to quite a bit of complexity in the code base. My boss looked at me quizzically, and then just shrugged his shoulders "Just dereference a NULL-pointer!".<p>Oh. Right. We never did get a contract from Foxtel, but I gave one of the cloned STBs to a neighbour to test in real-life conditions. I couldn't pry it out of his hands afterwards though - he thought it was so much better than the original product, dereference NULL pointers and all...