• ## Undertale

I’m writing this blog post at midnight. As I write it, I am getting over a cold. I need to sleep, not only because I need to beat my sickness, but also because I have a midterm on Tuesday, and I need my sleep schedule to be in whack for it.

Yet, as I lay awake, staring at my ceiling, I can’t fall asleep. And, stupid as it is, the reason for my wakefulness is (partially) a stupid indie RPG made by a dog.

• ## mruby, C++, and Template Magic

For the past few days I’ve been trying my hand at making a simple 2D game engine. It’s a challenge that involves math and programming, two subjects I greatly enjoy.

I decided early on that I would use Ruby as the engine’s scripting language. Ruby’s pretty much my favorite language, and its ability to create DSLs seems like it would be highly useful in enabling users of the engine to be productive. The normal ruby interpreter, of course, isn’t well suited to embedding—it’s way too big and heavy. Thankfully, there’s another implementation called mruby, which is designed to be used in more resource-constrained contexts. That matches my use case pretty well, so I set it up.

Now, I needed some way to bind ruby methods to my native code. Ideally, I’d be able to expose C++ classes and their associated methods to ruby natively. I found a library called mrubybind that seemed to do what I wanted, but I soon found it had limitations. The biggest limitation was how it handled parameter types. With mrubybind, your methods can take ints, booleans, strings, floats, and void pointers. That didn’t sit well with me. void * is a horribly unsafe construct. It has its uses, of course, but I’d rather have something with a bit more type information.

It soon became clear that I would need to bite the bullet and write my own library. Hopefully, I could make use of C++ templates to design something with an interface that isn’t too terrible.

• ## Feature Suggestion: Website Issues

Recently I’ve been thinking about ways to allow users to give feedback on ImageHex. ImageHex isn’t fully launched and lacks users at the moment, of course, but I think that the ability to provide feedback is going to be crucial. I’m the sole developer of the website at the moment, and it’s going to be difficult (if not impossible) for me to track down any bugs it’s likely to have. This is especially true as I lack any kind of android device to test it on, meaning that there’s almost definitely a lot of minor (or major) visual glitches for android users. I’m working on rectifying that situation, but even when I do some things are bound to slip through the cracks. If companies that make millions of dollars a year can’t keep bugs out of their software, it’s highly unlikely that a college kid with no money will succeed where they have failed.

• ## Matrixes and C++

This semester, I enrolled in a linear algebra class in college. I was having some trouble learning it, so I figured I might as well expand my knowledge by writing a program. I picked C++ to be the language for this, mostly for speed, but partially because I haven’t written C++ in a while and wanted to try my hand. Of course, my version isn’t going to be nearly as fast as the hyper-optimized libraries the pros write, but that’s fine. This is just a learning project, after all.

• ## Tables

I’ve been using this web page for my CS192 class at Colorado State University. As part of one of the assignments, I have to use a table. So there’s a table after the break.