I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

August 22, 2007

Programming Games, Analyzing Games

For many programmers, our introduction to programming was our dad forcing us to write our own games. Instead of the shiny new Atari 2600 game console I wanted, I got a Texas Instruments TI-99/4a computer instead. That's not exactly what I had in mind at the time, of course, but that fateful decision launched a career that spans thirty years.

Evidently, I'm not alone. Mike Lee had a similar experience:

I was born in 1976, the same year as Apple, so my dad was just the right age to get into the early results of the home-brew movement. One of my few memories of early childhood is of him coming home with a Sinclair 2000 and a book of games. He sat there for hours typing in the code for Space Invaders, and we played it maybe 30 minutes before turning the machine off and undoing all his work.

As did Shawn Oster:

I've been developing software for 25 years, since I was 8, starting with a book called "Your First BASIC Program" that my dad bought me because we had a PC while all my friends were playing StarBlazers on their Apple IIs. He said if I wanted to play games then I could write one myself. At the time I was a bit disappointed (OK, crushed) but now... well, Dad, thank you.

That's why it's so fascinating to retrace the earliest computer games. The personal computer industry grew up with us. We learned how to program by typing in those simple games from magazines and books. Look closely, and you'll find that those old game programs are the primitive origins of most programmers, the reptile brain stem we all collectively carry around in our heads.

Even a humble, simple little pack-in game like Minesweeper has deep roots going back to the days of punch cards:

Minesweeper has its origins in the earliest mainframe games of the '60s and '70s. Wikipedia cites the earliest ancestor of Minesweeper as David Ahl's Cube. But although Cube features "landmines," it's hard to consider this a predecessor of Minesweeper. In Cube, the mines are placed randomly and the only way to discover where they ends the game. You walk over a landmine and you die; you can't avoid the landmines or know where they are before you take a chance.

minesweeper closeup

However, there are a number of very early "hide and seek" games about locating hidden spots on a grid. For example, in Bob Albrecht's Hurkle, you have to find a creature hiding on a ten-by-ten grid. After each guess, you're told in what general direction the Hurkle lies. Dana Noftle's Depth Charge is the same, but in three dimensions. Bud Valenti's Mugwump has multiple hidden targets, and after each guess, you get the approximate distance to each of them. Unlike Cube, these games match the general pattern of Minesweeper more closely: make a random guess to start, then start using the information provided by that first guess to uncover the hidden items. Of course, unlike Minesweeper (or Cube), the was no danger of "explosion," the only constraint was finding the secret locations in a limited number of guesses.

The closest ancestor to Minesweeper is probably Gregory Yob's Hunt the Wumpus.

wumpus game printout, with hand-drawn maze

Although it used an unorthodox grid (the original game used the vertices of a dodecahedron, and a later version used Mbius strips and other unlikely patterns), the Wumpus evolved from its predecessors in many other ways.

I was intrigued by the newfound connection between Minesweeper and Hunt the Wumpus, since the Wumpus is my power animal.

Most of the early games weren't even that much fun. Analyzing the game's program was almost as enjoyable as playing it; the very act of typing it in and understanding the program was "game" enough for many of us. But some of these early games evolved and survived until today, as Minesweeper did-- and it has become so ingrained into the public consciousness that it's now the subject of hilarious parody videos. Despite Minesweeper's simplicity (and popularity), it is also a surprisingly deep game of logic, as documented in the Wikipedia entry:

Minesweeper is still popular with programmers today; Automine, for example, is a Java program that automatically plays Minesweeper by reading the screen and manipulating the mouse.

The Minesweeper article is a part of the amazing Beyond Tetris series on GameSetWatch, in which many classic puzzle games are examined from the vantage point of a game designer and game programmer. I recommend it highly. Fair warning, though: don't click through unless you have plenty of time on your hands. For a programmer, analyzing games is almost as fun as playing them.

Posted by Jeff Atwood    View blog reactions
« URL Shortening: Hashes In Practice
Widescreen and FOV »
Comments

I remember getting an old Tandy TRS-80 computer with a huge 2KB of ram and poke-ing a whole bunch of assembler into it until I could control a dot on the screen with the keys. I then created a series of random dots that fell from the top of the screen. You had move your dot to avoid being hit by the rain. It was lame. No one wanted to play it. But I was proud of it. Even though it was done in assembler, it felt that I was talking the language of the gods. When I sit back and compare that with what I develop with today my eyes really open up. Complain when we might I have to admit that we've come a long way. The abilities that have been opened up to us are beyond anything magical. I wonder what will happen in the next few decades.

Andrew on August 23, 2007 5:06 PM

I started programming at university. I wrote a multiplayer text game while their. My parents were ignorant of anything computer related.

