Miscellaneous update

Jul 26, 2013

Welp, as seems to be the norm with me, my blog appears to have once again fallen into a state of disrepair. Quick, time to make another long post covering everything that’s happened over the past few months! This time around I think I’ll eschew lists in favor of just letting my mind wander.

At the office, I started working on a hush-hush project. The only thing I can say is that it involves integrating a third-party user-agent into our software, thereby allowing customers the freedom to interact with our network elements and configure network services in a variety of ways (including a few popular ones that we haven’t supported so far). And I must say that the integration was really a pleasure. The code I was working with is really well-writted, it has a well-documented API, and the documentation notes all the caveats and stuff. And to allow other applications to integrate with theirs, they communicate with third-party applications (in this case, ours) over sockets, but I - as the integration engineer - did not have to worry at all about sockets. Really lovely API.

Speaking of sockets, we had a 24-hour “hackathon” at our company recently. Although I was expecting the whole thing to be somewhat uptight given the average age of the organisers and the general tone of the rules that were sent out a couple of weeks in advance, I was pleasantly surprised by how the whole thing turned out. Anyway, two of my colleagues and I worked on something that involved select-ing from a FIFO and a socket, and let me tell you: QNX is NOT standards-compliant. The way select works is that it you pass to it a block of fds, and then the call blocks until either of the fds has some data in it. You get that fd, read the data, and that data is REMOVED from that fd, letting you call select again. This works perfectly in linux, so in a few hours (about 7) we had our prototype up-and-running on linux. And when we tried it out on QNX, the select call returned IMMEDIATELY. And then we spent the next eight hours (the whole night that is) trying (in vain) to fix it. We finally ended up putting a quick hack in for the demo at the end of the hackathon, and we did win one of the prizes, so I guess all’s well that ends well; except, this hasn’t ended. A few days back we received a mail saying that the company wants us to look into getting our code production-ready. Oops.

What have I been doing with my spare time for the past few quarters, you ask? Well, I’ve been playing games! More specifically, I’ve been playing Starcraft 2. Trying to play Age of Empires back in college is what put me off the whole RTS genre (gold, wood, food, stone.. too many resources!) but I started watching Day9’s Dark Souls videos after someone linked to them on /r/DarkSouls and I really liked the guy, so I started his livestream and got convinced to buy the game. And so over the past few months I’ve been practising and working my way up the ladder, and right now I’m somewhere at the top of silver. Another side-effect of watching Day9 is that I’ve started getting up early in the morning on the days that he’s streaming, something that was impossible for me to do otherwise.

Speaking of Dark Souls, I changed my motherboard recently and had to reinstall Windows (UEFI for the win!), and post-reinstall Dark Souls wouldn’t work. It kept insisting that my product key had already been used by someone else. After wasting several hours navigating around the GFWL customer service and one week of waiting, they finally replied with “We’re sorry, we appreciate your loyalty, but go fuck yourself”. Or rather, they told me to get a new key from the retailer. And going by others’ experiences on the web, unless your retailer is Steam you’ll always be pointed back towards Microsoft. Oh well, good thing that I anticipated something like this happening and picked up an extra copy during the recent Steam Summer Sale for a paltry $7.5.

In unrelated news, I seem to be finally getting over my visa-rejection blues (yes, I know it’s been a year, thank you) and have started looking at making games again. In particular, I’ve been looking at libgdx, which is a roll-your-own gamedev framework. I call it a framework rather than an engine because it’s really hard to call it an engine. It’s more of a collection of libraries that have been tightly integrated to provide as seamless an experience to you as possible. If you’re a newcomer it might look like one big blob to you, but having been around for a while I could recognize different names like Tiled, Box2d etc. peppered around the sample code. And that’s not a criticism either, I love what the creator has done and that’s why I’m interested in using it. I don’t know if you’ve noticed, but I really dislike having my hand held through anything. I’ve hosted my own website on an AWS instance, my last foray into web-based gamedev was with jsGameSoup, I’ve been looking to move this blog out of Apache-Wordpress and into Poet, and now libgdx. My next post will be about libgdx and an amazing 2d-skeletal-animation tool. Until then, adieu!