2017 has been an eventful year. On a personal level, it involved a transition to university and a busy winter semester that immediately followed – the last five months have seriously flew by.
That said, here are some of my highlights from 2017:
Shapes That Move: a platformer game written in 6 months
Shapes That Move was the first full “game” that I ever developed. Written using the Unity framework, this was actually my (high school) senior year CS project that I later decided to publish.
In hindsight, I should have reflected on this work last summer when the details were fresh in my mind, but I wasn’t too keen of a writer then. That said, here are some of my lasting takeaways:
- Adaptibility is key. My background to date has been mostly Python, and I had previously expected that jumping to a new language (C# in this case) would be a difficult task. This was absolutely not the case: the common concepts for any high level language still remained in place. Having worked with classes and inheritance in previous projects for example, Unity’s method of representing each ‘thing’ in the game as a GameObject simply made a lot of sense.
- No set of tools is perfect. This was my first time working with Unity, and the work it took to implement individual pieces varied unpredictably. Adding forces, collisions, and triggers were comparably easy for instance, but other tasks such as scene management and scripting animations were seriously painful. (Specifically: Unity only allowed certain kinds of files to be loaded directly from asset folders: plain text files that I used to store “level packs” in were OK, but actual scene files were not. This was a sore point and I had to rely on custom editor scripts to build the level scenes on every update…)
- Beware of feature creep. This might sound strange for a game, but I added a lot of mechanics to ShapesThatMove in the last few weeks of working on it. In hindsight, I fault myself for having been too specific in the original project proposal (which included specific features and timelines for getting them done), while not having a good sense of what I was actually jumping into. The amount of things I had to cram in led to instability and an incomplete final product by the time late June kicked in.
- I am not a game studio! By the end of the term, I had written a passable core of a game, but the code was nothing marketable. Although this wasn’t exactly a goal in my project, this made me realize just how much of an investment designing an appealing game required. (As of writing, ShapesThatMove has minimal graphics and no sound whatsoever!)
- Bittersweet endings… When June came around, declaring the project “done” felt incredibly abrupt. The many months I spent working on the game and sharing new developments with my colleagues and friends were a lot of fun. The project was over, and my motivation to continue working dropped considerably. (Practically, it’s the lack of overall goals plus the pains of setting up Unity Editor on Linux contributing to this). That said, the source code is freely available and I may go back to it sometime down the road…
Fixing my first ever CVE from the other side of the world
Essentially summarized here: bugs.debian.org/868705
To put it simply, the first CVE I ever fixed was nothing serious – its attack vector was relatively limited and the impact quite benign (who in the right mind would bother exploiting VBScript on Linux?!). But it was the timing of events that I found particularly memorable – I was on vacation halfway across the world, feeling the summer heat, and still managed to type away on my laptop and fix some security bug. Once a coder, always a coder…
This bug was labelled CVE-2017-11421 and even earned its own codename! (“Bad Taste”)
But I wouldn’t be surprised if you had never heard of it…
PyLink still flying!
As you may find from the other posts, PyLink has been my single biggest project thus far. In a year to date (counting from the closest release), the main repository has received over 900 commits and some significant core restructuring.
(No tech blog would be complete without big numbers being thrown around, right?)
Here’s to a great 2018!