M on August 23, 2007 6:30 PM

I remember typing in programs for the Commodore 64 from Compute! and Compute's Gazette. Many were just machine language print-outs without any code to learn from. Looking back I can't believe I had the patience to type all that code in just to play some little game. I guess I'm spoiled by the internet but back then it was all sneakernet.

Chris O. on August 23, 2007 6:38 PM

Ah, the good ol' TI-99 hand-me-down. <sheds tear>

Anyone else feeling old? lol Good times.

I wonder if interviewers will start asking potential hires to write a simple game in order to test them.

Luis on August 23, 2007 7:07 PM

I always get a kick at the advice my folks gave me "Son, stop wasting time with that computer nonsense, that will never put food on the table". 20 years on, and I make computer games for a living and earn more than both of them combined, and they work exceptionally hard for a living.

smallstepforman on August 23, 2007 8:00 PM

*Grin* what's in Mike Lee's quote is exactly how I got into programming. ZX Spectrum was my first computer. I was monopolizing the TV for hours while my siblings and cousins complained that they could not watch TV due to my hobby.

Jimmy Chandra on August 23, 2007 8:03 PM

In 1971 in high school, I wrote a Star Trek game in APL...universe was a 20x20 matrix as I recall...Enterprise was represented by "E" and Klingons by "K". Players could fire phasers or photon torpoedoes and ships would move while shooting...meaning the computer would move the ship while you were planning your shot so you had to guess where the ship would show up for next shot and at a random interval, the Klingon ship would "cloak"...while cloaked it couldn't shoot.

Best part of the game, it was done on a printer...loved the anticipation of standing over the dot matrix printer waiting for the results of the last engagement to print out...line by line...great fun in my HS computer class!

GoDaddy on August 23, 2007 10:01 PM

Wau! How cool that so many guys grew up the same way and ended up doing what they love today.
I still remember my father’s zx spectrum 48k+ with zx microdrive. (http://en.wikipedia.org/wiki/ZX_Spectrum).
I think it was very similar to how other fathers fixed cars with their son or went to soccer matches together.
Me and my father fixed computers or talked about software. So maybe we diden’t know what to talk about, we could always talk about computer related stuff.
I did a lot of programming with help of magazines etc. and ended up doing a little platform game on my own.

Seems so very different how the young boys and girls learn programming today.

Peter Palludan on August 23, 2007 10:17 PM

I miss "Reversi"...

Steve on August 23, 2007 10:43 PM

I too grew up in this era, my first 'pc' was a Amstrad 6128, which I used to type over programs in magazines ... very neat. I always ended up trying to improve the game, and adding new features (or cheats ^_^ ). I have been a software developer for over 10 years now, so it must have done be some good.

Jef thanks for this post, I love it ...

Ray

Raymond on August 23, 2007 10:50 PM

I would love if the Neverwinter Nights (v1) toolset from around 2001 became available for free.

The graphics would need updating, but that was hands down the best platform I've ever had for storytelling and hobby game development.

My nick use to be OldManWhistler in the NWN modding community.

engtech @ IDT on August 23, 2007 11:04 PM

Ah, the memories...

1984 or so, and I was 11yo. C64, started to learn basic and realized it was way too "slow" for things I wanted to do. Then I found out about 6502/6510 assembly language, and ofcoz I had to learn that because it was "lightning fast"... My school notebooks ended up with small fragments of assembly routines when I spent more time designing those than listening education :D

And then I discovered "cracking" and demo-scene, started to code intros and demos (and few games) for a decade or more... Still can write c64 irq routines without thinking because did that so often :)

NamelessGerbil on August 23, 2007 11:23 PM

My first computer was an Atari 800XL. My dad bought it when I was perhaps 5. I remember him and my mother typing in pages and pages of a BASIC game one afternoon. Then they went for a coffee, planning to find out how to save it to the cassette drive later. Then my little brother camke along and switched it off. Image their reaction when they came back :)

However this little thing got me started. First I played the games, then got bored and wanted to know how they work. Back then the computer had a "Break" key on the keyboard, so you could just interrupt any BASIC program and have a look at what it was doing. This led me to where I am today - a professional software developer :)

(Ok, I did not start with something really old, compared to what the others wrote, but hey, maybe I am still a little younger ;))

Daniel Schneller on August 23, 2007 11:54 PM

"computer games in the library after school"
Very excited to play asteroids or something, I went and saw

hunt the wumpus.

What a let-down! text games? Boring.
I must have complained out loud, cause the librarian knew just what to say....
"You can do better than that... try writing your own games".

And a career was born while I was in 7th grade.

Eric on August 24, 2007 12:19 AM

