Ginger is a morph target demo that was initially written in 2011 for chrome experiments, and then rewritten to work as progressive web app in early 2016. In essence, Ginger is a customizable head that uses a slider to tweak various facial features, much like a character customization system one would find in a video game. It also supports taking screenshots, and generating share links that can be used to share your creation with others.

I’ve messed with Discord bots in servers quite a bit and I’ve always had fun with the various game bots that I’ve encountered. I’ve played with complex bots that play Cards Against Humanity, and relatively simple bots like one that emulates an 8 ball. All the 8 ball did was respond with ‘Yes’ or ‘No’ at random, and even a bot that simple is very fun when played with friends. I wanted to get into the Discord bot creation game to see how these things tick.

Not too long ago I started to dabble in low-level graphics programming again. I set a goal of creating a basic scene that can be defined in a similar way to production-grade game engines like Unity and friends. I felt comfortable with basic OpenGL at the time, however the guides that I followed never told me how to create a hierarchical scene.

⚠️NOTICE: This article was written several years ago and is likely out of date.

App Engine is a service by Google that provides hosting for web applications. Depending on how much traffic your application receives, App Engine will dynamically allocate resources to your infrastructure. App Engine has historically been somewhat limited in functionality when it comes to language support and control over your infrastructure; however this has changed with the advent of App Engine Flexible Environment which is more resemblant to services like Elastic Beanstalk.

⚠️NOTICE: This article was written several years ago and is likely out of date.

With the rise of cloud computing and the proliferation of new users to the web, it has become a necessity for successful web applications to be able to serve thousands of users whilst being reliable, fast, and secure. People depend on web services for their day-to-day lives much more than they did during the internet’s infancy, and it’s expected that applications meet user expectations in order to stay relevant.

A few months ago after a tiring day at work, I came across a post on /r/programming about livecoding a N64 emulator in rust and instantly became hooked. That stream piqued my interest in the subject of emulation, along with giving me that wonderful feeling I had when I first got into programming. After reading some discussion in the stream comments, I decided the best way to get introduced into the emulation scene was to write a CHIP-8 virtual machine.

⚠️NOTICE: This article was written several years ago and is likely out of date.

Traditionally, Go has handled dependencies by installing them all in the same directory under $GOPATH/src. This works fine if you’re working on a small application you do not care too much about; but if the project is large or has lots of developers, version locking dependencies becomes a must, lest library version mismatches will ruin your day.