How I got into programming Link to heading

Hey there! My name is Miroslav Vasilev, usually shortened to just Miro. I’m a programmer, and I’ve been doing this ever since I was 13. To be honest, I don’t believe I really thought of myself as a software developer back then. Really, it was more related to my gaming than anything else. I was a complete fan of the Grand Theft Auto series of games, and I’ve played pretty much every single one of the 3D titles.

And that’s sort of where my journey as a developer began, on one rather uneventful and possibly boring summer day ( you know the ones, when the outside temperature is in the high 30s C and you’d rather live through nuclear armageddon than have to endure even 5 minutes of blisteringly hot direct sunlight outside ). I was playing “GTA: San Andreas”, arguably my favorite game in the series, and I had an interesting thought pop into my head. “Gee”, I must have wondered, “wouldn’t it be great if I could play in the same game world as other people?”. Of course, I’d played a couple of MMOs by then, namely rather obscure ones like Talisman Online and Puzzle Pirates. I was aware that such a concept existed, but I was really excited about the idea that GTA: San Andreas had the definite potential to host other players than just myself. It would be a terrific laugh, I must have thought, going around Los Santos, doing drive-bys on my friends, stealing cars, having shootouts. You know, the normal sorts of things a 13-year-olds brain is filled with.

Well, lo and behold, my dreams were no more than half a minute into their inception than I was speeding off to Google to look up if there was a way to play multiplayer in this game I enjoyed so much. Sadly, my dreams were quickly quashed by a couple of game reviews I found that also lamented the lack of such a feature in the original game. Rockstar, I suppose, didn’t really consider it worthwhile to work on, so it never got done. Interestingly, we fans of GTA had to wait until GTA V to get a proper online experience, and even that’s not on par with what I found for GTA: San Andreas even well over a decade later. But I digress, my search was for nought, as the game by itself simply couldn’t allow me to do what I wanted.

Except… a couple of minutes of browsing later, and I had stumbled across a most fascinating idea, one which hadn’t really occurred to me until that very moment. What about mods? And so an entire world opened up for me right then and there. I quickly altered my search on Google to reflect this revelation of mine, and before my very eyes the search engine spat out the answers to my yearnings: a multiplayer mod for GTA: San Andreas called Multi Theft Auto ( or MTA for short ).

It must have taken me less than 15 minutes to download and install it. Incidentally, this was probably the first time I ever modified a game. Not that I knew what that even meant then, or how it worked. All I was aware of was that I could finally get to see someone other than myself in-game, and even interact with them!

I remember well the first week of discovering MTA. I would venture to say, despite my having played MMOs beforehand, this was the very first “complete” multiplayer experience I had had. I remember clearly joining my first server, and also the one I would spend the next 5 years playing on. It was called GameNet, and at that time it was owned by a finnish man who I only knew as Taalasmaa. Of course, I wouldn’t know who he was until later. For starters, I had to meet the other people on this server I had just joined, and to this day I remember their pseudonyms clearly: GrimRipper from Serbia, Progex from Georgia ( the country, not the US state ), Pope whom I can’t remember the origin of, BigBadButler from Germany, Taalasmaa who I’ve already mentioned, JasperNL from the Netherlands ( as his name might suggest ), and Saeed ( later Jaguar ) from Lebanon. These people would become my online friends for the longest time, well into my teens. I still to this day keep in contact with some of them, though less frequently than I probably should for all the time we use to spend together.

GameNet itself was what was referred to as an “RP” server, short for “Roleplay”. The intention was to essentially replicate real-life: there were various activities one could do to earn in-game currency, and with it one can purchase various vehicles, real-estate, weapons, and many other things which were part of the vanilla GTA: San Andreas game. Looking back at it today, it was downright primitive, even compared to some of the still-running RP servers on MTA. Its mechanics were nothing worthy of being called “complex” and most of the fun of the whole thing came from the novelty of playing GTA with other people. And boy, did we exploit it to its full potential. I have fond memories of teaming up with my friends to go raid others on the server, forming groups amongst each other, and the rivalries and alliances that came with that. It’s a fond time of my early teen years which I cherish.

Though, I’m sure if you’ve survived my excessive over-detailing of events thus far, you may be beginning to wonder what any of this has to do with my journey as a software developer. How do I go from playing a multiplayer mod for a game released over 17 years ago, to writing backend code in C# for loan origination in the banking sector? Well, MTA was a source of many firsts for me, including programming. See, the way it worked was that someone, at some point, had de-compiled the base game and that allowed them to figure out where and how the mod needs to hook into various parts of the binary and modify its behavior such that it would allow for multiplayer and all these terrific things I got to experience with my friends. This is actually such an interesting topic, I would like to write an entirely separate blog post covering just this, because I consider it a worthwhile subject. But for now, all you need to know is that MTA “hooks” into GTA by injecting some code in some places.

The end result of the effort expended to do all of this wasn’t just multiplayer - it was an entire game engine which could be scripted with the Lua programming language. This is where I got my start. One fateful day, I had managed to figure out how to host my own server, and that in turn lead to me discovering the in-game console. Luckily for me, one of my friends had already messed about with this, and they gave me some pointers and linked me to the best technical documentation resource I have ever encountered in my total 12 years of both professional and non-professional programming experience: the MTA wiki ( https://wiki.multitheftauto.com/wiki/Main_Page ). I won’t get into it here, because this is also something that’s blog-worthy. In one sentence, this wiki needs to be preserved and used as a reference for people to see, understand and learn from on how to write technical documentation. It is as close to immaculate as I believe it may be possible to be.

From there, my fate was sealed. I must have spent months doing nothing in my free time other than writing scripts for Multi Theft Auto. I remember getting up at 6am, an hour and a half before school at times, just so I could get an hour of coding in. I would skip homework assignments I didn’t care about so I could get just that extra bit of scripting in. Doing this produced feelings and emotions ranging from unending frustration with broken code and inexplicable bugs, to joyful glee and near-limitless euphoria when I managed to get them fixed and everything just started working like I intended it to. It was my first real taste of programming, and I loved it then, and I still love it today.

Eventually, my friends and I started collaborating. By that time, the server had already changed hands, as the original owner wasn’t very interested in continuing it. They had given it to JasperNL, who was also very interested in programming, and both of us together at one point worked on coming up with new features and mechanics for players to enjoy. We came up with concepts, argued about them, implemented them, broke them, fixed them, and ultimately drove the server further and further. Player counts weren’t always stable, sometimes we’d get less, sometimes we’d get more. Eventually we noticed the trend, and it was going downwards. The simple fact was that we couldn’t keep up very well with some of the other RP servers. Their scripts were better polished, less buggy, and had in general more functionality. After all, we were still barely more than kids still, so it would have been unreasonable for anyone to expect more. Not that we saw it that way - we always gave our best and pushed and tried new things, but eventually the fire fizzled out and we entered into a sort of maintenance mode for the entire server.

And it was at this point that I chose to abandon the project and look elsewhere for my entertainment. Well, I suppose that’s not the only reason why, I must have been 16 when I stopped playing MTA regularly. Like any teenager of that age, flights of fancy were par the course, and soon I was off exploring another one. Not before I spent a couple of years playing World of Warcraft, of course. But that, like the story of how I got into writing Minecraft plugins afterwards, I should probably leave for a different post. After all, this one’s long enough as it is.

To conclude, my journey writing code started 12 years ago, on a mod for a game I enjoyed, and it was born mostly out of trying to fill my time on a boring day.