Recently, I came into possession of an original Macintosh 128K; you know, the January 1984 Macintosh that was previewed to the world by a confusing but extremely memorable SuperBowl ad involving a sledgehammer entering Bill Gates's face. The moment I laid my eyes on this beautifully old piece of hardware, there was but one thought in my mind: I have to write a retro platformer for this thing.

This statement doesn't require too much elaboration, but I will remind the world about my still-in-progress game "Aromatherapy", which was supposed to be an exploration platformer that twanged at one's retro heartstrings by presenting itself as the screen of a CRT monitor. An idea I was particularly proud of in the conception of Aromatherapy was that the monitor was supposed to start glitching and breaking more and more as you advanced in the game. A lot of the idea was based around how much nostalgia I have for a time period of computing I did not even live through. While I haven't worked on Aromatherapy in some months now (since March), I am interested in continuing work on it again when inspiration strikes me again. Until then, I've decided to occupy myself with a perhaps even more inane venture.

So, there's the goal: write a platformer for the Macintosh 128K. Whether or not this platformer runs on the Mac OS or is just 68k assembly inside a beautiful Macintosh box is yet to be decided. However, for this post, I have decided to focus on a slightly smaller goal: getting the Macintosh to boot. Therein lies the first problem of this post:

Problem 1: I do not have a Macintosh 128K system disk.

Hatkirby on September 9th, 2015 at 1:00:00am
👍 1 👎

During my leave from school, I've been funneling my creativity and recuperative free time into making a autobiographical game. I've tweeted about it quite a bit in the last month. Progress has been slow, due to the illness that I'm recovering from, but the progress made so far has been both fun and illuminating. I'm using C++ for this project, of course not for the first time, but still, using C++ always results in you learning something strange about the language that you probably didn't want to know.

One of the things I've been implementing for my game engine has been an entity-component system. In short, such a system consists of two fundamental objects: entities, and components. Entities are perfectly generic objects that have no properties besides being able to contain components. Components are specialized objects that provide specific functionality to their parent entities. Such a system allows one to decouple a lot of the inner workings of a game engine as well as provide a simple way to mix and match functionality.

So, to start implementing this system, I created an Entity class and a Component class. I wanted Entity to be able to contain Components, but I didn't want to have to go through the trouble of writing my own linked list implementation, so I used one of the STL containers, list, which provides the exact functionality I am expecting. Well, almost the exact functionality, but we'll get to that later. Component was implemented as a class with several virtual methods that could be overridden by subclasses to provide their specialized funtionalities.

Hatkirby on March 4th, 2015 at 12:00:00am
👍 1 👎

Working on rawr-ebooks recently has allowed me to tinker with the writhing mass of horror and love that is C++. You may not be able to tell from this that I am a massive fan of C++. The nitty gritty, say what you mean and EVERTHING you mean fifty times methodology of C++ is actually a great amount of fun for me, and what would be better than implementing a fun algorithm in a really fun, rigorious programming language?

One of the incredibly fun parts about C++ is that it's practically a well of undefined behavior. If you aren't doing things exactly right, there's really no telling what will happen. And how do we define "exactly right"? Well, we're not always completely sure about that. Here's an instance of that.

As you may know, there are two real ways to allocate memory for a struct in C++. One is to use malloc or calloc, pass it the sizeof your struct, and then cast the resulting pointer to a pointer of your struct. The other, fancier and C++-exclusive method is the use the new operator. While this is all fine and dandy, it turns out that these methods are not exactly equivalent. I'd like you to examine the following two blocks of code and tell me what they output, okay? Let's have some fun.

Hatkirby on October 6th, 2013 at 1:00:00am
👍 1 👎

My old website, Four Island, may seem like a blog, but in fact it was more like a community. Its main purpose was to serve as a watering hole for my group of friends, especially after I moved to America and the rest stayed in Australia. Combined with the fact that we were a creative bunch of kids, it follows that Four Island ended up producing many a weird project, like a webcomic about linens or a newspaper chronicling the fake adventures of Four Island's inhabitants. Perhaps the most poignant of these projects (and probably the oldest too) was The Greatest Story.

