3 ms·
Cheers for the engaging reply, and thanks for sharing your story. It doesn't surprise me that your foray into the dark arts was also born out of gaming. > How'
by herodoturtle 5y ago
Cheers for the engaging reply, and thanks for sharing your story. It doesn't surprise me that your foray into the dark arts was also born out of gaming.
> How'd this get you interested in programming? Did you somehow reconstruct the file's FAT entry from scratch, or (heavily presuming a lot) maybe this was more a case of "reinstall DOS, discover QBASIC"?
The former sounds mightily impressive, but it was definitely more a case of the latter :-)
I don't recall exactly how I stumbled upon DriveSpace (I ran DOS 6.22, I don't think it had DBLSPACE), but I do remember that the game "Crusader: No Remorse" had just come out, and I didn't have enough space on my measly hard drive to install it.
I figured DriveSpace was the solution to all my hard drive needs, but as you've gathered, I didn't know what the hell I was doing, and so for a good while after failing to run DriveSpace correctly, I was left with minimal storage space (and a guiltily large .BIN file that I didn't know about).
I eventually decided to reinstall everything from scratch, so I started going through my Dysan-encased DOS stiffy disks (I wish I still had those), and during said perusal, I discovered GORILLA.BAS
"What the hell is this?" I remember thinking. A game!
Within days I was reverse engineering the .BAS file to give my gorillas more explosive bananas, and that is how I got into QBASIC programming :-)
From there I moved on to Denthor's BBS tutorials on mode13h, followed by NeHe's OpenGL tutorials, and the rest is history.
I really love reading about these origin stories. Would be awesome to hear from some of the greats in our field how they all got their start.
- exikyut 5y ago[ Woops, I went into GPT-3 mode. I'm really bad at rambling concisely, and fitting the result into a couple of comfortably short paragraphs. :/ ] Thing was, Alley Cat was the only (interesting) game on the machine in question... and when I (sadly) explained what I'd done to the person who gave me the system, they responded by promptly deleting the EXE file. While a bit of a tangent, my honest thanks for helping me realize (as I type this) that this memory was what kicked off the deep-seated negative associations I've had around gaming my whole life, and why I often lock up whenever I think about the subject. (!) I completely agree that filesystem recovery is somewhat of a more advanced topic, and entirely unfair to expect mastery of at ~10 :D. I kind of understand about 42% of https://marcan.st/2015/10/rescuing-a-broken-ntfs-filesystem/ https://marcan.st/2015/10/rescuing-a-broken-ntfs-filesystem/ myself, for example. I'm very curious how you managed to end up staring at a system with the DriveSpace driver un-loaded though; that just sounds broken. I wonder if you tripped over an uncaught bug/edge case in the setup process. (And yeah, the system I was using had DOS 6.20 on it, thus had DoubleSpace instead.) [TIL about the Dysan brand of floppy disks] How'd you figure out that BAS = QBASIC? In my case, the person who gave me the PC randomly decided one day that it needed a menu, "so we didn't need to type commands in". The PC sat in my bedroom, and Mum rarely used it... but okay, whatever works. Well, said menu ended up being a QBASIC program with some careful instructions at the top about pressing Alt F X. If this person had've known that SYSTEM would exit out of QBASIC if you used `qbasic /run` (:D) I would've probably gotten my start some other way... because of course there wasn't any particular requirement to press Alt F X immediately after exiting the menu... so you might, for example, accidentally press PgDn, or the arrow keys, or F1, first... I think the PC had a Nibbles clone on it (which for some bizarre reason didn't disable keyboard typeahead, so if you held down the arrow keys, the BIOS would start beeping at you), along with GORILLA.BAS et al, but these were to my mind boring; Alley Cat was comparatively much flashier (particularly the intro screen: https://archive.org/details/msdos_Alley_Cat_1984 https://archive.org/details/msdos_Alley_Cat_1984 - the volume (off to the right) is muted by default, and might be a tad loud). Ha, now I also remember MONEY.BAS was also a thing... the background pattern it would put up under the menu was nice. I crashed spectacularly hard when I tried to learn about assembly language and venture toward the lower levels a few years later; it was too much to ingest at once. It would take me a few years to realize just how tightly I'd woven the mental model I built from the drastically oversimplified view QBASIC presented of the bigger picture. I remember stumbling on some .py files while digging around in a StarOffice installation one day. Cue me staring at my screen in mild shock after opening one of them in Notepad, haha... then hastily closing the window to get the angry snarl off the screen. Syntactically significant indentation/whitespace was very scary at 13 :D Later, while browsing the Internet at the local library one day and trying to find Visual Basic, I discovered that there was a version for Visual Basic for DOS... right as my session was about to expire (lol). After some months trying to re-find the page I was on, I finally found VB-DOS - next to Visual Basic 1.0 for Windows. Turns out, VB-DOS had sufficient runtime overhead (read: bloat) that you had to exit the form designer to switch to the code editor, and vice versa, and I soon completely lost interest in it. But VB for Windows 1.0 ((C) 1991), which I'd downloaded mostly just to add it to the pile, ended up proving sufficiently interesting that I actually wound up with a directory with easily 100+ different things in it. Quite a few were empty `Form1`s saved under "what on earth was that name supposed to mean" (16-bit VB 1.0 of course suffered from the 8.3 filename problem, so naming was fun), but I remember making a little tile game (scrambled sequence of buttons you had to click to un-scramble) and kinda went overboard making a skinning/theming engine for it... (IIRC, the Globals window in that thing was full. Like comically full. At the end I was just deliberately adding globals cynically. lol) A little while after picking up PHP (which was bumpy and uncomfortable, but very thankfully could have been kicked-off by far worse than http://www.phatcode.net/downloads.php?id=156 http://www.phatcode.net/downloads.php?id=156), I of course decided to try finally figuring C out, hahaha. Pointers were... a great way to spend an afternoon crying in frustration, although I somehow (????) managed to figure them out in the end, which was nice... only to realize that the sheer amount of overhead/boilerplate C requires in order to do just about anything, every time, is not the kind of thing that can be "figured out" in a couple of sittings... Things started to crystallize when I discovered autism and learning difficulties. A decade+ on from that point, I continue to progressively reevaluate various shortcuts I've taken, and reinforce areas that I'd hastily scaffolded out using holes borrowed from Swiss cheese. I can recognize mental vertigo from disorientation now, so fundamental unfamiliarity is less existentially terrifying... mostly. Okay it's still an annoying mosquito. :D Assembly language remains an irritating mosquit--enigma, frustratingly; Linux's strong orientation toward C doesn't help matters, nor does the fact that the tutorials out there neatly bisect into a giant pile that assume you don't understand what hexadecimal is, and a smaller pile that assume you have 10 years experience with all the seat-of-the-pants aspects of C. Back when I was in full swing with the "download everything that moved and said it was for DOS" side of things I discovered the Ketmax reverse disassembler, which was kind of like `rr` (https://rr-project.org/ https://rr-project.org/) and a lightweight assembly-language REPL. Even that didn't help things click. (Back when I used i336_ I posted about how Google simply cannot find "ketmax": https://news.ycombinator.com/item?id=11900472 https://news.ycombinator.com/item?id=11900472. Years later, it still hilariously hasn't caught up to the fact that you have to add "35.zip". So, I continue to give the engine a hard time by keeping the two halves of the filename ~15+ words apart, and in separate sentences :D) So... much to my chagrin, I'm still using PHP. Which I use as a bizarre sort of zero-crossing counterpoint to Perl and Python - I use it imperatively, like a lot of Perl scripts were written back in the day, but I use it as a glue language, like most would use Python today. And I'm yet to substantially move on, for the very simple reason that $ time php -r '' real 0m0.035s user 0m0.008s sys 0m0.016s the VM bootstrap time is 35 milliseconds flat, including shared library initialization time (!): $ strace php -r '' 2>&1 | grep 'openat.\*\.so' | wc -l 131 This is on an ~8 year old i3 with slowish RAM, too. My primary experience with Python is with `youtube-dl`, which takes about ~5-10 seconds here to output anything. ^C-ing the process early shows it knee deep in all sorts of module imports. IIUC the package management in RHEL-alikes, including Oracle Linux (whose free tier is fractionally cooler than AWS', go and see), is Python-based, and wow it shows; the package manager takes a good ~4 seconds to show any output. I incidentally wrote about my experience with PHP's fast-ness over at https://news.ycombinator.com/item?id=26555366 https://news.ycombinator.com/item?id=26555366, but a good summary comparison that I recently thought of can be found in the short signature jingles companies commission from musical artists, and how the artist has to kind of readjust to making normal-length music because they've shifted their entire timescale to 3 seconds, or 1.82 seconds, or whatever - I seem to be permanently jammed in that short-range end of the timescale, where the notches measure "10ms 35ms 70ms 99ms 150ms" etc as opposed to "1s 5s 10s 35s", or, much more practically (think C++ et al), "5m 10m 25m 1h". I think a portion of this "scaling" is normal - I recently stumbled on https://crawshaw.io/blog/fast-compilers https://crawshaw.io/blog/fast-compilers, which is mostly talking the exact same language - but I seem to be a bit of a pathological case, in that 50ms feels alright, while 70ms already has a noticeable edge to it, 250ms is "nooooo" territory, and at 1 second I've already opened tab 932 and typed in "n" (1 guess where that goe--ooh, 15 new butterflies to open in new tabs!). However, if I stay within that 10-50ms zone, I can concentrate for hours. >.< ...Well the above kind of went everywhere. I started off curious about DoubleSpace and went off the rails somewhere around responding to OpenGL (another thing I've always been curious about but have no idea how to practically get started with... I did the "now you have a window open" thing in ~2008, but all the things I could find about what I could do with said window tended to require a functioning understanding of math... yayyy). Thanks for reading. Feel free to single out bits to reply to, if any of them are interesting; the whole thing is a bit of a thoroughly undirected wall of text. I don't know of any good origin stories, but I particularly enjoy reading debugging/war stories. At some point I'll have a good thing-I-found-on-the-web re-finder thingy (bookmarks ain't it...), but I was able to remember these: https://web.archive.org/web/20180513105901/http://nemesis.lonestar.org/stories/stages.html https://web.archive.org/web/20180513105901/http://nemesis.lo... https://old.reddit.com/r/Rocknocker/?count=225&after=t3_cps095 https://old.reddit.com/r/Rocknocker/?count=225&after=t3_cps0... (this is rewound to the start in the history - open everything that says "Demolition days" (there are only 2 near the top of this page), and click "Back", not "Forward", at the bottom of each page (with the exception of course of getting thoroughly distracted by everything else and opening that too) - and note that there are hundreds of entries) http://www.stilldrinking.org/essays.php http://www.stilldrinking.org/essays.php (open all the "The Episode" entries)