> The computer industry grew up with us. We learned how to program by
> typing in those simple games from magazines and books.

Nope. The computer industry grew up before you. Here's an example:

> In 1971 in high school, I wrote a Star Trek game in APL.

See? He didn't even type in a simple game from a magazine or book, he programmed it himself. The computer industry was nearly already grown up by that time. The minesweeper game was already known at that time too.

Mine, all mine! on August 24, 2007 12:24 AM

> Nope. The computer industry grew up before you

Sorry, I meant the *personal* computer industry, eg, microcomputers.

Jeff Atwood on August 24, 2007 1:02 AM

Every programmer has a secret dream of becoming a game developer.

jan.g on August 24, 2007 1:46 AM

> The computer industry grew up...

I've read a couple of comments referring, in the past tense, to how the computing has grown up.

Computing- or at least any direct descendant of modern computing- has only existed for about 50 years. Imagine only having the first 50 years of Physics. Any scientific field or engineering discipline come to that.

If Computing (and its industry) were human, they would be teething by about now.

Charlie on August 24, 2007 1:54 AM

I remember when I used to be amused by filling the screen with coloured blocks on my ZX Spectrum. Those were the days. My little brother won't settle for something so dull now.

[ICR] on August 24, 2007 2:45 AM

I remember my mum typing out a load of code on our green screen Amstrad 464. She didn't seem very impressed after all the typing it took.

Paul on August 24, 2007 3:00 AM

I totally agree... It's impossible to count the hours I spend typing code from magazines into my old c64 and amiga - mostly for gaming purpose!

From my point of view it did not only enhance my programming skills - until nowadays there a few people who can match my speed at typing (even if I never took any typing class)! :D

Bjrn on August 24, 2007 3:10 AM

Microsoft MineSweeper:
expert: 89 seconds ... beat that ;-)

hacktick on August 24, 2007 3:30 AM

gosh, I must be a n00b. I owned an atari2600 as a kid but didn't get into computers until I was in the US Marines. We had an old dual 5/25 machines that ran EnableOA (database/spreadsheet/docs). That got me started then I saw Prince of Persia on another PC on deployment. That's when I knew I wanted to write games for a living.
Have been a developer for 15+ years now, but haven't written one game.

NJBrad on August 24, 2007 4:17 AM

How about you talk about a bit todays game development. Its more interesting since whole teams write great games for us. People like me who are not in the gaming industry just like to know how they do big projects, how they separate coding tasks between each other.

kaylaangel on August 24, 2007 4:55 AM

Mine was a Atari 800. Learned to program debugging the games I had to type in myself out of magazines.

Ahhhh... Still miss those days. Computers were still fun not a job...

Bob on August 24, 2007 5:15 AM

Your first sentence made my jaw drop, because up until now I thought I was a rarity. I got my start in MS-DOS 5.0, edit.exe, and QBASIC. I perused the code for "gorillas" and read MS-DOS "help" until I was able to create "3d" drawings (rendered painfully slow) of ship landing on a small moon. I also tried to create a computer version of "Battleship" (but it never quite worked properly). I was 9 or 10 years old at the time.

My grandparents gave me a TI console, but once I figured out that I wasn't able to save my work I didn't spend a lot of time with it. The Packard Bell 386 was much faster, and I could save my work!

Brian on August 24, 2007 5:15 AM

TRS-80 here, same stories for the most part, when i was 7 i was typing in code from "More Color Computing" to simulate a traffic jam. We were lucky and had the tape recorder so I could at least atempt to load code that I had written. Good times... it really is amazing how things have evolved so much since those days.

EB on August 24, 2007 5:38 AM

Started with a ZX81, then a ZX-Spectrum -- loved programming them from the start. I still have the manuals from my Spectrum. They were great. Told you about Procrustes when discussing string allocation, and had a chapter on how to add machine-code to your program. (You had to put machine-code in a REM statement at the start of your program because that was the only fixed point in your listing)

