How about you? How did you get into CS?
After dipping my toes in online, I picked up the Red Book, then a bunch of functional programming books, then a bunch more books. This unlocked Scala, Haskell, and other languages that I now love. I went to meetups to practice Leetcode problems, gave a few talks on data structures, then started my own meetup. As I learned more, grokking types was the best part: it was an experience that kept blowing my mind, every step of the way.
I then wrote an O’Reilly book myself, hoping that a few others might have the same experience I did.
I still wouldn’t say I use CS concepts much day to day. But they do come up maybe once a week, and they do give me a deeper appreciation of programming than I had before.
I could not be more naive but somehow so lucky that things turned out so well considering the original rationale of my life-altering decision.
Games used to have uncompressed assets and plain text configuration, so I learned a little about how computers work through modding and hacking. I dabbled in simple programming environments like ZZT or Game Maker, but things only really clicked when I started making websites with PHP, right around the time CSS came out.
Then languages begun evolving in usability beyond C/C++ and Java, I picked up D and wrote my first console program. It was still game related, renaming my Moonbase Commander replay files collection to appear chronologically in the in-game browser. I realized programming didn't have to be painful anymore.
Then the scripting language revolution happened, first I wrote an AI for OpenTTD in Squirrel, then the similar but even better Lua appeared and now I'm developing a game.
I'd always kept studying across the Internet though. Reading tutorials, SIGRAPH papers, forums, hobby collaborations, etc. while trying to figure out not just how computers work, but how I could make them work for me. Oh and I took two years of electrical engineering where we designed and programmed microcontrollers. And I've played every Zachtronics game. Toyed with esoteric stuff like Brainfuck and Corewar, just for the sport.
One of my favorite activities is watching people play games while trying to figure out how they were programmed. Speedrunners discovering glitches and exploits reveals a great deal of the inner workings.
When I was at uni, I initially started as a business major and wanted to do finance or something. In hindsight I really didn't know what the hell I wanted to do, so I just did that because it seemed like a safe choice. I really didn't like it, just because most of the actual stuff we were learning was either accounting, how to use excel, or "how to create your personal brand" (yuck)
After one year of those classes I looked at my schedule, saw all of the classes were in business hell, and was really unhappy about. I wanted to switch majors but didn't really have an idea. I considered CS but held back because two people I knew through mutual friends (and weren't very fond of) were in the major
I picked CS and then realized I actually liked writing programs to solve problems, but just needed some sort of structured guidance like what a university offers in a 4 year degree. It was pretty easy ngl, but I wish the actual job was less annoying boilerplate stuff and more writing code
https://plblog-danieljanus-pl.translate.goog/2022/12/24/jak-...
That meant I spent the Christmas period reading the manual, which explained how to write BASIC and from there I taught myself Z80 assembly-language.
Initially my interest was in hacking games, both to remove the copy-protection, and to get more lives/energy/time.
After that I moved to PCs and started programming for a living, before moving into more formal education and later jumping from development to sysadmin.
If you mean CS as a topic, I wanted to play runescape over the summer when I was in middle school. My parents took the router with them because they wanted me to do something productive over the summer. So I ended up learning how to boot up Kali Linux from a USB and run Aircrack-ng to capture and decrypt the WEP wifi key. I wonder if I would be on a different path in life right now if the wireless card didn't support packet injection or monitor mode. It wasn't directly CS, it was being a script kiddie. But it got me interested in cybersec and linux. My first laptop lacked good video ram and so my options were limited to slitaz and puppy Linux. My comfort around computers can be directly traced to that summer.
I didn't really get into the theory before college classes though. I technically did some pascal while hanging out with my friend who was doing hw in it for the intro CS high school class. I also did some BASIC programming on my Ti-89 to make some AP physics formulas easier and run a pokemon emulator, but nothing more complex than loops.
I was fortune and my existing interests naturally aligned well with CS. I approached problem solving naturally in a way that is a developed skill for some people who chose to pursue CS professionally. When I was failing in orgo, my TA informed me bluntly that I was wasting my energy pursuing something I hated when we got into a discussion about shitty flash games we grew up playing, and I said how I decompiled certain games to change graphics. I don't consider what I did CS because I didn't touch actionscipt, I played with key frames and images. I think it led to me wanting to sit in on that cybersecurity class though. I knew basic Crypto math and was super paranoid about my privacy so I felt comfortable, arrogantly, about the 400 level material. I enjoyed it a lot more when I did take the class for real, during my final semester 2 years later.
I loved computers but really started writing code regularly when I was 13 and knew it was what I wanted to do. Once I got to college (for Computer Science), I realized how deep it went and I loved it all even more. Now I'm a software engineer and I regularly think about how lucky I am to work a job I love that pays well.
- Final Fantasy XII gambit system
- ZipKrowd Server (old minecraft server on youtube)
- TI-83 Plus calculator. Tried to write a single program that would do all of my physics calculations. Didn't succeed, but had some nice QoL design decisions and a couple equations programmed into it. Writing a 150-200 line program with only 8 lines viewable at a time sucked lol
or: how I learned to stop worrying and love Theory.
TL;DR: what got me into programming was looking at software and saying "I want to be able to do that", then creating a text file and changing its extension :D
I started programing when I was 9 (I'm in my mid thirties). My family bought a computer when I was about 4 and I used it since then. To put that into perspective, it cost as much as a 150-200 square meters piece of land or a car at that time. The printer cost about as much, which my family bought. The 90's was civil war and the country was isolated and sanctioned and in deep economic trouble.
I wondered how when I type an executable's name and hit Enter, it does something useful and displays things. Games. Utilities. Programs that did amazing things. Doom, Prince of Persia with a cute little mouse opening the door, Duke, Wolfenstein.
My first attempt at programming was Papua New Guinea style: I created a text file, changed its extension to .EXE, and ran it. I don't know what I hoped it would do. It didn't work obviously, and I changed its extension to .COM and tried again, as if it would take pity of me and "bring cargo from big bird in the sky".
We had no internet back then in the country. I learned BASIC as a child (QBASIC, GWBASIC, etc) from the interpreter's documentation. It was in English, which I didn't speak (only spoke French, Kabyle, Algerian, and Arabic), so I was basically copying the code, running it, changing it and seeing what breaks, and learning causal effects. I had a Harrap's English-French dictionary I used to understand key words from the docs. It was tedious but a bit more systematic and an effort to understand actual causal effects as opposed to trial/error. My first "major program" was one where you enter the name of a country (all caps or it didn't work), and it'd return information such as population, capital city, surface area, etc. I had entered every country's data by hand from a Larousse French dictionary.
I then learned x86 Assembly mainly from a book called "La Bible PC" which was a 1600 page book on systems programming, buses, cycles, BIOS and came with a CD containing code examples. Learning TSR (int 27) and writing ASM code to print on LPT port and display graphics was fucking amazing. I also tinkered with hardware, making cables, playing with DB9/DB25, hooking up scavenged LEDs to them, etc.
Then did a bit of C, which was so, so higher level than x86 Assembly, then Pascal.
Then I did Visual Basic for DOS. Buttons and forms, wow! Then Delphi, which is Pascal'ish. These are teenage years.
I would read "Science & Vie" articles that talked about a thing called the Internet as a child. It sounded like an amazing thing but we didn't have it. It was very frustrating not to be able to take part. As a teenager, I'd buy CD's that contained content from BBS groups with .NFO files. There were crews of people doing amazing things! I learned a lot from viruses and "programs that changed other programs to make them do something they were capable of doing but were prevented from doing until certain conditions were met". It was exhilarating to know such things and people existed and worked together and frustrating not to be able to partake.
In the late 90's, we had Internet in youth centers but it was expensive by the hour. Then residential but it was really expensive (it cost as much as a salary).