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
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
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.