It was almost five years ago that my friend Amelia came up with the idea to write a story together, as a group. Normally such an endeavor would be lost to the procrastination and disorganization of young adults, but we were different. We had a strong project leader. To quote her initial idea:

I wasn't sure whether to put this in Deck of Cards, Spam or here, but this is a collaborative effort and it's cool. I just thought this up.

So, want to write a story, but haven't got the time or drive? Why don't you work on a story with a small group? It can be insane, random, funny, sad or... anything!

My idea is that we form a small group, and we each contribute a character of our own making, using a bio sheet. Then, one person types up a chapter and posts it, another person makes another chapter after the first chapter and posts it and we keep on going until... THE END. The only rule is that you can't type two chapters in a row unless you has permission. Oh, and the story must make some sort of sense

Hatkirby on January 11th, 2013 at 12:00:00am
👍 0 👎

In an article arrogantly entitled "If you see a UI walkthrough, they blew it," Max Rudberg argues that new-age apps such as Clear pander to the college-aged hipster "intellectual" who likes to have the snazziest apps. His contention is that these simplistic designs, which require a tutorial on how to use them, detract from the user experience rather than enhancing it. My opinion, however, is that Rudberg is confusing gimmickry with innovation.

Clear's UI, while unfamiliar, feels rather intuitive to me. For the unfamiliar, Clear is a to-do app with a very minimal interface (an example to-do list is pictured). To a new user, it is not obvious at all how to get around the app, because instead of buttons and switches, you use a bunch of gestures to achieve things, which are explained upon first launching the app. Now, not all of these gestures are entirely intuitive, for instance, swiping downward to create a to-do is a bit confusing, but this app is attempting to change the way people think about UIs.

Hatkirby on January 4th, 2013 at 12:00:00am
👍 0 👎

I like to think of myself as a capable programmer, but as a designer I have a lot to learn. For instance, the making of this very site, while easy programmatically, took a very long time to complete because I couldn't figure out a pretty design for it. And so this follows with app development.

It was practically a year and a half ago that I started work on the app Cartographic, and let me tell you, I did not spend a majority of that time programming. In fact, not only did I get most of the work done in late 2011, I think I only made one or two commits in 2012 overall. What, then, is the problem? Am I simply lazy? No (at least, I hope not), the problem really lies in the fact that without a graphics designer, my project isn't going anywhere.

Cartographic is a good game (if I do say so myself), in that beta testers have responded well to it. It is playable and it is fun. However, the graphics are not only really quite awful, but also consist of sprites and backgrounds I borrowed from other games. Clearly this is not a shippable state of affairs. I wrote the entirety of Cartographic in a few months, but the fact that my app has to look good, coupled with the fact that I couldn't create pixel art if my life depended on it, is forcing this project to take a backseat to things that are more easily designable (like websites, which can be simple yet elegant, unlike iPhone games).

Hatkirby on January 3rd, 2013 at 12:00:00am
👍 0 👎

This is going to be kind of a personal post, and really, I'm not sure how else to contact all of my old friends together. I'm not even sure if everyone still checks Four Island. Regardless, I've been doing a lot of thinking and it's come to my attention that as Four Island decreased in usage from 2009 onward, my depression increased. When The Fourm stopped being frequented altogether in 2011, which kind of corresponded with some negative real life events, things got worse, and then by 2012 I had joined Tumblr and things continued to decline.

The thing is, I never realized this before but Four Island isn't a blog. It isn't a professional website. All of the work I've been stressing over for years in making Four Island professional and using Wordpress and all of this stuff is counterproductive to the point of Four Island. Four Island always was two things to me. First, it was a project. Rewriting Four Island completely to create Four Island 3 would be a joyful and fulfilling activity, especially if I insisted on implementing all of the insane ideas I had for it. The thing is, I always laughed at myself for thinking that those ideas were sensible, but I completely missed the fact that Four Island is not a professional website, it is a connection to my friends, and therefore things like FourChat make sense.

