A little corner of the Empire on the web.

Showing posts with label geek. Show all posts
Showing posts with label geek. Show all posts

15 July, 2013

Kindle Weather Display pt4 Putting it all together

By this point, if you've followed the previous posts in this series, you should have a server that's downloading weather info from a weather service, and converting that into a Kindle friendly PNG image, and you should have a Kindle that's been jailbroken, has working USB Networking (and SSH access) and has the Kite application launcher installed on it. Congrats, now let's put it all together and finish this crazy thing off.

Setting up the Weather Display on the Kindle


Find the "kindle" folder in the master.zip file you downloaded previously, or get the files from the "kindle" folder on GitHub.

Copy the "init-weather.sh" file into the "kite" folder on the Kindle. Then create a new folder called "weather" and copy both "display-weather.sh" and "weather-image-error.png" into it.

Open up the "weather\display-weather.sh" in a text editor (the same one that understands Unix line endings from above) and change the line that contains "http://server/path/to/weather-script-output.png" to the web server and file location that you set your weather script up on. When you save the file, make sure that you select Unix style line endings (this will probably be an option on the Save As dialog). Safely Remove and unplug your Kindle.

Now you're ready to test everything, you should see a new "PDF book" on your Kindle's screen called "init-weather.sh" if you don't, then switch your Kindle off and back on again. Select that and your screen should flash a few times and then either show your current weather, or show a warning sign and "Weather Image Unavailable".

Either of those mean that everything's working on your Kindle and you've succesfully run a custom script on it, if you get the image unavailable message then check the web address you've put in for the picture is correct.

One other possibility here is that when you click the init-weather.sh your Kindle puts a loading circle in the top-left corner for a moment, and then flashes back to the Home screen, this probably means that either init-weather or display-weather have been saved with Windows line endings (some decompression/un-zipper apps "helpfully" translate the line-endings for you when you extract text files, yours may have done this) just open the files up in a text editor and make sure that they're saved with the Unix line endings option select and try again.

One thing you'll notice when you've successfully got the weather scipt running is that there's only one way to exit it, and that's to hold down the power button on your Kindle for 20 seconds or so and wait for it to reboot. While that's fine when everything's up and running it can get a bit annoying while you're just testing things (like getting connected to your web server, or playing around with the look of the weather page), one alternative is to drop a test-weather.sh file into the "kite" folder containing:

#!/bin/sh
/mnt/us/weather/display-weather.sh

This should show the weather display on the screen for a moment, and then dump you back to the Kindle's home screen.

Set up Cron On the Kindle

This is it, we're nearly there now, just need to set the Kindle up to regularly check back with the server for an updated weather picture. Cron is how we do that.

Firstly, if you've never used Cron before, read up on Cron at wikipedia and follow links to further info if needed. I can also recommend searching for something like "crontab calculator" or "crontab generator" and using one of those to help build up your cron line, or running a search for "cron" on SuperUser.com.

Now you need to SSH into the Kindle again, you know the drill by now, switch on USB networking on the Kindle, plug it in and reconnect to it with Putty.

Once you're SSH'd into your Kindle, mount the file system for editing:
mntroot rw
Edit the CRON file in vi (a command line, text mode, text editor) (unbelievably *nix people like this thing and even fight religious wars over how much better it is than other text mode editors, like it's still 1980)(Wikipedia - Vi).
vi /etc/crontab/root
A list of the jobs in the root cron file should appear:
*/15 * * * * /usr/sbin/checkpmond
*/15 * * * * /usr/sbin/tinyrot
*/60 * * * * /usr/sbin/loginfo tmpfs
*/60 * * * * /usr/sbin/loginfo localVars
*/60 * * * * /usr/sbin/loginfo memusedump
*/15 * * * * /usr/sbin/loginfo powerdcheck
All we need to do now is add the display-weather.sh script onto the end, mine's set to run every 6 hours, starting at just after midnight.
Try 10 */6 * * * /mnt/us/weather/display-weather.sh



Move the cursor to the end of the final line (using the arrow keys), press "i" to switch into "insert" mode, press Enter for a new line, and then type in your cron line, (if you make a mistake, press Escape to exit editing mode, move the cursor over the text to delete using tyhe arrow keys, and then press "x") press Escape to leave Insert mode, and then press ":w" to save the file, and then ":q!" to exit vi. There, wasn't that straightforward and obvious! For more help with vi commands and a tutorial, consult your favourite search engine.

Your crontab file should now look something like:
*/15 * * * * /usr/sbin/checkpmond
*/15 * * * * /usr/sbin/tinyrot
*/60 * * * * /usr/sbin/loginfo tmpfs
*/60 * * * * /usr/sbin/loginfo localVars
*/60 * * * * /usr/sbin/loginfo memusedump
*/15 * * * * /usr/sbin/loginfo powerdcheck
10 */6 * * * /mnt/us/weather/display-weather.sh

And then you restart Cron, to read the new job details, by entering:

/etc/init.d/cron restart

Which should give an output like:
[root@kindle root]# /etc/init.d/cron restart
system: I cron:def:stopping crond
system: I cron:def:starting crond
[root@kindle root]#

Note: while you can set the Cron repeat interval to very small amounts of time when testing, I really wouldn't advise setting it to repeat any more often than every 5 minutes, as to get in there and change Cron's settings you need to wait for the Kindle to come on, turn on debug mode, turn on USB networking mode, SSH in and adjust the timings, all before the weather job kicks in again. That's not a quick process, you'll want to give yourself a few minutes.

Unplug, switch USB Networking off again, run init-weather.sh and enjoy your weather display.

And we're there!

The finished job, a Kindle showing today's weather
Some atypical English weather, showing on my Kindle.

Useful references and acknowledgements:

Thanks to Matthew Petroff for the inspiration and for putting in all the hard work to get all of the original scripts together and get this working on a Kindle in the first place.

Todo

Thoughts for future changes to this:
  • Wind - being a sailor, the wind conditions can be a useful thing to know, a couple of the weather feeds include this, either by default or as an option, so it should be possible to include it with some tweaks to the vbscripts, a tweak of the SVG template, and some new icons.
  • New icons - while the icons included in Matthew Petroff's original collection are clean and clear, I'm quite fond of the old BBC weather icons - they're what I grew up with - a member of the design team for the BBC's new visual style has made a set of icons in the style of the old classics, available here, it shouldn't be much work to swap these in.
  • Two other personal projects that I'm planning to do at some point are learn PowerShell and rebuild my 2003R2 based home server into Server 2012 whilst recreating most of WHS's functionality, as part of this I may rewrite the server-side VBscripts as PowerShell scripts.

Update 07/2016: download links updated now that project files have been moved to GitHub

  1. Introduction
  2. Setting up the server
    • Weather Services
    • Getting the Image Tools
    • Scheduled Tasks
    • Download the Scripts
  3. Setting up the Kindle
    • Jailbreak your Kindle
    • Setting up USB Networking (1)
    • Setting up USB Networking (2)
    • Installing Kite on the Kindle
  4. Putting it all together
    • Setting up the Weather Display on the Kindle
    • Setting up Cron on the Kindle
    • Useful References and acknowledgments
    • Todo

12 June, 2013

Kindle Weather pt3 Setting up the Kindle

Back to the first post in this series.

Setting the Kindle Up


I'm doing this with a black Kindle 4 (non-touch) running Kindle v4.1.0, some of the following steps could change if you have a slightly different model (grey Kindle 4's may have older older firmware which give you more jailbreak options, they may also have the built-in SSH server enabled), I believe that most of this should work on a Kindle 3 (aka Kindle Keyboard) but I haven't tried that, so do it at your own risk.

