One year later, 3 platforms, 15 languages, 24 releases and over a quarter of a million users. This is a look back on GPMDP, one year later.
So it's been a whole year, almost to the day, since GPMDP first went cross platform.
Sitting here writing this post at the same stupid time in the morning I released for the first time on March 5th, 2016. Lot's of things have happened in a year so let's go back and see what's been done.
So the journey began last year when I fatefully decided to share my application GPMDP on Reddit, just to see what people thought of what IMO was a pretty cool application. After a few hours, my inbox got flooded and my poorly configured server was dying under the immense pressure of the Reddit army. But with the help of Cloudflare and some other tricks I managed to keep everything going and it was absolutely amazing to see the great feedback and overwhelmingly positive response.
This was, however, just the beginning. I initially only released GPMDP for Windows and MacOS but it turns out a whole hoard of Linux users gather on Reddit, ready to pounce on unsuspecting developers. So having made the bad decision to release at 2 AM AEST I then decided to work through the night making the thing Linux compatible and with some help from some amazing devs on GitHub we got a Linux version released the very next day.
Then there was fire
When I first released GPMDP I had no idea what I would be getting myself into, between working part time and being a full-time student I wasn't ready for the time I would actually have to put into maintaining the app, let alone the actual cost of maintaining it as well. Luckily I quickly got a lot of help from some amazing Contributors and together we have kept the bugs at bay.
There have been some bad ones, though, I'll always remember that time I pushed out an update and bricked hundreds of installs in the first few seconds before I realized it was broken. That was a sad day :P. There was the time Google updated GPM and broke everything, the time everything just broke anyway and of course the time I made my own way to catch errors..., it's been a fun ride.
The Great Cast of 2016
From the beginning, the most requested feature of GPMDP was the ability to use the same Chromecast functionality you can get from the browser but in the app that everyone loved. And one fateful day in May 2016 with the help of @jostrander we got Chromecast working inside Electron.
You can see our glorious code over on the electron-chromecast repository, and yes we had to figure out all those raw TCP messages manually...
Initially GPMDP's logic was mostly jQuery based. As I learnt things I quickly discovered jQuery really wasn't the best thing to be using for large stateful UI projects like GPMDP. As such I started the massive process of rewriting the entire app using the React framework. You can see this stupidly big PR here that shows off how much changed between versions.
On a note for other Electron / React devs there's some pretty sweet code that you might find useful that was made as part of this move. For instance the redux like Settings connector for mapping React component props to Electron app Settings.
Translate all the things
Thanks to the amazing community, GPMDP is now translated into 15 different langauges including French, Spanish, Japanese and Pirate. Not much else to say about this apart from a massive thanks to all the community members who used their own time to translate GPMDP for the benefit of everyone else.
Well, at the time of writing we still have 26 open issues on the repository and no matter what I do that number seems to not want to go down, so I guess I'll be fixing those for the next little while :D. There's also a pretty cool plugin system in the works that will allow third party developers to make GPMDP even more awesome than it already is.
I've also moved into the more general Electron development world and am now a maintainer on the Electron project itself, along with a contributor to a wide variety of Electron related tools. See electron-forge, electron-devtools-installer, electron-chromcast, react-electron-web-view and electron itself.
I'm really looking forward to the next year and seeing where life takes me :D.