Second, it was a safe place. Lacking many real life friends, many teenagers turn to online communities, and it just happens to have turned out that I created one before being forced to leave my friends in Australia. I don't know exactly what's happened over the last few years, but I can assume that it's a standard case of distance-separated friends drifting apart. At this point, Drifty is the only one of my friends I even occasionally talk to anymore, and things are kind of tense between us because of some things I've done. It's the usual tragedy of growing up, except for me, it had other effects. Because Four Island ceased to be a community where I could hang out, I eventually turned to another community, Tumblr, to fulfill my need for involvement with other people. However, these people are unknowns, they are strangers, and they are mentally ill. Tumblr is not a safe place. Tumblr fostered the development of my depression and my anxiety. This is of course not to say that I wouldn't be depressed if I hadn't gone on Tumblr, but I think I can safely say that if I were still close with my Australian friends, and if we still hung out on Four Island, and I was still tweaking away at my code and adding useless stuff that no one cared about and people commented on my blog posts and we talked enough to actually have things to quote, I don't think I'd be where I am right now.

At this point, I don't really know what to do. All of my old friends have moved on to different communities and have made other friends, and I don't have any friends left that I'm close enough to form a community with. I feel like this post has an accusatory tone associated with it and I apologize for that: I don't blame anyone for my descent into depression and in fact I thank you all for helping me stay connected for so long, even though we eventually broke apart. I think the real truth is that I should shut down Four Island. It has no function anymore. I'll never delete the data, but Four Island has lived a rich, full life and whether or not I realized it at the time, it served its purpose. With regards to where I will go communitywise, I do not know. I don't know if I could create another community with people at Carnegie Mellon, especially because while I love my new friend, I think she's too cool for me. I'm afraid that I can't have that same connection that I had with Shaun when I first showed him my website and somehow, a community grew out of it. She's not as desperate for friendship as we six teenagers in Australia were.

I'll drift. I don't know where I'll end up in the end. But I thank you for making the golden age of Four Island the best time it possibly could have been. I wish you joy in your new communities. Goodbye.

Hatkirby on December 30th, 2012 at 6:39:58pm
👍 0 👎

I was going through some old posts on the Fourm (which is to say, all posts on the Fourm :3) because I was bored and I found a post in which I inadvertently did some discrete math in counting how many different badly-named clones of Gryphic there were, given that a badly-named clone of Gryphic has 7 letters, they have at least one letter in common, and that letter is in the same position in "Gryphic" and the badly-named clone. I appear to have used the Rule of Product and came up with the number 2,162,410,431. However, having now actually taken a class in discrete math, I can see that this is very wrong and in fact overcounts the number of possible Gryphics. And because I'm still bored, I'm going to write out a proof. :P

Let $latex L$ be the number of badly-named clones of Gryphic. First of all, we note that a badly-named clone of Gryphic has seven letters in its name, and at between 1 and 6 of those letters match those in "Gryphic." If 7 letters matched, then it would not be a badly-named clone, and if 0 letters matched, the clone would have no relation to Gryphic at all. Next, we partition on the number of letters that differ. If we let $latex A_n$ be the number of badly named clones of Gryphic with $latex n$ letters in common with "Gryphic," then by Rule of Sum:

$latex L = \sum\limits{i=1}^6Ai$

To construct a badly-named clone of Gryphic with $latex n$ letters matching, we first choose which $latex n$ letters should match (there are $latex \binom{7}{n}$ ways to do this), and then choose unmatching letters for the remaining $latex 7-n$ letters. If we let $latex B_n$ be the number of ways to choose the remaining $latex 7-n$ letters, then by Rule of Product:

$latex An = \binom{7}{n}Bn$ $latex L = \sum\limits{i=1}^6\binom{7}{i}Bi$

There are 26 letters in the alphabet, and for each of the $latex 7-n$ remaining letters, we have to choose a letter that is NOT the corresponding letter in the original name, "Gryphic." Therefore, for each of these positions, there are 25 possible other letters we could pick. By Rule of Product:

