It's hard to imagine now, but in the early days of Microsoft, Bill Gates was an actual programmer. One bit of hard evidence is the BASIC program DONKEY.BAS included with original IBM PCs running IBM DOS 1.10. The history of this weird little program is covered in a 2001 TechEd keynote by Gates himself:
I remember being absolutely wow’d by Gorillas.bas back in the day. As I learned/toyed with QBASIC (heh) it was a great deal of fun to slowly modify the game so that you could throw super destructive bananas, (by arcing your banana through a ‘power ring’ in the sky) and all sort of other ridiculous things.
In hindsight, that was probably my first game-mod…
Bill Gates WAS an actual programmer. He was also pretty good. Check the website link for details. According to at least one book, he also used to come to DEC (if memory serves) to help fix bugs in their OS.
DONKEY.BAS is actually a great illustration of the early philosophy of MS/PC vs. the Mac philosophy (which has endured to this day, unlike the MS/PC philosophy): The PC and BASIC are for churning out crappy hacks at 4AM that get something simple done acceptably well, not spending days/weeks/months wandering through the Mac toolkit documentation, compiling Pascal, tring to figure the frameworks out, creating icons and graphics, and trying to make some really elegant program.
Compare that idea to Donkey.net to see how much the programming philosophy of MS has changed:
Donkey .NET is a three-dimensional driving simulator game that demonstrates the new features available to Microsoft Visual Basic developers. Written in Visual Basic .NET RTM, this sample uses XML Web services, multithreading, structured exception handling, shaped Windows Forms, and custom-drawn controls. The sample includes the setups for both the game application and an optional XML Web service used with the game. The setups will also install the source code.
jeebus. I know it’s supposed to basically be a parody, but that means that there’s somtehing there to parody!
Gates, Allen and Davidoff threw every trick at the book to squeeze the interpreter into 4 kilobytes. They succeeded and left some headroom for the programs themselves - without which it would have been pretty useless, of course.
So you’re saying Mac creators are as big of douchebags as Mac users?
Well the possibilities for people to be douchebags are endless. But what I’m saying is if someone who’s a fan of classical music tells you that a cello player isn’t very good. You say, “sure, what ever”. If Yo Yo Ma tells you that a cello player isn’t very good, you take it more seriously.
What are we going to put in the road.
How about a dog.
Okay… Let me try something…
Wow. That’s a terrible looking dog.
Well… We don’t have a whole lot of artistic talent or tools hanging around. We’re working with blocks on a screen here.
It does kind of look like a donkey…
… and donkey.bas was formed.
If the spec says dog and you code a donkey… change the spec to say donkey. =)
While people opinions about MS Bill may vary, Bill wrote a basic interpretor for the ALTAIR and to write it, he had to write an emulator of the ALTAIR. I don’t know about you, but writing interpretors and emulators on mid-1970’s machines counts as rocket science in my book. The annotated disassembly of it can still be found on the web.
Interesting, around 1980 I was in 8th grade and we were playing with Commodore PET 2001’s (16K memory and a tape drive for storage) and making games that reminded me of Donkey. A particular one I recall was a skier (A capital W with double quotes beneath for skies) going downhill trying to avoid trees and rocks. We used the natural screen scrolling to make it look like he was going downhill, and ‘peek’ and ‘poke’ commands to place him on the screen and to do collision detection. Maybe it was much simpler, but certainly not very complicated.
It seemed to have better game play that Donkey from what I can tell.