Categories: , ,
Posted by: bjb

I found this very helpful. It worked great with Django 1.3, PostgreSQL 8.3 in 2011/06:

And the penultimate step (filling in the primary key in existing rows) took around half a minute for almost 200,000 records on a not-particularly well-endowed laptop.


CREATE SEQUENCE rcvh7_id_seq;
UPDATE rcvh7 SET id = NEXTVAL('rcvh7_id_seq');
Posted by: bjb

I have a database full of strings where the accented characters have been replaced by their non-accented equivalents, and a spreadsheet full of strings with accents in them. I’m supposed to look up the info in the database given the info in the spreadsheet.

I found this great stackoverflow post that helped me out:

title = u"some string with accented characters in it like b\xe9cancour"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii', 'ignore')
'some string with accented characters in it like becancour'

Normalize with ‘NFKD’ will decompose each character in the string into its composing characters. For example, if there was an e with acute accent, it separates it into an e and an acute accent. The K part of NFKD ensures the ‘e’ is the simplest possible e (presumably if there is an ‘e’ in ASCII, it will prefer that one). Then the encode ('ascii', 'ignore') will drop all the non-ASCII characters, which by now are just the accents which have been separated from the rest of the letter.

Awesome. And it works in python 2.5.

Posted by: bjb

Today is the day (starting from midnight GMT). results for my web site — my results are no longer available, sorry

Some test sites:

Categories: , , ,
Posted by: bjb

identd provides the “auth” service (see /etc/services). On Debian, it can be provided by any of several packages, including ident2, nullidentd and oidentd.

If you want to have an identd that can talk IPv6, you can choose oidentd.

If you are running it from inetd, you should configure your inetd to respond to IPv6 as well. I’m using openbsd-inetd, and the lines in /etc/inetd.conf to make it listen on both IPv4 and IPv6 for the auth service are:

auth stream tcp4 nowait root /usr/sbin/tcpd /usr/sbin/oidentd -I
auth stream tcp6 nowait root /usr/sbin/tcpd /usr/sbin/oidentd -I

Note the protocol, which specifies IPv4 or IPv6. Also note the -I option to oidentd, to make it read from stdin and write to stdout and to exit after answering one request (needed for inetd operation).

I briefly considered nullidentd, but the description made it sound like it would only ever return one static string. Not quite what I was looking for, and I didn’t investigate further.

Categories: ,
Posted by: bjb

I was looking at django sessions and was a bit confused until I read the source code.


You might think the interesting file to look at is django/contrib/sessions/, but really the “toplevel” session object is defined in The object in SessionBase. It is a base class for the various session implementations.

If you’re using a database-backed SessionStore, then you’ll be using, and uses for the database model and database interaction. In a view, the session object in the request object that is supplied by the session middleware is actually a SessionStore object. That is the object that has the methods get_expiry_age, etc.

I wanted to get some info out of every session in a batch mode including expiry age, so I needed to traverse SessionStore.objects.all(), not Session.objects.all().

Categories: ,
Posted by: bjb

None of my domains have expired yet, but the guy who was handling my domain names has changed the glue records to point back to the 1and1 “available” page for the .com, .net and .org domains. The .com and .net expire April 16 (a few days in the future as I write this) and the .org expires in July (a couple of MONTHS in the future as I write this).

Hmm, doesn’t sound like very ethical behaviour to me. Who knows when the .ca will disappear?

I’ve opened a case with the Better Business Bureau, for now, and I’m keeping my options open.

The case continues … unfortunately.

Posted by: bjb

My garden is blooming.

2011 apr 7 picture of garden

The flowers actually in bloom are the snowdrops. They come up first (they are there when the snowbanks melt).

2011 apr 7 picture of garden

The other bits of greenery between the snowdrops are crocuses. They are blooming now, but weren’t blooming when the picture was taken.

2011 apr 9 picture of garden

The reddish bits are the tulip leaves coming up. The heftier green at the far corner of the garden are hyacinths.

I have very early blooming varieties of all these things. My garden if finished about when other people’s tulips are blooming. But by that time I can enjoy other people’s gardens — the same way that I hope my neighbours enjoy my garden before theirs is up.

Posted by: bjb

I’m interested in the “Star Trek interface”. I want to talk to my computer instead of typing into it (that soon-to-be-arcane skill). So I’m starting to look into speech recognition. It seems that there are some commercial offerings that are pretty good, but the free offerings are suffering from a lack of a large “corpus” of spoken and matching typed samples — needed to make good quality acoustic models. is aiming to collect a bunch of freely available speech samples. I encourage everyone to visit Voxforge and start contributing speech samples, a little every day, in order to build up the body of samples.

Here’s a little of what Voxforge has to say about it:

Acoustic Models are Closed-Source Most Acoustic Models used by ‘Open Source’ Speech Recognition engines are ‘closed source’. They do not give you access to the speech audio (the ‘source’) used to create the Acoustic Model. If they do give you access, there are usually licensing restrictions on the distribution of the ‘source’ (i.e. you can only use it for personal or research purposes).

The reason for this is because there is no free Speech Corpus in a form that can readily be used, or that is large enough, to create good quality Acoustic Models for Speech Recognition Engines. Although there are a few instances of small FOSS speech corpora that could be used to create acoustic models, the vast majority of corpora (especially large corpora best suited to building good acoustic models) must be purchased under restrictive licenses.

VoxForge hopes to address this problem by creating a repository of ‘source’ speech audio and transcriptions, and by creating Acoustic Models for each of the main Open Source Speech Recognition Engines (such as Sphinx, Julius, HTK and ISIP) .”

Once you’ve submitted all the prompt-sets they have, you can continue by reading public-domain books for and add to the available collection of free audio books.

Categories: ,
Posted by: bjb

There have been a few more exchanges, some less friendly and some more friendly, but each of us is keeping our position: he says I owe him $120 (ish) and I say I don’t.

He has made the domains available for me to take. But he won’t issue a credit for the invoice.

So I’m not taking the domains. I’ve already got another domain name. I got it when we were arguing back and forth and it wasn’t clear to me that I was going to get linuxbutler back before they either expire or in time for the NCF static address change.

I’ve had various bits of advice from different people, ranging from “just take the domain back, you can get the registrars to give it to you” to “report the guy to the police, he stole your domain” to “make a web page about your experience” to “go to small claims court”. He has made the domains available, so that eliminates the “police report” approach.

I’m not really keen on taking the domains back, as that gives him grounds to expect me to pay the invoice.

Anyway, my last email to him was “don’t do anything that will cause you to invoice me”. He wrote back and said that concludes our communications. So I guess he won’t be willing to change my IP address, although the address will change before the domain name expires, and he did do the same kind of change last time it happened. Without charge. I would expect a domain name handler to do that. But, I’m just glad to be out of the business relationship.

Categories: ,
Posted by: bjb

It seems my domain name reseller also works on the weekend. He sent me an email saying I haven’t paid last year’s invoice. So I sent him an email with the details of payment. and pointing out that now he owes me money (because of a credit note that was issued on my account).

Of course the amount of the credit note does not cover his full “exit fee” charge … so we’ll see what he does now. I offered to forget the credit if he signs over the domain names.

And I pointed out that transferring the domains is a one-step process, why did he say he had “staged” the transfer for one of the domains? What does that mean? In fact, since I got the domain history from namespro, I know it means he moved the domain name from steveg * emoss-ca account to steve * emoss-ca (earlier this week). What’s the point???

The saga continues.