I don't remember exactly my first encounter with computers. But I guess it was in my senior one or two holiday where my Dad took me to his workplace in a textile industry in Jinja. It was there that my eyes were sort of opened to a myriad of new possibilities that computers could do.
In his office, there was a computer guy. I guess he used the computer to create spreadsheeets or run some specialized computer programs I didn't know then. The PC was also hooked to the internet, so I saw him browse the internet, specifically the CNN website.
Computers back in the day were rare, so I didn't really have much time or exponsure to PCs except with that brief encounter. But I was already hooked.
Computer education at school
By the time I went to secondary school, computer education was beginning to be intergrated in the school cirriculm. At Mwiri in 2000, we had a computer Lab with old but functional computers running Windows 95.
My interaction with computers was a brief and scary encounter especially because of the tense demanding academic environment. Also at that time computers were not yet user-friendly. I actually remember doing an exam in MS DOS, or some sort of command line program. It was very alien at that time.
Vacation and campus
It was really Windows XP that made me like computers while working at an internet cafe during my Senior six vacation in 2006 that draw me closer to computers. More importantly the computers were plugged to the internet which was a totally different experience.
When I joined engineering school in Makerere University, my internship in 2007 would give me an encounter with Linux computing world. Ubuntu 8.04 was the first Linux distro I used and I loved it instantly the first time I used it. It was stable and smooth, not laddened with Viruses and lots of security vulnerabilities akin to Windows.
Ever since, I’ve always dug deep into the Linux world.
Today am typing this post from a Linux Mint 17 Qiana which is based on Ubuntu 14.04 LTS. My laptop has 4 distros installed on it and I just keep hopping from one to another. I’ve Linux Mint which is my default desktop really I use for everyday work. Then I’ve Ubuntu 14.04 LTS, Opensuse 13.2 and Suse Linux Enterprise.
I overcame with unfounded fears with the black Linux terminal although I took me a while to get used to it. During my idle time I like to explore and play with various shell commands and even write a number of bash scripts. So, there’s a lot of Geeking to be done.
The great thing about Linux is that it’s opensource. Meaning you’ve access to the software source code which gives you lots of power and control. That’s why there’s lots of stuff going on in the the Linux community.
My curiosity to get computers to do stuff for me, got me to learn programming all by myself as with all the other things am doing. I must say, having had a terrible introduction to this field at Engineering school, I never thought that I would sit down and scribble down several lines of computer instructions. Computers are merciless and faithful servants at the same time depending on how you trade with them.
Programming is a discipline. One that demands that you stick to strict conventions if you hope to get computer to do anything useful. That means carefully reading and following accepted standards and protocols. Following my engineering training, this was fairly easy to adopt.
But what I wasn’t prepared for were the countless amount of hours I had to endure to learn or do something — correctly. Whether that was learning and mastering python for instance or getting my java code to correctly compile, I spent lots and lots of hours to get it right. The good news is, the more you do it, the better you become at it and therefore the less time you spend on subsequent projects.
I’ve explored desktop software development with both Java and C++ using the Swing and QT Framework respectively. Before that, I was a “PHP hitman” and a LAMP/XAMPP Ninja — perhaps the best thing that ever happened to web development. Somewhere in between I became a Python fanatic I think because I needed to use it to automate lots of things while I was doing system administration on Linux boxes. But It was Django, that introduced me to working with frameworks and the MVC model. Now am learning things like Codeigniter and WordPress which I used to put up this website.
As you can tell, I keep exploring and learning. My best languages are Python, Java, PHP in that order. I dread Perl and C++. For some reason, my lack of understanding of CSS has kept me away from developing web applications unless I work with a front-end designer.
The great thing about learning how to code is that you get to build stuff — even for the fun of it. But that’s not all. Programming training your mind to think critically and creatively at the same thing. You’ve to imagine a product in your mind then Implement it. The imagination fuels your creativity while the implementation sharpens your critical thinking.
That’s why I write computer programs in my spare time even though I don’t do it for commercial ends among other reasons.