$latex Bn = 25^{7-n}$ $latex L = \sum\limits{i=1}^6\binom{7}{i}25^{7-i}$

We want to use the binomial theorem to simplify this expression, but the bounds of our summation are slightly off. To remedy this, we can expand the range of the summation, and then subtract the new terms (which are simple edge cases). Therefore:

$latex L = \sum\limits{i=0}^7\binom{7}{i}25^{7-i} - \binom{7}{0}25^7 - \binom{7}{7}25^0$ $latex L = \sum\limits{i=0}^7\binom{7}{i}25^{7-i} - 25^7 - 1$

Then, by the binomial theorem:

$latex \sum\limits_{i=0}^7\binom{7}{i}25^{7-i} = 26^7$ $latex L = 26^7 - 25^7 - 1 = 1928294550$

This makes logical sense. $latex 26^7$ represents all possible 7 letter words, $latex 25^7$ represents all 7 letter words that share no letter positions with "Gryphic," and 1 represents the number of words that are Gryphic. Therefore, there are 1,928,294,550 different possible badly-named clones of Gryphic, and in that original post four years ago, there must have been some clones of badly-named clones of Gryphic. Oh my. Imagine cleaning up after them. Ick.

Now, four years ago, I of course didn't know what the Rule of Product or even discrete math were, but it appears my line of thinking was that there had to be at least one letter in common, so choose which letter it should be (7 ways to do this) and then choose any other 6 letters, possibly even correct ones, for the other positions (26 ways to choose each letter, so $latex 26^6$ by Rule of Product). The reason we are allowed to pick correct letters for the other positions is because more than one (but less than 7, which I had not taken into consideration) letter is allowed to match. However, this overcounts because it is far too loose. Take, for instance, the edge case of actually forming the name "Gryphic." I originally subtracted one for this event, but it actually happens more than once. If we are to follow the above process, we can choose any of the 7 letters to be the same, and then for each of the remaining 6 letters, pick the correct letter. Therefore, there are 7 ways to actually choose the name "Gryphic," this being only one of the many ways the old formula overcounts.

Well, this has been your discrete math lesson that you never wanted. It was fun for me. Being on break is relaxing, but it's nice to think sometimes too, right? This was a perfect little exercise I could do that also had to do with Four Island. And Gryphic/Drifty is going to kill me. :D

Hatkirby on December 30th, 2012 at 12:30:46am
👍 0 👎

We're almost at the end, folks. On the final days of 2012, I would like to reflect back to the final days of 2011, when, innocently browsing Tumblr, I started to see a lot of posts and pictures regarding some singer named Lana Del Rey. In fact, it was a year ago yesterday when I decided to give her a listen, when my ears were graced by the beautiful haunting melody that is Video Games, and I was immediately hooked. This mysterious woman who had come out of nowhere was suddenly breaking my heart, and I found myself amongst the many others waiting impatiently for her debut album, Born To Die, to come out. A month seemed like a very, very long time. I mean, how long could you wait for this to arrive in your mailbox?


I just have to take a moment out of this review to say that this cover is a piece of art. Everything, right down to the fact that you can see her bra through her shirt, is perfect. If you listen to the album, you'll understand why.

Lana has one theme that she knows dearly and which she can expound greatly on: old-fashioned love. Whether it's the fiery, upbeat passion of Off To The Races, or the slow, cold death that is Born To Die, Lana delivers a catchy tune and a moving story. Lana's sultry voice works combines beautifully with all the different productions thrown at it, be it the summery, happy banger of Blue Jeans or the cascading, nighttime pain of National Anthem. All of these songs are brilliant and have earned many a night of being played on repeat. Lana exudes insanity (huh...), heartbreak, and nostalgia.

National Anthem is perhaps my favorite song, and what's amazing about it is that it's not actually the beautiful backing violins that make the song---while the album version is very dark, the demo version of the song is very upbeat and happy and it still manages to blow me away. Her lyricism really shows in this song (in fact, I like these lyrics so much that I sang? some of them in a Gates of Sleep song).

