Time for some warm-and-fuzzies! What happy memories do you have from your early days of getting into computers/programming, whenever those early days happened to be?
When I was in middle school, I read an article in Discover Magazine about “artificial life” — computer simulations of biological systems. This sent me off on the path of trying to make a simulation of bugs that ran around and ate each other. My tool of choice was PowerBASIC, which was like QBasic except that it could compile to .EXE files. I decided there would be animals that could move, and plants that could also move. To implement a rule like “when the animal is near the plant, it will chase the plant,” I needed to compute distances between points given their x- and y-coordinates. I knew the Pythagorean theorem, and I realized that the line between the plant and the animal is the hypotenuse of a right triangle. Tada: I had invented the distance formula!
In the mid-1990s, my family had a 386/16 and I had started to get into programming.
One night, my father comes in and notes a neighbour has put out mountains of old magazines.
I end up with like 5 years of mid-80s Compute!, the sort that were 60% code listings by weight. Judging by the annotations, the neighbour had an Atari 800-series. I only actually typed in a few of the programs, but there was a lot of technique to learn from.
Said neighbour also left out several stacks of similar vintage pornographic magazines. My brother took those, and that’s arguably where we started to diverge.
Some cool stuff: I went to a cs high school kind of deal and we learned some pretty fun stuff, then were encouraged to experiment:
-
teacher showed us to render the Mandelbrot set, and when I had that written I wrote a little thing that lets you zoom into it (it was buggy, but who cares! Infinite fractals!)
-
in school, I installed Linux on my pc, played around and then fucked up my primary disk’s boot sector and partition table. That meant my DOS install would be fucked up too (and I needed that for homework!), so I read up on MBRs and realized that if I remember the size of the partition, I can restore it to how it was.… and ext2 gives you a correct size even if the partition table is screwy, meaning that with the first primary partition activated I could find the correct size and then make an entry for the second one, and so on, until everything was working again. Data loss prevented!
-
I’d written a pretty good solution to a homework problem in C, but typo’d a cleanup command and deleted the source file. The previous data loss scenario had prepared me: I rebooted into a rescue disk, grepped the disk drive for parts of the source and got the file back! (Got multiple copies of the file back, in fact. That’s when I started using version control, hah)
Speaking of data loss, I once had just finished a physics lab assignment in OpenOffice and planned to print it off and walk to the University, 4 miles away, shortly.
Unfortunately an extremely confusing quirk of the OpenOffice file “recovery” UI meant that I clicked the wrong button and it helpfully deleted my document for me. I then spent the next hour learning Linux file recovery from scratch including finding and compiling a data recovery tool from source and learning about inodes.
In the end I managed to recover everything except for the images embedded in the document, hastily recreated them, and then ran the four miles to the university (my body would not be able to take that today haha)
in school, I installed Linux on my pc, played around and then fucked up my primary disk’s boot sector and partition table.
the classic! your recovery from this was a lot smarter than mine — I think losing my data on Linux was what got me started on BSD
LOL, now that you mention it, I think installing FreeBSD was exactly the thing that got my MBR blown up that way. Ever since, I’ve taken a snapshot of the first 512 bytes of any bios-formatted drive…
-
this is a great idea for a thread!
This sent me off on the path of trying to make a simulation of bugs that ran around and ate each other. My tool of choice was PowerBASIC, which was like QBasic except that it could compile to .EXE files.
oh man, easily-accessible BASIC interpreters and magazines with well-described algorithms (and even source listings, way back) were amazing!
that ties into my own first happy memory around computers. thrift stores used to have really cheap ($5-$10) Commodore 64s and other 80s computers and consoles. nobody wanted them because retro gaming wasn’t a thing yet — in fact, I’m fairly sure these things being affordable and achievable is why retro gaming got so big and unfortunately expensive more recently.
so of course, the vast majority of 80s home computers needed expertise to operate. 9 times out of 10, that was BASIC. so I was back to the thrift store to get stacks of old computer books — Introduction to Commodore BASIC, gaming magazines with source listings, books on Logo once I started to get bored with BASIC. it was amazing, and the whole machine felt like it was mine to program! (and it essentially was — BASIC had its limits, but it didn’t really limit your access to the hardware or memory on those machines. and you could always bootstrap yourself to a more powerful environment when you were ready! why don’t we do this anymore?)
and that’s how I got into programming — fucking around, finding out, and tweaking code (in a thoroughly 80s “editor” where you type a line number and its contents and that’s editing; the origin of the famous
20 GOTO 10
; the line numbers are both a text editing thing and flow control) on a pile of retro hardware nobody else seemed to want. and I’m still into retro computing today, and actively trying to keep it relatively cheap and accessible, so that other people can experience the happiness in experimenting on those old systems too.a much more recent happy computer memory is that I compiled the Servo browser today. it took 4 minutes to compile on my desktop (including pulling dependencies) which was a lot faster than I expected, and something about the experience of using it flooded my brain with endorphins. it’s very janky due to missing functionality, but it reminded me of the happiness I felt using the original Mozilla browser in 2003. like back then a ton of sites didn’t work, but the ones that did just felt better, and it was kind of like a badge of pride — the sites that worked did so because they didn’t have a ton of broken garbage holding them back. and somehow, awful.systems worked in spite of everything!
this kind of joy is probably why people get involved in open source. my brain has a powerful desire to know everything about how Servo works now, and I want to make it into a browser I could daily drive. I can’t remember the last time open source software made me feel like this. maybe learning Unix by breaking and fixing BSD over and over? but that’s probably a follow-up for another time.
My first memory of programming was typing in a BASIC program for hours with my older cousin into his VIC-20 from a magazine where the last, like, ten pages were nothing but hexadecimal numbers. Ended up being a Robotron clone. We played it for a while then turned off the computer and it was gone.
Oh gosh I feel like my “early days of getting into computers” lasted for like 10 years and involved a bunch of false starts and setbacks so I have a bunch of memories haha. It’s almost a miracle (or a curse…) that I ended up as a professional programmer in the end.
Early on me and my friend accidentally made the windows “My Documents” folder disappear on the elementary school’s computer lab’s computer by messing with the desktop.ini files. Good times.
Another time I was in a computer summer camp and we were playing with Text To Speech in Visual Basic and I had the great idea to play the string “XXXXXXXX” at full volume. I learned then that this sounds exactly like a robot saying “sex sex sex sex sex…”
Anyway fast forward to middle school and I had stubbornly settled on C++ because I wanted to make Spyro The Dragon and vaguely knew that serious games were programmed in C++. I went to an after school computer club run by a volunteer parent who really really liked HP Calculators. Everyone got a demo disk with an HP graphing calculator emulator (programmed by the instructor himself), qbasic and a few other things (I wish I still had that). The final assignment involved guiding a mouse through a maze using HP graphing calculator assembly language. The prize for completing the assignment was a copy of Visual C++ 6.0, as the instructor had wrote to Microsoft and asked if they had any copies they could give away.
So there I am with the ominous task of trying to teach myself C++ with no guidance. I type in a simple “Hello World” program. The compiler segfaults because I had a typo. It took me from then all the way until my second attempt at university to actually learn C++ properly. But dang once it clicked it clicked, now I can do wild wild stuff with the language because I’ve brute forced my way through learning every possible stupid way you can mess up.
If I knew it would take so long, and more importantly if I knew I’d never get to program a Spyro The Dragon-esque game and that Silicon Valley was so soul-sucking, I never would have stuck with it.
we were playing with Text To Speech in Visual Basic and I had the great idea to play the string “XXXXXXXX” at full volume. I learned then that this sounds exactly like a robot saying “sex sex sex sex sex…”
oh no… it wasn’t just me doing this then
windows 9x computers were basically impossible to kiosk properly so finding one with the TTS feature installed was always a treat for my child self
Anyway fast forward to middle school and I had stubbornly settled on C++ because I wanted to make Spyro The Dragon and vaguely knew that serious games were programmed in C++.
same motivation for me, but I wanted to learn how to write half-life 1 mods! and I also didn’t really understand the language until much, much later
You just reminded me I actually did write a bouncy rocket mod for Jedi Knight 2 (which used a modified Quake 3 engine). Bouncy rockets are so much “fun”, easy to implement, and obvious to think of that I’m surprised more games haven’t had them.
My friend designed a few levels for Jedi Knight 2. One in particular had a hidden room with a button that would trigger a giant wall of death slowly lowering from the ceiling across the entire level K.O-ing everyone else. I was never really good at level design but I thought the process of building 3D worlds in an editor and then pressing a button to bake in the light and shadows was super beautiful.
Bouncy rockets are so much “fun”, easy to implement, and obvious to think of that I’m surprised more games haven’t had them.
that’s why mods were so magical, especially in multiplayer games! Rocket Crowbar was one of my favorites for half-life — it turned the crowbar impact hitscan into a rocket projectile, which usually killed whoever you hit, the players next to them, and (depending on the whims of the goldsrc engine) probably you too. then from that thoroughly goofy premise they just kept going — there was a shotgun that launched exploding scientists, the grenades opened black holes… here’s an old review of the mod on Planet Half-life of all things if you want a very specific type of nostalgia
nothing else has the manic energy of a modder just doing free jazz with a game engine!
I was never really good at level design but I thought the process of building 3D worlds in an editor and then pressing a button to bake in the light and shadows was super beautiful.
the way that old Quake-based BSP engines pre-rendered their lighting and shadows was beautiful! I’m surprised more map makers didn’t play with customized versions of the renderer to get special effects, since I think it was effectively a texture map that shipped with the map file
I loved making maps for Q3. I made so many of them, some even got rotation on some servers. The simplicity was perfect for someone like me, just brushes and shaders. When UT2K4 came out I decided to try to make maps for that, but everything was intricate 3D models, which i couldn’t do, so I gave up and went back to Q3.
I even made some maps for Q1, but I think I spent most of my time trying to make mods. My favorite was an inferno gun from Battletech: Crescent Hawk’s Inception, which used the rocket launcher to shoot a fireball that would stick to the target and do big damage in ticks.
I don’t have many good memories but I recall having a 486 or Pentium 1 in 2001 when it was already old, in my college dorm room, running NetBSD to serve my and my roommate’s personal blog.
One problem we had is that periodically the ADSL modem would stop responding and nothing could fix it but a hard reset. If nobody was using the Internet (which used to be a thing back then!! not looking at the Internet 24/7!!) it could go hours without us noticing that the blog was down. I couldn’t program or access the modem in anyway, it was a black box, so my workaround was as follows. NetBSD had a /dev/speaker device which could play notes on the buzzer like “echo ‘ABC#’ > /dev/speaker”. I made a little script that output small, random 7-note melodies to /dev/speaker (in pentatonic so that they sound “musical”, and in the lower octaves so it wasn’t grating). A watchdog service periodically pinged the modem; if the modem was blanking out, the PC would bleep-bloop cute little computer songs until somebody turned the modem on and off.
in retrospect I found computing in this era significantly healthier and more rewarding than the current Internet.
Early teens: ZX series, typing in programs from magazine listings.
Then a pretty big jump, I tried to construct a raytracing program from first principles in high school.
In uni I got a really cheap 386 w/ 2 meg memory, could run Win3.1 on it and dial-up to uni’s FirstClass system (remember them?)
First “home page” in 1995 or so? Uni tilde account.
Got the Linux bug in '97 or so, installed Debian on floppies (had to liberate 2 more megs from another machine)
In the early 2000s I really liked messing around with some BSD’s.
After that computers became more and more of a job, so I kind of lost interest in messing around with them.
I remember getting my first real computer (I had seen and occasionally played around with my aunt’s old Macintosh before and a neighbor’s kid had a C64) at some point in the early 90s. I think my father got it for work or something, can’t remember, but me, having had a Nintendo at home, was more interested in playing games. I asked my aunt if it’s the same as a Nintendo, meaning whether it also had Mario and stuff on it, and she told me, no, it’s better, because you can make your own games with it.
So yeah, that was the moment I was hooked and I wanted to learn how to do that, which really wasn’t as easy as I thought it’d be because that machine, coming with some ancient version of MS DOS (or maybe IBM DOS, I really can’t remember) didn’t have any straightforward ways of guiding me through, nor did I have a good tutorial book or anything.
It wasn’t until a while later that we got internet access at home (the computer had since been upgraded from DOS to Windows) and me discovering Usenet and online discussion groups that I really found useful information and discovered my love for programming (and other stuff, too, like comics and manga, and fan-fiction, lol). I never actually got around to making that game, though, because I was just toying around with doing basic math and getting stuff to print to the console, obviously. As you did, back in the day.
I think another pivotal moment was when I first got my hands on an early version of Linux. That must’ve been the mid-to-late 90s, I think, and it was an image of SUSE Linux (now OpenSUSE) and I tried installing that on my computer – and holy shit, that was an experience, but I was hooked. Compared to DOS and Windows it was so much more fun because of all the stuff you could do with it. I tried all the stuff, went from SUSE to RedHat to Debian to Sorcerer (which I really liked), and finally to Gentoo just for the nerd cred. I’ve basically been running Linux ever since, with a brief Mac OS phase in-between when my grandma got me a used computer when I went to university which was one of the colorful Apple iBooks. I actually quite liked Mac OS for a while, especially early OS X, which seemed like a polished and very user-friendly UNIX with batteries included, but went back to Linux a few years later.
These days I’m running Debian Stable though. Because even though I have nothing bad to say about Gentoo and learned a lot using it over the years, I just want my shit to work without getting my hands dirty too much (and my tinkering time goes into Emacs anyway).
- First furious madman scribbling: I had a toy was a “quizz” machine with “A, B, C, D” buttons, that read colorful perforated cards and a speaker of a “ding-dong” sound for a correct answer, I worked out what set of holes corresponded to what answer (which to the toymaker’s credit, each card with the same answer did not have exactly the same holes) so I could always answer correctly. [The way I remember it I wanted to make custom cards, but maybe I was just a little cheater ^^]
- First program: One fond memory from middle-school, where our introduction to programming was writing GCM and LCM programs using TI-BASIC (or Casio, but the school really pushed the TI models forward). Also having access to a “worms” (somehow in basic and not assembly) clone copied from a friend’s calculator, I reverse engineered the more easy aspects of graphical display, and input handling make a tic-tac-toe program. Since I didn’t know about lists yet, inspired by the GCM and LCM bits, I used prime numbers to store the state of the board, and used divisibility tests to check it. (Some years later i would refactor it, to discover that lists are much much slower in non-assembly TI-BASIC, so it was accidental optimization) I also miscoded the bot, which was vulnerable to exactly one fork attack, but decided to leave it in because it was more fun that way.
- First hack: Discovering that the highschool’s poorly designed web portal, for sharing homework and assignments, allowed forced browsing, which the files uploaded by anyone was fun. [I reported it to the school’s sysadmin team, I swear]
- Cringe blog: Following in my geeky dad’s footsteps I had a very teenager cringe website, that I look fondly on, with garish colors, self-made HTML, css and animated gifs.
I thought the sounds the floppy disk drive made as it loaded my custom AUTOEXEC.BAT and CONFIG.SYS (that made Doom work with my 4 MB of RAM) sounded like a pretty rad beat.
we need to bring back storage with distinctive noises! it’s why I’m keeping the floppy drive in my Amiga even though all its data is probably coming from its accelerator’s SD card
I semi-recently set up a load of enterprise hard drives in my office and the sound they make on access makes me weirdly nostalgic — the drives are overbuilt so the internals are heavier than normal, and they’re nitrogen-filled, so they clunk and buzz a lot louder than most modern hard drives. and weirdly enough, they were a lot louder for their first 24 hours of runtime (maybe something to do with the nitrogen shifting around inside during shipping?) which made them sound exactly like early 90s hard drives
ah the music of the spheres (or at least ball bearings)!
PS: I remembered hearing about this thing a looong time ago. This convo reminded me of it, and it has become something amazing.
The Floppotron 3.0 Computer Hardware Orchestra:
that sounds neat, I haven’t heard any noises out of new spinnies I’ve dealt with lately, although sample size 3 in 5y
(the only other spinnies are the wd pocket-sized series, and they’re just boring whirr)
I have really fond memories of using computers before they were connected to the internet. I loved drawing pixel art in microsoft paint, and could get in adhd hyperfocus for hours doing that. I keep this image in my archives in the hope that one day I’ll be able to resist the internet long enough to complete my dream of doing the whole of sydney harbour. But I have memories of doing this image over and over to get a good scale for having enough detail on traffic I planned to add to the bridge, as well as understanding the best ways to approach the oblique perspective in pixels (double pixel corners or single?) also how to get perfect arcs. So much time for such a small image, but all fond memories. Maybe one day I’ll finish the planned larger canvas of the whole sydney harbour
In a way computers transformed from being a thing for making stuff to being just a window to the internet for me, and since that change it has been an endless struggle to use them for making stuff again