Present Perfect


Picture Gallery
Present Perfect

2010 Goals – a compileable love story

Filed under: Fun — Thomas @ 22:33


Geez, I still have a pending post about my 2009 goals and here we are, close to the end of 2010. Well, in my defense, it was a tumultuous year for me.

Anyway, one of my goals this year was to write something every month. That might not have been a good goal in the sense that it is slightly too vague - but that's fine for now, I'll be honest enough with myself to admit I didn't quite make that if that's the case.

Anyway, I wanted to share one of those writings. Not that it's particularly good, mind you - but it was quite a special writing form that came to me in a dream, and the form does limit what I can actually do.

I'm guessing not everyone will get it completely because of the form, but that's fine - my non-nerd friends know where to reach me I assume.

If WordPress mangles the display (which I'm sure it will), look at it here instead. And don't forget to "make love; ./love"

/* -*- Mode: C -*- */
/* As you'll C, the story is as old as the language it's written in.
* We met at the library, reaching for the same book, brushing fingers
* as we connected. */


/* We started talking, talking about all the standard things people talk about
* when they meet.

#define she_said(x) printf(x "\n")
#define she_sighed() she_said()
#define she_paused() she_said()
#define she_blinked() she_said()

* She was a game tester by trade. We argued about games as if they were
* art.

int main (int argc, char *argv) {

she_said("Do you know the game called 'Pacman' ?");

int pacman;

/* I do, I said. */

int i;

/* As she spoke the library aisle turned black, and all the shelves
* turned yellow. */
char *aisle = malloc(61);

she_said("I was a tester on Pacman.");

/* Really ? I've always wondered how Pacman worked. How do the ghosts
* know how to find Pacman in a maze like that ? How did those old
* computers solve such a hard math problem so easily ? */

she_said("The ghosts just follow the smell Pacman leaves behind passing through each square.");

/* I first drew in her lovely smell, then smelled my armpits to compare.
* There was no way I was going to get out of this alive. */

she_said("It's the perfect game, because you cannot ever win. You can pop pills and eat ghosts as much as you want, but the game keeps going until you lose. Try it!");

/* And as she spoke she changed into a ghost and started floating towards me.
* I turned and ran, spreading the smell of fear and excitement, and wanting
* desperately to be eaten. */

for (pacman = 30; pacman < 60; ++pacman) { for (i = 0; i < 60; ++i) aisle[i] = ' '; aisle[61] = '\0'; aisle[(pacman - 30) * 2] = 'G'; aisle[pacman] = '<'; for (i = pacman + 1; i < 60; ++i) aisle[i] = '.'; aisle[60] = 'o'; printf("%s\r", aisle); fflush(stdout); usleep(200000); } /* As I reached the pill I stopped and turned around. */ aisle[59] = '>';
printf("%s\r", aisle); fflush(stdout);
aisle[60] = ' ';
printf("%s\r", aisle); fflush(stdout);

/* I kissed her gently on the cheek close enough to her lips to be confusing
* for the both of us. */

she_said("What are you doing ?"); // as she moved neither forwards
// nor backwards.

she_said("This isn't how you play the game. ");

/* Are you sure we are playing? Are you sure this is a game?
* If it is then the game is love. */

she_said("This isn't love. Love does not exist.");

#define LOVE 0

/* "It's invented by people who sell stuff; a program for humans to run."
* Should I really be talking about love with the ghost of a girl ?
* Was there anything I could help her with to make her real again,
* to make us real?

she_said("I miss testing Pacman. Life was so simple.");
she_said("Squares and dots and circles.");

/* She had learned to program in school, but her heart was not in it.
* She'd tried to program it, but the computer had had no love for her.

she_said("You don't have to write my program for me.");
she_said("But I'll love you forever if you do.");

// Well I am nothing if not a programmer.
// And so I started writing. And so she started loving. Test me. Forever?
// We can't ever win.

while (1) LOVE;

she_said("One day this us will end. Nothing lasts forever.");

// But she didn't know I made sure we'd never get to the end.

return LOVE;

Looking back at it, I'd have to guess I was influenced by reading Scott Pilgrim (the blinking) and Jeanette Winterson (the phrasing) at the time. And I guess I did some C programming back then.


  1. That was brilliant! Thanks for sharing.

    Comment by Henrique Rodrigues — 2010-12-12 @ 22:59

  2. That’s Great! Your are a Genius!

    Comment by Maciej Rumianowski (rumianom) — 2010-12-12 @ 23:23

  3. Haha this was great.

    Comment by Pam — 2010-12-13 @ 00:37

  4. You’ve raised the bar, my wife no longer is satisfied with just a poem!

    Comment by Zaheer Merali — 2010-12-13 @ 00:49

  5. This is so beautiful and heart-warming!

    Comment by Lukas — 2010-12-13 @ 03:07

  6. Damn! It doesn’t compile. Gcc is giving errors.

    Comment by luvaboy — 2010-12-13 @ 08:47

  7. Really? Which ? Try the download link to make sure you have the right code…

    Comment by Thomas — 2010-12-13 @ 09:24

  8. You wrote off the end of your buffer :) Or was it intentional?

    Comment by sb — 2010-12-13 @ 11:55

  9. No, it wasn’t. But you can’t really valgrind love, can you ? You just sort of have to trust it. Patches accepted though!

    Comment by Thomas — 2010-12-13 @ 12:25

  10. You are genius.
    Just change malloc 61 to 62. After this it works, no probs from valgrind.
    char *aisle = malloc(62);

    Comment by Simo — 2011-01-27 @ 11:34

RSS feed for comments on this post. TrackBack URL

Leave a comment