[lang]

Present Perfect

Personal
Projects
Packages
Patches
Presents
Linux

Picture Gallery
Present Perfect

2010 Goals – a compileable love story

Filed under: Fun — Thomas @ 10:33 pm

2010-12-12
10:33 pm

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. */

#include <stdlib.h>

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

#include <stdio.h>
#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] = '>';
sleep(2);
printf("%s\r", aisle); fflush(stdout);
sleep(2);
aisle[60] = ' ';
printf("%s\r", aisle); fflush(stdout);
sleep(3);

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

she_blinked();
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.");
she_paused();

#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_sighed();

/* 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.");
she_paused();

// 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.

10 Comments »

  1. That was brilliant! Thanks for sharing.

    Comment by Henrique Rodrigues — 2010-12-12 @ 10:59 pm

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

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

  3. Haha this was great.

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

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

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

  5. This is so beautiful and heart-warming!

    Comment by Lukas — 2010-12-13 @ 3:07 am

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

    Comment by luvaboy — 2010-12-13 @ 8:47 am

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

    Comment by Thomas — 2010-12-13 @ 9:24 am

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

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

  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 pm

  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-1-27 @ 11:34 am

RSS feed for comments on this post. TrackBack URL

Leave a comment

picture