Mon, 30 Dec 2002
Back into pootling mode...

Well, I've actually started looking into the backlog of stuff that needs my attention. I've started looking into installing the PEP 301 server-side system - I'm currently waiting on a call about which RDBMS I should use to store the info in.

I'm now off to Southern Gippsland (just near Fish Creek) to spend New Year's Eve with some friends in a slightly different fashion to the usual party :)

I definitely have to do some Roundup work when I get back though :)

path: /stuff | permanent link |
Fri, 27 Dec 2002
Back to the regular program...

Well, the four days of Christmas for us are now over. The first three, starting on the 24th, involved people coming over to our house, eating, drinking and exchanging gifts. The Christmas day lunch feast went down very well, with all guests admitting that even though it was vegan, it was still yummy :)

The fourth day was our day of rest - I spent the day playing Kingdom Hearts and Rachel read a most apalling book (Buffy the Vampire Slayer: The Book of Fours - read her review) and watching OK movies - The Mists of Avalon (mini review) and The Cable Guy (mini review).

Now it's time for me to catch up on the backlog of Real Life that's come into my inbox. Lots of Roundup enthusiastic Roundup users, including users who have worked on a new sysadmin tracker schema, some work on the multilingual code, bug fixes, Apache cookie handling bug reports, date searching problems and a bunch of other stuff.

And I really need to get PyPI installed on ASAP too - but that means looking into the new locking code in pysqlite first...

path: /stuff | permanent link |
Tue, 24 Dec 2002
Slow updates...

I've been a bit slow with the updates lately, mostly because I'm a) now on leave, and therefore not using the computers as much and b) hosting several Christmas gatherings at our house. I think it's fair to say that the updates will continue to be sparse :)

Catching up...
The leave is welcome because it will give me a chance to try to catch up with life a little. I would like to visit both my grandmothers and some other family that I haven't seen in ages. Unfortunately even though we're hosting three gatherings here, we're still not going to see everyone I want to see. I also want to try to get out of the city and spend some time with Rachel out in the bush. Just us and some wine, books and food - no computers or television.

Video Games
I would like to try to play some video games too - something I haven't really had a chance to do recently. I'm getting a brand-new one for xmas, so that'll be fun :)
I've just played Ico through again, and boy is that an amazing game. I recently read this review of it, and it sums up the game as well as I could. I'd have given it 5 out of 5 though. Also, the "Heartbreak" mode he mentions is implemented, and the "gibberish subtitles" (seen in one of the screenshots) are shown in English. The game doesn't suffer from the gibberish though - both versions have their own merit. Can't wait for Ico 2...

Python stuff
I've also got all the Python projects piling up. I've put in the second-to-final bit of work for the PyPI system. The patches for Python itself have been submitted. Now I just need the final word so I can set up the server code on the machine. Roundup has a backlog of user dialog that's stalled until I can get my brain back into Roundup-mode. Harder than it sounds right now.


Whee :)

path: /stuff | permanent link |
Thu, 19 Dec 2002
The Greatest Democracy In The World in action...
In November, as Congress finalized the legislation authorizing a new Department of Homeland Security, two paragraphs suddenly appeared in the bill giving drug maker Eli Lilly & Company something it desired: a shield from lawsuits by parents who claim the company's vaccines caused their children's autism.
Who inserted the provision? Reporters tried and failed to find out. Lilly's lobbyists (laughably) claim ignorance. No one on Capitol Hill is proud enough of his handiwork to claim it.
Democracy requires accountability, so is offering a $10,000 reward to the first person who proves the identity of the Eli Lilly Bandit - the member of Congress responsible for inserting the company's special provision.


path: /stuff | permanent link |
Wed, 18 Dec 2002
Roundup, PyFi...

The Roundup mailing lists have been running hot lately - almost more messages than I can reasonably keep up with. The questions on the development list in particular are taking up a fair amount of time. It's encouraging that so many people are interested in the software though, and it's helping the software become much more stable.

I've also continued my quest for the perfect ogg/mp3 player, and have re-written the tracklist tree widget in PyFi so it combines the artist:album view with the filesystem view (only falling back on the latter if the former information isn't available). This results in quite a well-organised display. There's still lots of bugs, so there won't be a release any time soon... but I'm using it and happy :)

