arscan
15 hours ago
The first program I ever wrote was a choose your own adventure, I think written on my family’s IBM PC jr in Basic. It’s pretty amazing how far a kid can get with GOTO statements and a lot of patience. But for some reason I couldn’t (or didn’t know how to) save it, so I’d work on it all day, have my sister and mom play it, and then shut off the computer thus losing my days work.
Or at least, that’s how I remember it. It’s been a good 40 years though and I wouldn’t be surprised if reality was quite a bit different.
Edit: I’ve been thinking about this a bit and honestly my motivation for writing software hasn’t really changed. The users, sure, but not the motivation. It’s just thrilling to share things I built with other people.
vunderba
14 hours ago
When I was first introduced to BASIC in elementary school, I was spending a lazy afternoon reading in the built-in QBasic docs (being able to hit F1 and get immediate help is still one of the coolest things ever IMHO) about the SOUND keyword, which let you set a frequency and duration.
I remember irritating the hell out of my parents (and our dog) with it until one day, by accident, I noticed they couldn’t hear the tone anymore. The frequency was somewhere in the range of 15-20 kHz IIRC.
So I wrote a “PASSWORD.BAS” source that would play that high pitched sound in short, one-tick intervals continuously while polling the keyboard for input but then stop after a random amount of time. To authenticate, the user had to hit the spacebar within a one second window of the sound’s termination. Hitting the spacebar too early would also result in access denied. Fun times!
analog8374
12 hours ago
I used to mess with sound on my commodore 64. 3 voices. ASDR. Square, sine, triangle. Chords were frequencies with common factors. The world of strange sounds is vast.
vunderba
11 hours ago
Nice! I still love that one of the ways that C64 composers worked around the limitations of 3 independent sound channels was to use a single voice to simulate a chord by playing the triad of notes in an continual extremely rapid arpeggiation.
Incidentally, if you're ever interested in playing around with one again, there's a really accurate VST emulator called Chipsynth C64 [1].
rectang
13 hours ago
When I was in Jr. High, we had an Atari 400. Mostly I used it to play Missile Command and Star Raiders, but it also came with a BASIC cartridge.
In the back of the manual were four BASIC programs. The first three were very simple, stuff like a loop that prints your name 10 times and then exits.
The last program balanced your checkbook. It was 4 pages long. I laboriously typed it in, hunt-and-peck style, which took hours... then I hit "run".
Nothing.
I couldn't debug it. Not only did I not really understand software, I didn't have a checkbook — hell I didn't even know what "balance your checkbook" meant.
We didn't have the exorbitantly expensive Atari floppy disk drive, nor the cassette drive, so I couldn't save my work. Still, I left that BASIC cartridge in there for several days, foregoing my games, because I didn't want to lose my investment.
Eventually, I turned off the computer and the program disappeared forever.
I didn't program again for 20 years.
DrSiemer
11 hours ago
In my experience, a core skill of programmers is that they are people who are able to deal with setbacks and frustration in a good way. Those come with the territory.
I've always wondered if there is a correlation between developers and people that can enjoy tough but fair games like Super Meat Boy because of this.
technothrasher
15 hours ago
I made some text adventures in elementary school on the school's Apple II machines in the early 80's after playing Scott Adams' games (as a side note, it was amazing to be able to tell him directly many years later how much he influenced my learning to program). Anyway, a few years after I graduated from the school, I went back to visit, and some kids figured out it was me who's adventures they'd been playing and asked how to get past the one point in one that they couldn't figure out. I had to tell them, much to their disappointment, that I hadn't actually finished that game.
EvanAnderson
14 hours ago
Similar background here. The public library had Apple II machines and I became quite enamored with making proto-text adventures in Applesoft BASIC. Because you had to sign-up for time I wrote a lot of my programs longhand on nth generation photocopies of "program template" sheets that they handed out at the library (lined paper with columns for line numbers, statements, comments, etc).
The spaghetti code was astounding, and I remember squeezing line numbers between existing code-- adding a "31 GOTO 40" so I could squeeze a "room" into lines 32-39.
I never did grok the idea of building an "engine". Mostly I had PRINTs, INPUTs, and IF/GOTOs.
Telemakhos
14 hours ago
One of the most humbling moments in my life was learning from a friend what a object was, and how that differed from GOTO statements. I had already done something similar by inventing abstraction, when I figured out that I could pre-define certain musical notes and then use those defined notes more simply in my BASIC code. I had not, however, made the leap between re-using notes and re-using rooms in a text adventure. That realization that all re-used things can be abstracted was formative, and I am very thankful to my friend for having explained what he was doing with rooms. At some level, I regret that I learned BASIC before an object-oriented language; at another, I'm glad that I did, because my training in stupidity made very obvious to me my shortcoming in logic when I learned a better way.
EvanAnderson
11 hours ago
I'm jealous of your experience. That sounds very cool.
Looking back I wish I'd had a mentor. I think I would have accomplished so much more if I'd had somebody to offer some guidance and gentle direction.
tkrn
an hour ago
>The spaghetti code was astounding, and I remember squeezing line numbers between existing code-- adding a "31 GOTO 40" so I could squeeze a "room" into lines 32-39.
I spent too many nights trying to implement complex text adventures in Commodore 64 Basic and I'm sure that instead of permanently damaging me (at least in the sense that Dijkstra meant) it just made me appreciate more all the abstractions later languages introduced to me.
vunderba
13 hours ago
By the time I was a kid, most of the x86 computers I was exposed to were running DOS with the included QBasic IDE so I never had to worry about things like this.
However, we had old stacks of Compute magazine [1] lying around with BASIC source games printed out - and I remember initially being confused as to why all the line numbers were separated by intervals of 10...
arscan
14 hours ago
Love it! It really is a good first program to write as a kid (at least those from a certain generation).
And my memory might be from our Apple 2gs and AppleScript, actually (hence my caveat in the comment). But I’m sure the program was just PRINTs, INPUTs, IFs and GOTOs :)
kqr
11 hours ago
It was the same for me, except I grew up slightly later and did it with HTML documents and hyperlinks! (And in one case, I even think I got some help with an imagemap. Clicking the little hole in the foundation to the house led to an easter egg.)
mromanuk
15 hours ago
I made a game in the 80s in my Commodore 128, was a super rudimentary maze, you moved the sprite and need to reach the center of the maze. That was it. It was very basic, but I was proud and showed it to some folks. I'd love to see the code and game now.
NBJack
12 hours ago
I got into coding at home when I realized ctrl-break gave me a BASIC command prompt on my Apple //c. It was really cool, and I spent a lot of time learning to code. There was one small problem: doing so on startup meant I didn't get a DOS. In other words, every program I wrote like that meant I couldn't keep it.
I eventually learned to get a ProDOS disk setup, and save my work, but it was still fun.