Marvellous Movies!
Hulk (the incredible one) kick’d asz! Then I saw Iron Man, it kick’d moar asz!!1
For Iron Man, make sure you stay till after the credits.
And if you haven’t seen either, see Iron Man first.
Wake On LAN Through the Internet
Wow. Four posts in as many days! This blog is smokin’!
Firstly, I’d like to say that to add to the super l33tness of this post, I used WOL and VNC from halfway around the globe to get local admin access to my router to check all the settings necessary for this to work. l33t.
Wake on LAN is a very useful tool that allows you to send what is known as a ‘magic packet’ over a LOCAL area network to boot up a specific PC, whose MAC address appears in the packet. Googling this will give you any number of applications and tutorials to accomplish this. Getting this to work from outside your LAN however, is a tad trickier.
DIY Email to SMS Gateway
Well, despite the ‘Wake on LAN’ being the ‘popular’ choice for my first how-to, as Murphy would have it, it’s not working now for some inexplicable reason. Hence the subject of this post will be getting emails to be automagically rerouted to your cell-phone by SMS.
Firstly, you unfortunately need to pay somebody to send you SMSes. Good choices in South Africa are WinSMS or BulkSMS. In both cases you sign up for an account and prepay a certain amount of SMSes. The example below uses BulkSMS.
Next, you need to set up a mail forwarder to execute a php script. I’m not entirely sure it’s possible with all hosts, but it is with Site5.
Create a mail account (I get bounce errors if the account doesn’t actually exist) eg “sms2me@mydomain.com”. Instead of forwarding to another email address, specify the following:
| /usr/local/bin/php /home/your_home_dir/path_to/sms2mail.php
Next you need the script to actually take the mail passed to it and ship it off through your third party gateway.
Disclaimer: This is code was pulled in from all over until I got the cursed thing to work. Requires curl libraries to do the form post. No warranties express, implied or otherwise apply. Some emails still come through with rich formatting etc, which uses up all your 160 available characters. I need to look into this at some stage.
#!/usr/bin/php
<?php
// read from stdin
$fd = fopen("php://stdin", "r");
$email = "";
while (!feof($fd)) {
$email .= fread($fd, 1024);
}
fclose($fd);
// handle email
$lines = explode(”n”, $email);
// empty vars
$from = “”;
$subject = “”;
$headers = “”;
$message = “”;
$splittingheaders = true;
for ($i=0; $i < count($lines); $i++) {
if ($splittingheaders) {
// this is a header
$headers .= $lines[$i]."n";
// look out for special headers
if (preg_match(”/^Subject: (.*)/”, $lines[$i], $matches)) {
$subject = $matches[1];
}
if (preg_match(”/^From: (.*)/”, $lines[$i], $matches)) {
$from = $matches[1];
}
} else {
// not a header, but message
$message .= $lines[$i].”n”;
}
if (trim($lines[$i])==”") {
// empty line, header section has ended
$splittingheaders = false;
}
}
$headers2 = “From: $fromrn” .
“Reply-To: $fromrn”;
mail(’###@gmail.com’, “[SMS] “.$subject, $message, $headers2);
$message = substr($message,0,155); // make sure it fits
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘http://bulksms.2way.co.za:5567/eapi/submission/send_sms/2/2.0′);
curl_setopt ($ch, CURLOPT_POST, 1);
$post_fields = “username=###&password=###&message=$message&msisdn=27#########”;
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response_string = curl_exec($ch);
curl_close($ch);
?>
Now back to getting my wake on wan to work again…
What is this blog for?
Ok, so clearly I (and you, the blessed reader) aren’t getting enough bang for my buck, blog-wise, so why on earth did I renew for another year, you might ask?
Well, besides blogging, I’ve hacked together a couple of useful server-side scripts over the years that I still find immensely useful, in my personal capacity, reader-be-damned. Here are a few of them:
- Screenscraping TVsite.co.za to get the day’s telly viewing on one page, one click from my bookmarks toolbar
- Sending Wake-on-Lan “magic packets” to my router, which passes them on to my desktop at home, so that I can boot up my PC from anywhere in the world to use VNC, with just a click of one of my (non-shared) del.ico.us bookmarks.
- Automatically emailing my gmail account when above happens, so I know my PC’s booted up properly (ok, this has nothing to do with my webhosting, but my ISP’s open mail server)
- Emails to a private account on my domain get forwarded through an SMS gateway to my number, so I can get booking confirmations etc sent straight to my phone.
A couple of these, particularly the Wake-on-Lan and email gateway story were a bit of a headache to get to work, so if people are interested, I may actually write some blog-entries with how-tos!
Another year
So, Site5 has just hit my credit card for another year’s hosting fees. Hopefully the next 12 months will yield more blog entries than the last 12 did (a grand total of 6, including 2 pathetic jokes). @ $7.95 per month, that costs me a whopping R125 per entry!
DVD Shelf Organiser for TV Cabinet
Finally, after years of waiting, a blog entry worth reading!
A while back I bought a TV cabinet at an auction. The only problem with it was it had grotty broken slats on the display case door, which I didn’t much care for. I broke those out and replaced them with a pane of glass. Much nicer, but if you don’t keep the inside neat, it looks terrible.
While it’s all very nice and geeky organising your DVD catalogue online, if they’re just tossed higgledy-piggledy into the display case, they’re pretty hard to browse, and aren’t all that nice to look at.
I had the notion that because the cabinet was slightly deeper than three DVD boxes, a bunch of appropriately sized steps, so that the DVDs could be stacked behind one another in layers, would go a long way to neatening up my cabinet.
So I whipped out my trusty tape measure and measured up the cabinet, and DVD boxes - taking my LOTR extended editions into account too! I then went to Builder’s Warehouse and got them to cut up a plank of 20mm SA Pine into slats that I roughly thought would do the job. I’m a tad embarrassed to say I botched the measurements of one of the planks, so I’m not going to be showing a side view of the finished product, but here’s a Sketchup rendition instead:
Obviously you’ll need to adjust the width to match your needs - in fact I made mine way too snug and couldn’t actually get it into the cabinet once it was varnished, so some disassembly was required.
Everything is screwed together from the top, so that no screws are visible from the front. Basically three screws along the front of the horizontal slats hold the front panels in place, and then two screws on each side keep the horizontal slats on the L-shaped braces.
I (actually Lina) gave it a couple of coats of coloured varnish to make it match the cabinet. As I said, I botched the measurements, so I wasn’t planning on showing the finished product, but Lina said if I didn’t, no-one would ever get to appreciate her varnishing job. So here it is:

After that it was just a matter of alphabetising, and squeezing them all in! It looks like I’m going to need to put in another shelf above the top level, but for now I’ve returned the LOTR boxes to the entrance hall bookshelf to give the rest of my collection some breathing room.

While putting all the discs in alphabetical order I noticed some interesting coincidental juxtapositions, like “Hot Fuzz” next to “Ice Station Zebra”, and “The Silence of the Lambs” next to the “Sound of Music”.
I also realized that a heck of a lot of movies start with “S”!
Google Earth Traceroute database update
After analysing the logs for my website, it appears that the majority of the traffic coming here is for my Google Earth Traceroute. So being a diligent netizen, I have updated the IP georeferencing database to the Jan 2008 release. It appears to be quite a bit more accurate than the one I was using from 2006!
As per terms of use, I am obliged to say:
This product includes GeoLite data created by MaxMind, available from http://www.maxmind.com/.