path: /python | permanent link |
Well, that list got mighty short, mighty quickly

The list of 11 games that I had on my wishlist was whittled down to a choice between the 3 that are actually available on these shores. I'm going to be happy with the game I will eventually get, but it's a real shame I just don't have the choice.

Regionalisation really, really stinks. If the Australian distributors don't pick up their game, I think I'll get my PS2 mod-chipped (since it's been pronounced legal in this country even if it's not elsewhere) so I can bypass their restrictive supply catalogues.

path: /games | permanent link |
Fri, 13 Dec 2002
Quick list of the games I'm interested in this xmas...

It's a pain to trawl the review sites every time I need to figure out which game I might like, so I've made a list.

Aggressive Inline - Rollerblading
Armored Core 3 - Mech beat-em-up with construction
Dropship - United Peace Force - Flight and driving sim
Fatal Frame - Scary ghost snap-em-up
Grand Theft Auto - Vice City - More of the same
Kingdom Hearts - Square and Disney in good RPG shock
Kings Field - The Ancient City - RPG excellence on the PS2
Legend of Alon Dar - RPG-em-up
The Mark of Kri - Adventure beat-em-up with excellent combat and stealth
Tony Hawks Pro Skater 4 - Skate-em-up
Tsugunai - RPG-em-up

Not that I'm hinting or anything ;)

path: /games | permanent link |
Thu, 12 Dec 2002
Looking for yummy vegan special-occasion recipies

If anyone has any yummy vegan recipies that they've made for special occasions please send them to me. This is our first vegan/vegetarian Christmas and it's also the first year we're hosting family for the occasion!

Suckers eh :)

Thanks to amk, we have a head start - but our other problem is that December in Australia isn't cold - so those yummy, warming dinners aren't really appropriate.

Email to richard at mechanicalcat dot net please ...

path: /stuff | permanent link |
I see no problem here...

Rachel can't decide which movie to see for her birthday. Let's just declare it a birthday week! Let's see all of them.

path: /stuff | permanent link |
On a completely unrelated note...

A Roundup user has just installed a Roundup tracker via FTP. Neat.

path: /python | permanent link |
Socket timeouts, the conclusion...

Can't reasonably back-port the socket module code from the python CVS. Plan B is invoked: a second daemon that detects that the sms gateway is locked up, and kills it. euwwww

path: /python | permanent link |
> look

You are in a twisty maze of python build dependencies, all covered with
inscrutable error messages.  There are exits to: N, S, E, W.
What do you do?

> python build

A compiler goblin rushes out of one of the passages, scribbles on a wall
and runs gibbering down another passage.

> help

There is no help for you.

> n

You are in a twisty maze of python build dependencies, all covered with
inscrutable error messages.  There are exits to: N, S, E, W.
What do you do?

> get coffee
path: /python | permanent link |
More timeout socket fun

So it turns out that the ssl code in Python requires a real builtin socket object to work on in send and recv calls. This is probably what Skip was referring to. Faked-up socket wrappers are pretty much out, in the current code anyway. The CVS code which has this fixed... well, I guess I'll be looking into that after all, and my sysadmin will just have to deal with it :)

path: /python | permanent link |
Socket timeouts

We've got an SMS gateway in our service that effectively runs as a queued transfer agent, pushing the messages out to actual SMS providers. So far so good.

One of our providers - our preferred provider for price and completeness of service - is a little dodgy in consistency. Sometimes their server breaks and refuses connections. No problem, we have a couple of backups and automatically fail over to them. Unfortunately, sometimes this provider accepts our connection and doesn't let go. That means that we've had a couple of instances where the messages are queued for up to 10 hours.

So the solution is simple, yeah? Use timeoutsocket. It's transparent and has a trivial interface:

import timeoutsocket

The import patches the socket module so that all future socket objects are passed through the timeoutsocket code. Another situation where Python rocks.


Except there's a catch. We use SSL to connect to our SMS providers as a way of protecting our account information and user messages. We connect with urllib2 module. This in turn uses the httplib module. The httplib module handles SSL (HTTPS) transparently. Well, except for this little gotcha at the core of the HTTPS connection handler:

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((, self.port))
realsock = sock
if hasattr(sock, "_sock"):
    realsock = sock._sock
