Programming
In case you didn’t know, the default WPA key in Thomson/SpeedTouch routers is generated from the router’s serial. By some strange coincidence, so is the router’s SSID, which means that if you know the SSID (which is public knowledge), you can brute-force the serial.
There are programs to do this already, but they were not future-proof or open enough to work now, so I wrote a small Python script to do it. Just enter the last part of the router’s SSID (e.g.
These days I am trying my hand at a rewrite of Dead Man’s Switch, to add more features and generally improve the service.
One of these features was being able to add multiple emails in the “recipients” field, and I wanted to do this as cleanly as possible, so I decided to create a Django model with custom validation. This was not immediately obvious, as the docs didn’t mention much.
Today I learnt that my sister’s house had gotten burglarized (laptop, camera and my two original gameboys with 30ish cartridges gone), who the hell would rob a student’s house?), so I needed a distraction to get my mind off it. Since I like playing 7 Cities on the iPhone, I started a game, and the online high score submission intrigued me, so I thought if I could somehow hack it to put myself in the first spot.
I figured that they probably used a simple HTTP request to post it, and if I could intercept it I could change the parameters accordingly and send a counterfeit one.
I discovered today that Moneygement won’t accept unicode characters when someone adds transactions by email because of the editdist module I used to check it. Since I don’t really need a fast function to do it (it’s all eight-letter words on average), I decided to write my own Python version of the function and am sharing it here if anyone needs it (because I haven’t found a Python implementation anywhere). It’s released under a BSD license with attribution, meaning that I’d like it if my name was mentioned where it is used :)
Oftentimes, when you design programs or objects or anything else, you have to make sure that people who lack certain prerequisites can still use what you designed. They must not fail badly, and they must still be at least a bit usable in extreme circumstances. For example, a car’s doors must always open from the inside, even if the battery is dead and the locks are magnetic. Therefore, the mechanism opening the doors must be purely mechanical.
This weekend I had no internet connection thanks to a DSL upgrade (well, more like downgrade, since I’m getting half the speed I got before) and since I had Python, PIL and a webcam, I decided to see what I could do.
After playing around a bit with PIL and motion recognition in images, I decided to write an image stitcher.
My newest creation, Gmail Checker, has just been released. You can get it from the downloads page.
Gmail Checker is (yet another) Gmail notifier. It sits in your system tray and checks your Gmail account(s), notifying you when you have new mail. It supports multiple (unlimited) accounts, Gmail for your domain, is open source (source will be posted soon) and has many customizable options.
It is written in Python using wxPython, which means it runs under various operating systems, but I haven’t tested it on anything other than Windows. The current download link is a setup file that installs everything required to run it, which is why it’s a bit large (3ish MB), but you can also just get the source (50ish KB) and run it anywhere were Python and wxPython are installed.
These past few days I realised I’m a bit rusty on my appication programming, having mainly programmed scripts and websites for quite a few years. I decided I wanted to go back to the good old Visual Basic days, but if possible without VB. Since wxPython is apparently the best toolkit available for Python, I decided to give it a try.
Needless to say, I was swamped. Sadly, despite the best efforts of the people working on this project, the documentation isn’t exactly the best. I had no idea what to do, but I knew that I’d need an graphical IDE if I was going to design anything using this thing, so I downloaded Boa Constructor (get the CVS version).
If you’re like me, you have probably stumbled upon PyPy by now, and if you’re like me you didn’t understand exactly what it is. If you’re not like me, PyPy is a Python implementation written in Python, but, uhh, what does that mean?
The PyPy site isn’t all that helpful. It says:

Here are various programs you can download, just click on their name. They are all freeware/open source (except Snoop).
GmailChecker 0.1.5
Gmail Checker is another Gmail notifier. It sits in your system tray and notifies you if you have any new Gmail emails.