Jailbreak your Kindle

I used the Universal method from here: MobileRead.com Kindle4NT Hacking.

Get SSH access to your Kindle (USB Networking) - attempt number 1


Plug in the Kindle and create a blank file named ENABLE_DIAGS in the Kindle's USB drive's root, "Safely Remove" the USB cable and restart the Kindle (Menu -> Settings -> Menu -> Restart).

It should reboot into diagnostics mode.

While you're in the diagnostics mode, plug the USB cable back in again and go to USB networking: Misc individual diagnostics -> Utilities -> Enable USBnet -> Exit. This will enable network access to your Kindle via USB.




Windows may fail to autodetect everything, if so you'll probably need to install a specific driver to access the Kindle over USB networking. This .inf file should do the job (I'm running Windows 7, Windows XP users need to do slightly more than this, good luck).

Once you have your driver set up, you'll need to configure the settings on your new network interface, set them to: IP 192.168.15.201 Subnet 255.255.255.0




Open your favourite SSH client (assuming that you have such a thing), I'm using Putty.

Try running Putty root@192.168.15.244 if that connects you're gravy, and your Kindle has a SSH server, if not and you get a "Connection Refused" then you're like me, so carry on.



Get SSH access to your Kindle (attempt 2, USBNet hack)


Download kindle-usbnetwork-xxx.zip from http://www.mobileread.com/forums/showthread.php?t=88004 extract it and copy update_usbnetwork_XXX_k4_install.bin onto your Kindle's USB drive. Safely Remove, unplug, then go into Settings, Menu, Update your Kindle. USB Networking should now be installed.

