Resurrecting a prototype Chromebook with Arch Linux

In 2011, I was selected to be a part of Google's Chrome OS Test Pilot Program. I received a free Google Cr-48 laptop, and it was an absolutely charming machine.

The rubbery, matte-black chassis had absolutely no branding anywhere on it. Upon opening the lid, the system would boot into Chrome OS, which, at the time, was literally nothing more than a fullscreen Chrome browser—no desktop, no apps, nothing.

I used the Cr-48 throughout college, often as a thin client that would connect to my desktop PC via Chrome Remote Desktop.

[more...]

My simple, life-changing keybinds

One day, I got fed up with constantly reaching for the arrow keys or the mouse while typing. So, I set up a few simple keybinds that let me jump the cursor around and select text without having to move my hands off the keyboard.

[more...]

Rapidly building custom file formats for my game

Earlier this year, I had to figure out how I was going to load level data into Magicore Anomala. A level contains backgrounds, sprites, animations, dialogue scripts, and much more. Ideally, I want to pack all of these things into a single file, so that I can deal with the filesystem and file names as little as possible.

I did some cursory searching on tools or frameworks that make it easy to define and build custom file formats, but the stuff I found was a little too complex for my use case, and not flexible enough. So I created my own tool, and I open-sourced it in case others find it useful too.

[more...]

There is no "if" in Assembly

If there was, it would be spelled "Assemblify", which is now the name of your next startup.

So, the cool thing about Assembly is that whenever you perform an instruction, the CPU runs a bunch of comparisons automatically! They are stored in "condition flags", which you can use to branch (goto) or do other stuff if the right conditions are met.

[more...]

Assembly tricks for fast bounds checking

I came across a cute little trick while looking to optimize my physics routine in Magicore Anomala.

In the routine, I need to check if each object is inbounds, and deactivate it if it goes out of bounds. Pretty typical situation, and we'd probably see it written as something like this:

[more...]