Search This Blog

Friday, 27 December 2013

One Cheer for Selfies

Selfies have taken a bit of criticism in the past few days for being "shallow and conceited". That may be, but as someone who's spent quite a bit of time in the past few months going through old family photo albums trying to learn more about his relatives, I'd like to say one thing in defence of them.

I have photo after photo of relatives now dead, some of whom I never even met. Time after time the photo consists of a small image of them against the larger backdrop of some hotel or monument. They wanted to remember where they were; I want to discover who they were. Yet even with a magnifying glass it is hard to make out their faces and gauge their expressions. The occasional close-up I do find is usually highly posed—far from natural.

So in the age of the Selfie, I think how nice it would have been if from time to time my ancestors had just pointed the camera at their own face and captured themselves up close and personal. "Thoughtful and honest" would be my description.

Thursday, 7 November 2013

For the archives

Going through my grandmother's photo albums I came across this photo of my grandfather, Georg Bela Pniower, with my mother, Renate. Something about it made me want to give it a wider audience. It's probably from 1934.

Saturday, 12 October 2013

Getting Rid of Free Media Player Installer

I have never liked Windows Media Player. Although it does the job, I could not warm to it. So on Thursday I decided to look for a free alternative.

A recommendation site suggested a Korean program, which I promptly downloaded. It was hideous! A black on black colour scheme made it almost unreadable, and the micro buttons used to play and navigate the music were hardly user friendly either. And call me old-fashioned, but I believe that it shouldn't be a research project to figure out how to find your music collection. Uninstall!

Next I tried Free Media Player. As I went through the install wizard, warning bells started to ring. This program wanted to install an awful lot of other stuff as well. I hoped I'd be able to avoid the deluge by unchecking the right boxes, but I soon decided I wasn't confident that was going to be possible, so I quit the installation, and went back to playing WMP.

The next day I booted up my PC and found myself back in the Free Media Player installer. Imagine my delight. Easy enough to stop it, but next reboot, there it was again. This goes well beyond aggressive marketing—more like a salesman who refuses to let you shut the front door on them.

I searched everywhere I could think of to find out how Free Media Player was able to try installing itself on boot-up, but without success. My favoured tool, msconfig (another powerful Microsoft product with a rubbish user interface), was no help.

Fortunately, another Google search came up with 'Autoruns', the alternative to msconfig. Ironically, you download it from Microsoft.

That quickly identified the problem: Free Media Player installer had added itself to the registry (key HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce). I removed the key (you have to run Autoruns in administrator mode), rebooted, and all was well.