I remember spending some time copying listings out of books and magazines (I remember translating Dave Ahl's games from MS-Basic to Sinclair basic). Then you could start tweaking them - add your own catastrophes to Hamurabi, changing the population growth rate, and so on.

This led to writing my own games - I so wanted to be able to write a light-cycle game like Tron, but the closest I came was good old SNAKE.

Christian Mogensen on August 24, 2007 5:41 AM

I can completely relate. When I was 7 my dad got sick of helping me with the Apple IIe and as a joke threw a BASIC programming book at me and said "this will tell you everything you ever need to know." I read that book and got my mom to me buy me a subscription to COMPUTE (so I could type in BASIC code to get games) and the seed for a future programming career was planted.

Billkamm on August 24, 2007 5:44 AM

Here's an interesting game programming link:

XNA Creators Club Online: http://creators.xna.com/

David A. Lessnau on August 24, 2007 5:58 AM

Like so many others I can completely relate. I think I must of been one of the earliest people to ever learn to read on a computer. I was 5 and in 1979 I was so fascinated by my dad's 8k PET that it is what really turned me on to reading. I was programming simple basic routines when I was 6.
What upsets me is that the whole concept of kids and computers has changed. When I was a kid having a computer meant programming it in addition to simply playing games. I would recieve books for my birthday with stories and code interspersed. To follow along in the book I had to type in the code samples. Things like this just don't seem to exist anymore. Just recently I was at one of the big books stores and I couldn't find a single programming book targetted at children. I worry that ours might be the only generation to learn programming when we are young.
Thanks for the memories!

Martin Ritchie on August 24, 2007 6:09 AM

For me it was a TRS-80 and an Apple ][+ clone. Ah, the good old days...

> For a programmer, analyzing games is almost as fun as playing them

If I could just convince my boss of that, I'd have much more fun this afternoon that I think I'm going to.

Marc

Marc Bernard on August 24, 2007 6:24 AM

When Parrot (the Perl-6 VM) was in its early development stages, I was so excited. There were no high level languages, just a very crude assembler. And out of nostalgia, I commited a classic BASIC interpreter and it's first game: Hunt the Wumpus.

http://www.nntp.perl.org/group/perl.cvs.parrot/2002/04/msg1606.html

(BASIC description at the top, Hunt the Wumpus down below.)

In its day, it found a LOT of bugs in Parrot and was useful for that. Dan Sugalski (the maintainer) seemed amused.

Sadly, it no longer works. My ISP was blacklisted from the Perl mailing lists (some compliance issue upstream) and PASM (the assembly language) changed registers, instructions, and made itself more friendly to "modern" languages. Bah. *spit*

But for a few weeks in 2002, I was back in 1982. Good times, good times.

Clinton Pierce on August 24, 2007 6:33 AM

>My grandparents gave me a TI console, but once I figured out that I wasn't able to save my work I didn't spend a lot of time with it.

All you needed was a tape recorder and blank cassettes to save your programs!
It basically made a modem call to the tape and saved your work as an audio file. Yes. Seriously. An audio file that sounded like 'beeep'-'dip'-'dip'-'dip'-'doop'-'dip'. Ahh, long mornings of fiddling with the 'tune' dial on the tape recorder, trying to get my programs to read back in.

Keith on August 24, 2007 6:39 AM

Ah yes, the good ol' TI-99/4A. I spent most of the time playing games (Parsec with the speech synthesizer rocked) but also did a bit of programming. Typed in a lot of program listings from Enter magazine. As a budding piano student, my own creations were primarily music. My crowning achievement was coding the entire theme to MacGyver. 3-note polyphony FTW!

Chris C. on August 24, 2007 6:47 AM

Many years ago, my start was with a PET 2001-N. The real beauty is that in the next few weeks, I will actually have that machine back, the very same one.

I remember how mad my mom would get when she sent me to my room, and I would just mess around with my old VIC20 or C64.

I wrote a couple of games, but found, even at a tender young age, that I could make money making business apps. My first paying gig was an inventory control application for a small (3) chain of hardware stores in 1980 om CBM 8032's.

Grant Johnson on August 24, 2007 7:07 AM

I was 12 years old that day, playing a game of Snake of my father's Commodore 64 'work machine'. Suddenly, the game crashed and code splattered the screen. After getting over the horror that I may have broken my dad's computer, I found myself oddly tranced by the BASIC code in front of me, each line numbered by 10 with cryptic yet traceable instructions. I did my best to figure out as much as I could on the screen, and although I grasped a very tiny portion, I credit that afternoon as the day I became a programmer.

My dad actually had book called BASIC Computer Games (http://www.atariarchives.org/basicgames/showpage.php?page=cover) that contained source code for a handful of games (including Snake!), which I immediately began to replicate.

And yes, the challenge of wrapping your head around the logic was much more fun and ultimately more thrilling than than the actual game itself.

That Minesweeper video is priceless, by the way!

Aston on August 24, 2007 7:40 AM

That is so wild!

I was handed a TI-99 4a back in 1982 and all it had was a manual on how to write BASIC. I was 15 and had no working knowledge of computers and so I didn't even know you could buy software or anything! I thought if you wanted it to do something, you had to code it yourself!!! I coded around on that thing for two years!

I went on to a Commodore64 and 128D and finally to a real PC(286).

I've programmed about every version of BASIC ever released since and am today a .NET VB/C# programmer.

I have to say, I don't get a whole lot of credit for all that work I did before VB3. But it is comforting to know that I wasn't the only one to start out that way.

Thanks for the trip down memory lane!

Roger Farley on August 24, 2007 7:45 AM

My parents bought me a TRS-80 instead of an Atari 2600 as well and the result is about the same :)

Megabug > Pacman

Kerry on August 24, 2007 7:49 AM

My programming career started of with games as well. In particular the original quake, and its little scripting language (you'd probably call it a DSL nowdays) that allowed you to make complex key and mouse bindings. It was all down hill from there :)

Tristian on August 24, 2007 7:57 AM

I would like to look back fondly on the time I wrote my own games, or keyed in those from magazines (a shout out to BYTE and COMPUTE! mags). But my reptile brain stem is dredging up a post-traumatic stress reaction remembering endless hours banging in page after page of DATA, PEEK and POKE statements on my Atari 400. My fingers ache now thinking of that hateful membrane keyboard.

PapaBoojum on August 24, 2007 8:24 AM

Wow, looks like we've got a small TI-99 crowd here! 8^D I'm in the same boat. I got my cousin's TI-99/4A back in '89/'90 when I was about in 3rd or 4th grade after oogling their IBM for a while now. I started eating up the BASIC book it came with like mad. I'll never forget spending hours on this bouncing ball program, feeling all smart because I read some where that the SAVE command would keep the program. And then shutting off to show my parents later. That's when I learned about memory storage vs. disk storage. 8^D

That summer I took a summer school class (the non-remedial stuff) in "computer programming" The CS-1 class literally was trying to find the power button on the first day and I kindly walked up to the teacher and said I already know how to do all this. So I got put in with all the 6th graders doing BASIC programming on an Apple ][ for the rest of the summer. 8^D The rest, you can say, is history. Though I admittedly spent more time doing BBS and batch scripting (yeah, I can make QModem call out to the Zmodem protocol for the download since it wasn't "native" yet 8^D) though my Jr. High and High School years, which is probably why I have my bent towards web apps today 8^D

Sean Patterson on August 24, 2007 8:24 AM

My roots are founded in a device from Texas Instruments as well, the TI-82 graphing calculator. Man, I got so bored in high school that I created a whole text-based RPG game on that thing. There was so much code that the thing ran out of memory! I think it only had like 32k or something like that.

I remember trying to optimize it too, going through and shortening variable names and such. Ah, such glory... I had no idea what I was doing. But I was fascinated.

James Long on August 24, 2007 8:44 AM

OK kids -- my first PC was a TI 99/4 (NOT A) -- chicklet keyboard and all! Fought endlessly with a cassette recorder to save BASIC programs -- system crashed regularly -- problem "solved" when I plunked down $1K of hard-earned, part-time job cash for 360K floppy.

Anyone besides me remember TI Advanced BASIC? (Good times!)

Rob on August 24, 2007 8:51 AM

Re: For a programmer, analyzing games is almost as fun as playing them.

When I was a senior at Purdue, I interviewed on campus with some gaming company (I think it was EA). They kept on trying to get me to tell them about the games I played and I kept on trying to tell them about the game I had designed and written. It was just a little RPG, but I still found that more enjoyable than playing the RPG's of the day and still do today.

Mike on August 24, 2007 10:45 AM

Minesweeper the movie, hosted at College Humor dot Com

NOT. SAFE. FOR. WORK.
http://www.collegehumor.com/video:1770138


The video itself is safe, but college humor dot com is not.

Anyhow, it's nice to see retro revisited now and again :)

I think the first game I played as a kid was a stock trader game. Ugh. And now I'm enjoying playing with stocks to adjust people's long and short term incomes? Damn you video games! *shakes an angry fist*

Phil Deneka on August 24, 2007 11:59 AM

I had a "Trash 80" and a CPM machine. The latter was cool because I could buy PROM chips with games on them. What's funny is that I can't actually remember any of the games, but I can clearly remember discovering that the Basic chip would let me record things (on the built-in microcassette drive) that I could play back later. One of my first attempts was a reflexive listening program that would untimately degenerate into insults and profanity. Great fun, but if anyone had told me that I was "programming" I would have laughed out loud. All that I was doing, after all, was typing in things that the computer could play back at the user's prompting...

Jim Snyder on August 24, 2007 12:09 PM

You guys are lucky that you had parents who encouraged you to program. My parents wanted nothing to do with computers until just a few years ago.

jread on August 24, 2007 12:11 PM

Hahaha

I too wrote code pulled from Byte magazine to write games like Snake and Space Invaders. My first personal comp was an Apple IIC. I hadn't figured out how to save it, so My machine was up for days so I didn't have to write it again. Early 80s... hmmmm... Thanks for reminding me how old I am :-)

CptBongue on August 24, 2007 12:28 PM

Yeah, for me it was reprogramming "Combat" (tank version) on an old Tandy 1000 in Basic. My tanks left treadmarks and craters. I even built a map editor!

Ran great until I replaced the Tandy with a 386, then the tanks moved too quickly...

Ahh those were the days...

For folks who want a bit of a retro fling over the weekend, look up "BattleTank 2000".NET on MSDN... Use that IDE for something frivilous for a change.

Rick Cabral on August 24, 2007 12:52 PM

Although I can legitimately claim to have grown up with the computer industry (first code in May, 1958), I thrived in the microcomputer era and developing games and other little interactive ditties worked for me too.

I still think that is a great device for novices who are interested enough to work into the fundamentals.

But where are those books and magazines to type code from any more? Is this gone forever or is there a secret stash. I'd like to know for the benefit of novices that I am able to coach from time to time.

orcmid on August 24, 2007 1:25 PM

Hey Now Jeff,
Nice post. My pop also bought me a TI & I was jealous of my cousins had the Atari. I remember writing basic & playing games ont the TI such as Parsec. Our fathers made a great choice.
Thx
Catto

Catto on August 24, 2007 1:33 PM

I used the TRS-80 Model I at school to write text adventures. My first computer was a ColecoVision Adam. I burnt the built-in cassette player out loading BASIC all the time. I tried to write a TRON light cycles-Type games, but they all came out like a colorful etch-a-sketch painting. Then my Adam died and I tried to become a marine biologist. It didn't take and 10 years later I came back to programming

prairiedog2k on August 24, 2007 2:01 PM

I begged for 4 months to get a TI994a for christmas and finally did.
I started going to the local users group meetings at the library, but we never got to the point of being able to program anything much.

I think my dad had hoped he'd figure it out, but didn't and soon became frustrated. I was hoping he'd teach me some, and I eventually just became a game player.

I loved Hunt the Wumpus - I had it too!

I think that early frustration with wanting to program as a kid, but not being able to and not having someone to guide me, eventually led me to learning to be a programmer at school.

so, though we come by slightly different roads, we do have that in common - in a sense.

hobbylobby on August 24, 2007 5:31 PM

1985 with an Apple II+ and the book "Computer Monsters" - I never minded being an only child after that.

Jarrod on August 24, 2007 7:54 PM

I was digging through a box this week looking for a video cable and came across the Tape Recorder adapter cable for the TI99/4A. I still remember how excited I was the day I got that cable. To actually be able to *save my work* after spending hours typing in game code from Byte magazine! (Naturally the expansion cabinet and hard drive were *way* too expensive).

Brings me back to my early days of cutting my teeth on the Extended Basic cartridge and Pirate Adventure. Say Yoho!

Brian on August 24, 2007 8:17 PM

Wow, this brings back memories. I got hooked when I built a Heathkit H89 in 1980. It took every penny from a summer job plus some help from my parents, but it was well worth it. I had to wait a month before I could afford a copy of HDOS so I had to write programs in machine code and enter them byte-by-byte just to see some silly little animations.
A couple of years later, I bought a copy of the source code to the OS. It was five large bound volumes of 8080 assembly language, which included the OS, assembler, basic interpreter and various tools. I read those listings over and over until I understood how the whole thing worked.

Ferruccio on August 25, 2007 4:30 AM

In my case it was text only games programming.

David Ginger on August 25, 2007 9:45 AM

I guess I got in late in the game when I started on an AppleIIc, C64, and TRS80 MkII. I was glued to them for hours coding in stuff from magazines then picking 'em apart to roll my own stuff. Sadly, I never advanced to the point of emulating the quality of Hard Hat Mac, Bushido, or Art of War but the ability to crank out simple code has served me well.

Muck on August 25, 2007 12:57 PM

I had a Timex Sinclair with expanded 4k pack. I would type in the hex codes for the games we would play only to have someone bump the memory pack and I would loose it all! After working all summer I finally could afford a real computer... the commodore 64. I would spend weeks recreating games like Donkey Kong. I would make gaming adjustments and pass the updated versions along to my friends. 25(ish) years later I am attempting to go back to college to pursue my dream of being a programmer WITH a paycheck. LOL

Dave A on August 26, 2007 3:51 PM

Like a lot of folks here I started out with a ZX81 (and saved up my pocket money for a Memotech 16k ram pack!), and then the Spectrum. Learned a lot of Basic then Z80 ASM, but then went cold turkey on coding because it was taking up too much time. Only recently started to program as a hobby again, and boy, have things moved on!

HMcG on August 26, 2007 4:16 PM

My first computer too was a ZX81 (around 1983), but a friend of mine had a TI-99/4a. He also had a text adventure about pirates, which we finally solved after many hours of playing. This game became the inspiration for writing several text adventures on my ZX-81 and later on the BBC B computer. When I bought an Atari ST in 1986, I stopped writing games. When I bought a PC in 1992, I stopped playing them.

Floris on August 27, 2007 6:07 AM

This comment thread has been wonderfully nostalgic.

I started out with a Timex Sinclair 1000 and an old Eaton Viking cassette recorder, typing, saving, (attempting to) load. Unfortunately the 16k RAM expansion was a luxury that could not be had. Next was the TRS-80 MC-10, a far more powerful computer (4k! sound! color!) but without saving capabilities (didn't have the correct cable).

Throughout public school, the only computers we had to learn on were Apple ][s. (Bear in mind that I graduated in 1992. I owned a C-64, and had never actually used a '486 at that point.)

I wrote an Integer BASIC game somewhat like Monopoly as an honours project, and used dial-up - to connect to CompuServe - to research some geography questions that made up the core of the game. I managed to finish the project despite playing at least two hours of Taipan per day. I also made my own variant of Taipan for the C64, and called it Cartel. (Yes, very much like Dope Wars.)

I had an Amiga 500 during college, when everyone else had Pentium-based PCs. I did the 1 MB Chip RAM upgrade (motherboard mod + Fatter Agnus swap) and added an external 40 MB hard drive! (Yes, MB)

My first PC was a P-133 with 8 MB RAM and a 4.3 GB hard drive. Cost: $2000. Operating system? DOS. Things have blossomed since then.

P-133 -> P-200 (w/MMX) -> K6-2-300 -> K6-2-450 -> Athlon 700 -> Athlon XP 1600+ -> Athlon 64 3000+ (Venice) -> Athlon 64 X2 3800+ (Toledo)

I'm still writing software for PC and for embedded controllers. I still love it.


Adam on August 27, 2007 7:27 AM

Oh the glory days of software, when no one owned anything and all that was required to use it was that you shared any improvements. I myself started on a Commodore 64 programming a little bouncing ball. Though I'm far younger than most here. I saw the Commodore at a yard sale and had to have it. It's amazing how many hours I'd waste just typing in numbers to get the right colors...

Jason Hopkins on August 28, 2007 8:34 AM

Jeff -- thanks for the great post.

I wrote a Pac-Man-esque game in QBASIC about 20 years ago. It was like discovering a new planet. Though I don't code for a living, I've been writing programs since then just because I enjoy it so much.

I agree that one of the best ways to learn programming is to write a game.

Tom Gerhard on August 28, 2007 4:01 PM

I wrote my first "game" on 8bit Yamaha MSX somewhere in 1993... I tried to make a clone of a game that I've seen on my buddy's Spectrum - the one where you shoot badasses that pop out of the windows.

Lots of things changed since then and now I can't imagine a teenager who wants to program his own game, considering abundance of megabudget games, that we have now.

unton on August 29, 2007 3:53 AM

haha i missed so much i guess. first computer here was a c64 in 1988 when i was 5 years old. and i was not allowed to touch it.

cmon_ on August 30, 2007 7:29 PM

Hm. I guess I'll be having a kid or two soon. How and when should I start teaching them some programming? What language should I use? Should I write something simplistic that will be compiled into another language or be interpreted for that teaching purposes?

axary on September 3, 2007 5:49 AM

You should start as soon as possible, and have them do LEGO Mindstorms. There is a lot of 'problem solving' doing Mindstorms... Language should not be important during the early stages.

Martin H. Normark on September 3, 2007 12:19 PM

HI ppls. i am 18 year old :P I am computer fan XD i play games a lot and i kno most of Progamms in my PC (i say most becouse some programms i dont use) I rhink my english is not very well but i want to learn Programm and make games ;) I learn preaty quickly but i dont know with what i need to start :P All tutorials is not in my language and who is is preaty stupid :S And it is very hard to mee read in english and understand programming i read and dont understand nothing :S with what programming language i need to start and how can make 3D game?? To make game i need know programing?? Or i need to write scripts?? with what i need to start????

DarkChild on September 5, 2007 9:38 AM

Currently the best way to do a game is to go into "mod", for example the half life mods games. Sadly that even when you are free to the programming, you are required to known a lot about arts, specifically 2d, textures and 3d without counting the sound.

Other choice is to program a flash game, macromedia flash is "quite" easy to learn and to program but still you are forced to known about 2d (and vectorial) arts.

Magallanes on September 25, 2007 10:49 AM

Minesweeper, P, Not-P, and NP

http://www.claymath.org/Popular_Lectures/Minesweeper/

Jeff Atwood on November 16, 2007 3:07 PM

First time I used a computer was 5th grade in 1980, a commodore pet. Had used an atari 600xl after that and had my own C64 in april 1994. Didnt even have money to buy games or a disk drive, just typed in programs from books & magazines and saved on tape. Did program a few games and other sorts of programming on my commodore & atari machines since and still have some of those. These days I'm running a small business mainly doing computer support and audio / video transfers. In my spare time I still do some programming on my 8bit & 16bit classics. Perhaps one thing from the old days we should bring back first, a programming language included on each computer, and the means for people to use it if they wish.

James on January 20, 2008 8:31 PM

I remember my uncle "donating" an old apple IIe when my parents couldn't afford a computer. My favorite times in early elementary school were in those computer labs. Must have been around 88 - 89.

I had to hack around on that old thing forever. Learned LISA and some BASIC on the school computers.

I spent summers in the early ninties with my cousin who had a 286 and a cheap modem. We'd go to the library and get books on BASIC and stuff and spend many an afternoon typing in those games and messing around with them.

My favorite was a book on cryptography geared to kids -- really simple stuff about creating simple "ciphers" and "deciphers" to send your friends secret messages. We had sooo much fun with that. Inspired a lot of games both infront of and away from the computer.

While I tried to resist my leanings towards programming and math in my teenage years and early twenties (rock and roll n all); my destiny was sealed. My childhood fascination led to a career and a full-time bonafide hobby. I still program games for fun and even incorporate it into my music and art.

There's just some elusive allure to it all. Like prime number theory. :)

agentultra on February 28, 2008 9:18 AM

'IIe' was a typo. Meant 'IIc' ;)

agentultra on February 28, 2008 9:22 AM

My first experience was with a PC clone by Hyundai (yes, the car manufacturer). My dad bought it around 1989 to write his doctorate (I was 12 by then) and it came with MSDOS(?) and GWBASIC.

Around that time there was a science show for kids in PBS(?) called 321CONTACT, which published it's own magazine monthly. The magazine had a monthly column called "BASIC Training", where they presented you with a game written in,... you know, BASIC, which I typed into the PC. Not many of them worked, but that wouldn't stop me from writing them. I can say I started debugging before I could write my onw code!

Then came high school, were they gave one semester courses on BASIC, PASCAL and spreadsheets.

Lester McGrath on April 9, 2008 4:52 AM

Started my carreer by making Lunar Lander II on TI99 in 1980, published it two years later, so yes, video games taught me programming too...

Bertrand Le Roy on April 10, 2008 12:07 PM

I remember my first programming experience. It was on a BASIC cartridge for the Atari 800. I was 6 years old, and my dad showed me how to write my first program. It looked like this:

10 PRINT "DANIEL"
20 GOTO 10

Or something like that. I was unbelievably happy when I saw my name get printed on the screen over and over again, even though I didn't really know how it worked. It wasn't until I was about 11 when I discovered QBASIC and started writing text-based adventure games in horrible, horrible spaghetti code.

Oh, the memories. Now look at where I am; I'm currently developing an RPG for the Xbox 360 using the XNA Framework.

Daniel F. Hanson on July 11, 2008 9:23 AM

Quite the opposite of others here: I was a huge math nerd and wanted to develop my own implementations of things like complex numbers and linear algebra. I delved into programming languages, and then became interested in CS. But the math thing overcame me in college; I got a BS in EE.

I never really had enough patience or dedication to try and write a game. It seemed like too much work for making what would be a crappy game.

Chris on November 16, 2008 7:43 AM

I cant remember the first programming I ever did but I suspect it was in LOGO and BASIC most likely. The first "serious" programming I did was in Turbo Pascal and these days I use C and C++ for most of my work. Mostly x86 PC clones in our house although there was one Olivetti that may not have been a PC. Oh and one of the old B&W mac laptops at one point.

Primary school had some old BBC Microcomputers IIRC, the high school had macs and PCs with the macs being progressively replaced by PCs.

Jonathan Wilson on November 18, 2008 5:13 AM

I want to chime in for the Commodore 64 crowd. I too did my first programming by typing in undecipherable code into the machine so that I could play a game. Excellent article Jeff.

EnocNRoll on January 27, 2009 12:43 PM

So reading this thread has officially made me feel like one of the youngest people reading this... Most of you were programming computers before I was born :P. I didn't even get properly into computers until this decade, and my first programming was 2006. Nowadays I'm working towards a degree in Software Engineering...

It sounds like it was way easier to get exposed to programming at a young age in the past. My first real experience with it was at 15.

Jeff on May 18, 2009 4:07 PM
Content (c) 2009 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.