My Tech Adventures

There are lots of experiences in our lives that paved our way to becoming who we are right now. In this post, I will share how I met and grew up with technology, what computers and phones I used to own, and how I stumbled into the world of computer programming.

Being in a developing country (Philippines), having access to and owning IT equipment is quite hard because they are relatively expensive. My parents were neither techie nor gadget aficionados, so it was not easy to convince them to buy a computer and other electronic devices.

Nonetheless, I was still fortunate enough to have owned and used a computer at a young age, thanks to my generous uncle.

Personal Computers

I got my first computer when my uncle entrusted (and eventually gave) his desktop computer (Acer Aspire) to my family before he migrated to the United States. Because of its limited specs (Pentium III, 64MB of RAM, Windows XP/98, dial-up modem), I was not able to play any decent computer games at the time, which as a kid would normally do. Instead, this gave me a chance to explore the computer's technical aspects and learn the basics of operating and troubleshooting a computer.

I accessed the Internet from my desktop computer for the very first time via a dial-up connection where I would go out to buy a prepaid dial-up card from a store, scratch for the credentials, and connect via the Control Panel in Windows XP. With this, I was able to try playing online with other people on Internet Backgammon and Internet Checkers. I would also download my first mp3 music from Windows Media Player at 5kbps. These firsts made the dial-up tone nostalgic to me.

My dad soon decided to apply for a DSL broadband connection for our home, which required us to upgrade our desktop computer. Only this time, I learned that upgrading the computer's RAM to 256MB can drastically improve its boot time (5~10 minutes to 1), time to open an application (3 minutes to few seconds), and overall performance. From a download speed of 5kbps to 80kbps, I was able to discover, learn, and try out more things than before.

I got my first laptop also from my uncle when I was in first-year high school. It was a Dell Inspiron 3500 with a Pentium III processor and 64MB RAM (my uncle likes giving me vintage devices). Besides being my first, this laptop is memorable because it is where I started to learn how to program. Due to slow booting, I usually put this laptop on sleep instead of shutting it down when I'm not using it. However, this caused ants to sneak into the laptop internals (there are weird ants that swarm into electronic devices), probably due to the warm temperature of the device on sleep, eventually breaking it. Several repair shops weren't able to fix it, unfortunately.

There was this time when I bought a magazine on Apple products from a preloved book shop called Booksale. After reading it, I discovered how beautiful Apple hardware and software were. Since then, I decided that I would get a MacBook as my next computer.

I tried everything to persuade my dad to buy me a MacBook, but circumstances never gave me a chance to own one. So my next laptop would be an Acer Aspire 4935G (Intel Core 2 Duo, 4GB RAM, NVIDIA GeForce, Windows Vista/7), with specs already advanced for its time, that I have used for about 5 years. It had enough capability to run tools, frameworks, and applications that I needed to learn software development, especially Windows desktop and .NET Framework WinForms development.

After some time, my Acer Aspire would randomly shut down in the middle of use. I have replaced its hard drive, battery, and RAM, but the problem persisted. After taking it to several repair shops, they concluded that it was due to a faulty power controller. After many failed repairs, I finally decommissioned the laptop.

Since laptops are not cheap, I considered buying a preloved one to save some money. I consulted my dad regarding this, and we concluded that buying a brand new laptop would still be a better investment.

For my third laptop, I got a Lenovo G40-80 with an Intel i3 CPU, 8GB of RAM, AMD graphics card, and Windows 8. I upgraded it to Windows 10 via Microsoft's free update but downgraded it back to Windows 7 because of the way how Windows 10 handles user privacy and preferences like, among other things, installing back the apps I have previously deleted on the Start Menu.

As I go forward to my software engineering career, I discovered that most successful and professional engineers know how to use Linux or Unix. Realizing that I didn't have any technical knowledge in Linux, I bought an SSD, installed Ubuntu, and put it in my G40-80. While I have already have tried installing and using various Linux flavors in the past, this was the time I seriously used Linux in my workflow. From this experience, I gained proficiency in Linux and the command line that gave me an advantage as a software developer.

At some point in time, I bought a second-hand Fujitsu LifeBook (Intel Core 2 Duo, 2GB RAM, Windows 7) laptop for my experimental setups and Windows applications testing and development. I once thought of using this as my daily driver at home, but it was not practical as it is way too bulky and heavy.