ssl = socket.ssl(realsock, self.key_file, self.cert_file)
self.sock = FakeSocket(sock, ssl)

Note the realsock stuff to do with _sock. That code is specificaly circumventing the code that timeoutsocket inserts in the socket module to implement the timeout.


No, I have no idea why that code is there - I'm sure there's a good reason. Really.


So I asked python-list whether anyone had ported timeoutsocket to be used with HTTPS. The sole response I got indicated that the problem may have been solved in the current CVS version of the socket module. My system administrator would have a fit if I suggested that we use that socket module.


The search continues...

path: /python | permanent link |
Wed, 11 Dec 2002
Roundup 0.5.3 is out the door...

That's the last release of my issue tracker for this year. Mostly it just fixes bugs - the only things that could be called "features" are close enough to being bugs that they made the cut too :)

path: /python | permanent link |
Mon, 09 Dec 2002
Roundup in the news?

The Roundup users mailing list has had a bit of an intake of new users recently. They're typically not Python-savvy, so they're not coming in from the python-announce mailouts I regularly put out. I don't know where they're coming from...

Oh well, I guess all I can do is help them out and hope that the software really is as accessible as I'd intended.

I've also trawled back through the list postings to find the positive things people have said about Roundup and collated them. It's a really nice feeling when people just post compliments with no prompting. I guess the flipside is that there's never been any really negative postings on the mailing list (or to me personally), and that's nice too.

(oh, Roundup is my issue tracker software, btw ;)

path: /python | permanent link |
Thu, 05 Dec 2002

Picture: Reuters, via theage

path: /stuff | permanent link |
Tue, 03 Dec 2002
Strange hissing noise...

The phone rings:

tech support: "hello computer tech support"
customer: "hello my computer was making a strange hissing noise last night and this morning when I turned it on there was a crackling noise and some smoke then nothing, if I bring it in can you fix it?"

I guess it's warm in there.

path: /stuff | permanent link |
Very wide panorama of Tokyo

5000x432 pixel. neat.

via gimbo

path: /stuff | permanent link |
A little PyFi hacking on the side

The tracklist load/save and config stuff was bugging me enough that I just spent the 10 minutes it required to implement the start of the config / state storage system for the player. ConfigParser does most of the work, obviously ;) So far:

  1. create $HOME/.pyfi config dir if it doesn't exist
  2. if $HOME/.pyfi/pyfi.config exists, it loads the tracklist/filename as the current tracklist_file and loads the list into the display
  3. at exit, save the name of the current tracklist_file to the config
  4. added Track menu items to create a new tracklist, and also split the save menu off into "Save" and "Save As".

While I was at it, I fixed a nagging glitch in the branch-selection code for the filesystem view. I'd gotten the wrong class of QListViewItem into the branches somehow, and they thought they were actually leaves (hence real files). Confused the player a little, but it's fixed now.

Off now... might hack it a bit more on the train. It's just too much fun :)

path: /python | permanent link |
PyFi and PyPI - more updates

The train ride this morning had me hacking on PyPI again - while listening to music played by PyFi. Heh. In terms of the status of the two projects...

PyFi is close to being something I'd encourage other people to use. It needs a configuration file and its own icons before other people can use it (currently we "borrow" the Noatun icons from the KDE share dir). It's also a pig for memory - Toby's 6,700 entry track list took PyFi's memory usage up to 100Mb. Noatun uses 40Mb for the same list. Noatun doesn't actually work with that size playlist, but that's beside the point :)

PyPI now has an ordering attribute on releases that's calculated by sorting LooseVersion objects for each of the release version strings. I'll be updating the version on tomorrow to use that. I need to write the documentation patches really soon, as the python 2.3 cutoff is approaching. I still don't actually know whether the thing is going to be accepted yet. Presumably once I declare the PEP/implementation done, I'll get an answer :)

path: /python | permanent link |
Mon, 02 Dec 2002
How would you like to rebel today?

A gem from This Modern World by Tom Tomorrow:

Oddly enough, that's a photograph of a t-shirt you can buy from the CAKE store :)

path: /stuff | permanent link |