DK source code link

Curt Vendel (who’s been groveling through a bunch of old Atari backup tapes for a number of years) has found and posted the source code to the Atari 800 version of Donkey Kong.

Here’s a pointer to the forum thread: link

Update: Mirrored here.

Certainly brings back memories.  There’s less code than I remember, and some bits of it are really a mess, but it’s fun to see this again.  I should add that you’ll just see a bunch of assembly code, with not a whole lot of insight into how the game was actually developed (when I finally got to see the source for Quake, I remember feeling somewhat disappointed — “That’s it?  My God, that’s a stupid hack.”  If you take the trouble to look, I’d not expect revelation, just a bunch of code written by a young guy in a hurry).

Before Source Control

Your job: Merge the sea of undifferentiated objects that Joe’s been working on for a week into the sea of undifferentiated objects that you’ve been working on for a week.  Repeat until you unbreak the build or run out of hair.  We join our developers three hours into their weekly merge:

“Let’s see.  Update object #102332 with method Foo.  That’s object #6878845 in my system.”

“Check.”

“Update prototype #659485 by deleting Bar.  Looks like it’s #4995934 over here.”

“Check.”

“Nothing syncs up in this next one.  Call it.”

“Heads.”

“You win.”

“Now, #95422 is, is … um….”

“Buggered?”

“I think we should sell the wives and kids, buy a pick-up truck and a dawg, and move to West Virginia where moonshining and shootin’ at revenooers are a way of life.”

“Uh . . . sounds good to me.  When do we leave?”

—-

From time to time, I have to reflect on how spoiled I have become in this day of pretty easy to use source control systems (e.g., Perforce) and rediculously easy to use source control systems (e.g., git).  The bad old days of SourceSafe and CVS-to-a-remote-place-in-Texas and a virtual chicken (don’t ask) are over.  Tools like Araxis Merge [<-- free plug] are worth their weight in gold. What did you do, before source control?  I don't know how I survived before good repositories and diffing programs. What was the worst system you used?  [Me: hands-down, it was a miserable spawn of Satan called Continuus, now called something else, and best left further unremembered.  $Mike might differ with me, but even CVS would have been better.]

O Limp Icks

I swear to God, if I see another story on NBC about “How I made it to the Olympics despite (a) my crippling neural disease, (b) stifling poverty and a crippling neural disease, (c) my whole poverty-stricken neighborhood and my entire family and street beset with assorted crippling neural diseases, or (d) that my parents were NBC reporters and totally lacking in functional neurons” I’m going to write to the Olympic Committee and suggest that we hold a Zombie Olympics, or maybe one with just reporters hanging out and trading notes on neural diseases they’ve overcome.

I can just see that:

“Bob, here comes Kathy Gizzard around the last turn in the Women’s  300 meter grovel.  And she is, she is –”

“Yes! She’s overcoming adversity!”

“And poverty, Bob, don’t forget poverty.”

“With her rare neural disease in fine form, too.  She’s nearly there . . . YES! A new world’s record for abjectly miserable sports coverage.”

Deja etc. vu

Scrum is supposed to be about getting repeatability.  The thing is, you don’t get repeatability until you’ve actually repeated something.

N == 0    Not repetition
N == 1    Not repetition
N == 2    Not so fast: you haven’t finished two.
N == 3    You’re just cocky now.
N == 4    You’re still trying to invent new, snazzy stuff.  Stop that.
N == 5    When will the nightmare end?  (Getting there…)
N == 6    Are you as sick of these as I am?

That’s the idea.  You’ve got repetition now, have fun with that.

Less talk, more code please

More stuff that pops into my head during triage meetings.

—-

Oh, thars –

Data-driven, Top-Down, Structured, Procedural and Agile
Incremental, Bottom-up and Spiral (though it’s fragile)
Rational will suck you in and bleed you with a smile
TDD will get you there, though it will take a while

CMM will curl your spine and make you want to die
Pre-factoring and Waterfall will hang you out to dry
Patterns lead you down the path then rape you in the shrubs
Simple hacking ‘ud be great, except for all the bugs

Experience has shown you find success in just one way:
Implement it six times; throw five of them away…

—-

I’ll scan in some of the cartoons I draw.  Maybe…

more instant wisdom

The delete key is your friend. The less code you have, the less code you have understand, the faster the remaining code runs, and your builds will be done sooner. Omit needless junk, aggressively get rid of crap you don’t need, trash that “someday maybe this will be useful” stuff.

The probability of a disk failure is directly proportional to the amount of code that you have checked out but not committed. (I really like source code control systems that make branches and undo operations natural and cheap).

There is a special place in Hell reserved for engineers whose code works the first time.

Effective code review practice #1: “Of course we think that #define is clever.” [Sound of shotgun racking a fresh round, and a dog whines in anticipation]. “We’ll give you five minutes of keyboard time to clean it up to our satisfaction, or a fifty yard head start, your choice.”

When the clueless HR type on the other end of the phone (who is doing screenings) asks if you know “Object-oriented, real-time programming,” just say “Yes.” Don’t try to explain. They think they are asking you if you know how to do “Garbledly shuggoth rumplestiltskin-sh’bop,” and explaining that shuggothery and sh’bop are really aspects of the same narkle-qwerty-doo-wah-wah is just going to make them think you don’t know what you’re talking about. I’m just sayin’.