Drawing outside the lines

Doing what you love to do, instead of doing what you must do

Considering the violent(-ly changing) times we’re in, some of my recurring thoughts seem so humble. Yet my problems, and what will occupy my mind on any given day, is only relative to my own experiences. Just like you’re force-fed your last spoonful of dinner because “children in Africa are starving” and you’re not really sure what that means, or why that should force you to eat your food, just as similarly you can’t figure out why in the great context of things, your personal life seems to bother you so much.

I guess the answer lies in the fact that if you can’t be happy about yourself, you don’t have the mental strength or capacity to worry about pretty much anything else, no matter how serious. We’re but so small things in the great universe, yet what we’re awaken with every day is our own lives.

I’m still wondering every day whether my thesis is academic enough. My personal goal is to be able to teach one day. And I’m aware of the prerequisites. You need to walk and struggle on an academic path for long enough in order to be able to teach and help others on how to walk it themselves. And professors need to have gone all-research; a PhD, published papers and who-knows-what-else are pretty much a given.

Passion is one of the intangibles. It can’t be measured, it can’t be put on a CV in any section other than the narcissistic description of yourself. Passion is a subjective matter, that shines through your everyday life, and your work.

When I was deciding on the subject of my thesis, I wasn’t thinking ahead that much. I wasn’t considering whether my thesis would be academic enough to entice those that will be looking through all the paperwork that will consist my PhD application. I was just following my heart, deciding that after 4 and a half years of studying Computer Engineering, and after nearly 9 years of exploring programming on my own, I would devote the time and effort it would require to get the first big project I’d be passionate about out there.

And oh my fucking god it’s been good.

I remember back in the 3rd year of my studies, when I was going through 3 weeks of really late nights and long hours of coding to get a university assignment out and done. The university assignment was an exercise on file-systems, and how to build a ext-like one inside a file. It was a really hard one. I may now look back on the code I had written back then and go “pfft, this is easy”; back then, it was a whole new experience. It was my first big thing written in C, 1627 lines of code. It taught me that free() is not quite as simple as malloc(), it taught me that memory leaks can be infuriating to debug, it gave me “Segmentation Fault” nightmares, it taught me to use valgrind.

I must’ve had decided that the assignment was done more than 5 times. And then I went to back to uni, discussed with some other friends who were doing the same assignment, and every single time I would get an epiphany on something that I hadn’t done the best way I could. Yes, the assignment was done enough to deserve a full grade, but I wasn’t done with it.

My passion for programming began way back, and I actually can’t remember all the details of how and when. What I remember was finding a book on Visual Basic 4 in my father’s bookcase, and becoming so curious on the fact that I could make things of my own. The first time I created my own Address Book (it saved and loaded the address book entries from a text file on my computer; I mean, wow!) I must’ve been 12 years old. I was so dumbfounded at my mad skills (at following a tutorial), so purely excited about it that I told my parents, and most of my friends, that at the time either didn’t know what the fuck I was on about, or just didn’t care(, or both).

And then I began exploring. I put the book down and took a look at all the controls the Visual Basic 4 toolbox offered. I remember being so excited about progress bars that my address book ended up having a loading screen with 4 arbitrary progress bars that were reporting to load something (or reticulate splines). I went through so much pages of the Visual Basic help files, understanding so little of it, yet being so excited by it.

When I was 13 years old, and I really can’t remember the actual reason behind this, I had many MP3s that I either wanted to re-encode in order to get them to be a smaller size, or convert to WAV because some audio utilities back then were too much trouble to use with MP3. And the only tool I could find in my, quite short, Google Search, was CDex. And back then I thought that it was doing too much with its main interface, for the purposes of what I needed it to do.

Instead of searching some more on Google, and most of my programmer friends will probably understand the feeling, I decided I should make that tool I needed on my own. It was a trip that lasted 4 years. After creating a version of Wav2MP3 Wizard for myself (because the first thing it did was just that, convert WAV to MP3), I started looking for programming communities, places where I could find other people with similar interests, get word about my tool out (this sounds dirty, doesn’t it?), and get help whenever I needed it.

