My story (as a programmer)
I started writing this as a bit longer bio blurb for the About page, but somehow it got too long before I was even halfway finished, so I decided to edit it a little bit and put it here instead. Not the usual stuff I post here, but not many people know how I got into programming and didn’t have the heart to just delete it. :)
I was introduced to programming as a kid at the elementary school. Seeing that I can use mathematical functions and some funny English words, which I didn’t understand, to draw circles on the TV pretty much changed my life. I wanted to learn more and more about the BASIC language, but it was more theoretical than practical, because I didn’t have any computer at home back then. Even though I could only play with a computer at school, I loved reading programming books and learning more about it. A little later I got a computer and spent days and nights learning “real” programming in Pascal. While my classmates were having fun outside playing football, I was having fun learning about sorting algorithms and data structures. I didn’t believe I could actually work at a programmer when I get older, but I very interested in learning more and more anyway.
Several years later I discovered demoscene, which brought my programming experience to the next level. I was never able to make my own demo, but I found it fascinating to hack on multimedia software, especially in environment like MS DOS which was not multimedia-friendly at all. I spent a huge amount of time learning how you can make a computer produce sound, how module players worked, even experimented with making my own tracker. This was also the time when I had to leave Pascal and (painfully) start looking into C and even some x86 assembler. I made some 256b intros – they aren’t any interesting, but I was very proud of myself back then. :)
The next breakthrough happened when I found MS DOS too limiting and installed Debian on the 386 machine I had. This brought me to the world of open source software, where I could take a look the code of every application that I used. Programming on a real operating system that didn’t allow me to just write to any memory address and reset/freeze the computer by doing that was a great change too. :) Of course, I was still interested by music software, so I starter learning Linux programming by porting the MXMplay module player (and laterMiniFMOD) to Linux.
The next period was pretty boring. I learned a few things about making websites, enrolled at university and needed money, so I started working as a PHP programmer. I wasn’t very good at it, but I quickly learned what I needed to know. This went for a few years, I was working on various kinds of websites, writing content management systems, creating modules for eCommerce systems. I got pretty good at it at the end, so web technologies ended up being the main focus of my professional career. I learned Python and some other languages and programming for me generally started being more about work and less about fun.
This changed when I discovered MusicBrainz. At first I only wanted to tag my files to get better stats on Audioscrobbler, but I realized that it’s an open source project I can contribute to, and it’s about web stuff AND music. I submitted a few smaller patches for the MusicBrainz server, then I was unhappy with the tagger application and started helping with Picard. Eventually I ended up maintaining Picard, which brought me to many other music-related open source projects. Since then, I probably touched the code of every component that MusicBrainz ever used. I worked on the client libraries, learned Perl to work more on the server, introduced many database schema changes, did some coding on the Java version of the search server. Heck, I even designed the graphic layout MusicBrainz is currently using. :)
After I finished the university and switched jobs, I didn’t have that much time for open source projects. I disappeared from MusicBrainz for some time, focused more on my career where I was working on larger and larger projects. I needed something fun to work on though and that’s basically when I started looking into audio fingerprinting and how the Acoustid project was born. It was something new and challenging and yet something that was needed. After a few months of reading papers, I started writing some code, got “good enough” results, wrote more code and that’s basically where I’m today.
During the last two years I started realizing that the web programming I do at work is probably not what I want to continue doing, at least not full-time, so this is actually the last month at my current job. I’ll have to deal with some health issues, then take a longer vacation and we will see what happens next… :)