Development History

December 10, 2013-

I wrote the first line of code for Basketball GM back in 2008, after I had graduated from college but before I started grad school. That code was C#, which I had never used before. My primary goal was to learn a new programming language and learn how to make traditional desktop GUI software, as previously I had only made software with either command line or web UIs. I was not sure if I was a good enough programmer to complete such an ambitious project, but I figured I'd give it a shot.

Quickly I grew frustrated with C# and switched to Python (and PyGTK), which I had also never used. Python is now my favorite language, in large part due to things I learned while working on Basketball GM. However, although the Python/PyGTK version did ultimately reach version 1.0, I was no fool. I could see the tides changing. Nobody wanted to download and install software, they just wanted to go to a website and have everything automatically work.

So in 2012, I set off to make Basketball GM a web app. First I tried using Django, but I quickly grew frustrated with its heavy-handedness. Then I switched to Flask, which was much nicer, and eventually ported the entire game over. The only problem was that it would be completely infeasible to run Basketball GM on a server. It's far too CPU intensive. I'd have to come up with some other strategy, like charging a monthly fee, significantly simplifying the game, or moving some of the processing to client-side JavaScript. None of those options sounded particularly appealing, but the last one seemed like the least worst one. So I started to learn JavaScript.

In the process of learning JavaScript, I also learned about all these fancy new HTML5 technologies. One of them, IndexedDB, seemed to me as if it would allow me to actually move all processing client-side, not just some. However, it had poor browser support, an ugly API, and hardly anyone used it (let alone used it as intensively as I would need to). Despite that, the more I thought about it, the more I realized that this was the only path towards making a game that could be accessible to a wide audience.

In under a year of part-time work, I learned JavaScript and ported Basketball GM over completely. Throughout this time, I continued to think of the game similarly to how I first did: as a way for me to learn new technologies and have fun. I still didn't really expect that it would lead to anything that other people might get interested in. But I kept working on it. As it improved, I began to think of it as an insurance policy, that if I decided I wanted to switch careers and become a web developer, then Basketball GM would serve as a great resume. That never happened, though; instead, I finished grad school and found a good job in computational biology.

But I continued to work on Basketball GM, adding features and improving the game until I felt it was something that at least some small subset of basketball nerds could enjoy. In August 2013, in between the time I finished grad school and started my current job, I posted it to Reddit's /r/nba, thinking that the only people reading that in the summer would be exactly the kind of person who would be interested in my game.

And I was right. I got a really large and really positive response, and every day hundreds of people spend an average of 1.5 hours each playing Basketball GM. We even got a shout-out from Houston Rockets GM Daryl Morey. This is all way more than I ever even hoped for when I started writing Basketball GM, but I still think there is a lot of room for growth, both in terms of improving the game and making the game more popular.

(By the way, if you think you know how I can make Basketball GM more popular, please email me.)