And that’s when I discovered Sourceforge, and became familiar with the whole concept of open-souce. I created a project on SF, even created a website for it on a WYSIWYG editor (Frontpage? Dreamweaver? something else?). I don’t really remember when, but I was contacted by Juan Reyes from Puerto Rico, a person nearly 20 years older than me, who was interested in helping out with the project. He had some good ideas, and much more programming experience than I did. I can’t even remember how fast (for my conception of fast at that age) the project was getting along with his help. I did most of the GUI and whatever code I knew, he did the hard parts.

Wav2MP3 Wizard gave me some interesting and exciting milestones back then. The joy of reaching 100,000 downloads, being contacted by 2 European printed magazines asking me for permission to include Wav2MP3 Wizard in their accompanying CDs, getting reviewed on various sites including Lockergnome, getting positive testimonials from users, as well as constructive criticisms. It taught me how to run a project and co-ordinate a team of developers, translators, and that guy that really liked to design logos and icons for the project. It taught me how to maintain a website and a forum. How to maintain my software, ask for proper bug reports, learn to debug, fix, and release. But most of all, it made me realize what I was passionate about.

There’s things I regret, too. When I decided I no longer had the time to work on it, due to my high school finals coming up, which would determine whether I could enter a university department and which ones, and also due to the limitations of how the Visual Basic 6 IDE (even with Service Pack 6) could handle its own memory leaks, I ticked that checkbox in SourceForge that said that the project no longer had someone maintaining it, and that it was up for takeover, if someone would like to continue my work. I was naive enough to allow someone behind the name WebInternals (webternals on Sourceforge) take over the project without doing any research on them. Long story short, my website was replaced with something out of a poor template, the name of the admin in the Sourceforge page changed, and the tool saw no new releases since then.

There’s still proof I was behind this, and of all the people involved. The webternals guy never released a new version with any of the credits changed to include his name, so the About Box and all source code that would offer proof, is still untouched. Our names are still there, and we can look back to a piece of software that nowadays we could rewrite in a day, but that we worked on and went on a journey with for 4 years.

From time to time, I’ll look at the source code and all our comments on what worked and what pissed us off, laugh at how naively I approached some problems, and get that itch to just rewrite the whole thing, just for the sake of seeing how it’d compare almost 10 years later, and how long it would take. 286 thousand downloads, and it still gets downloaded to this day. Guess some people find it simple enough to use even at this day and age, and even with all its limitations and all the alternative software out there. And I’m proud of that.

I’m now reaching the point of getting my Computer Engineering degree, and I haven’t regretted it. 5 years of studying on the subject I loved; I even got to love subjects I thought I’d hate, when they added another block of knowledge to the grand scheme of everything I know today.

That passion is what to this day helps me not regret my choice on my thesis at all. Even if it doesn’t prove to be academic or research-oriented enough, the feeling of not being able to go to sleep because of the excitement of working on it again the next day, and having the same feeling the next morning and throughout the 8-12 hours I’ll put into it each day? It just proves I made the right choice. I know there’s certain rules and a certain path you need to follow towards your goal, but if I was to apply everything I’ve learnt over this years in one big thing before getting my diploma, I rather it’d be nothing else.

The same passion I put into my thesis, is the same passion I put into my teaching. I hadn’t realized I even liked teaching other people, never-mind loved, before helping friends of mine before each semester’s exams, right from the first year of my studies. As I did those lessons, and did them again and again to different people, I started realizing tricks on how to do certain stuff easier than how they taught us to approach them. I found myself in the position of trying to explain distributed computing issues in layman’s terms, using a picture frame, a nail and a piece of rope, and seeing the faces of my friends as, for the first time, they got what the subject was on about. I found myself smiling widely at each phone call and message of appreciation from a friend who had passed a subject with my help. The satisfaction it gave me was immense, comparable to only few things I can think of.

So even though my dream of teaching has its preset path, and even though I won’t be writing any complex mathematical functions, improving on the complexity of any algorithms, or studying extensive pieces of bibliography and research papers on the subject, I’m approaching my thesis the only way I know and love. With passion.

And it’s the same passion I want to apply (and know I’m going to) in my teaching one day. Here’s hoping it all works out.


Further Reading

  • My thesis is a basketball statistical analysis tool named NBA Stats Tracker. You can find out more about it here.
  • Wav2MP3 Wizard is still out there on Sourceforge, downloadable and fully working. You can visit its SF page here, and view its website (before the stupid takeover, thanks to the Wayback Machine) here.

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s