(Continues from Part 1)

Fighting back tears, I ran into the garden to get away. To my surprise, I found some of my stuff! We deduced that the thief had collected the stuff in the garden and couldn’t carry all of it. I was still angry. He got away with my first computer and an external hard drive with a lot of the photos I had taken until then. He also stole all the peripherals and cables to my desktop which made it unusable.

The cops never found who did it. But my cousins stepped in to help. One of them gave me a netbook and the other gave me all the peripherals I needed to get my desktop running again. At that moment, I was immensely grateful that my family owned multiple computer stores.

This netbook proved to be a great learning tool. It was underpowered and struggled to handle my power user workload. I wanted to make it faster by trying Linux which was tricky since it didn’t have a disc drive to do the install from. The simple solution was to get an external disc drive or an USB drive. I had none of these and I didn’t want to buy them. Mostly because it was hard for my dad to afford it. It was this constraint on money that lead me to learn as much as I did.

Instead of buying new stuff, I always tried to use what I already had plus some cheap hacks to get the job done. So instead of simply burning a CD or making a bootable USB drive to install Linux, I rigged together a crossover Ethernet cable, setup a DHCP server and configured a TFTP server to send a bootable image over the network to do a PXE boot on my netbook. Each of these steps required a lot of research and the final process was extremely complicated. But I learnt a lot through it. By trying multiple linux distros on my netbook, I got pretty comfortable behind a linux shell.

Desk covered in tech parts
I am messy

One of my closest friends at that time was a gamer and a hardware enthusiast like me. Sushi and I would sit next to each other at school and spend all day talking tech and games. Once he mentioned that his dad had a room full of unused computer parts. With this, our hardware “smuggling” operation began. He would pull some parts from the storeroom and bring them piece by piece and I would then reassemble it back home. Processors, RAM sticks, motherboards, hard drives, power supplies and video cards, we smuggled the whole lot. Soon I had a complete 2004 era Pentium 4 machine built entirely out of his parts. I call this “smuggling” since our school prohibited electronics. I will never forget the tense day close to the end of the term when both of us had motherboards in our bags and luckily escaped the likely bag checks.

This machine became useful when my router decided to brick itself. Instead of buying a new router like a normal person, I set out to fix it. By this time I had ditched the casing entirely and I had both machines sprawled across a table. I found out that my router’s ROM chip can be re flashed through JTAG. Soldering a header onto the board and figuring out a way to use the parallel port to talk JTAG, I hooked the board to the old machine. After several days of troubleshooting loose wires and options on the flash program, I successfully brought the router back from the dead.

Reviving a dead router
I am alive again

My desktop was now starting to show its age. Surviving several lightning strikes and random part swaps, it was a frankenstein of multiple failing onboard features and add in cards. Seeing the frequent BSODs, my dad suggested that I buy a new machine. I made the right choice by deciding to buy a laptop and picked out the highest spec machine available, a HP Envy 15 with a quad core i7 4700MQ, 4GB DDR3 RAM, a Nvidia 740M and a 1TB HDD.

Most people are careful when they buy something new. Not me. On the same night I bought it, I took it apart to replace the slow HDD with my SSD. Over the years I upgraded everything that could be upgraded, even the display. This machine is my trusty silver stallion to this day and I have learnt and created everything with it. With two screws sticking out to support the hinge, a random hole from drilling the wrong place, a dim strip on the display, loose USB ports and a fan that sounds like a vacuum cleaner at full load, my big boy has seen better days.

HP Envy disassembled
Reveal your secrets

I was now entering 11th grade and questions about life after school were running through my head. I knew that I wanted to do something related to computers. With no concrete ideas in mind, I picked computing as one of my A Level subjects. Alongside piles of outdated information on computer systems, this my first dive into programming with Visual Basic. Not the modern Visual Basic .NET but the antique Visual Basic 6 from 1998 with Windows 98 style windows, forms and buttons. Ugh.

The exam for the computing subject included a coding project to build and document a software system from scratch. I decided to build an invoicing system for a photo studio owned by a friend’s dad. This was my first taste of a software project and it was tough. Unlike my classmates who “shared” their work, I was determined to complete the project on my own. After almost half a year of work, I proudly walked up to my teacher and handed in my project first. It featured a novel UI styled after the Windows “Metro” design with Windows 98 style components, documented in a 200+ page tome.