Other notable tracks include the soft swaying sadness of, well, Summertime Sadness, the banging midnight fiesta of Lolita, the relaxed, light, poppy ditty of Diet Mountain Dew, and the shining, barely constrained happiness of Without You. This album has very few low points---in fact, the only song I really outright dislike is Million Dollar Man, because it's boring and not that interesting musically or lyrically. Other than that, this is a bona fide indie pop album which had a large bearing on me this year. It's definitely worth a listen. Just get ready for some emotion.

Hatkirby on December 29th, 2012 at 9:40:09pm
👍 0 👎

I'm going to be a little cruel, today. You will not be able to easily obtain the album I'm about to discuss. It's also a little amusing to call it my third favorite album of 2012 because not only was it not released it 2012, but it in fact wasn't released at all. Around June of this year, a stir shook the Marina & the Diamonds fanbase when someone discovered a secret album, an album older than Mermaid vs. Sailor (the self-recorded EP she made 70 copies of and gave out at concerts before she was even on a record label), an album hidden from the world for years until it somehow leaked. I am talking, of course, of the one and only Give Me The Money.


Give Me The Money is Marina in her rawest form, it exudes her strange outlook on things and, sadly, her depression, that had been much more noticeable back in the day when she was still performing Are You Satisfied? in bars and she called herself Marina & the Diamonds even though she had no diamonds[1. Diamonds, of course, being the name of her fans.]. Therefore, this album may be a little hard to take in, especially for a first time Marina listener. In fact, if you haven't listened to Marina before, I would suggest you step back and listen to The Family Jewels a few thousand times before trying this masterpiece.

The first track is Starlight, a familiar name to a hardcore Marina fan. A demo by the name of Starlight has been available on the internet for a while now, but this version of the song is much more stripped back and raw. Marina's heavily equalized voice cries over an expertly played piano, comparing lost love to the light of a dead star. You'll find that Marina is quite the queen of comparison on this record; the next track, my favorite, is called The Common Cold and after a chorus of sneezes ushers you in, Marina hits you with a zinger: "There is no known cure for the common cold." The most emphatic verses ever combine with the saddest chorus ever to spin a comparison between heartbreak, and that one common, incurable disease. Heavier production could not do it justice; the audio clipping simply enhances the pain in Marina's voice.

Love isn't the only topic this fledgling singer has opinions on. Supermodel's Legs (the precursor to Electra Heart's Teen Idle) wonders how society can get away with its hegemonic ideals of beauty when in reality, no one can live up to them, and Lonely Bones backs it up by arguing that the fakeness that people imbibe into their bodies (e.g. collagen) won't travel with them after they die. The former track is upbeat and angsty, the latter, sad and ominous.

It's clear that society's got Marina down, however. In her most telling song, Happy Meal, Marina says she feels like a happy meal trying to get noticed in a crowd of steak. She sings about the tendency toward self-destruction, preferring to help others, and the ease of judgement, and in this way, it is a very relatable song. This simple, raw, piano ballad exudes the fears that she covers up on The Family Jewels, where she cries that success is all she needs. Once again, the format enhances the art, and the rough quality makes it even more moving. This is not an album to be taken lightly.

There are so many other standout tracks, such as Perfect-oh, a cheery cry for help buried in obsessive-compulsion, Hubba, a repetitive ditty about leaving bubblegum in your mouth overnight which I theorize is a metaphor for suicide, and Hot, Cross Bun, a mysterious but incredibly catchy song about a pregnant mother being denied the food she needs to live. This really is one of the most personal and moving albums I've ever heard, and it just radiates that style and that meaning that resonates within me and which makes me love Marina & the Diamonds so much. This album was never meant to see the light of day, but it leaked and I enjoy it so much. This is the one album, however, that I cannot recommend you listen to. It is a masterpiece, and it is very dear to me, but it is not casual listening material. Someday, you may be ready to get the money, and when you are, it'll change your entire life.

Hatkirby on December 28th, 2012 at 8:27:09pm
👍 0 👎