A Presentation on Virtualization


“Virtualization and you” was a little something I wrote for a course in system administration a couple years ago. One of the pictures near the end might look familiar.


Computational Speedrunning Rears its Ugly Exponential Head


(Updated Aug. 8th with more formal descriptions and a nice diagram)

The realization of the previously mentioned tool-only speedrun generator idea is now well underway, thanks to the wonderful libretro project(s) that implement emulators for retro game consoles in terms of a general-purpose (though heavily SNES-influenced) API.

The basic idea, to summarize the story so far, is to treat the emulated game as an implicit graph, and use one of a number of graph searching methodologies on the “savestate space.”  Suppose we have a “successor” function NextFrame(Sn, I) that takes the savestate Sn and the input state I, and returns the result of loading Sn in the emulator, running the game for a fixed amount of time with input I, and saving a new state Sn+1.  Here’s an example of the expansion of an initial state S0 with all the input possibilities of a simplified controller with only an “A” button that makes Mario jump, and a “right” button that makes Mario move to the right.

A simplified diagram of a single step in the search.To express this in (Python-like) pseudo-code, we might say:

B = {'A', '>'}  # the set of buttons to consider.
def Expand(S):
    for I in powerset(B):
        yield NextFrame(S, I)

Read the rest of this entry »

Google Play Intervention


Listen, Google. I love you. We all love you. That’s why we need to have this talk.  This “Google Play” bit has been going on too long, and I think it might be getting a little too late to back out and laugh it off like it was a joke.

You see, you’re a distinguished company that uses computers to help make the world better (having Google Maps on my Android phone has gotten me out of a few sticky situations, Google Calendar is basically the only reason I ever made it to class on time during college, and the list goes on).  I respect that a great deal.  That’s why I think you should have a respectable name for what you used to call Android Market.

Read the rest of this entry »

On Memory Hogs and Compression, Part 1.


A line I picked up from one of my high school Computer Science teachers: “Graphics are memory hogs.” Computers represent pictures as a big grid of colors. Each cell in this grid is called a pixel (short for “picture element”), and usually has an ordered triple of numbers representing what color it should be.  When these pixels are very small and numerous, the picture looks less like a collection of squares, and more like the picture represented.  A similar effect is used to shade and color graphics in newspapers; look closely enough and you’ll notice that the colors are made up of lots of tiny colored dots.  Let’s look at an example… Read the rest of this entry »

Done purely for the Hack Value.

Several emulated video games running on the sides of a Compiz desktop cube

Several emulated video games running on the sides of a Compiz desktop cube

Hooray for the PC. Nobody would actually play like this, mind you, but the fact that they all run without conflict is certainly impressive-looking!
I’d say “see if you can name all the games!” but many of them are showing title screens. See if you can name all the consoles being emulated!

Constructing an 8-bit music application for the NDS.


I’ve started to code an 8-bit music tool, inspired by the work of 8-bit artists like Bit Shifter and Bubblyfish, both of whom were brilliant to see live at the concert of Stevens Anime Club’s annual Castle Point Anime Convention earlier this year. The two aforementioned musicians compose and perform their music on the Nintendo Game Boy (as do many other 8-bit musicians), using its PSG to generate the blips and beeps of various frequencies that make up their songs.

The Game Boy Advance is generally used for this, presumably the last of the “Game Boy” series of hardware from Nintendo, because it has hardware backwards-compatibility to all the software of the original Game Boy, and because the older Game Boys are just that–older, harder to come by, and more likely to be broken.

The Nintendo DS isn’t backwards-compatible with the older Game Boy software, but it is backwards-compatible with GBA software. Since the GBA exposed the original Game Boy’s PSG to GBA-specific software, the DS must also provide that functionality, so the same type of PSG was included in the DS hardware. This is fortunate, since the DS is relatively easy to develop for, thanks to devkitPro. An example of the use of the PSG in the DS can be found in the very nifty AXE, written by PinEight. Read the rest of this entry »

Finding the most efficient way to be a college student during the summer


Throughout the course of my stay at Stevens, I’ve found that, as a college student, one of the most important things to know (if not the most important thing) is where and how I’m going to get my next pizza.

In a normal semester, there are many events run by student organizations, clubs, and the like, where each use part of their budget to get some pizzas to attract more people to their events. This is the most cost-efficient way to obtain pizza (short of someone finding some way to get paid to eat pizza (I’m all ears–if you’ve heard of anything like this, please comment)). It’s also good because the pizzas often come from one of the many fine pizza restaurants in Hoboken. Read the rest of this entry »