Gradually I got involved with the rising computer society in my school. I took on the task of teaching computer hardware to a class of 5th graders and older. It was really challenging to get them to behave but I managed to get something across to them. One event I remember very well is creating the ‘hardware’ section of a computing challenge for our school. We bought some used computers and disassembled them for the main challenge of building it again. I had to prepare a set of questions too and I threw in questions like “Name a model of a processor”. These questions were very easy to me, but judging by the failing marks they got, it wasn’t the same for the others.

Another pivotal event for me was Codefest, an island-wide, inter-school coding competition. I was initially devastated to miss the chance to be on the team when I missed the call. So our teacher suggested that I make my own team. All the top computing students were already in the other team. So I put together a B team of whoever that would join me. This was my first experience of running a coding team and I did a pretty bad job of it. I underestimated everyone else’s capability and exaggerated mine. It was a voluntary competition so I couldn’t get them to commit either. But the worst part was that I didn’t have a plan. I kept dreaming of cool features we could build and what it would feel like to win. I was living a dream and blind to the scrambled reality of the project.

Going into the presentation, I was certain that we had no chance. The other team seemed to have a much better project. Even though we didn’t know the result, my demoralized team decided to stop working. But a few weeks later, we were selected into the country finals and the other team wasn't. I guess I pitched all the ideas in my head to the judges and they believed that we would build all of them.

At the finals I got on stage in front of 100+ students and teachers from schools all across the country. A few minutes before we were desperately trying to manually merge all the codebases together without version control. To my horror, as I glanced back at the 100-inch projection screen I saw that the app had crashed. I tried to restart it and it crashed again. The murmur in the audience grew with some laughter breaking out. The judges were amused and started teasing me on stage. While I was too shocked to feel it on stage, this moment haunted me for months. The embarrassment, the shame, the error message on the huge screen.

My pride was hurt and I wanted redemption. I wanted to build something that really worked. So I got together with a friend and started building a student information system for a nearby public school. We only knew VB6 so we used that with an access database. The final product featured a table view with search, a data entry form and a backup feature. We thought this was the end but then we were given the mammoth task of computerizing 1000+ student records. We had piles of folders filled with handwritten forms and we had to type in every single one of them. The Sinhala and Tamil names were not easy to type either.

Windows 9x style program
Codename SAIMS

By now I was certain that I wanted to study programming in university. Nonetheless, I was anxious. I had good grades but I believed it was not enough. I thought my lack of extracurricular activities and unsportiness would hinder me. Regardless, I got into a software engineering bachelor's program without any incident. All my anxieties proved to be plain wrong.

In university I followed my previous principle. I ducked the “sharing” communities and always submitted work that was my completely my own. While the others looked for modules that were easy to do, I took modules that allowed me to earn something new. I tried to understand concepts from scratch rather than blindly copying code from tutorials and stack overflow.

It was here that I learnt Java, web development with HTML, CSS, Javascript and PHP, basic C# and basic graphics programming with OpenGL and C++. Knowing my parents’ ability to dismiss my achievements, I never told them that I sometimes scored the highest marks in my batch for some modules.

It took me almost 2.5 hours to get to university from home. My parents decided that it would be to move closer to university. After moving in, I built tech cave v2 with a wall covered in screens. Impressive as it looked, only I knew that I could only use one display at a time with my laptop. I still kept tinkering and my desk was still covered with computer parts.

Tech wall
The wall

Our curriculum featured a lot of group projects and I was elected the group leader for all of them. I never asked for it, they always voted me the leader. After being voted the Microsoft student ambassador for my University, I made it my duty to do some presentations to help my junior batch. One moment I won’t forget was getting a complete raise of hands from a class of 40 when I asked whether they would like to have another session with me about building IoT devices.

Once I started working as a Javascript developer in Czech Republic, I took on the odd jobs around the office that involved tech. I set up the dual touchscreen test bench for a real time production line system we were building and I took apart the lagging Mac mini in our office to fit an SSD. I still liked giving talks and I got the chance to do two of them, one about Javascript and the other about GraphQL.

Even though I have become a traveler, I am still a techie at heart. Moving forward, I am trying to increase my tinkering. I don’t see myself working for a company all my life and my goal is to build something on my own. What I realized is that instead of sitting on my ass thinking or planning it, I need to get to work. So my aim for the future is to start building small apps from the long list of ideas I have had on my mind. Maybe one of these might be my big break. I don’t know. What I do know is that I will always be a techie.

Working from a cafe
Working weekend

Prabashwara Seneviratne

Written by

Prabashwara Seneviratne

(bash)