The languages I used tied pretty heavily to the computers I used.

In chronological order:

- 7-8 ('98-99): Accidentally broke the menu system on a random old DOS machine I was given. The person who gave me the box wrote a new menu for it in QBasic 1.1. This person did not know about "QBASIC /RUN" + "SYSTEM", so gave us instructions ("Alt, F, X") on how to exit QBasic. Of course I didn't exit QBasic, I tinkered with the menu system. This machine was eventually returned to the person who gave it to me (along with another).

- 8 (99): Was given an old 486-25 by a friend; this ran DOS 6.22 and Win3.1. I think it was assembled by a local computer retailer; the VGA ROM BIOS had "Eagle Systems Australia" burnt into it. Very curious as to that worked out. I'm not certain but I don't think this machine had QBasic on it. Windows eventually fell over (I have no idea why), so I stuck with DOS. I don't remember much of what I did with this box at this point.

- ~11 (02): I vaguely recall finding out the machine had something wrong with it internally (I was not knowledgable to any degree at this point), and someone from a local church (IIRC?) offered to fix it, which turned out to mean replacing the HDD (...ah, that explains why Windows fell over). Not quite sure if the old HDD was copied to the new or how that worked out, but I remember a parallel cable and Microsoft Backup (although I didn't know that's what I was looking at at the time), but it had QBasic on it when I got it back, so I continued tinkering. (A second PC also manifested sometime around this point, but I didn't have any floppy disks to copy QBasic onto it from the other machine IIRC.)

~14 (03): Started visiting the local library. I would so like a copy of my Internet history from back then! Somehow stumbled on QuickBasic 4.5 and was able to download it onto a floppy disk; didn't use many of its additional features myself, but tinkered with (and completely failed to understand) some programs I found online that did. Filled a "QB" directory on my disk full of embarassing half-finished .

~15: Was randomly given an old Celeron which got me my first exposure to Win98. Somehow discovered Resource Hacker while at the library one day. This wasn't a language, but I redesigned the UIs of things like Sound Recorder and this taught me about visual UI design and got me wondering why program UIs couldn't be fundamentally edited in some semantically consistent way while they were running.

- Found Word on the machine and stumbled on its "Save as HTML" option, kicking off my foray into the Web. I tried to copy Word to another HDD but that of course didn't copy the sprawl of 10000 random directories and Registry keys that accompany an Office installation. Ended up digging StarOffice 5.1 off of a CD that came with a magazine that had been purchased several years earlier. I learned HTML and JS off of SO, and loved its "desktop" type UI (it really filtered distractions!). I'm super glad Word broke; I only learned about the kind of "markup" it produces several years later. If I had've ever looked at Word-emitted HTML I don't think I would ever have gotten to the point where I let go of SO and started editing the HTML myself. Once I got to that point I also began to learn simple JavaScript.

- While researching Basic-like languages I found VB-DOS on a website one day, but forgot to download it. Eventually re-found it some time later on another website that also had Visual Basic (for Windows) 1.0, which I grabbed for lulz. Ended up deciding VB-DOS was too disjointed (takes several seconds to switch between the code editor and the form designer) and tried VB 1.0. I.... may or may not have a "VB" directory with ~100 unfinished projects in it. I had a 450MHz Pentium 3 at this point and my first properly working CD-ROM drive, but the library Internet download speed was rather slow, I had no idea how to "find things", and I had no idea how to burn ISOs anyway, so eg VB6 wasn't in my sights at all.

- ~16-17: Asked the similarly clueless and directionless bunch of kids I was hanging out with on IRC for language advice, and somehow began to set my sights on PHP... of all things. (This was where my IQ began its steady decline. I am not joking.)

- ~17: Installed Linux, began tinkering. Learned about shell scripting, which immediately clicked.

- ~17-19: Somehow managed to grasp pointers after years of trying, and began to tinker with C a bit. I found it generally required too much attention span so didn't do much with it.

- ~22-23 (2013-2014): Found an old Toshiba on the side of the road (the 333MHz Celeron in it was _removable_) and tried to install Slackware on it from a somewhat scratched CD. PHP was on the scratched part. I wanted to write a fast package selection utility; the only thing I was aware of on the machine besides bash was sed and grep. IIRC, I had to abandon my attempts after less than a week due to all the grep and (multiline!) sed expressions giving me a headache because it collectively looked like modem line noise, but I learned regular expressions in the process :D

--

I'd like to learn so many languages I don't honestly know where to start.

- I recently read about the golang SSL key-verification incident, and must say the devs' reaction inspired a lot of confidence. I've also been reading a Go ebook for the past month or two. This is the language I plan to use next.

- I'm also reading a Lua ebook too. This language is awesome.

- I've come to realize I've been treating PHP like Perl. Half of me wishes I'd gone back and learned Perl instead, and that it's sad Perl doesn't have fast Web server integration or even standard FastCGI (at least I'm not seeing that it does). One the other hand, reading things like http://blog.schmorp.de/2016-12-29-griefing-the-perl-api.html and the 2nd half of http://blog.schmorp.de/2015-11-12-tidbits-why-coro-crashes-o... scares me off of both Perl 5 and Perl 6.

- Erlang seems really interesting both from the standpoint of being message-passing-based and also due to the fact that it runs its own kernel. I'm wondering whether to just deal with Erlang's variable immutability (a linguistic paradox!) or whether I should play with EFL or Elixir.

- Obviously Lisp is somewhere in there. I'm unsure which one(s) to learn though: I want to get a good idea of Lisp's history, understand its context, and fully grasp what it is about it that everyone likes, so I have a bit of a Star Wars problem - what order to learn everything.

- I'm very very turned off of Python due to the 2.x/3.x debacle.

- Assembly language has been on my todo list since I was about 14. This one's a sore point; I've read more assembly-language tutorials than I could care to recount but always end up near-tearfully confused with eyes glazed over. Hopefully I can figure out what it actually is that I'm blocking on one of these days. Maybe I should skip asm and just go straight for machine code.

- I recently discovered the Forth family of languages. I have to say I really really like the Forth approach to programming - creating shrinkwrapped applications that perfectly trace the specifications of whatever you're trying to build, with zero architectural overhead. I'm going one step at a time with the RPN thing though. :P

- I recently realized that Ruby is easy to abuse to "be cute" but that it can also be written straightforwardly and consistently. I didn't know that, I like this a lot (because its syntax is nice). I remember reading Why's Poingiant Guide to Ruby a few years ago and being heavily turned off by the way the guide made things seem dramatic and complicated. (I now realize my attention span was being spammed by the guide's presentational style.)

- I'm guessing I should probably pick up Java at some point, since it will probably come in handy in industry.

- On the subject of the JVM, I could probably do worse than to learn Scheme.

- C++ has been on my todo list for some time, but my computers are still quite old (I'm on an 11 year old laptop as of today), so slow compilers are doubly+ slow for me, so I have little incentive to pursue this.

I have a lot of problems with indecision, as you may have noticed :) - if something has surface-level issues, I shy away. I will admit that this is in open contradiction to the fact that I continue to learn PHP...

My main challenge is in finding a language I can enjoy working with that doesn't require a consistently clear brain to work with: I frequently have a foggy head due to various health issues (which are expensive to fix - and, hilariously, are also why I don't have a job).