So I got interested in coding, seeming to be a superpower of sorts. One hears about all these successful techpreneurs and gold-plated brands like Google, and one feels like joining their ranks. After all, it's always easier to join the winning side than to defend a losing side (the losing side being the people with unsellable or poorly-paying liberal arts degrees) (Note - I am a supporter of a broad-based education, but not of well-marketed degrees that deceive the uninformed).
My first foray was with Linux. After hating on Windows for years, and yearing for a smoother experience on an ageing laptop, I decided to take the plunge with Linux. I had some limited experience with Ubuntu when I was a kid, but I was mainly limited to the GUI aspect. Boy, was Linux fun. I had some fun customising my install of Xubuntu (I wanted a light and quick experience), but Xubuntu seemed a bit stale and dated to me. Frankly, it grew out on me after a few months of use. I tried out Linux Mint, Kubuntu, and Ubuntu Mate, but Kubuntu offered the best of the Linux world to me. (Yes, I am biased towards Debian, it is very beginner-friendly - but that being said, i am planning to try Arch Linux and Kali Linux next). I slowly learnt the ins-and-outs of the Linux world, and read endless articles recent and old that proclaimed the death of Windows and the rise of Linux (however, I received a shock when Microsoft did a U-turn recently and started to support open-source, with its most prominent show of support being the Windows Subsystem for Linux). Then came a fair bit of reading on DNS as I tried to setup my home VPN network on my server and router. The intricacies of networking, which were boring and frustuating, eluded me. It made me feel like wanting to redesign the whole networking system from scratch. A blissful period ensued, where I enjoyed some cool Linux programs (Xaos - Fractal Zoomer), puzzles (SGT Puzzles Collection), games (the Battle for Wesnoth and 0 A.D.).
Then began an exploration into Python and coding essentials via the book 'Head First: Learn to Code'. Fair warning, the book is way too easy for someone from a STEM background in high school, and it simplies explanations to the point of confusion - you are left scratching your head as to what the author meant at times, then feeling the light from a breaking dawn of realisation suffuse you. I downloaded the book's code samples, threw away the rest of the book, and just learnt from the code samples. The book could do with some brevity, but for all that, it has some decent Python code that serves as an excellent primer to the Python coding style and language syntax.
Oh - an interesting read is the Zen of Python (PEP 20).
Wanting a challenge, I then proceeded on to HackerRank. I solved a few HackerRank problems under the category of Problem Solving, got bored with Python, and transited to learning Java under '30 Days of Learning to Code'. Where I got smacked in the face by concepts such as devious concepts such as linked lists and data trees. Fascinating stuff, the '30 Days' course starts slow, but builds up quickly later. (It took me more than 30 days to master the basics of Java and OOP) (forgive me I was a total noob and I was doing my military service).
Parallely, I began studying Math under MIT's OpenCourseware Math for Computer Science which I gave up on because the online experience sucks compared to the in-person experience. But I wanted a formal introductory Computer Science course, so I began Princeton's Programming with a Purpose course on Coursera.
Along the way, I picked up lots of useless technical articles, webpages, resources, guides and books. I will upload this whole compendium of resources on a progressive basis, starting with my coding samples.
Lolz - https://github.com/sdushantha/tmpmail/issues/5#issuecomment-692795351