Present Perfect


Picture Gallery
Present Perfect

This weekend’s yak shave…

Filed under: Hacking,Open Source,pychecker,Python — Thomas @ 22:09


... went a little something like this.

  • home desktop upgraded to F14, still a bunch of packages missing.
  • Want to do a release of moap because it's been too long, but can't because make check fails because pychecker fails because F14 is the first one with Python 2.7
  • Look into pychecker failures. Figure out that there are new opcodes. Worse - for the first time I can tell opcode numbers have been shifted around. Find this bug where renumbering started; commented to ask if this was expected. Apparently it is, although no good reason for doing so has been offered. Shrug, not my fight, although it's going to make for ugly if's in Pychecker code.
  • Realize I don't actually have Python 2.7 on the Pychecker buildbot page. Remember I have a script to build Python versions from source which now builds 2.3-2.7 and 3.0 (just check out and run make, then py-x.y to start a shell with that version of python).
  • Add it to buildbot master config, restart, see buildbot fail spectacularly. Apparently buildbot was upgraded since I last started it, and code has been shuffled around. Spend a few hours figuring out how to upgrade buildbot and my code with custom steps without losing the history. Now have a buildbot 0.7.12 building on 2.7 as well.
  • Add some ugly if's for python versions to handle opcode reshuffling. Brings down the test failures. Add some handlers for new things like POP_JUMP_IF_TRUE/FALSE and JUMP_IF_TRUE/FALSE_OR_POP. End up with only one test failure difference with 2.6
  • Look into the remaining failure, realize that it is checking for constness of return results, and JUMP_IF_TRUE/POP_TOP pairs are now POP_JUMP_IF_TRUE, so peeking ahead to see LOAD_CONST should move by one opcode.

So, yay! That means CVS (yes...) HEAD of pychecker now works just as good for 2.7 as 2.6 and it's time to start releasing somewhere this week. And maybe I should push on and fix some of the older failures, or shelve them for now, while I'm at it, and have nicely green builds!

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.

Gnome panels and xinerama

Filed under: GNOME — Thomas @ 11:58


I plugged in a second monitor, smaller and to the right of my big primary monitor, and the desktop just nicely expanded. So far so good.

The panels however travelled to the new smaller monitor, which is not my primary monitor.

I can see how that might make sense to want in some cases, maybe. But I think the typical use case when you plug in a new monitor is that you just want more display area, not that all your stuff automatically moves. Principle of least surprise no ? It's also much more likely you plugged in a smaller screen than a bigger screen than the first monitor you had.

Just spent an hour trying to figure out how the hell to move those panels back, painful. No amount of Ctrl/Shift/Alt/left/middle click drag would make it work (never mind that I had to remove a bunch of stuff just to have clickable panel area - still don't get why for example the applications panel applet doesn't give up the space around the logo to be panel area, looks like such an obvious area to release to me...). It was not locked_down in GConf, there was nothing in the right click menu to move it (except for top/bottom/left/right, all confined to monitor 2).

Hunting around I saw Lennart had the reverse problem in Fedora, and I tried all of the remedies in there. The only one that worked however is to dive into gconf-editor, go apps>panel>toplevels, and change monitor from 0 to 1 in bottom_panel and top_panel. Not sure why my primary is 1 and secondary is 0, but there you go...

I might be bothered to do something about this if I could figure out how the magic works when you plug in a second screen, but Xinerama is such a minefield of different preferences between different users, and I promised myself to not go too deep yak shaving so I get somewhere...

Trends in concerts

Filed under: General — Thomas @ 21:30


I guess I see enough shows to be able to draw statistically relevant conclusions on the evolution in concerts...

  • concert prices have gone way up... five years ago, fifteen to eighteen euro was the norm for a band with two albums under their belt. Now I regularly end up paying twenty-thirty euros and more for the same bands. Isobel Campbell and Mark Lanegan were thirty at the door yesterday. Jonsi, with just one album, was 40 euros. I'm ok with that - I'm sure this is compensating for falling CD sales. I just hope the band gets a big enough cut here.
  • The second encore has become a real rarity. I can't remember the last time it happened. I've never been able to figure out if this is more up to the band or the venue. I know some bands simply don't play encores - the XX for example. It used to happen all the time.
  • Artists seem more approachable. These days often they come out after and sign stuff for people. Again example yesterday - Mark Lanegan usually goes straight to his hotel room after his show... who'd have thought he'd ever stay out and sign stuff ?
  • While they're more expensive, concerts are shorter than they used to be. 90 minutes isn't that common anymore... Even bands that now have a bigger catalog than they used to now play shorter shows. I've always wondered how the dynamics of this work... Does a band list different prices for different show lengths?

I thought I had more useful insights but I can't think of any more. Oh well.

One thing has not changed however - the audience stops clapping and cheering as soon as the lights go on and the house music starts playing. People are conditioned, so it's easy for someone to decide whether there will be another encore or not. Just can't figure out if it's the venue or the band deciding.

redland-bindings for Fedora 14

Filed under: Fedora,moap — Thomas @ 22:30


Turns out that the behaviour changes and problems in redland-bindings I was experiencing were not necessarily bugs, although opinions may differ.

I filed some bugs, and fixed moap to adjust for the behavioural changes, sprinkling comments.

I packaged up redland-bindings and it's available from my package repository.
I'm going to retry to get it into Fedora properly, so here is the package review request.

Next Page »