I decided to actually write about my experiences and my introduction to computing. I wanted it down for some semblance of posterity. This is part 3; you can read part 1 here, and part 2 here. I don’t intend there to be a part 4, but feedback is much appreciated. Yes, yes– this part is long-delayed.
Oh, and for those in the crowd: this is my space. You might find the hubris a tad bit too much though.
Growing up
So, in all honesty, I was a BASIC coder for the longest time, even longer than my current-day affair with Java. (Don’t get me started on that topic though). BASIC had annoyed me, what with things I felt I couldn’t do in it. Looking back with some hindsight, some things were indeed possible, although klunky– one could simulate linked lists, for example, using arrays, and one could do graphics blitting via PEEK
s and POKE
s. But then, I didn’t have much knowledge in such matters, and I couldn’t really do the more ambitious things I had in mind. I wanted a more powerful language. At first, Pascal sounded nice, but I decided to go to C since I knew it had a reputation for being quite powerful. (Which, mind, is quite an understatement)
But in order for me to play around with C, I needed a compiler. Initially, Turbo C fit the bill. The computer lab did have a copy, and I did use it for some time, but I felt that it was too old, too small. I wanted a 32-bit compiler. The exact reasons for wanting a 32-bit compiler, of course, is lost on me right now, but I did find one.
By my second and third years in high school, I was interested in writing a computer game from scratch, and I demanded from myself that I do it in C. If there’s anything I learned from all my years coding in BASIC, it’s all the bad mental habits. Unstructured code. Huge functions. Global variables. Variables appearing out of thin air. All very, very painful to wrench away from, especially when you start coding in C. And, considering that I wanted to do a game from scratch in C, very painful indeed. (I never did get to finish that game too– I don’t know if that’s a commentary on my abilities though. You be the judge)
Mostly though, I dived into learning about AI and graphics– 3D graphics was all the rage then, so I also dived into that. And I began to plunge into the Internet, but not really at home (we didn’t have a modem yet). I began surfing at net cafes and shops, and at the library. The vastness of what was available online was stunning. This was still at the beginning of the explosion of the Internet in the popular consciousness of the world. I can say I was a witness to the explosion, albeit a bit late though.
In any case, I picked up a lot of stuff from the Net. I was already aware of the existence of Usenet, of IRC, of the myriad forums that dotted the virtual landscape. However, there was one thing I wasn’t yet aware of: free software and the open source movement.
In the middle of the 90s, the free software movement led by the Free Software Foundation and the GNU project was just nascent. The free software movement’s battle cry was about, well, free software– free, as in freedom, not necessarily free as in beer. Open source wasn’t yet what it is today. Linux was still in its early days. But it was there: the GPL was already out, there was a substantial amount of code already written for the GNU project. One particular component became critical however: the GNU C Compiler, now known as the GNU Compiler Collection, or GCC.
There already existed several ports of GCC to various platforms. In fact, it was slowly becoming the de facto C compiler for a lot Unixen and Unix-like systems. Two ports were what caught my eye at the time: a port to the Win32 API and platform by Cygnus Solutions as part of their Cygwin system, and a DOS port by DJ Delorie named DJGPP.
Now, I did look into Cygwin. After all, I was running a Win9x box at the time, and Cygwin was (and still is) a complete set of Unix tools for Windows. What turned me off was the size of it all. I couldn’t download it and save it to a floppy– CD burning was at its infancy, and USB and USB flash drives weren’t even in existence. DJGPP, on the other hand, was tiny. The components I needed I could save onto floppy. And that I did.
It took several trips to a Net cafe near our house as well as several false starts, but it was worth the time. I finally had a 32-bit compiler (albeit for DOS).
Of course, while I downloaded the ZIP files I needed, I explored DJ Delorie’s site. On one particular corner was a collection of essays, one of which would slowly sink into my consciousness. It was a text file, and the author of the essay was Richard M. Stallman.
Linux: Enter, Stage Left (well, almost)
Like I mentioned earlier, Linux was still in its early days– but this is not to say that it wasn’t quickly growing in the technical community. In my freshman year in high school, I decided to join the school orchestra (due, in part, to some prodding by my friend Leandro). Among the people I met in the orchestra was a junior by the name of Denny Antonino. Denny, who played the flute, introduced me to several other people, among them Carlo Sogono and Paolo Dolina.
Paolo helped set up the #zobel IRC channel back in its heyday, and I would often visit #zobel while I surfed at Net cafes everywhere. Carlo, on the other hand, was a true geek– he knew and ran Linux, and in fact helped set up the school’s mail system. One of the memories I have of Carlo Sogono was when I was in sophomore year. I had joined the high school paper that year, after vowing not to the previous year– I was part of the grade school paper in my seventh grade, and that wasn’t an experience I relished. In any case, we all hung out at the PPRO, the Publications and Public Relations Office. Our adiviser, Mr. Arianwen Dagmar Androu Tapang Lopez (who will kill me once he sees this entry) was friends with us all, including Carlo. One lunch hour, while helping with some articles, Carlo walked in rapidly to Sir Arwee’s PC and fired up the telnet client of Windows 98. Now, I was well aware of the venerable telnet, but what I wasn’t aware of was Linux. Anyway, he connected to a server (which one, I don’t know until now), logged in, then fired off several commands. I was, obviously, looking over his shoulder. He was talking about an exploit named Teardrop, and how he had downloaded it and how it was affecting the server.
I freely admit that at the time what he was talking about flew past me. I was a PC geek, and Windows-oriented at that. TCP/IP and networking was as foreign to me as Latin and Greek. So what I saw really flew past me, and I was utterly amazed. I wanted to know what the heck he was doing. And I wanted to check out Linux. But, unfortunately, I had a few hardware issues.
First, we only had one PC which the whole family shared (or rather me, my sister, and my dad shared). The PC was running Windows 98 at the time, and it only had around 100MB of disk space left on the hard disk– a hundred megs that I was constantly juggling with, removing and adding applications as necessary. Paolo (who also was a Linux geek then) was telling me that I could install it there, but I was a little wary considering the space I had left.
If there was any moment in my journey which I regret, it was then. I could have started on Linux and joined the community early on, but because of disk space I couldn’t. As they say though: better late than never.
Free and Open Source Software
My almost foray into Linux did, however, get me interested in the workings of the Internet. It got me started on networking and other topics. And, quite fortuitously, it got me interested in open source.
Remember that essay I was talking about earlier, the one by a guy named Richard M. Stallman? Richard M. Stallman (or RMS as he is better known) is the founder of the Free Software Foundation and leader of the free software movement and the GNU project. The essay was essentially about the philosophy behind Free Software (free as in freedom, not necessarily as in beer). At the time, I found it heady and hard to absorb. However, bits and pieces of it began to filter into my consciousness– in particular, the need to have source code.
DJGPP was my first taste of free software. With DJGPP came a license named the GNU General Public License, or GPL. I read through it and what it told me I could do kind of blew me away. You mean you’re giving the source code away? At the time, I was of the opinion that source was equivalent to the crown jewels of software: something that you jealously guarded from your competitors. I was of the proprietary, closed-source mindset. I had always believed that the money was in the source: you had to protect the source code to get paid. To sell software, I believed you had to protect the source code to it, to prevent anyone from gaining on you. The free software movement, on the other hand, seemed antithetical to business, to money making.
However, I soon was able to digest what was not just possible, but what had already been done. The more I read about Linux, the more I read about the early success stories of the free software and open source movements, the more I got to understand: hey, this whole shebang about free software works. And when I hit college, I was already quite well-versed with the whole deal, and was amazed by the news that Netscape was opening the source to their browser. Woah, I told myself.
I soon found myself using more and more of the FOSS stack. First, it was just the browsers. I opted to run Mozilla instead of Internet Explorer. Then, since I was already DJGPP, and since I wanted to write Windows apps, I switched to using MinGW, another GCC port, this time to Windows, just like Cygwin but more minimalist. MinGW was a perfect fit for me, as I only needed to compile apps. During this time, I also discovered Allegro, a game programming library. Although technically not distributed under any one of the various licenses accepted as open source (it was and still is “giftware”), it was and still is developed under much the same ethos as other open source projects. (I remember one weekend hacking on a toy app that I wrote for a class; it was small tic-tac-toe app to help demonstrate the concept of AI). I started reading up on MySQL, and before long I actually started using Linux.
My then-college professor, Mr. Joel Pira, was an avid Linux enthusiast, and we had a lab class on Java servlets. He decided to set up one of our labs as a dual-boot environment, where we would work in Linux for the lab class (Windows was left in for the other classes using the lab). That’s where I first got a real taste of a Linux environment. I already read up on some Unix shell commands, having bought a beginner’s introduction on Unix, and I was quite comfortable with a command line, having used one even on our family Windows machine. So I dove in. I knew how to request the manual pages for commands, I knew how to change directories, I knew how to list files. Before long, I started simply messing around, ssh-ing from one lab PC to another. Mr. Pira had entrusted me with the root password to all the machines there, and so I started really messing around– I once wall’d a message to a friend’s PC, and played around with his GNOME session by killing processes and restarting them while he was logged in. (Yes, I’m evil.)
Mr. Pira also lent me a copy of what would be the first distro I would ever have: Mandrake 8.1. As soon as I got the money saved up, I bought a el-cheapo 8-GiB hard disk from a PC shop in Makati, plugged it into our home PC, and installed Mandrake 8.1, keeping up the whole night as the machine copied and installed files. I was excited; I was thrilled; I was pumped up. Finally, I told myself, I’ll be able to play around with Linux.
I have not looked back ever since. I have run Linux as my desktop system from then, from basic stuff at first, to full-bore Internet browsing when I got my winmodem working through a, well, clever hack. I run Emacs as my text editor of choice, and Gnus as my mail client of choice.
And that, my dear friends, is my journey into computing. What’s yours like?
Previously: More Git