All in all, a very annoying experience, which reminded me (I shouldn't have needed it) how much damage installing 'free' software can potentially do to your machine. On the plus side though, I have a very useful tool for removing the next pest to infect my PC. On top of that, I am now completely happy with Windows Media Player.

Sunday, 4 August 2013

ZoneAlarm Downgrades Itself

I've mentioned my problems with ZoneAlarm before; last night it threw a completely new one at me.

It started with a pop-up informing me that a new version was available—click to download. I clicked. Big mistake.

A few minutes later my new version of ZoneAlarm Firewall Pro was up and running. The trouble is, before I'd had ZoneAlarm Extreme Security. Somehow I'd been downgraded to a lesser product. Even more annoyingly, my annual license had been replaced with a 30 day trial license.

Off to their website to complain. But I should have known from experience that that would be a waste of time. Nowhere can you find an email address or even a phone number. There is a chat facility, but it was closed.

Not to worry, yet. I downloaded a trial version of Extreme Security and installed it. It spotted an existing version and claimed it could upgrade it. Excellent news! Five minutes and a reboot later I was still staring at ZoneAlarm Firewall Pro (28 days free trial remaining).

Time for serious measures. I uninstalled ZoneAlarm completely. To its credit, the uninstaller did a very complete job, not even leaving the folder behind. Then I rebooted and ran the installer again. This time it worked.

Presumably this was just some cock-up that made Firewall Pro look like Extreme Security, or vice versa. But it's typical of the customer service of this company. Every year they send me an email telling me that my subscription is going to be renewed automatically and I won't need to do anything, and every year ZoneAlarm starts to moan about how its license is about to expire. And despite my repeated attempts to change its behaviour, the program still insists on scanning my entire hard drive whenever I boot up.

Seriously, sometimes the only thing keeping me with ZoneAlarm is my experience with its competitors.

Thursday, 27 June 2013

How to Upload Files from a Web Page to a Python Script

My task was to select files for upload using a file input element on a web page, and then upload them to a Python script on the server that would write them to disc. It was fairly straightforward, but I got stuck trying to get it to work with binary files. The trick is to explicitly set stdin and stdout to work with binary data.

The form on my web page stored the file data in a field called 'uploaded[]'. I was using HTML5, so the file input was able to upload multiple files at once. In this case the value the Python script obtains from the FieldStorage object is a list of file objects. However, if you only upload a single file, the value is a single file object. I make a simple check on the data to make sure I'm dealing with a list.


    Gets passed file contents as POST data from an HTML page. 
    Writes them to a file on disc. 

import cgi

try: # Windows needs stdio set for binary mode.
    import msvcrt
    msvcrt.setmode (0, os.O_BINARY) # stdin  = 0
    msvcrt.setmode (1, os.O_BINARY) # stdout = 1
except ImportError:

form = cgi.FieldStorage()
fileItems = form['uploaded[]']

# You only get a list back if you're uploading multiple files. Make sure we're always working with a list.
if type(fileItems) != type([]):
    fileItems = [fileItems]

for fileItem in fileItems:
    if fileItem.file:
        f = open(fileItem.filename, 'wb')
        while True:
            chunk =
            if not chunk: 

# Output header.
print 'Content-type: text/html'

Saturday, 15 June 2013

Genealogy is Magic

It truly is: it can make an entire evening disappear, with maybe just a birth certificate to show for all the time gone.

I never got genealogy. I couldn't see the attraction of rummaging through old records or wandering about in graveyards looking for distant ancestors. But I'm adopted, and a month ago I finally decided to try to trace my birth mother. Armed with a name and a rough address from 53 years ago, I signed up to and started searching. At first I thought its search facility was appalling: so bad I had to be doing something wrong. I was. I still think it leaves a lot to be desired in ease of use, but with exploration of its features it turns out to be extremely powerful. I could soon see a record of my mother entering the country at Southampton (gave me a date of birth), and shortly afterwards I found her full address in New Zealand in 1957, as well as the names of her parents.

The New Zealand electoral registers are all searchable online, but only up to 1981. Also, the register is only compiled every three years. Still, I could track the family's movements to a fair extent, and found the name of another individual I presumed (correctly) was my uncle.

Then I found that the New Zealand government had an online search website that lets you look up births, deaths and marriages, providing they're at least a few decades in the past, or, for deaths, the deceased was born at least 80 years ago. For a small payment they will email you a PDF of the relevant document.

At this point I sort of lost the original plot, and began tracing my family tree. Matching up disparate records had turned into a hugely engaging intellectual puzzle, and best of all, one you can do sat at a computer. You can trust nothing, because filling in forms is a boring activity and mistakes get made. An 'o' was transcribed as an 'a', a person is born with one set of first names but dies with another, possibly somebody lies about their age. Evidence has to be weighed up, possibilities have to be sorted through. Lovely.

I finally 'got' genealogy.

As I predicted in an earlier post (The End of Genealogy), I'd gone back three generations when I bumped into somebody else's family tree: a truly massive affair with a cast of dozens, possibly hundreds, of people (it's hard to tell). If a married couple in that tree were also two of my great grandparents, then I could go back another three generations into 18th century Ireland. Exciting stuff, but as I explored this huge tree that someone (or surely an army of genealogists) had patiently built up, the scope of the job I'd begun came home to me: everybody has a big, big number of ancestors.

I went back to trying to locate my living relatives.

Revisiting the search websites armed with more experience of how to use them properly, I found a death certificate for my grandmother. From that I found a death notice on a site dedicated to finding them, which led me to a report on a local newspaper site, which gave me the names of an aunt and uncle. The aunt was on Facebook, so I finally bit the bullet and created a Facebook account. In another post I might talk about how much I dislike Facebook's user experience, so I won't bother now complaining about how it's constantly presenting me with names of people I've never heard of asking if I want to friend them, even though I've already told it several times already that I don't, or how sending a message to a person you're not friends with results in them not seeing it, or how their friend finder was unable to find "Charles Anderson York" even though it found loads of other Charles Andersons. No, I won't talk about that right now. Let's just say that, after a week of waiting for a reply to a message sent to the 'Other' inbox, I paid 35p to send the same message directly to my aunt's main inbox and I finally made contact with a birth relative other than my son.

My birth mother is no longer with us, but at least now I know, and I've discovered relatives that before I could only speculate about. I've also found out where the 3.8% Jewish ancestry that 23andMe identified comes from. (The 2.9% Neanderthal inheritance remains unaccounted for.)

I'll finish by saying that I am truly amazed at how much of this type of information is now available via the internet. And it will only get better as the genealogy sites get smarter and more knowledgeable. Since finding my birth relatives I've tried doing the same for my adopted parents. Both of them are already on other people's trees; all I have to do is cross some T's and dot some I's. And even if you're not into genealogy, genetic testing sites like 23andMe will connect you with your relatives as an optional extra. Soon we will all be related.

In Memory of Jack Vance

I found out this week that Jack Vance died last month; how I've loved his books these least forty years or so.

Although his main characters could sometimes seem a bit underdrawn, the minor characters, his landscapes and his settings were always wonderfully inventive. And his style! If I had any pretensions to writing fiction, I would quietly shelve them after reading his.

Looking at his bibliography I see that there are still many, many works that I haven't read. Of the ones I have, I enjoyed the fantasy most, although individual SF novels such as Emphyrio or Night Lamp were also excellent. The Dying Earth books will always be my favourites, and Cugel my most loved Vance character, despicable though he often was. Vance wonderfully represents a sense of world-weariness as the inhabitants of the Earth wait for the sun to finally die out. But in the meantime there are still spectacles to see, wines to sample, manses to rob...

Wednesday, 12 June 2013

My Old Exam Papers

Last week while hunting for something up in our loft, I came across a collection of exam papers. Here were all my old GCE and A level papers, plus most of my University exams. It makes interesting reading—decades on.

For a start, I still know quite a lot of the O level stuff; I'm pretty sure I could still get A in Maths and German, though not so sure how good my grades would be in the other subjects. The A levels are another story. My Maths papers are full of names and terms which ring bells, but unfortunately distant ones. "De Moivre's Theorem". Ah, I remember that! No, turns out I only remember the name. Looking it up brought some recognition, but not a lot. The Physics A level was better, which was odd given that I went on to University to do more Maths, not Physics.

As for my Uni papers? Well, to be honest I couldn't even remembering knowing most of it. I had put a star next to the questions I'd answered during the exams, but I wouldn't have been able to tell otherwise: they looked equally baffling. The Computer Science papers were considerably more understandable, which is probably just as well seeing as how I went on to a career of programming. I can still do all the questions that I can actually understand, but in some the terminology must have changed or gone out of fashion.

So what can I conclude? That most of my education after the age of 16 was a waste of time? Not very happy with that suggestion.

I'd like to think that the heart of the matter is a feature of Mathematics. University standard Maths is so abstract that, if you don't use it all the time, you quickly forget it. Since I graduated I've had precious few occasions to use what I learned, and so it's gone. I can only be grateful that back in those days you didn't leave University with five figures of debt. Paying off a loan that size for years when you'd already forgotten most of what you'd learned: that must sting.

Saturday, 27 April 2013

Google Instant Search Keeps Failing

Here's how I fixed a problem I've been having recently with Google Chrome searches from the Omni-box.

The symptom was that I would be typing my search at the top of Chrome when Google would suddenly complete the search for me. The search string Google chose would usually be nothing like what I was after, and often the search box would have disappeared. I would also notice the message 'Google Instant is unavailable' just before it happened.

The fix was to go into Google Search settings (click the 'cog' icon on the right-hand side of a search page and choose 'Search Settings'), and look at 'Google Instant predictions'. I was set to 'Only when my computer is fast enough'. I changed this to 'Always show Instant results' and the problem has gone away.

Supplemental - since then the problem has started again. I think the fix above helps, but I'm not really sure.

Tuesday, 12 March 2013

Upgrading to IE10

I've just upgraded my Windows 7 box to Internet Explorer 10, not for wanting to use IE, more out of a belief that it couldn't be worse than IE9.

After I downloaded the installer and kicked it off, it found a short list of programs it felt it needed shut down before it could do its magic:

  • Google Chrome
  • Dropbox
  • What the hell, everything else you're running

Three minutes and a complete reboot later it was finished. My PC is now rather sluggish and the hard drive is making lots of noises, but doubtless that will pass.

How is it that Google manage to update Chrome so efficiently I don't even notice it, but Microsoft still acts like it owns my PC?

Wednesday, 30 January 2013

Fixing Chrome for Android

An interesting tip I feel the need to pass on.

On my Android (version 4.2) phone I typically use Dolphin as my browser. I have Chrome as well of course, but I gave up with it early on as it seemed to be fundamentally broken. For instance, it just refused to open up the bookmarks tab.

Last week I found out why. I had deliberately disabled JavaScript as a security measure. (I don't do much data entry on a phone browser, so I didn't think it would inconvenience me much.) Imagine my surprise to find out that re-enabling it fixes all my problems with Chrome.

I'm still sticking with Dolphin because I prefer its add-on ecosystem, but it's nice to have options now.