Restart your Kindle (not strictly necessary, but the Readme's recommend it).

Plug your Kindle in, and double-check the settings in D:\usbnet\etc\config (you'll need to use a text-editor that understands Unix line endings, Notepad won't work here, Notepad++, TextPad and others will work). In particular make note of the IP addresses, by default mine were set to:
HOST_IP=192.168.2.1
KINDLE_IP=192.168.2.2

On a Kindle 4, it's recommended to check that USE_VOLUMD is set to "true"

Following the README_FIRST.TXT from the usbnetwork zip:

  • Safely remove and unplug your Kindle,

  • You'll need to be in debug mode to run private commands, so, on the Home screen, bring up the
    search bar (by hitting [DEL] on devices with a keyboard, or the keyboard key on a K4, for example), and enter:

    ;debugOn

  • And now we can enable usbnet:

    ~usbNetwork

  • If you don't need to enter any more private commands, switch debug off.

    ;debugOff

  • Now, to actually connect to the device, we'll need to bring the shiny new USB network interface that the kernel prepared for us.

  • Plug the Kindle back in, wait for Windows to detect it, your Kindle should now be detected as something like a "RNDIS/Ethernet Gadget" or "CDC Ethernet Device network adapter" by Windows.

  • Then go into network settings, find the new network connection, and set the IPv4 settings to IP address 192.168.2.1 (assuming that's the HOST_IP that was set in your Config file above) and a subnet mask of 255.255.255.0.

  • To test it, open a command window and Ping 192.168.2.2 which should come back with a reply.

  • Now try Putty again:
    putty root@192.168.2.2

  • Hopefully this time you should get a connection and a warning message about the server's "host key". If so, say "Yes" to add the key to your cache, and then you should find yourself at a password prompt. A blank password works here, so you can just press Enter.
Congratulations, you now have SSH working. Careful, you can do a lot of damage here!

Install Kite (Kindle Application Launcher)

Now you need to install Kite, this lets you easily run custom programs on your Kindle. I tried installing Kite using the update package, with no luck, so here's installing it using the script method. First, download the kite.gz file from http://www.mobileread.com/forums/showthread.php?t=168270 and copy the kite.gz file onto the USB drive of your Kindle. If your Kindle is currently in USB Network mode, then you'll need to switch back to USB storage mode to copy the Kite installer onto it, as the usbnetwork command is a toggle, you can issue:
;debugOn

~usbNetwork

;debugOff
Once you've copied the files on, switch back to USB Network mode by issuing the commands again.
;debugOn

~usbNetwork

;debugOff
Plug your Kindle back into your PC again and test connectivity with a PING (depending what you've been doing in between, Windows may detect your Kindle as a new device again. If so, re-set the IP settings back onto the network adaptor as above, I went been to France for the weekend in between setting up USB Networking, so it happened to me). Connect to your Kindle's shell with Putty
putty root@192.168.2.2
Issue the commands to uncompress, and then run the Kite install script:
  • Mount the Kindle file system, type:
    mntroot rw

  • Move into /mnt/us:
    cd /mnt/us

  • Unzip the kite.gz file, and run the install:
    gzip -d kite.gz
    sh kite

Kite should now be installed, unplug your Kindle and then reboot it (Menu, Settings, Menu, Restart). As the reboot happens you may see a kite appear in the picture of the boy reading under a tree, or the land behind the tree may just flatten out, either are good signs. Once it's rebooted plug it back into your PC and check if there's a "kite" folder on the Kindle, if not create one (you may need to move/delete a file called "kite" first).

Next: Setting up the Weather Display on the Kindle


  1. Introduction
  2. Setting up the server
    • Weather Services
    • Getting the Image Tools
    • Scheduled Tasks
    • Download the Scripts
  3. Setting up the Kindle
    • Jailbreak your Kindle
    • Setting up USB Networking (1)
    • Setting up USB Networking (2)
    • Installing Kite on the Kindle
  4. Putting it all together
    • Setting up the Weather Display on the Kindle
    • Setting up Cron on the Kindle
    • Useful References and acknowledgments
    • Todo

Kindle Weather pt2 Setting up the server

Back to the first post in this series

Setting up the server


Matthew Petroff's original scripts assume that you're using a Linux server, they're made up of a BASH shell script (that won't do anything on a Windows box) and a Python script (that needs an extra install of 3rd party software to get it working on Windows), as well as relying on a couple of small tools that either aren't available to us, or don't work as well on Windows.

So to get things compatible with pretty much any Windows box, I've rewritten the shell script as a batch file and the Python script as VBScript, both of those should just work on anything from Windows 2000 upwards, and I've found some replacements for the small tools.

What you'll need for this section:

Create a new folder somewhere on your server (preferably outside of your web server's root) and download and extract the zip file into it. This should give you three folders, one of which is called "Server-VBScript", and in there are three folders called "ServerNOAA", "ServerWU" and "ServerMet" inside each of these you'll find an SVG, CMD and a VBS file. Now you need to decide which weather service you'll be getting your forecasts from, they all make their data freely available for non-commercial usage but have different coverage, may differ slightly in their forecasts of different areas and provide slightly different info, whichever one you want copy that service's folder into the new folder on your server:

  • NOAA - the US Government's NOAA's National Weather Service. The major downside (for me) is that they only provide forecasts for the USA.
  • WU - Weather Underground, run from a US University, they provide worldwide coverage, and in multiple languages
  • Met - Her Majesty's Government's Meteorological Office (The Met Office) forecasts. They only cover the UK (this is what I'm using on my Kindle)

Pick whichever weather service you want, and feel free to delete the other folders if you don't want them.

Weather Services


Depending which weather forecast service you pick, you'll need to find your location code, and possibly sign up for a (free) API key to use it, I'll go though these:

NOAA
All you need is to find the latitude and longitude of your location, and change these in the long URL inside the ServerNOAA\weather-script.vbs file using a text editor, also note that the final parameter in that URL "&Unit=e" sets it to the temperature in Fahrenheit, changing it to "&Unit=m" will output the temperatures in Centigrade.

WUnderground
You will need to sign up for a developer account at Weather Underground, and then you can create a (free for the usage level that we'll be putting it to) API key to access the weather reports. Once you have that you just need to work out your city's code, acceptable formats are:
CA/San_Francisco | US state/city
60290             | US zipcode
Australia/Sydney  | country/city
37.8,-122.4       | latitude,longitude

Then open up ServerWU\weather-script.vbs file using a text editor, find the line with the long URL in it and replace "APIKEY", "COUNTRY" and "CITY" with your API key and location.

Met Office
As with WUnderground, you'll need to sign up for a free API Key to use the Met Office's forecasts, once you have that you can visit the following URL to get a list of the location codes that you can use:
http://datapoint.metoffice.gov.uk/public/data/val/wxfcs/all/xml/sitelist?key=API_KEY
Take the 6-digit location code from there, and your API key, and plug them into the long URL in the ServerMet\weather-script.vbs file using a text editor.

If you've got everything set up right, then when you double-click the VBS file it should create an SVG file in the same folder, showing your graphical weather forecast. You can view this SVG file with most web browsers.

Getting the Image Tools

(Side-story, looking for a suitable replacement for the RSVGconvert *nix tool to do command-line SVG to PNG conversions I went straight to my old, faithful ImageMagick, but every version of that and every option I tried seemed to choke on the embedded icons, eventually I came across Inkscape and discovered it had a decent command line interface, so here we are)

Next download Inkscape SVG editor and extract it into an Inkscape folder in your server's weather folder.

Then download PNGCrush and save the file in your server's weather folder.

Your folder structure should now look a bit like this (the "public" folder won't have been created yet):


Then go into the folder for the weather provider you're using, open the CMD file and edit it to reflect the paths of all these tools, and change the references to the "public" folder to point to the location of the folder within your web server's root that will be serving up the PNG image.

Now try running the CMD file in your chosen folder by double-clicking it, and with luck after a few seconds your 'public' folder should now contain a PNG image that looks a bit like this:

typical English weather

Scheduled Tasks


Finally you'll need to decide how often you want your weather image to update and set up a Scheduled Task in Windows to run the relevant CMD file as often as you want it. Personally I'm going to have my Kindle updating its weather display 4 times a day, so I'm setting my scheduled task to run every 6 hours.


Download the Scripts

  • GitHub project: all files for the project browsable online, and individually downloadable
  • Entire project master.zip (72KB zip compressed file): if you don't know what a GitHub project is, use this link to download everything needed in one go.


Update 07/2016: files and download moved to GitHub, all previous updates merged in.



Next: Setting up the Kindle.


  1. Introduction
  2. Setting up the server
    • Weather Services
    • Getting the Image Tools
    • Scheduled Tasks
    • Download the Scripts
  3. Setting up the Kindle
    • Jailbreak your Kindle
    • Setting up USB Networking (1)
    • Setting up USB Networking (2)
    • Installing Kite on the Kindle
  4. Putting it all together
    • Setting up the Weather Display on the Kindle
    • Setting up Cron on the Kindle
    • Useful References and acknowledgments
    • Todo

09 June, 2013

Kindle Weather Display (from Windows)

I admit it, I'm interested in the weather. What can I say? I'm an Englishman and a sailor, I need something to talk about, and some way to know whether it's shorts weather, or if I need to take a brolly to work. Add in the fact that I love tinkering with gadgets, and have a mini server box sitting in the corner of my living room that spends large parts of the day doing very little, then I was very interested when I ran across Matthew Petroff's Kindle Weather Display blog post.


The only problem was that although he has all of the files available for download from that page, and a barebones hint on how to use them, it assumes a certain familiarity with Linux and its tools, and assumes that you're using a *nix server for the web server, and a *nix machine to do the install from, much of the Kindle hacking needed as a pre-req makes similar assumptions. I've barely touched Linux in the last 10 years (why deliberately make life hard for yourself when there's better choices out there?), was planning to set this up on my Windows Home Server box, and to do it all from my Win7 laptop. Clearly I was going to need to rewrite a few things, and work a few things out.

This is my tale of how that was done, so that you may read it, and do the same yourself.

To accomplish this you're going to need a few things that most people apparently don't have lying around their homes for some reason:

  1. A Kindle to dedicate as the display - while you could use the same Kindle that you use to read in bed at night, or on the train in the morning, that really won't be very convenient. Beware also that we're going to be hacking the Kindle and doing some (potentially harmful to the Kindle) things that will not be covered under your warranty. That said, if you hunt around you can find Kindle 4's for a fraction of their retail price on eBay, the one I'm using is an ex-shop demo unit that I got for a hair under £20.
  2. A Windows server (or at least a Windows box, doesn't necessarily have to be server hardware or a server OS sku) that will be switched on all the time, with an "always on" internet connection (the server itself doesn't need to be accessible from the internet). I have an old Tranquil PC SQA-5H that I use to run my home services, so that'll do me.
  3. A web server installed and running on your Windows server - all we need is a way to serve static PNG images over HTTP, so you won't need anything fancy. Personally, I'm using a Windows Server SKU, so I'm using the built-in IIS web server but pretty much any web server will do, Apache is probably the next most common, and I've used that for projects in the past.
  4. A basic plain text editor that understands the difference between Windows and Unix line endings.
    MS Word absolutely won't do, that's a Word processor not a text editor, Windows Notepad is no good either as it can't handle Unix style line endings. Something like Notepad++ or TextPad (which I'm using) would be perfect for this, many programmer's IDEs (such as Komodo, Eclipse or Visual Studio) also include this if you already have one installed, but don't go installing an IDE just for this as it really would be overkill.
  5. A basic familiarity with Windows and basic, common Windows tools - I'm happy to walk you through the Unix/Linux tools and commands but I'll expect you to know what you're doing on the Windows side

Warning: this is going to be a long one, so I'm dividing it up into a few parts over a few days, click any of the links to skip to parts you're interested in, or read the whole series to do it all. You can do some of the following steps in different orders, but I found it easiest to start with setting up the server while I was still searching eBay for a cheap Kindle.

Next: Setting up the server.


  1. Introduction
  2. Setting up the server
    • Weather Services
    • Getting the Image Tools
    • Scheduled Tasks
    • Download the Scripts
  3. Setting up the Kindle
    • Jailbreak your Kindle
    • Setting up USB Networking (1)
    • Setting up USB Networking (2)
    • Installing Kite on the Kindle
  4. Putting it all together
    • Setting up the Weather Display on the Kindle
    • Setting up Cron on the Kindle
    • Useful References and acknowledgments
    • Todo

06 March, 2012

Mass Effect 3 questions

As someone who played (and loved) the first two Mass Effect games on the PC (after being badgered to just try them by a good friend), I'm on tenter-hooks waiting for the third installment's release on Friday (after the USians got theirs today).

As I'm moving between platforms these days and having a whale of a time in multi-player on XBox, including in the excellent multi-player section of the ME3 demo, I've had a few concerns about the PC/XBox divide, here are the answers I've found:

Tons of useful info there to keep me interested and informed until the final release!

29 April, 2010

Mozilla Weave Minimal Server Setup on Windows

So I've been following Mozilla's Weave project for while, and kept meaning to have a play with it. It's one of their experimental labs projects which recently came out of beta with a 1.0 release. Essentially it's a Firefox add-in that syncs and backs up a whole load of your settings and data back to a central server, including your bookmarks (and I have a lot!), saved passwords, preferences, history and open tabs. If, like me, you use more than one PC in more than one location then it's great knowing that Firefox is always setup how you like it wherever you are.

There are two parts to Weave; the Weave Firefox add-on (Weave is also available as an add-on for Mozilla's Fennec mobile browser), and the Weave server.

Most people install the add-on and sync their data back to Mozilla's Weave server, there's nothing wrong with that, all of your data is encrypted on your PC before it's sent to Mozilla's web server, so it's all secure and they have no way to access your private information. However you can also download the code for the Weave server and set it up on your own machine. Now, being that I have my own Windows Home Server* that's on 24/7 and accessible both within my home network and across the world via the internet I didn't really see the point in using someone else's server!

So I looked into it, and there are two options for installing your own Weave server there's the full server, which is a complex install and has all sorts of components that are only needed if you're going to act as a Weave server for many thousands of clients, or there's the Minimal Weave server, which has an incredibly simple server install (provided your machine already has all of the pre-reqs) and yet still implements the full Weave 1.0 API. Linux PCs are very likely already going to have most of the pre-reqs already installed (Apache web server and PHP for the Minimal server), Windows machines very likely won't.

I decided that as my Weave server is only ever going to be used by me, and possibly a few family members in the future, the simple install option sounded best! Particularly after I'd looked into it, and seen just how much effort was needed to install a full Weave server on a WHS box!

(Instructions on how to install an older version of the full Weave server on WHS are available on WeGotServed's wiki. note that this is for an outdated Weave version and won't SSL encrypt your traffic)

* A great little Tranquil PC SQA-5H series 1 server running MS Windows Home Server.


Stage 1: Setting up Weave Minimal server on Windows Vista

I don't like to mess up my server too much, it has a job to do, and does it well. I have a number of WHS add-ins installed, but have done the minimal amount of messing around on the server directly (and as a Microsoft certified server admin, this is against my nature ;). So to work it out, step one was to set Weave up on my Vista desktop, which luckily already happened to have a copy of Apache running, and I really don't care if this box gets messed up in the process!
Step by step instructions for how I did it are below.

Installing and configuring all required software for the Weave Minimal server:

  1. Download and install the Apache 2.2 web server (I cheated here as I already had Apache set up and working on my PC, stage 2 coming in a few days will have more detail for this step). Apache download page.
  2. Test Apache, point your web browser at http://localhost/ and make sure that you can see the Apache welcome page.
  3. Stop the Apache server -
    • Either using the Stop item in your Start menu under Apache HTTP Server -> Control Apache Server
    • Or by double-clicking the Apache 'feather' icon in your Windows system tray and clicking the Stop button in the Apache Service Monitor window that appears.
  4. Download and install PHP 5.2. Go to the PHP for Windows Download page scroll down to PHP 5.2 and click the Installer link under the VC6 x86 Thread Safe link. Run the installer, it will ask you the following questions after you Accept the licensing agreement:
    • Where to install PHP to, just accept the default that it offers you.
    • Select the web server you wish to setup: Select Apache 2.2.x Module.
    • Apache Configuration Directory, click Browse and go to C:\Program Files\Apache Software Foundation\Apache2.2\conf\
    • Ensure that the following Extensions are selected:
      • Extensions -> Multi-Byte Strings
      • Extensions -> PDO -> SQLite
      • Extensions -> SQLite
  5. Download the Weave Minimal server files from tobyelliott.wordpress.com/2009/09/11/weave-minimal-server/ unzip them using Winzip (or any other similar tool, Windows' built-in unzip tool can't unzip .tgz files) into a new folder called weave_minimal in the following folder: C:\Program Files\Apache Software Foundation\Apache2.2\htdocs
  6. Open Apache's configuration file via Start -> All Programs -> Apache HTTP Server... -> Configure Apache Server -> Edit the Apache httpd.conf... and add the following line to it at the bottom:
    Alias /weave "C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\weave_minimal\index.php"
  7. Start Apache
    • Either using the Start item in your Start menu under Apache HTTP Server -> Control Apache Server
    • Or by double-clicking the Apache 'feather' icon in your Windows system tray and clicking the Start button in the Apache Service Monitor window that appears.
  8. In Firefox go to http://localhost/weave/1.0/blah/info/collection if everything has worked you should see an "Authentication Required" box pop up, enter "blah" for the username and type anything as the password. The box will pop up again, just click Cancel, don't worry about this. You'll see a "File not found" web page, don't worry this is normal. Now if you go to the weave_minimal folder that you created earlier you should see a new file called weave_db this means that you now have your very own, working Weave server - well done!
  9. All that remains now is to create your user account(s) on the server and set up Firefox to talk to the server!

Setting up user accounts on the Weave server

Go to your weave_minimal folder that you created earlier in Windows Explorer, hold down the shift key and click the right-mouse button on a blank bit of the window, you should see a menu entry that says "Open Command Window Here" select that. Copy and paste the following line into the new window (Right-click -> Paste):

"C:\Program Files\PHP\php.exe" create_user

You can then press "c" to create your user and enter the desired username and password. Repeat for any further user accounts that you want to set up on your server.

Setting up Weave in Firefox to sync with your new server

  1. Install the Weave Browser SyncFirefox add-on from the Firefox add-ons website.
  2. Restart Firefox
  3. When Firefox starts up again it should take you straight to the Weave settings screen in Firefox's Options. Select Use a custom server from the drop-down menu. Fill out the boxes as below:
    • Server URL: http://localhost/weave/
    • User Name: The username you created earlier
    • Password: The password you created earlier
    • Click Sign In
  4. You'll be asked to type in a secret passphrase, you need to make a not of and remember this, it is a bit like a second password and is used to encrypt your data in Firefox before it is sent to the Weave server. You'll need to enter this and your user name and password when you set another copy of Firefox to sync with your Weave.
  5. If everything went well you should get a successful login and the Weave status at the bottom of your Firefox windows should show that it is successfully syncing
  6. Well done!
Next Steps

The server that we set up above is OK as a test server but is only accessible by Firefox on your one PC (or by other copies of Firefox on your home network if you enter the Server URL Weave's settings as your http://yourPCname/weave/ but it's not accessible over the internet at all. That's deliberate, the Minimal server doesn't encrypt your username and password as you login to Weave, these are sent over the network in clear text, not something you want to do over the internet.

Next time I'll be setting up Weave on my Windows Home Server box and taking advantage of the free dynamic domain name and free SSL encrypted connection that you get with WHS to allow me to connect to my Weave server over the internet using an SSL encrypted connection, so that my username and password are encrypted as they travel across the internet, and safe from anyone snooping.


Music that got me through this: The Orb - "The Orb's Adventures Beyond the Ultraworld, deluxe edition" playing on my Logitech Squeezebox Boom, classic, calming ambient house - just what I need.


Edited 16/5/2010 to correct the PHP version used.

04 March, 2008

EveBerry

This post's been sitting in my queue for a while, sorry!

Vlad (of Mozilla and Firefox fame) posted to the EVE-Online fourms a while ago about his new EveBerry tool, that can be downloaded here: EveBerry -- a BlackBerry EVE Character Monitor:.

It's similar to EVEMon and market monitoring apps, but for your Blackberry smartphone (assuming you have one, I do) and is very, very cool and very, very useful.

That's all!

I CAN HAS BOTZ

Since my last set of Lol Bots images (featuring Red Dwarf's Kryten, Ghost in the Shell's Tachikoma and Fritz Lang's Maria), the site seemed to go quiet for quite a few months. Luckily over the last few weeks rstevens has grabbed the editorial reins back and posted a slew of new images, including two more of mine.

I started off a little late for Valentine's with Kryten and Camille:

(It really was E5 A9 08 B7, no need to spell it out)

And finally got a bit of my favourite geekery in with 3PO:

(Metal body: 1, Fragile Skin and Bones: 0)

18 June, 2007

Safari for Windows Update

An update to the previous post: Safari for Windows.

I'd like to say that the Safari 3.01 beta update fixed the problems with my curved borders mentioned in the the previous post, but I probably ought to stick my hand up and admit that uploading the updated CSS file that's been sitting on my hard disk for about 2 months is almost certainly what fixed it! So Safari's new border radius properties do actually work on Windows, and they really do look gorgeous, all anti-aliased and shaded, against Firefox 2's pixellated efforts, or IE 7's non-existent effort :).

However still some quite quirky UI issues:
I'm really not sure I like the way that the Preferences window shrinks and grows every time you change tabs, and the fact that it's all instant apply with no 'OK' or 'Cancel'.
Also the Mac-style window re-sizing is really beginning to wind me up, particularly as the cursor doesn't change to the 'double-headed' resize arrow until after you start dragging in the one place that actually works, so there's absolutely no clue which parts of the UI you can or can't grab to resize until after you click the mouse to try it!
And finally just noticed that clicking the File menu on a non-resized window (with my Classic XP style) gives a really ugly blocky overlap of the window edge.

11 June, 2007

Safari for Windows

So Apple have just released a beta of the "Safari 3 web browser for Windows!Windows Safari

First impressions are great, all my web sites, and my favourite sites seem to work well, and look beautiful. Text flowing around flowing objects is definitely better than Firefox 2 or IE 7. Text just looks great full stop.

Downsides, its a bit like when Apple first shoved all that brushed chrome theme stuff over Quicktime for Windows, its just not a Windows app at the moment. You can't drag window borders to resize, you can't even drag window corners (except for one in the bottom right).Windows Safari - menus with coloured borders Also if you're using XP with the Classic theme the menus are a bit messed up :).

Just remember to deselect all the stuff-ware that you don't want when you download and install it (the default download bundles Quicktime, and it tries to get you to install some network discovery tool as you install).

Hmmm seems to dislike my curved borders, even though I'd thought that I had the Safari CSS right, guess there's nothing quite like actually testing to find out what happens instead of just crossing your fingers and hoping!

Via Asa and Burnt Electrons.

UPDATE 18/6/07, see the follow-up post.

10 June, 2007

LOL BOTS for teh w1n!

I never really got the whole captioned (or macro-d) kittens craze, as exemplified at I CAN HAS CHEEZBURGER, maybe its because I'm just not a cat person (the guinea pigs work for me though).

However LOL BOTS is a concept that I can totally get behind. And have. My three submissions to the site (so far) are below:

I started off by injecting a little bit of class into the proceedings:

(I feel that I really ought to apologise to Fritz Lang at this point)

Then a little bit of hungry tachikoma:

(Maybe they really do have a ghost?)

And finally some boyz from the Dwarf:

Smeeee-ee-eeeeh-eeeg heeeeaaad

And almost certainly more to come!

PS Is it just me, or does xkcd have a comic for every occasion?

09 May, 2006

At last they're mine!

Remember way back when when I entered the MSN World's Best App competition with my Connect Four game?

Remember just a few months back when the winners were announced?

Well... my second place prizes have (finally) arrived! I'm currently playing around with my Oakley Thump sunnies, loading them up with music and looking just slightly silly :).

Also included in the prize is a nice, shiny copy of MS Visual Studio 2005 Pro (worth more than the rest of the package put together) and every Oakley Thump accessory available (but one). Its like Christmas came in May!

Looks like I'm going to be wearing my sunnies everywhere I go for the next week or two come rain or shine.

Just gotta finish by saying W00t new goggles! Thank you Microsoft!.

06 February, 2006

Maximum w00tage!

So MSN just announced the winners of their World's Best App contest today (or maybe late yesterday, can't do these timezone calculations in my head


Have a look down the list of winners, see that game in 2nd place called Connect Four? I made that

Edit 11/2/06:
Looks like its official! The official "Inside Windows Live Messenger" blog has just posted an article on Messenger’s Worlds Best App Contest Winners.

31 January, 2006

This entry has been brought to you by the letters "C" and "N", and the feeling of pain

Chuck Norris v Bruce Lee in 'Way of the Dragon'
  1. Chuck Norris' tears cure cancer. Too bad he has never cried.
  2. Chuck Norris does not sleep. He waits.
  3. Chuck Norris does not hunt because the word hunting infers the probability of failure. Chuck Norris goes killing.
  4. Chuck Norris counted to infinity - twice.
  5. Chuck Norris sold his soul to the devil for his rugged good looks and unparalleled martial arts ability. Shortly after the transaction was finalized, Chuck roundhouse kicked the devil in the face and took his soul back. The devil, who appreciates irony, couldn't stay mad and admitted he should have seen it coming. They now play poker every second Wednesday of the month.
  6. When the Boogeyman goes to sleep every night he checks his closet for Chuck Norris.
  7. Mary had a little lamb. Then Chuck Norris ate it.
  8. If you can see Chuck Norris, he can see you. If you can't see Chuck Norris you may be only seconds away from death.
  9. Chuck Norris is a God-fearing man. Unfortunately, God is a Chuck Norris-fearing god.
  10. The Dinosaurs looked at Chuck Norris the wrong way once. ONCE.
  11. Chuck Norris is currently suing NBC, claiming Law and Order are trademarked names for his left and right legs.
  12. The chief export of Chuck Norris is pain.
  13. When Chuck Norris sends in his taxes, he sends blank forms and includes only a picture of himself, crouched and ready to attack. Chuck Norris has not had to pay taxes ever.
  14. Chuck Norris sleeps with a night light. Not because Chuck Norris is afraid of the dark, but the dark is afraid of Chuck Norris
  15. Chuck Norris built a time machine and went back in time to stop the JFK assassination. As Oswald shot, Chuck met all three bullets with his beard, deflecting them. JFK's head exploded out of sheer amazement.
  16. Chuck Norris has already been to Mars; that's why there are no signs of life there.
  17. Chuck Norris is not hung like a horse... horses are hung like Chuck Norris
  18. If at first you don't succeed, you're obviously not Chuck Norris.
  19. If Chuck Norris is late, time better slow the fuck down.
  20. As a teen Chuck Norris impregnated every nun in a convent tucked away in the hills of Tuscany. Nine months later the nuns gave birth to the 1972 Miami Dolphins, the only undefeated and untied team in professional football history.
  21. They once made a Chuck Norris toilet paper, but it wouldn't take shit from anybody.
  22. A blind man once stepped on Chuck Norris' shoe. Chuck replied, "Don't you know who I am? I'm Chuck Norris!" The mere mention of his name cured this man's blindness. Sadly the first, last, and only thing this man ever saw, was a fatal roundhouse delivered by Chuck Norris.
  23. Chuck Norris' penis is so large that it actually warps the fabric of space-time. Indeed some physicists now theorise that the passage of time is mearly a byproduct of Norris' colossal erections. This is known as the "Chuck Norris' big cock theory of space-time".
  24. Someone once tried to tell Chuck Norris that roundhouse kicks aren't the best way to kick someone. This has been recorded by historians as the worst mistake anyone has ever made.
  25. When Chuck Norris was in middle school, his English teacher assigned an essay: "What is Courage?" Chuck Norris received an "A+" for writing only the words "Chuck Norris" and promptly turning in the paper.
  26. Chuck Norris doesn't read books. He stares them down until he gets the information he wants.
  27. Chuck Norris died ten years ago, but the Grim Reaper can't get up the courage to tell him.
  28. Every time Chuck Norris smiles it saves the life of a dying man. Ironically, Chuck Norris only smiles after he kills someone.
  29. Chuck Norris does not teabag the ladies. He potato-sacks them.
  30. Chuck Norris lost his virginity before his dad did.
  31. While riding the elevator, Chuck Norris never pushes the button, the elevator better just know what floor Chuck Norris needs to be on.
  32. Chuck Norris frequently donates blood to the Red Cross. Just never his own.
  33. To prove it isn't that big of a deal to beat cancer. Chuck Norris smoked 15 cartons of cigarettes a day for 2 years and aquired 7 different kinds of cancer only to rid them from his body by flexing for 30 minutes. Beat that, Lance Armstrong.
  34. Superman owns a pair of Chuck Norris pajamas.
  35. At birth, Chuck Norris came out feet first so he could roundhouse kick the doctor in the face. Nobody delivers Chuck Norris but Chuck Norris
  36. When an episode of Walker Texas Ranger was aired in France, the French surrendered to Chuck Norris just to be on the safe side.
  37. Chuck Norris can touch MC Hammer.
  38. Before he forgot a gift for Chuck Norris, Santa Claus was real.
  39. Chuck Norris ordered a Big Mac at Burger King, and got one.
  40. According to Einstein's theory of relativity, Chuck Norris can actually roundhouse kick you yesterday.
  41. Chuck Norris' action figure has slept with more women then most men.
  42. The quickest way to a man's heart is with Chuck Norris's fist.
  43. Chuck Norris appeared in the "Street Fighter II" video game, but was removed by Beta Testers because every button caused him to do a roundhouse kick. When asked bout this "glitch," Norris replied, "That's no glitch."
  44. Chuck Norris doesn't use pickup lines, he simply says, "Now."
  45. Chuck Norris owns the greatest Poker Face of all-time. It helped him win the 1983 World Series of Poker despite him holding just a Joker, a Get out of Jail Free Monopoloy card, a 2 of clubs, 7 of spades and a green #4 card from the game UNO.
  46. Chuck Norris' hand is the only hand that can beat a royal flush.
  47. A Handicap parking sign does not signify that this spot is for handicapped people. It is actually in fact a warning, that the spot belongs to Chuck Norris and that you will be handicapped if you park there.
  48. Chuck Norris once ate three 72 oz. steaks in one hour. He spent the first 45 minutes having sex with his waitress.
  49. Chuck Norris clogs the toilet even when he pisses.
  50. Chuck Norris
  51. The grass is always greener on the other side, unless Chuck Norris has been there. In that case the grass is most likely soaked in blood and tears.
  52. Chuck Norris once ate a whole cake before his friends could tell them there was a stripper in it.
  53. Filming on location for Walker: Texas Ranger, Chuck Norris brought a stillborn baby lamb back to life by giving it a prolonged beard rub. Shortly after the farm animal sprang back to life and a crowd had gathered, Chuck Norris roundhouse kicked the animal, breaking its neck, to remind the crew once more that Chuck giveth, and the good Chuck, he taketh away.
  54. Once a grizzly bear threatened to eat Chuck Norris. Chuck showed the bear his fist and the bear proceeded to eat himself, because it would be the less painful way to die.
  55. Oxygen requires Chuck Norris to live.
  56. Chuck Norris invented the spoon because using knives to kill people was just too easy.
  57. Similar to a Russian Nesting Doll, if you were to break Chuck Norris open you would find another Chuck Norris inside, only smaller and angrier.
  58. Most reported Bigfoot sightings are just Chuck Norris with his shirt off. Loch Ness sightings, on the other hand, are Chuck with his pants off.
  59. Chuck Norris has a word for a person he puts into a coma; that word is "lucky".
  60. Chuck Norris can unscramble an egg.
  61. Cars were invented to have a faster way of fleeing from Chuck Norris. Not to be outdone, Chuck Norris invented the car accident.
  62. A recent poll discovered 93% of women think about Chuck Norris during sex. A similar poll discovered Chuck Norris thinks about Chuck Norris 100% of the time during sex.
  63. Chuck Norris is 1/8th Cherokee. This has nothing to do with ancestry, the man ate a fucking Indian.
  64. Chuck Norris can make a woman climax by simply pointing at her and saying "booya".
  65. Don't even bother. Chuck Norris already did it. Better.
  66. Chuck Norris likes to knit sweaters in his free time. And by "knit", I mean "kick", and by "sweaters", I mean "babies".
  67. Chuck Norris called 911 one time in his life, just to hear his new ring tone.
  68. Chuck Norris doesn't have to do anything for a Klondike bar.
  69. Bullets dodge Chuck Norris.
  70. It was once believed that Chuck Norris actually lost a fight to a pirate, but that is a lie, created by Chuck Norris himself to lure more pirates to him. Pirates never were very smart.
  71. Chuck Norris does not know about this site. Otherwise he would have deleted the internet.
  72. Chuck Norris does not urinate. He actually scares the piss out of himself.
  73. Chuck Norris is like a dog, not only because he can smell fear, but because he can piss on whatever the fuck he wants.
  74. A man was once stranded on the side of the road after his car ran out of gas. Chuck Norris drove by, got out, and looked the man in the eye. The man knew that everything would be fine. Then Chuck proceeded to piss into the man's gas tank and to this very day that man has never had to fill his gas tank up again. That was 14 years ago.
  75. Chuck Norris can eat soup with a fork.
  76. Chuck Norris knew what Willis was talking about and killed Gary Coleman for his blatant ignorance of the fact.
  77. Chuck Norris was the fourth Wiseman. He brought baby Jesus the gift of "beard". Jesus wore it proudly to his dying day. The other Wisemen, jealous of Jesus' obvious gift favoritism, used their combined influence to have Chuck omitted from the Bible. Shortly after all three died of roundhouse kick related deaths.
  78. If you ask Chuck Norris what time it is, he always says, "Two seconds till." After you ask, "Two seconds to what?" he roundhouse kicks you in the face.
  79. Chuck Norris can divide by zero.
  80. After much debate, President Truman decided to drop the atomic bomb on Hiroshima rather than the alternative of sending Chuck Norris. His reasoning? It was more "humane".
  81. One time in an airport a guy accidently called Chuck Norris "Chick Norris". He explained it was an honest mistake and apologized profusely. Chuck accepted his apology and politely signed an autograph. Nine months later, the guy's wife gave birth to a bearded baby. The guy knew exactly what had happened, and blames nobody but himself.
  82. Chuck Norris doesn't have to stop bullets becuase they know better.
  83. Chuck Norris can eat a Rubix Cube and poop it out solved.
  84. Chuck Norris, Vin Diesel and Arnold Schwarzenegger have all died and are in Heaven. Each of them hope to occupy the seat next to God. God asks Vin Diesel why he thinks he should have the seat and Vin replies, "I believe... I should have the seat because of the virtuosity in my toughness and pride." Arnie says, "I believe... that I should be the one sitting next to you because of all my achievements." God then turns to Chuck Norris, who replies with, "I believe... you are sitting in my seat."
  85. Chuck Norris once bet NASA he could survive re-entry without a spacesuit. On July 19th, 1999, a naked Chuck Norris re-entered the earth's atmosphere, streaking over 14 states and reaching a temperature of 3000 degrees. An embarrassed NASA publically claimed it was a meteor, and still owes him a beer.
  86. Chuck Norris always has sex on the first date. Always.
  87. There's no such thing as a tornado. Chuck Norris just hates trailer parks.
  88. Achilles was supposedly the greatest warrior of all time, but he died because of his weak spot, the Achilles tendon. There is no Chuck Norris tendon.
  89. Chuck Norris's girlfriend once asked him how much wood a woodchuck could chuck if a woodchuck could chuck wood. He then shouted, "HOW DARE YOU RHYME IN THE PRESENCE OF CHUCK NORRIS!" and ripped out her throat. Holding his girlfriend's bloody throat in his hand he bellowed, "Don't fuck with Chuck!" Two years and five months later he realized the irony of this statement and laughed so hard that anyone within a hundred mile radius of the blast went deaf.
  90. Heart disease may be the new leading cause of death in women age 45 to 65, but Chuck Norris is still the leading cause of death in men age 0 to 125.
  91. On Neil Armstrong's second step on the moon, he found a note that said, "Chuck Norris was here."
  92. Anyone can piss on the bathroom floor, but Chuck Norris can shit on the ceiling.
  93. Every dinosaur skull ever found has the imprint of a size 15 cowboy boot on its jaw. Scientists are baffled, but we know damn well why.
  94. Chuck Norris challenged a statue to a staring contest. Chuck remains undefeated.
  95. Before each filming of Walker: Texas Ranger, Chuck Norris is injected with five times the lethal dose of elephant tranquilzer. This is, of course, to limit his strength and mobility, in an attempt to lower the fatality rate of the actors he fights.
  96. Jesus's Birthday isn't December 25 but Chuck Norris once sent him a birthday card for that day, Jesus was too scared to tell Chuck the truth. Thats why we celebrate Christmas
  97. Chuck Norris was going to spend a relaxing day watching television when one of those commercials for Trix cereal came on. Angered by what he saw, Chuck Norris spent the rest of his, what was supposed to be a relaxing day, punching every child he came across. He would then shout at them, "Trix are for Chuck Norris."
  98. There are two kinds of people in this world: People who are Chuck Norris, and people who are going to die.
  99. According to the Laws of Physics, it is impossible for Chuck Norris to build more muscle. Upon realizing this, Chuck Norris swiftly roundhouse kicked every Law of Physics known to man, as well as those known only by Chuck Norris. He now has the ability to will His muscles to any level of strength He desires at any given time.
  100. If Chuck Norris were a calendar, every month would be named Chucktober, and every day he'd kick your ass.
  101. Fear is not the only emotion Chuck Norris can smell. He can also detect hope, as in "I hope I don't get a roundhouse kick from Chuck Norris."
  102. The easiest way to determine Chuck Norris' age is to cut him in half and count the rings.
  103. When the movie Pulp Fiction was filmed they had to borrow Chuck Norris's wallet... It's the one that says "Bad Mother Fucker" on it.
  104. When Chuck Norris says "More cowbell", he really MEANS it.
  105. Chuck Norris shot the sheriff, but he round house kicked the deputy.
  106. Chuck Norris invented the internet… just so he had a place to store his porn.

Thanks to QQQQ's Chuck Norris Fact Generator, have a look there for any new facts!

09 October, 2005

On the British Film Industry

So, here in the Brit-land, whenever its a bit of a slow news day and the cinema's filled up with American imports, the usual pundits sit up and start bemoaning the state of the British Film Industry. Sure we've had the odd success every now and then. Everyone points to "Four Weddings and a Funeral", and "Notting Hill" but come on, Richard Curtis does not a film industry make. You can add in the 'not quite so nice, but really good' films, like "Trainspotting" and "Lock, Stock", but we're still hardly talking multiple multiplex filling box-office smashes every season here.

Souddenly something happened, a flash of an idea entered my mind. What five things are undeniably cool, lift up any movie from great to amazing, and yet, sadly, aren't native to the British Isles?

Monkeys

Ninjas

Samurai

Jedi

Zombies

Now I'm sorry, but try to name one classic movie of the last fifty years that couldn't have been improved by the addition of a gratuitous Ninja sneaking through the storyline, being all cool, deadly and stealthy? We can all learn from the lessons that the Zombie-filled "Sean of the Dead" tried to teach us.

Can you imagine "Saving Private Ryan" with Jedi storming the beach, leading the charge toward the German pill-boxes, lightsabers flashing side to side so fast that they're just a neon blur? Come on, you can't deny that the film's already twice as great!

Only a small change here, but what if one of the members of the Ring Fellowship in "Lord of the Rings" had a pet monkey that did tricks in the background during the slow bits of the movie?!

Those were big Oscar winning films, now just imagine the effect that a swarm of the walking, brain-eating undead would have on the average dreary, depressing, 'ain't life hard in the North' Brit flick. Think of a group of unemployed coal miners deciding to strip flesh for cash? (I was going to think up a zombie themed name for this film, but couldn't think of any combo of "Full Monty" and zombies that didn't sound like a porn film).

Do I need to go on?

So my final word to the British establishment, start using a bit more prejudice when you're funding films, vote with your wallet, vote for Samurai, Ninja, Jedi, Zombies and (most of all) Monkeys!

PS Final word here, but if there's a Zombie Ninja Monkey in the script, don't even hesitate, just grab your pen and sign on the dotted line. It literally cannot possibly fail!

PPS Final, final word - some dude with a cutlass in his hand, a pistol tucked in his rope waistband, an eye-patch, peg-leg, a parrot on one shoulder and a monkey playing with his tricorn hat just grabbed me and whispered menacingly in my ear, "Don't forget the pirates, young Jim-lad. Arrrrrr." I was just happy he didn't bit my ear off. In reflection I hope that Keira Knightley and her pirate friends can be added to the list.