In 2018, my sister gave me a brand new MacBook Pro (2017, 8GB, 13" aluminum), finally making my lifelong dream of owning a MacBook come true. While the MacBook and macOS are still no doubt, an epitome of design and engineering, my interest in them has declined as I become more of a Linux power user and believer of openness, digital privacy, and free/libre software. During this time, I was mainly using a MacBook Pro at work.

I first found out about ThinkPads from posts of users that I followed on Instagram and Twitter. It was said to be a laptop of choice of most Linux users and professionals due to its excellent build quality, design, and compatibility. So in September of 2018, I purchased a preloved ThinkPad X220 (Intel i5, 6GB RAM, internal graphics, Arch Linux) online and has become my daily driver ever since. I appreciate the classic design and build of this ThinkPad so much because it resembles my first laptop, which is memorable to me.

FYI, I have written this blog post using my ThinkPad X220.

Mobile Phones

My family had a Nokia 3315 and an LG phone that we used to communicate when classes are over and when we go out. With my dad's permission, I would sometimes play Snakes or Tetris, the usual built-in games on these phones.

I got my first and own cellphone, a Nokia 3200, also from my uncle that gave me my first computer. Before I could use it, I needed to "unlock" it first because it is service locked for AT&T (USA) use only. These unlocking services are commonplace in malls and streets in my country. It is nothing special, but it has a camera, IR port, Bluetooth, and FM radio, cool features back then that would keep me entertained.

During my high school days, my dad let me buy my new phone. I chose a Nokia 5130 XpressMusic as my next phone, which has a better screen and camera than my previous one. I can store files and play my favorite mp3 music with it anytime. I tried learning to develop applications for this phone using Java, compile it as JAR file, then load it from the memory/SD card. However, I thought it wasn't worth studying, so I lost interest in it eventually.

The smartphone and tablet revolution then came and changed everyone's career and lifestyle, including mine. Because I also wanted to learn the art of Android development, I got my dad into buying me a Samsung Galaxy Tab 7.0 Plus tablet, my first smartphone, tablet, and Android device. Though the purpose of owning this tablet is for me to learn Android development, I wasn't able to create and publish one due to studies and other circumstances.

I used my Nokia for a couple of years until I decided to replace it with a smartphone. With my friend's help, I bought an Asus Zenfone 4 from an online store. It was cheap with decent specs for that time, except for the battery that drains fast. I created my first (unpublished) mobile game, a Flappy Bird clone called Hoppy Girl, with this phone.

For some reason, my smartphone and tablet seemed to slow down significantly after a few years of use. Probably the hardware components are degrading, or modern software and operating systems tend to grow more complex over time. When my Zenfone wasn't able to handle the latest Android OS, games, and apps, I moved on to a new Sony Xperia XA.

The Xperia was my first phone bought using my own money, though I lent some from my dad then paid him by installment. Because I used my own money, I was able to choose a nice, mid-range phone without getting any resistance from my dad (he doesn't like buying unnecessary, let alone expensive, things). I used this phone to test and run the first React Native apps that I've created.

I used my Xperia without problems for about two years until it had a touch screen issue, probably caused by a bad drop, making it inconvenient to use. I took it to different repair shops, but they said repairs would be expensive. I then decided to replace it with an iPhone 7.

As of writing, I am still using my iPhone 7 for more than a year after I bought it. Because iPhones are expensive, I was only able to afford it with the hard-earned money that I saved for a long time.

The iPhone has a good camera, ecosystem, performance, and design. With my experience so far, I think Apple truly makes remarkable, beautiful phones that respect user privacy. I didn't regret my decision to buy an iPhone.

Computer Programming

Before I started programming, I didn't have any idea about it or that career for that exists. On the Summer break before my second year in high school, I went reading my school computer subject book (in the Philippines, primary to secondary schools would require specific books for each course). Computer subjects have always been my favorite.

The upcoming computer subject would focus on MS Access basics. I skimmed through the whole book, and in its last few chapters saw topics about VBA scripting. It caught my interest, so I read all about it. The questions I had after reading would then lead me to my discovery of the world of programming.

Following the instructions and samples in the lessons, I was able to design and create my forms inside MS Access. Very easy, I thought. But I was unsatisfied - I wanted to show my windows outside MS Access! So with the help of the Internet and Google, I searched aimlessly for anything that will help me move my windows out of MS Access. Since the internet and computer at my home weren't that fast, I would frequently go out to Internet Cafes to do my research. Internet Cafes were popular here, where kids of my age would usually go to play online/LAN games or chat in IRC and Yahoo! Messenger (as a socially inept person, I didn't do IRC).

My research would lead me to discover Visual Basic 6 and Visual Basic .NET as the right programming languages for creating the standalone forms and applications that I wanted. For my VB6 tools, I bought a counterfeit installation CD from a local video game store. For VB.NET, I downloaded an ISO installer of Visual Basic 2005 Express Editions from MSDN.

Because my Dell Inspiron laptop was slow, it can handle only VB6. After I had my Acer laptop, I was able to use Visual Studio 2005 without waiting for n minutes for the IDE and my projects to load and build. I can't believe I was that patient.

Because there were more resources and tutorials in C# for .NET than in Visual Basic back then, it forced me to study C#. I struggled for a bit when I was learning it because the structure and syntax are very different from Visual Basic. It was worth it, however, as it later allowed me to learn other C-like programming languages, like Java and PHP, with ease.

Along the way, I have designed and created several (silly) projects of my own, like a web browser with the IE widget, text editor with HTML tags shortcuts, screen capture app, to-do list, and a wave simulator for my class reporting. Besides those, I also made some programming video tutorials on YouTube (which I already deleted a long time ago) and wrote three CodeProject tutorial/articles.

B.S. in Information Technology became the mainstream degree for college students at my time, so I instead took a B.S. in Computer Science when I went to College. Also, I find CS courses like automata theory, artificial intelligence, and data simulation more interesting. Owing to my advanced programming knowledge at that time, I got top scores in all of the programming-related courses.

My institution annually joins in various inter-school coding contests and, due to my prowess, would select me as a representative during my four years there. Luckily, I won in several competitions either as a champion or runner-up. Not only this allowed me to learn a lot in programming, but it also helped me establish my identity and connections within the institution and other people.

Now, I work as a professional software developer, building various web applications, websites, and maintaining existing systems. Being a professional developer is different than just coding alone - one needs to work well in a team, communicate with clients and superiors, and complete tasks within the deadline.