Amazon, you're a large part of my Christmas Depression

I used to think quite highly of Amazon, after all, they are pretty much the poster face of pioneering online shopping. However, this year, I feel they've let me down a lot.
You see, on the 9th December, I decided to get my "and you're done", done. I basically went online to get all the Christmas presents that I could remember. I spent a good time online, populating my shopping cart. I made extra special sure that a) the items I picked were sold by Amazon and not one of their affiliates, I also made superduper mega extra sure that b) all the items I picked were in stock. That was very important.
As I bought quite a few items, I was eligible for the "Super Saver delivery", basically free, but with a much longer delivery time. Five to seven days, I seem to recall. But I didn't choose this cheapskate option, because I figured that 5-7 days from the 9th December would be cutting it too close to Christmas.
The reason is that some of these presents were for my family in Sweden. This mean that I needed the items quite in advance before Christmas, which, by the way, is on the 24th in Sweden (and Finland). I needed the items delivered, then I needed some time to wrap them, write some pressie-poetry, put ribbons on them, labels etc. To stick them back in a box, and then to march off to a post office filled with other Christmas-posters. I anticipated congestion, delays, everything going wrong (how wrong I was! - Read on!).
This negative attitude (or is it realistic!?) meant that I stuck my hands in my virtual debit card pocket and paid the measely £8 extra for a "First Class" delivery (not "Express Delivery"). This had a lead time of 1-3 business days. On the 9th, that would have meant that, since all items being in stock, I might even have the parcel from Amazon on Saturday 13th. Giving me the weekend to do the wrapping etc. Even if the parcel arrived on Monday, I would have ample time to repackage and send the Christmas pressies off.
But time passed...
... And yet more time passed...
... My attention was focused on other Christmas things...
... and still more time passed by...
And suddenlty it was the 17th, Wednesday and I hadn't heard a peep from Amazon. This is where I got really depressed, because I knew that I'd have virtually no chance of doing this properly. Caz noticed this and offered to give Amazon a call. She got through but wasn't really able to hurry things up without a) paying £18 extra (!!! for an already delayed delivery!) or b) starting to be "very annoyed customer". To cut a very annoying story shorter, part of the goods arrived Friday 19th. I dropped everything, wrapped things up, badly, and stuck them back in the same box they arrived in, and rushed to the local post office. To my surprise I was 2nd in line when I arrived. Awesome. Which in turn is a totally different feeling to what I felt when I was told that the parcel would cost me just a tad below £40 to reach Sweden within time for the evening efforts of the merry guy in red and white. Yes, fourty squidderinos, four-zero... forty!! That's a huge percentage of the value of the goods within the box. Annoyingly I could have gone cheaper, should I have placed the items in a smaller box. Which would have take time. Time that I had given away to Amazon.co.uk. Time I couldn't get back.
Top this off by the fact that I'm sitting here, increasingly annoyed by the fact that it is, today the 23rd of December. It's now some 30 odd hours away from St. Nick to knock on the doors of the Swedish homes to deliver presents to the anticipating children and children-in-adults-disguises. I still have not recieved the other part of my order. There's no f**king way I will be able to get all my presents to Sweden before "the event". Thanks so f**king much, Arsemazon! If you would have kept me informed, I would have been able to cancel the order, go to a real friggin shop with real items and real people in it and buy things with real money - which brings me to the next point. Part of me doing this on the 9th was so that I'd get to spend all my money whilst I actually had them in my account. But, you see, dear readers, when you order with Amazon they only screw over your debit card once they have the items shipped/picked or something. Not when you order it. Which does make sense in one way, but in this case it now meant that my account has been hit by the Amazon fees (and the Post Office fees), when I have "already spent" my money. Friend of order will point out that I should keep better eye on my finances, which is true to an extent. I would however like to point out that I'm, by profession, not a banker or accountant. Keeping an eye on my money isn't my primary concern in life. I have therefore arranged to be served with regular text messages and I have an overdraft so I don't have to play accountant all the time. My point is, if things would have gone the way I wanted, I wouldn't be overdrawn at the moment. Friggin annoying!

Top this all of by the fact that I really don't want to have Christmas, I'm merely stepping into the character because I'm more or less demanded to do so by the society. Top this off by my feeling of being poor, because I should spend my money, say, fixing my (french!) car, paying off my credit cards, saving money for doing, the downstairs toilet, garage flat roof, and the front garden.

Oh, and this'll be the first Christmas when my Father isn't with us. That's scarred by my 80 year old grandmother telling how, last Christmas, he was adamant about preparing the Christmas meal for both of them, but being in such bad shape that he had trouble eating the food he had cooked. Something nobody told me, until after he had passed away, which would be about 2 months after last Christmas.

So, you know what, Amazon, you've partially screwed up my Christmas - and potentially the Christmas of those who aren't receiving their presents - but frankly, you didn't have much of a chance to make it into a good one anyway.
I sincerely hope that, whoever reads this, will have a really nice warm and cozy Christmas. And finally, Caz, I'm sorry for being such a sh*t about this all.
.... And I'm done....


Forward linking in Rails with Users and Roles

One of my gripes with Rails is that it doesn't come with a basic permissions system that incorporates users and groups or roles. Show me the modern web application that doesn't have at least an admin user and a public user. Anyway, away from that rant...
The most common way to incorporate users into Rails is to use Restful Authentication (RA). On top of that you can add roles with Role Requirement (RR). Together these two provide you with a very good base wich includes both users (login, logout etc) with roles in a Many-To-Many relationship. Sweet!
I was wondering how to do forward linking (don't know if that's the 100% correct term). And by that I mean, I want to link to a page (Controller/Action) from the current page. But depending on whether the current user (available as current_user within RA and RR) has got permssions to see the page I want to either disable the link or just hide it. I was facing a nightmare, but luckily I started studying the code, and Tim, the author of Role Requirement has already implemented this. Unfortunately Tim didn't name it very eloquently. In fact, I don't think there's a perfect way to name it. He called it 'url_options_authenticate?'. I've created an "alias" (not a real Rails alias; I tried, but failed, and I'm a bit lazy) of it and I've called it 'current_user_can_access?'.
To do this alias, I simply created a new method in /lib/role_requirement_system.rb like this:
def current_user_can_access?(params = {})

But you also have to add this line to the top of the file:
klass.send :helper_method, :current_user_can_access?
Just below the line that activates 'url_options_authenticate?'. Now you should be able to do this in your views (I'm omitting the ERB tags as Blogger hates them):
if current_user_can_access? hash_for_contactss_url
and you can thus decide whether you should show something or not.
You can also use it in conjunction with link_to() and link_to_if()
link_to 'List contacts', :controller => :contacts, :action => :list if current_user_can_access? hash_for_contacts_url
link_to_if current_user_can_access?(hash_for_contacts_url), 'List contacts', :controller => :contacts, :action => :list
But as you can see, that's not very D.R.Y, so application_helper.rb to the rescue.
def access_link_to(name, url_hash)
link_to(name, url_hash) if current_user_can_access? url_hash

def access_link_to_if(name, url_hash)
link_to_if(current_user_can_access?(url_hash), name, url_hash)

Use access_link_to() if you only want to show the link when the user can access the page. If he/she can't access the page, there's nothing displayed. Use access_link_to_if() you want the link to be plain text if the user can't access the page, and naturally a link if the user can access the page.
I wanted the non-link to be "greyed out", and as I've already got a helper called "discrete()" my access_link_to_if() now looks like this:
def access_link_to_if(name, url_hash)
if current_user_can_access? url_hash
link_to(name, url_hash)

Isn't that just happy-dandy-wonderfully-cute-and-cuddly!?
Slight disclaimer: In the code, Tim says that there might be some problems. He also verifies in this discussion. I tried to figure it out, couldn't be bothered, and what testing I've done, it seems to be just fine. Mileage may vary.


F**k censorship!

It was just a question of time wasn'tit...?! One should have seen it coming when UK was using anti-terrorist laws to seize the assets of the Icelandic bank.
Either way, an estimated 95% of UK residential Internet users are now censored, including me, and quite likely, you. The worst thing about this censorship is that it's been conducted in secrecy. If I try to access the censored page I get a standard looking 404 - page not found error. No message about the resource being censored, or why.
You can read more abou this on BBC News: Wikipedia child image censored, then on Wikipedia itself: Wikipedia:Administrators' noticeboard/2008 IWF action.
Neither IWF nor my ISP has got any rights to censor what I'm to read or see on the Internet. That business is left to the long arm of the law. Unless you're part of the Police force, let me do my browsing as I see fit.
What's next...?! Is my Finnish bank going to be put under censorship as I'm trying to move finances over there at the time of the financial crisis..!? (Just FYI, crisis or no crisis, I still need to pay off my student loan!!).

Free my Internet now! F**kers!


An MP3 album for £3..?! Yes, it's true!

It's finally here! It's true! Amazing! I've ranted about the digital music business before. And my bottom line has been that we need DRM free music, and it needs to be cheap. I am of the opinion that the physical media is still viable, and that the physical media is worth more than the digital media.
I've also stated that digital music is good for music that we want to listen to, but perhaps not own. It's also good for speed. Say you're heading off for a long flight in the morning and you want some new music, MP3 player and a good download service will be good here.
Let me elaborate on the first category though; I like rock music, but I'm not a fan of certain bands, however, I do want to have the songs in my catalogue, but I don't care about the albums on my shelf. Led Zeppelin is one such. They are a rock giant, a legend, classic! But I'm not sure I'd go out and go "Oooh, look, bargain Led Zep album", but I could turn the volume up if my random playlist would chuck it up.


Without much fuzz, Amazon's UK MP3 service has launched. I thought it was going to be "the usual rubbish", i.e MP3 files (goood!!!) but priced at £7.99 or so. I was quite sure I wouldn't be interested. But I was wrong! Albums start at £3 (that's three pounds zero pence only). But I thought those £3 albums would be rubbish indie type music that I gladly never heard of, and gladly never would have to hear of... I was wrong! Amazing! It's not the best music that's that cheap, but I did found some stuff worthy of buying.

... Including three Led Zeppelin Albums... Led Zeppelin, Led Zeppelin III and Led Zeppelin IV. Sweet... three albums for £9, and they've downloaded whilst I've typed this! My ISP won't like that, but we're moving on anyway.

Goforth and download!

Oh, and if you live in Finland you might try my friends MP3 Download shop; Meteli.net/Downloads. Sadly these guys aren't big enough to push the prices down to the Amazon level, but they deserve support (to grow and to then push the prices down!)

Migrating from Eclipse Internet ADSL

We've had it. When we joined Eclipse Internet they had a fairly cool Internet Usage policy. It basically stated that during peak hours, 09:00 to 18:00 you should not abuse the bandwidth usage, other hours they didn't "give a toss". This changed to that the peak hours were capped to a certain bandwidth per month. 20GB in our product's case.
Then they decided to change peak hours to 09:00 to 23:00. This means, that during my waking hours (which are pretty much 90% of the Eclipse peak hours), our whole house hold is restricted to use 20GB per month. If I'm saying that we have 5 computers running, and we're two persons, of one who works form home all the time, using the computer most of the time, then you'll see that this is a very slim allowance.
Let's assume that every computer needs 500MB of updates per month. That leaves us with 17.5GB of free usage per month. Spread out per day that's about 580MB per day.
I know that my girlfriend isn't a very high-bandwidth-user, but she does enjoy some YouTube clips and other such things that most of us "click about".
I'm not a very high-bandwidth-user either, but I do tend to consume when I'm awake. You see, I like to listen to Absolute Classic Rock, use Last.fm, and YouTube too, but I also have huge IMAP mailboxes that are online too, not to mention my chat software. But not only that, I tend to download trial software and screencasts associated with that. Add to this that I host some smaller sites on my network, which means that you might be accessing my ADSL without even knowing it. Now you don't have to do much math to see that the 580MB per day is quickly consumed.
In the future, I would like to add to my consumption streaming video, something like Apple TV or the Blockbuster box. This would pretty much kill my usage dead. One HD movie twice a month and almost no other usage... no thanks.

This all lead us to looking into switching and when we once again got an "Amber status" and the net was down for 2 hours today (from 9am sharp to 11am sharp - coincidence?!?!) it was time to make a move. I logged into the control panel, and there it was the "MAC Code [request]"-link. That link only took me to a page trying to explain to me why I should stay, and then it asked me to ring them. Fxxkers! Then I tried to open up a support ticket stating that I wanted my MAC code. Before I clicked submit there was a fairly rude message telling me again to ring them or to write them a letter at the specified address, and the text "No other means of communication will be accepted" - they are deliberately making it difficult to migrate away from them. I left them an arsy complaint about the difficulties of reaching them and then I rang them up.
Funnily the first option on their "selection menu" is "If you want to migrate away, press one". I got through to a nice lady who asked me why I wanted to move. I stated that 9am to 11pm is when I'm awake and that that's when I want to use my Internet, and she suggested using a download manager. I stated I didn't want to listen to Internet radio when I was asleep, nor would I update my computers when I am sleeping.

Goodbye and good riddance! Eclipse Internet does not understand Internet Bandwidth Consumption. I hope you run out of customers, because this is not a way to treat customers.


We went to see Airbourne.

Caz and I went down to London to see Airbourne (warning; Flash and music) at the Astoria. The band was great, but our evening was riddled with little annoyances. I'm probably getting old or something, but to me it's really annoying when these little things put a bad slant on the evening. Let me run through my gripes (stop reading here if you don't want to hear about them).
We got on the train, and ordered a Gin & Tonic - but there were no ice. So it wasn't that good. And naturally there was a mother in the train with two kids, who were quite well behaved, but they still kept singing, bouncing and just chatting about. Not too much of a problem.
When we got to London we found a pub, which was very full. Amazingly we found a table, so we sat down and seconds later two other guys thought that the corner of the table was up for grabs for their drinks. Umm.. OK?! Not much of a problem. Until one of them started bumping into me, and just didn't understand "personal space". We finished our drinks and gave our chairs to another couple of guys and left. Trying to find another watering hole and feeding place we were walking around in the drizzling rain.. and then I spotted a Nando's sign in the distance. SAVED! Yay! The Nando's experience was immacculate! Food was great, restaurant not too full and everybody was pleasant. After the food we nipped into a pub for another quick drink before we walked down to Astoria.
At the Astoria we got in and got a couple of drinks quickly. We even found quite a nice spot. Just at the back at the raised bit. Sadly this was hampered by two things
First annoying thing was that there was a very strange couple just to the left of us. One tall guy, in fact, he was standing on the low floor, and I was standing on the rasied bit, and he was still taller than me. To his left was a woman. This woman was so much into the music that the only way I can describe her is for you to imagine a 60 year old woman, on some super duper acid-trip being sexually stimulated with the biggest pneumatic-jack-hammer you can find. She kept moving about, and the guy kept moving away, onto our path. So initially we kept on moving too, but soon we had had enough. A lot of songs later and and a lot of annoycance later she ended up standing behind the guy... to our right! AHHAHAH! She probably jumped into my hand a few times too. Arsehole!
The second problem with the concert was the sound. I don't know if it was too high volume or where we were standing or a combination, but immediately when the band started playing my ears had enough and the whole concerts sound to me can only be described as throwing a duvet cover over your speakers at home. Utterly crap! Today I'm blessed with lowered hearing and tinnitus.
To top it off on the train home a bunch of 20-25 year old drunken idiots decided to be in our car. They were loud, very loud, and f**king annoying. If this is "normal" behaviour I'm not suprised people get knifed left-right-and-centre! They got off half-way home and everybody sighed of relief.
People are arses.... and "people" might include yourself. Be careful out there.
I'd love to see Airbourne again, the gig was just fantastic. Their energy was totally amazing, and their songs are, of course, right up my alley. If I go to Astoria again, I won't stand at that spot.
There you have it, all in all a very cool evening, slightly spoilt by bad sound and people.


Updated to Rails 2.2.2

When there's a new version of any software I usually shudder and shy away from it. Trouble free upgrade paths can happen, but sometimes it doesn't. Granted normal "computer software" tends to be quite stable these days. The more "low level" the software is, the more can (and thus will) go wrong.
When I saw that Rails 2.2.2 was out, I had to take the back-seat for a while and wait for the storm to pass. Today I took the plunge. I upgraded my dev machine to Rails 2.2.2 and to my surprise the problems were minimal! First thing I had to do was run gem install rubygems-update and then update_rubygems to get the gem system up to 1.3.1 a normal gem update --system wouldn't do. This was well documented on the 'Net though - no problems. Then I changed the RAILS_GEM_VERSION line in environment.rb to reflect the new version of Rails.
The only real problem I've stumbled upon so far is that the Inflector stuff has changed. I had to change Inflector.inflections do |inflect| in environment.rb to ActiveSupport::Inflector.inflections do |inflect|, that's it. Why this change has been made I don't know, but I'm glad I didn't have to spend much time on it.
Easiest Rails upgrade so far..?! Thanks guys!!


I bought a song from iTunes Music Store

Yes, I'm sad to admit that I fell for it. I was sitting in the sofa, I had a few minutes to spare whilst Caz was finishing up dinner. I was bored. I was fiddling with my phone and I clicked the iTunes icon. And there it was, staring right at me. The new Guns N' Roses Chinese Democracy single. I clicked the preview (prelisten?!) button as I had done several times before. Just as I guessed, the preview wasn't long enough to actually give me any "real" part of the song. In a moment of weakness and curiosity I clicked the "Buy" button and spent £0.79 on a DRM'd track that won't play anywhere else than on my phone and through iTunes on my computer. I know there's ways to get the track freed from its chains, but I don't think one should have to go through that. Either way, the experience was absolutely painless, it was swift, and it delivered exactly what it promised. Before I even had a chance to grumble I had the new song playing on the phone. In perfectly good quality. That was nice, but still I can't get my head around the fact that this song is now jailed to my hardware.
Should I whinge this much about £0.79?!?! Well, yes, I think so. First of all, £0.79 is too much for a simple track. It's simply too costly. If the price would be £0.29 per track, I would probably be much more inclined to buy. But I would only buy "actively" (I have to say that now once I've fallen into the trap once) if they would chuck away the DRM junk. My set-up at home is that I have a cabinet for CD albums. These CDs have been ripped into high quality MP3 files. These files are primarily stored on my server (and backed up onto DVDs) on its mirrored disks. I can then play these MP3 files from a variety of players. Including, but not limited to:
  • iTunes on my laptop
  • iPod software on my phone (through syncing via iTunes)
  • Simplify Media app on my Phone
  • Squeeze Center (artist previously known as SlimServer) on any computer in the world
  • Amarok on my garage laptop.
  • On my Roku Soundbridge in the living room
  • Streaming them to the Nokia N800 Internet Tablet.
And so forth. As you can see, my music doesn't require a physical presence. It's quite wonderful and remarkable (20 years ago I would have been declared insane if I would have proclaimed this would work!).
My music all lives free; except for my one track from the iTunes Music Store. How sad, sad sad.


Let me see if I got this right.

I know I'm stepping out on a bit of a limb here as I'm not siding 100% with the "poor and innocent victims".
Let's put this into a me-perspective. Let's say I'm out riding my bike merrily being a biker, nuisance, menace to society, anti-social etc that bikers are classified as normally. Then this cr*p old Ford Sierra comes next to me, or let's say I overtake it and the driver pops a fuse and starts "racing me". For all I know this moron in the 1,500kg batting ram might be out to kill me, or at least nudge me "kindly" off my bike and then give me a couple of faces full of fists. Either way, I decide to use my bike to my advantage, it's faster and handles better than the Sierra. Easy choice. I speed up, to try to get away. Now the Sierra doesn't like this, and speeds up even more. It ends up with the Sierra losing control and crashing into another car. Now, it's my moral obligation to stop and help in a crash, but as far as I know I have no legal reason for stopping. And as it's a "safe" car, I'm assuming that the people will stumble out of the car with a bit of bruising etc. So I do the morally wrong, and ride away. After all, I didn't crash, I was fearing for my safety and so forth.
A bit later and I'm sent to prison for six (that's 6) years for causing the accident... How does that add up?
Right, now first of all. I didn't do this, and I'm not involved, but it does seem that this can happen in todays society.
In all fairness, the details on this news snippets are vague, and they're angled towards sensationalism, but the header is quite clear; Death Crash Biker. BBC News is a bit more factual about the Man jailed over five-death crash. Let's make it clear. It's an absolute tragedy for the people in the car that was innocently hit. It's terrible. They are the true victims here. I do fail to see why there's not more shouting towards the driver of the Sierra. As far as I can tell this was the person who caused the crash, and he had two passengers. Shouldn't he be the one that's being crucified?! He clearly drove past his capacity in a car that's not renowned for being the best handling car in the world. Oh, and the biker in this case isn't blame free either. He's been riding dangerously, and if the law deems that he was part of the accident then he's also leaving the scene of an accident. Both very very very bad. That he's been bragging about it just shows how flawed his, and the country's, moral is. But it's hardly criminal?!
Apparently he's admitted causing death by dangerous driving (under how much pressure?!). Sure, ban the biker for life from being in control of a vehicle, but jail? Surely he'll come out of there as a bitter person not having much faith in his freedom.
Either way, total tragedy, and I don't know all the facts. He might have sverved in front of the Sierra to actually really totally cause the accident, and so forth. Still nobody mentions that the Sierra could have at any time slowed down and not caused the accident.
I guess I'm just miffed, and I'll probably get crucified for trying to see this thing from another view than the sensationalist journalists seem to take. I'm very sad that innocent people had to suffer. That's not right.
Bit more here: Death crash biker loses jail term challenge . Thanks M.


Patch; It's my bag, baby

Cats have a tendency to sit on things you leave out. This time it was
my KTM SuperDuke's pouch that I left on the floor. It's her bag now,


New motorbike; KTM 990 SuperDuke R

It's been a manic 45 days or so. Not only did I have my first "proper" motorcycle accident, I've also written my first bike off (hopefully the last). Not only this, but I also managed to have a motorcycle crash at about 110 miles per hour, and stand up once I had stopped tumbling. Yes, you read that right. Thanks to all my protective gear (and probably a shedload of luck - if you believe in such things) I managed to roll down the road, onto the grass and into a wall of old tyres. Stop, and stand up. This is, IMFO, a big F.U. to all of you who say that motorcycling is dangerous. You should read up on the subject first. Anyway. My belowed BMW K1200R is now a mere memory of good times and finally a piece of bent alloys and scraped/broken plastics. I miss you so much.
For about 45 days I lived in limbo; We (mainly Crazy Caz) dealt with the insurance companies, I was pondering the future of my existence, I was wondering what there would be if I didn't go to the next level, was there another level. Could there be a hidden level? But above all, I was pondering what bike to go for after having the BMW K1200R. For you who might not know about the BMW, it's farily heavy, quite long, but it handled like a ballerina despite being overweight. It was also blessed with one of the most powerful engines I've ever ridden. It actually had the torque to do a standing burnout at 1,500 rpms (out of 11,500), idle is 1,000 rpm. It looked aggressive, in fact, I've never seen a bike like it. But now she's gone (and I know it's a faux pas to say "she" about a vehicle, but I really liked this bike).
The dust is just about to settle properly. The insurance claim is 99.5% done, finances reshuffled, and I have a new bike. I didn't have the heart for going for the same make/model. I just couldn't replace my "baby" with another baby. BMW had announced the K1300R and I wasn't very keen on it. It looks a bit off, and I just can't see what super-duper-hero-powers I'd get from an extra 100cc, especially as it's still a heavy beast.
Without stringing you along further, my new bike is a KTM 990 SuperDuke R of 2008 vintage. This was the only bike that provided the following characteristics (jap manufacturers make notes!).
  • High quality components for the chassis (Suspension, brakes and frame)
  • Fairly low weight
  • Fairly high power
  • Without ridiculous top speed (it's easy enough to annoy/get hurt without doing 130mph+)
  • Without swiss-army-knife-riding position
The KTM SuperDuke R weighs under 190kg without fuel. That's basically the weight when you'd run out of fuel. Unlike jap-manufacturers (and other culprits) this weight is with all other fluids, and they do mount up. It's got 130bhp claimed. My bike comes with the dogs-doodah-exhaust made in Tit-anium which should help it even more. It's got high quality WP adjustable suspension front and rear. And the rear damper has got high and low speed compression damping. Sweet. It's also got an adjustable WP steering damper. Wheels are Marchesini. The brakes are Brembo ones, 'nuff said. They're lovely. The frame is stiff as Hef on his birthday with a truckload of bunnies and another one of Viagra. Giggety. And it looks friggin mean. It comes in my favourite colour too, satin black. Simply the best.
The riding position is upright, the seat is so hard that you start dreaming about having a nap on a park bench. Strangely the seat is not annoying.
And, it's got no fairings (or Fairies as by my "expert" in-law), which means that top speed will be reserved for only short stints that really require it, than "defaults" 150mph+ comfortable rides.
Bad points?
Well, "my" dealer is 45 minutes away. It's got 4,000 mile service intervals (Der Panzer had 6,000) and I'll invalidate my warranty if I change oil myself. Go figure. Above all, the low rpm fuelling is absolutely positively totally incredibly fully abysmal. It's as crap as the mayor of the City of Crap, in the valley of Crap, in the county of Crap, in the country of Crap, on the Continent of Crap in the hemisphere of Crap on the planet of Crap in the solarsystem of Crap.
I have never ever experienced a fuelling that has had the urge to throw me off like a rodeo bull when approaching a roundabout, calmly. Something will have to be done abou this. Did I mention the fuelling isn't up to my spec..?
But other than that it's quite a fantastic bike. Not only from the components, but from the engineering too. I changed the clutch cover and got to see the clutch basket. It's filled to the brim. It's the most tightly packed clutch I've ever seen. It's beautiful. Another thing is, I can remove the rear tail unit by; 1) Unlocking the seat, and just yanking it off. 2) Pull a lever, and just simply yank the whole rear body work off. Full access, immediately. Awesome. Same thing at the front. I unscrew two screws at the headlight cowl, and the whole thing pivots forward. Easy access to everything. Perfect.
We'll see how the bike grows on me. Right now, it would be pink fluffy clouds if the fuelling gremlins wouldn't be huffin' about.

And, finally; 'ere she is!
"Funnily" I've already tinkered on the bike. It came loaded with some Carbon fibre bits and bling bits which I have removed. The bike was a bit more expensive than I wanted to spend, so I decided before buying it that I'd get rid of some of the "extras". I've now sacrificed about 700 grams of added weight for the odd £450 returned (Subject to contract. :P). I've also built a prototype "tail tidy" for it getting rid of 450 grams. Next up is, Finnish flags, heated grips (HEY! I'm 35, and I've had 2 BMWs prior to this!), GPS mount, and so forth...

... I think I like the bike... :)


Archos 405 2GB + Bullet Camera

I've just received this Archos 405 2GB media player plus the Archos Helmet Camcorder (whch I like to call a Bullet Camera). I've taken a few test videos. Quality is OK, but the useability leaves a bit to be desired. I can't for example start/stop the whole defice from the remote control. I have to start the device, then use the remote to start/stop recording. Then we have the fact that the microphone is on the remote and clicking the remote gets recorded very well. Another annoying fact is that the "DVR Travel Adapter" (the piece that clicks to the bottom of the player/recorder) has got a circular power input, whereas the actual Archos 405 gets charged through a mini USB slot. This means that I can't get a standard USB car-charger to power this device on my motorbike. I'll now have to find some sort of an multi-car-charger-thingy. And, it seems like I can't make the device power on from connecting the power... but natrually I've not tried as I don't have a charger with that connector.
Almost forgot, the cost for this set-up is £143. About £45 for the Archos 405 2GB, a 16GB SDHC card at £23 and the expensive camera at £75. This is pretty much the cheapest set-up I've been able to find (that records to some sort of quality).
Hopefully I'll get some nice footage - we'll see.


Halleluja! BMW Motorrad are ditching their 3-button indicators

It's been a long time coming, but the new BMW K1200* series now have "proper" indicator switches!!!! (sorry for the exclamation marks). Let me make sure I cover all bases.
"Normal" indicator switches on a motorbike is handled by one multi-switch. It's located at your left thumb. You push it towards the right to turn right, and you push it towards the left to turn left. You push it in (forward actually) to cancel the indicators.
Now, BMW, who insist on doing things "a different way" has at some point deviced that you need one switch on the side to which you're turning. This results in one switch on the left and one on the right. It sounds logical, but it's not. On top of this you need a method of canceling the indicators, and the BMW idjiteers have placed another button for that at your right thumb. You push it upwards to cancel the indicators. (And for reference there's no other bike manufacturer that insists on having a button that you push in a totally unnatural direction. Imagine if you'd have a mouse button above the keyboard operated by your thumb.) All in all you have three buttons operating your indicators, two on your right hand controls and one on the left hand controls. Some bikes have also have a hazard indicator cancel (and on some you can activate the hazards on the same) button.
Let's forget the manufacturing costs of all these buttons (including the cabling etc), but lets have a look at how you operate them. This is what happens in UK (riding on the left hand side of the road). Let's do an overtake. You need to accelerate, indicate, change gear, overtake, indicate again and then possibly slow down. Right, so let's pull that apart into molecules. First I indicate right with my right hand thumb, pretty much at the same time I need to apply throttle with my right hand. Notice I have to use my right hand to do two controls. I've moved lanes and I'm now overtaking. And at this point, you might need to change gear. This involves grabbing the clutch with your left hand, pretty much at the same time when you need to indicate left to get back to your original lane. Notice again how I have to use one hand to perform two actions. The next step is to slow down - for example if you have another car in front of. You now need to use the front brake with your right hand, at the same time as you need to cancel your indicator by lifting your right thumb upwards. Once again I'm using one single hand to perform two different actions.
Ok so this is in a left hand "drive" country (which incidentally covers more people than right hand drive countries). The situation wouldn't be too different riding on the "right" side of the road. Obviously the system works slightly better if you overtake on the left. But you're still using two hands to do one control action.
With a "traditional" set of controls the right and left hand controls are divided into two logical "hands". Your right hand controls acceleration and decelration (throttle and brake). Your left hand controls the clutch and auxillary functions, such as indicators, lights and horn. Quite logical in my not so humble opinion.
I'm so relieved to see that BMW has come to terms with this on their "flagship" bikes (previously the F650 series and other ones had had "traditional" controls). The new K1200R, K1200S and K1200GT as of 2009 model have got real proper indicator switches. BMW has finally learnt that you do not need to have multiple switches to operate one function. And above all, you don't need to mix in the hand that controls the speed!
Well done, BMW! About 15 years or so too late, but still. Well done!
The pictures attached to this post are 1) left hand BMW-bar. You can't see the orange big indicaor button, it's hiding just below the red horn button (which incidentally is where the indicator switch it on a "normal" set-up. Oh the times I've honked at people when I've tried to cancel the indicators). 2) The right hand BMW-bar, showing the orange indicator switch and the cancel button above that. And finally 3) the new BMW switch. Aaah... all is well!

Banks have double standards..?

I find the current financial situation quite annoying. BBC keeps reporting that banks' shares keep falling. I have very little sympathy for them. To me they deserve to go bust if they've done bad business. Just like any other company. Sadly it isn't that easy. What the banks has done (and this is the bad business part) is that they've given away more money (as loans) than they actually have in savings from the customers. They knew this was the case, but in the stupid banker's head it's OK as long as you're making money on the money you've leant out. It's always been a fact that if everybody would go reclaim their savings from the bank (i.e empty all your accounts), the bank would go bust. But even if you'd just take out the money of your savings less your debt (personal loans, mortgages etc), the banks would still go bust.
Anyway, I have a really good way to save the banks from going bust. Or at least give some of the money back to the bank. All you fat bankers who've had bonuses over £10,000, I think you could lend that money back to the bank at 0% interest. I know, I know, poor you, why you, why be mean to you...?!?! well, it's simple, you probably partook in the decision of overdebting (that's probably not a word) your employer. So why don't you now take your responsibility and pay the employer back, and say you're sorry for you stupid decisions. Come on, fess up!
Rant over..!


Lights on, that includes you, BMF

This is a pet-love-hate topic of mine, but I haven't aired it here on the blog yet. I was thinking of writing about it on my "proper website" but I've never got around to it.
Anyway, EU has put through legislation that requires all cars to have daytime running lights (DRLs) by 2011. This would mean that you can now see which cars are running by looking at them and checking whether the lights are on or off. In my opinion this is good. But many bikers think this is a bad thing.
You see, many many many bikers, including the BMF, live in a belief that because bikes run with the lights on, they're distinguished from cars. They also believe that if you put your lights on during the day in your car, then you're more or less masquerading as two bikes. To me this edges on pure bullshit (there, I said it!).
Admittedly this fact is true, but only if you decide to look at it from this narrow perspective. You see, the "fight" is not bikes versus cars. Really, it's not. Try to get over that for a second. Then find out what the "fight" really is about. In my opinion the "fight" is about life versus death. Notice that I'm not pointing out bikers or car drivers in particular, but everybody. All of us. It's about getting home safely so you can hug your partner and have a cold beer. That's what it's about.
To me, humans are, by definition, humans. That is, we make mistakes. We screw up, we're engrossed in something that's distracting, we're simply put quite bad when it comes to paying attention and foreseeing things. This (and lack of skill) is what causes "accidents', or should I rather use the word "incidents" as accidents "just don't happen", they usually take a human to make them.
Therefore, it's a good thing to have some sort of system telling other people that "a human is about". In this case, you put your lights on in your car to signal to everybody around you that there's now a stupid human being operating the vehicle. That includes you (and me). If you spend time in traffic at all, I'm sure you've had a personal experience with one of these situations;
You're driving down a residential street, you're being very observant, you're not feeding your kids or reading the Financial Times, and suddenly a car just jumps out at you. You almost panic, but realise you don't have to. All is well.
In a similar situation you're still in a residential area, and you come to a tiny T-junction. You give all cars a quick look, you even look both ways, and just as you're pulling out, you notice something in the corner of your eyes; THAT CAR IS MOVING!! Brakes..!! All is well.
Or another situation. You're driving down this nice country lane one sunny Saturday (or whatever day it was), the road turns, you're enjoying your meagre existence, and out from the shadow jumps a car. BAM! There it is. Luckily you're not trying to change the CDs in your CD changer in the boot at this time and you're the correct side of the road. All is well.
These situations are all situations where a fraction more reaction time would be a very good thing. Luckily it's easy to fix these situations; Put your lights on. It's as easy as that. If a human is piloting the vehicle; have the lights on.
What BMF and other "experts" in the subject doesn't get is that it doesn't matter whether it's a car or a bike. On top of all this, this "lights for bikes only"-theory goes totally against the grain of the first motorcycling rule; "Ride as if you were invisible". What this means in practise is that you should treat every other member of the road as if you were invisible and that they haven't seen you, and can therefore act in an "unpredictable" manner. Why should bikes have the exclusivity of "being seen". Why do bikes "need to be seen" more than cars, especially as a motorbike and it's rider weighs around 250kg and a car weighs around 1500kg. Isn't the car a much more dangerous "weapon"?!
As I stated above, it's not about bike versus car, it's about human survival. And if we mark the all vehicles that have humans in them, humans that make mistakes, with lights then I sure think it's a very good thing.
Now, before I stop this rant, I'll give you two things. First, I've lived in countries where dipped beams have been mandatory outside of towns, end result being that lights have pretty much been on all the time, and this has probably saved my bacon a few times.
Sadly, I'll negate all of this; I've not seen a single piece of statistics stating that countries who have mandatory lights-laws have fewer accidents than countries that don't have it. I guess this all comes down to what I stated earlier; Humans are stupid. You can't teach pork. The easiest thing that you can do to prevent accidents is to not have accidents. I.e educate yourself in the subject (go to a skid-pan, practise emergency braking, etc), be vigilant, be observant, and don't read the bloody map when you're driving.
In the mean time, please, lights on!


Let's talk about eBooks and eReaders

I think it's time to air this old bag again. Since the dawn of time, well almost, eInk and eBooks and eReaders (and eSpace) has been mans dream. My friend bought the Sony Reader 500 a while back, and he quickly sold it onwards. It couldn't render PDFs and was slow (if my memory serves). A few days ago I fiddled with the all new to UK Sony Reader 505 and I must admit that I was quite impressed. The screen quality is frankly astonishing. The price isn't too bad either; £200 from official Sony Store. I'd love to have a three device set-up when I travel, or even around the house; Smartphone, eReader and laptop computer. The smartphone for anything I need when on the move; i.e walking, driving, etc. The eReader for when I sit down for a moment (train, airport lounge etc) and for my reference books and as notepad next to my laptop. Laptop obviously for all my computer needs. Where's the beef with the eReaders then..?

Well, for me there's quite a few points where these devices of today fall down. In no particular order:
1) Page changing sucks.
The flickering of the screen is absolutely mind numbingly horrible. Imagine a shot of strobe-lights everytime you change the page. Seizure galore! And it's slow. Bhlergh!
2) Available material
For now, you can get "real books", but I don't read "real books". I read geek books, news and magazines. I've never read a Shakespear book, never a Sherlock Holmes novel, not to mention the Iliad! I want to carry all my geek books with me. I have meters of them. They weigh a lot. This is where the eReader would rock. Carry around 500g of eReader or 6 meters of books..? Easy choice.
3) Connectivity.
If this is going to be like a book, it needs to be able to adapt. Whatever you throw at it, it should render. What I mean by this is that I want it to render news, I don't care what format it is (PDF/HTML etc), but I want it, and I want it universally. I don't want Sony, or any other company to dictate what news I should read. If it's "out there" I want the option to read it. But I also want it to update without wires. The batteries last for hundreds and thousands of page-turns. I don't want to carry a cable to get the latest news to the device. So it has to be able to download the books, news and magazines over the air. I don't need it to be an active web browser. In fact, this could be a bad idea, but let's not dwelve into that now.
4) Price vs. features
For me £200 means it'll be gadget of the month. Any more and I'll have to consider it, any less and I'll buy it "for the hell of it". I will not pay £600 (Iliad et al) for the ability to add notes. If a real book can handle notes and scribbles, the eBook should too. It's as easy as that. Know your competition (paper books in this case).
5) Choice of formats
At the moment you can buy a paper book and get the PDF version of the book. This is good, but eReaders so far don't render PDFs very well. And then there's a bunch of different eBook formats. This is not good. Can't you all just get along and decide on one format. How about HTML with SVG support..?! Some strict dialect? CCS contained within the eReader..?! I don't really care what format, but I do care about the fact that a book that I buy may not be readable on my reader. That sucks. Fix it!

There you have it dear eBook manufacturers. The day I can get my technical geeky books onto a £200 eBook reader that can handle notes, download news feeds over the net, and possibly switch any paper-based magazine subscriptions into electronic ones, then I'll be first in queue to get one.
And one last thing, if you make it splash proof I can read my books in the bath or on the beach. That'd be very cool.

This Plastic Logic one is quite close, but just look at the lag for the page turning and the flashing. Not very pleasant.


D.R.Y Class Methods in Rails

There you are, coding something fairly simple. In my case I wanted the latest ActiveRecord object, either created or modified. I had this in my model;
def self.find_last_updated
find(:first, :order => "updated_at DESC")

I wanted to reuse this code in other models. The natural progression is to stick it in a file into the /lib/ directory. However, there's a slight gotcha. You can't have class methods in modules without a bit of trickery.
The way I went ahead was that I created a file in /lib/, in my case, I had generic_helper.rb in there, so I decided this was such common code that I can put it in there. Then load it with include GenericHelper. But that didn't work.
Thanks to Marcus, I now know how to fix this. What you do is you create another module within your module, and ditch the self. part from the method declaration. Something like this:
module GenericHelper
module ClassMethods
def find_last_updated
find(:first, :order => "updated_at DESC")

You can then load the code with this:
include GenericHelper
extend GenericHelper::ClassMethods

Now, that's pretty neat, and it allows you to choose if you want to load the class methods or not. However, if you stick it in a file on its own, then you don't need to choose that, and here's a piece of code that allows you to omit the extend-part.
def self.included(cls)
cls.extend ClassMethods # The nested Module's name

What this does is it basically pushes itself through the door and extends itself. You should now end up with something like this:
module GenericHelper
def self.included(cls)
cls.extend ClassMethods # The nested Module's name

module ClassMethods
def find_last_updated
find(:first, :order => "updated_at DESC")

In /lib/generic_helper.rb. Which you can "activate" by using the include statement such as: include GenericHelper. I can now go into the console and ask for MyActiveRecordModel.find_last_updated. Pretty neat, huh?! Ruby for President!
Now, how could the almighty Marcus know all this..?! Well, he's go a secret (no, not that one). He's been watching Dave Thomas' Screencasts from the "The Ruby Object Model and Metaprogramming"-series. Needless to say those are on my shopping list.


Culprit; another Porsche

There you have it; they opened the track after the fog lifted only to
stay open for a few minutes until this Irish Porsche dumped its
coolant on the track. Fair enough, that can happen, but what is
unacceptable is that he continued to drive to get off the track. End
result is three cars crashed and one motorbike (rumour). I hope the
guy gets in trouble with the law (leaving the scene of an accident)
and that his cars engine is screwed.
As you can probably tell I have nothing positive over for these sort
of incidents, having narrowly escaped exactly this a year ago.


We've arrived

No dramas, just boring as it should be. Weather is niceright now, but
the track is closed, so no rush.

Here we are again

It's that time of the month again. We're sitting at Folkestone waiting
for the Chunnel to go to the Nürburgring. Yay!
Whilst walking across the car park I spotted these parking spaces and
I wonder what is supposed to park on them. Answers and suggestions in
the comments, please.


Busy as a bee

I'm still breathing. It's been a hectic time. After my last post about more milling stuff, I've been using them. I made a coaster (sounds silly) to try out the rotary table. Then a good friend of mine came to visit. And hours after he left, one of my best childhood friends came to stay for almost a whole week. We had a great time. One of the cooler things was that we got invited via Bicester Tae Kwon-Do to go try out flying a glider plane and having a barbecue with Windrushers in Bicester. That was simply awesome. I didn't think it would be that cool, and I urge you to go try it out. Also if you're looking for a corporate day out; go for this. It's frankly amazing.
Anyway, after that friend left, we got yet another couple of visitors. Had some beers and a very nice curry at one of the local restaurants. Great evening!
Then on the Thursday it was off to Finland. Sad topic that turned out to be as good as it can be. Scattering my fathers ashes in the archipelago in southern Finland. Thanks to everyone who was there, who helped and who've cared. Also a big thanks to the friends we stayed with. It was lovely, and a big thanks for the final afternoon/nights trip out to the island and archipelago. It was so beautiful one just quietens down in awe.
Now we've been home for a few days, and tomorrow early morning we're off for the final trip to the Nürburgring this year. I'm very much looking forward to this trip as it's a bit longer than usual, and it'll give me a chance to digest everything that's happened this year. After this trip, I'm looking forward to things stabilising and going back to the normal grind for a while.
Oh, almost forgot. As my SonyEricsson K850i's keyboard packed in before the Finland trip, I badgered myself an early upgrade to the iPhone. This is a strange move for me, especially as I've been an Apple loather for several years, and now I love both my (black) MacBook and my (black) iPhone. The iPhone is far from perfect, but when it comes to sheer usability it's leaps and bounds ahead of any other smartphone that I have played with, both recently and in the past.

Before I click "publish" I just want to thank all of my friends from the last 2-3 weeks; you're all a wonderful bunch of people and I reckon friends (including my best one; Caz) is what keeps me around. Thanks!
Got to dash; changing oil and chain/sprockets on Caz's half-bike now.


More milling stuff!

I've now got some more milling kit; A rotary table with tilting base, and over 5kg of aluminium! If you are, like me, a garage deprived child, you'll know how much this stuff means to me. The idea of fabricating something tangible and durable is just so mentally soothing for me. Up till a month or so back I didn't even have a milling machine. Not even a proper work surface. Now I do, and it's very nice. The milling machine I have is very basic and not very good (precisionvise), but it's good for a total novice like myself. Accessories for the machine has been limited to a vice, some clamps and 7 milling bits. This has been enough to convince me that this is something I like doing and that I want more. So a few pounds later I've now got a rotary table; with this I can create round and rounded things. Such as rounded corners - both internal and external ones. I can also make large holes. Add to the rotary table a tilting base and I can put my round things at an angle. YAY!
I have also found a guy on eBay that sells off cut materials, aluminium is my preferred material due to the softness, lightness and price. I've now ordered two times from this guy and this time I got a "huge pile" of thinner aluminium. I found earlier that my 20 - 25mm thick alu was a bit of a waste for quite a few applications I wanted to do, not to mention the hardship of cutting all the way through it.
Either way, I'm quite excited and I'm just pondering what project to undertake. And before I forget; Thanks for supporting me and my crazy ideas, Caz!!


New Roomba 530.

Those of you who've visited my website and/or know me, you know that we love our Roomba. We really do, and even so much that it became an integral part of how we did things in this house. Sadly our old and trusty Roomba developed sort of a limp and couldn't run in a straight line. Last week we decided that it's been too long since we've had a working Roomba and we decided to do something about it. Said and done we ordered a Roomba 530 from Domotec. (If you already are a Roomba host, ask them about their trade-in!). It arrived today... YAY!
First impressions were that it's much sturdier than the old Roomba Sage (a.k.a "2 Silver" or "5545"). I've since charged it and it's done the living room. When running it's a lot quieter and it's much more careful and doesn't seem to rush into furniture.
When I emptied I was surprised, even as an old Roomba owner, how much dirt was in there. But to my joy I was even more surprised over how much easier it was to clean it compared to the old one! This new one is a doddle, and I'm very happy about that because I'm usually the one who ends up cleaning the robotic vacuum cleaner!
So far I'm very pleased! We'll see how far the battery lasts.
Welcome back, Roomba, we missed you!!
Picture shows Patch watching Roomba between the couches. Just like me, she finds Roomba interesting to watch.


Milling a GPS Stand

I must admit that I'm quite chuffed with what I achieved with this GPS holder. To cut several hours in the garage short; Caz has got a Garmin i3 GPS and it comes with a lousy suction mount, and when the suction mount works, the GPS is too far away to reach. So I made her this GPS mount for her Clio. :)
It's the second thing I've ever milled, so I'm still learning but I still think it came out quite well.
It's still a work in progress as I still need to sand it down properly, paint it, and then naturally cut down the bolts etc to make it purdy. I'd also like to pull the power cord up through the covering plate the holder is attached to. But that requires a bit of soldering and crawling around, so that might take a while longer.
Full set of pictures in my Picasa gallery; Milling a GPS Stand.



I found this post about 1200 Baud Archeology really interesting! It's about how to reconstruct Apple Computer's first piece of sold software from an MP3 file into binary. If you're a geek, I think you'll enjoy it. If you're not, you'll just point at me and laugh. Either way, it's entertaining for you.



One can't be stressed or angry when you have a calm cat sleeping next to you like this. Sadly I don't want to disturb her so I might end up sitting here for hours. :)


Very pleased.

The lapping on the Nordschleife is over for this trip. We've managed some 50 or so laps. My last 5 ones in a row were fantastic. I could have kept on going but I didn't want to tempt fate. We're now going to a friends barbecue. Yum! Tomorrow we travel back. Oh, the photo is the view I'm enjoying whilst typing this.


Rare bike.

You don't see many of these around, let alone ridden in anger, let alone on the Nordschleife. Kudos! :)


Rain, sunshine, rain, sunshine...

It's been a typical Eifel day. We've got rain, then it dries up, repeat. We've still managed 9 laps. Right now it's gorgeous sunshine!


Blue skies.

This is typical, the track is closed, and there's blue skies. I shouldn't mention tomorrow as that will probably jinx it.


The reason why the track is closed. Biker down on oil. :( I think a beer is in order.

Rain in France.

Just passing through a bit of heavy rain. Somehow I have a bad feeling I'm going to be seeing quite a lot of this type of weather.

Folkestone - YAY!

You might get a feeling of deja vu, but here we are. M25 behind us, Belgium ahead.

Ring trip number 3

We're on our way. Currently making our way down the m40. See some of you there!


Rails 2.1 find_by_sql hides attributes

More headscratching. I created some kung-fu-panda SQL and tried to massage it into proper Rails format with the appropriate :select, :from, :conditions, etc, but that didn't work. So I resorted to find_by_sql(). It all seemed to work fine initially. But upon closer inspection I couldn't find my new special kung-fu columns (a.k.a attributes). As a stab in the dark I tried to access them in the console and there they were. They were just hidden. Let me show you:
Create a method something like this in one of your models:
def self.missing_attributes
self.find_by_sql("SELECT id, 'hello world' AS hw FROM mytable")

Then in the console, do, something like:
>> reload!
=> true
>> ma = Mytable.missing_attributes
=> [#<Mytable id: 1>, #<Mytable id: 2>, #<Mytable id: 3>, #<Mytable id: 4>]
>> ma[0].hw
=> "hello world"

As you can see from what's returned from the call to missing_attributes() is that the only attribute (a.k.a column) returned is the ID column... not so... accessing ma[0].hw will print out the correct value; "hello world" in this case.
I spent some time looking at the Rails bugs and couldn't find this, but when I tried to report it I couldn't find how to do it, so I gave up. I'm lazy. If you know how to report it, feel free.



Larfin at Jongleurs! Hahaha!

What a weird day

It all started well. You know how it is, boss checks in and you "shoot the breeze" and you feel motivated again. But at lunch you drift off to lesser goods, this time eBay, fork-in-hand I was broswing. I was looking for a TIG welder, simply because I'm a welding deprived child; I had nowhere to go when I had worn my Legos out! (Pop rivets are just so boring!) During this lunch "hour" I quickly realised that I shouldn't spend £400+ on a cheap TIG welder. At least not without saving some first (read: holding back on other junk). Especially as I'd probably have to lash out £150 - £300 kitting out the TIG welder and wherever I was actually going to do the welding. This might include rewiring some plugs so that I could get "decent" power (say... 25A++..?). Anyway, I got a (probably pirated) DVD on TIG welding eBay; that'll keep me entertained.
I almost forgot, I started my day with winning an "Abrasive Cut-Off Saw". This is basically a souped up mitre saw that'll saw, pretty much anything. Good for metals, not very good for Aluminium (which happens to be my metal-darling, Titanium and Magnesium are just too demanding and expensive). The reason why it's not good for Aluminium is because it's "abrasive", and that means heat, and Alu doesn't like heat. I guess that it's OK being so light and pretty. Anyway, waiting for that.. it was a smaller part in my welding "grand plan", we'll see.
Back on track...
As I realised I should hold off on the TIG welding, I spotted this Milling Machine. You see a Milling Machine is really good for making holders and such stuff. Say foot-peg-hangers, bullet-camera-mounts, GPS (SatNav for you late-bloomers) holders etc. It was a fair bit cheaper than the cheapest one I've seen, and it was fairly close to where I live (say 35min one way on country roads). I had a thinker (and got help from Caz) and then I decided to go for it. Finished the auction, sent the seller an email, and the seller was apparently crafting an email as I was sending mine, so the wires got a bit crossed. I wanted pick-up ASAP, he suggested Saturday or Sunday. I'm away tomorrow (see below), so I was a bit gutted. But at least I would get time to sort tomorrow out... Or so I thought. I got an email back saying that pick-up is GO! So, leaving my opened beer, ice-water, and hot steaming bath, I got re-dressed and yanked a very work-worn Caz out of PVR-mode off the bed. We were going to get a Milling Machine, damnit!
Said and done, we were in the Espace, cash in hand, off to our esteemed seller. Some nice country roads later and we pull up, do a perfect transaction and even get a tiny freebie on top. Couldn't be more chuffed, one could insert a pun and say that I was "chuffed to milling bits!", but that'd be bad taste, so we leave it out.
On our way back, we realised that time had escaped us and Caz started mumbling about swapping our planned evening meal for something with "less effort"; in her case a Jacket Potato (henceforth referred to as a Dressed Boulder), and for me a juicy "square burger" with cheese and bacon, dripping with mayo, ketchup and emitting lettuce, cucumber etc... I really had to bend her arm to get her to go for the whole plan. At least it did give me a chance to reward her for getting out of lazy-bed after a long-working week (and she seldomly does that! Get into lazy-bed, hrmph).
After the meal it was obvously time for me to get clean.... Caz wanted to relax, and I suggested ear-plugs (we're bikers, so ear-plugs aren't that uncommon). I thought I'd be nice so instead of blaring out AC/DC over the main stereo I thought I'd stream it to my Nokia N800.
This was a bad move.
Simply because I discovered that I did not have a SlimServer running. Moments before entering the bath. Damn.
What follows is an intensive shell-hacking-google-searching-session, with minimal clothes (sorry! It hurt me, now it hurts YOU!), for about 2 hours. F**K! This was not the plan.
I was given a break when I finally got the artist formerly known as SlimServer; SqueezeCenter working, for a moment. For some reason it tore down my home-server... .sigh... I thought I'd not rush up to the loft and reboot, but go have a bath. Sometimes Linux machines tend to recover...
I had a niiice bath, Patchs' company appreciated.
Well out of the bath, Pingdom still reported my home server as down... better don on something better than a towel and climb up to the cobwebs to reboot the server. Gladly it popped right back into life. *phew*.
And for once, everything seems to work. The new interface on SlimServer, erhm, sorry SqueezeCenter isn't an improvement, it's just "modernised" in the way that Windows XP requires 50000x CPU power to run the same task as fast as on a Win95 machine. Not impressed so far, especially with the issues I had.
Anyway, why this is all so soul-eatingly-annoying is that in 6 hours I'm supposed to wake up, refreshed, recalibrated and as an all-enjoying f**ker to go on a bike ride. A bike ride that I've been really looking forward to.
We're heading "down saahrf" to London, and from there towards places like Box Hill and Goodwood, all guided by someone who knows the road and after the ride we'll retire to their place. Nice host and hostess and enjoy some grub to go out for a birthday party at a comedy club. Now that's a fantastic schedule (providing the Spaghetti Monster provides us with grippy roads). It's not something that I should have 5 hours sleep for and I should definitely stop drinking these lush cheap Becks Beers....

But wait, there's more.. Two of my best friends left for a very long European wide journey and they've been riddled with problems, but that's not my story to tell, so I'll leave the cliff hanger ending at this point.
With a bit of luck I'll be able to use multisyllabic words tomorrow, and perhaps get the K-R to shift a bit, Spaghetti Monster providing maybe a wheelie or two!

For now; I'm too tired/pressed for time to add hyperlinks to all references. With some luck (read time) I'll do it. You can excesise your rights by shouting for hyperlinks in the comments.

Bed... n...o...w....


Ruby on Rails RJS gotcha.

I know this has been touted in all the tutorials, but I had forgotten it, so I'm assuming that someone else will forget it too.

I had a nice Ajax form, using form_remote_tag(), to update a DIV as per instructions. Having made that work, I wanted to proceed to the next level and swapped out the ERb template for an RJS template. I simply renamed the ERb template, and then stuck an RJS template in between and used replace_html to render the content in the DIV. But it didn't work.
The result was simply plain JavaScript inserted into the page. It looked stupid. The reason was simple; The RJS generated JavaScript wasn't executed in my browser. Having scratched my head, asked some of my friends, scratched some more I decided to retreat back to my documentation. I started browsing through my O'Reilly Short Cut about RJS, and there I had it, highlighted by myself, in an already highlighted box.
This is what the box says:
"Don't Use the :update Option with RJS Calls
Never use the :update option when making remote calls to actions that render RJS templates. The :update option instructs Rails to generate an Ajax.Updater Prototype object instead of an Ajax.Request object. The Ajax.Updater updates a single DOM element with the contents of the HTML response. RJS templates return JavaScript to the browser, which must be evaluated to produce the desired effects"

Of course!
So, changing this:
< % form_remote_tag :update => :my_div, :url => { :action => :my_action },
:loading => "$('indicator').show()",
:complete => "$('indicator').hide()" do % >

into this:
< % form_remote_tag :url => { :action => :my_action },
:loading => "$('indicator').show()",
:complete => "$('indicator').hide()" do % >

Note the lack of :update... it all works! There you have it, have a look into this little gotcha if your RJS JavaScript isn't executed in the browser and you get a nice plain JavaScript displayed in the browser instead of you nicely formatted executed HTML output. :)


BMW day at the Ace Cafe

Caz and I rode down to Ace Cafe today to take a peek at the BMW bikes, and naturally to show off my bike. Hehehehe. Breakfast now. Yummy!!
Update: A few more pictures over at my Picasa album.


Getting dirty off road.

A friend of ours has been amazingly kind and lent us his enduro bike. I took it out for a quick spin and I was totally knackered! Then it was Caz's turn to go off road for the first time ever. I'm very proud of her as she was improving lap by lap. Attached is one of her first ones. We both loved it!! Thanks to Tony who came along for the first ride on his (street tyred') DRZ400. :)


Rails, Git, Capistrano, Ferret, etc... I'm exhausted.,

In the past weeks I've been trying to get my application to play nice with the latest of the "Rails-stack". This includes Rails 2.1.0, Git, Capistrano 2.3.0, Ferret (and acts_as_ferret) with the DRb server, running under Phusion Passenger, a.k.a mod_rails under Apache 2.
I must say that the only thing here working 100% as advertised is Apache and mod_rails. Thank's so much for that! Wonderful!
Let's start from the top. Upgrading to Rails 2.1.0 wasn't much of a problem, just annoying trying to get all the gems and plug-ins to play nice. I don't know if it's good or bad to prevent Rails from running without the gems declared in environment.rb. The biggest problem I had was with the datetime_toolbocks plug-in. It seems that the author isn't that bothered with updating the code to run with Prototype 1.6.x which ships with later versions of Rails. So I've reverted my Prototypes back to 1.5.x for now. Don't get me wrong, I appreciate the fact that the author has (without much acknowledgment to the original code of Dynarch's Calender) packed it up and distributed it. The functionality is pretty much spot on, and I initially wanted the Dynarch Calender as I've been using it before. What I don't like is developers being incommunicado and not providing updates (not requesting features here). But hey, it's free and I shouldn't look a gift horse in the mouth. It still took me hours to figure this all out.
All well, I was running on Rails 2.1.0. At this stage Git was working quite well after my initial problems. Now I needed to work out how to get Capistrano to like Git and how to configure it all on the server. This proved to be a task of trial and error because I just can't find any good Capistrano documentation, I also don't like the default Capistrano working layout that assumes you trigger your updates from a third client (in addition to SCM server and deploy-to-server). But that's another story and I do have my reasons. In my head I want to log into my SCM server and trigger the update from there. I also don't like the default set up of using SCM updates to get the latest source to the server. In my head (again) the server should have a minimal install, and a source code management software does not belong on the server. Luckily I can easily change Capistrano to pack up the code and copy it over to the server instead. Sadly I got lured into using both remote-cache and local-cache. I can't even remember what was wrong with remote-cache, but I stopped using it. Local cache had two issues, both not related to Capistrano. First one had to do with the fact that I wanted the local cache to reside on another partition than my temp partition. This was a bad idea because Capistrano uses hard links to copy the code over to temp and then tgz the code up. And as seasoned Unix users know (i.e not me before this) a hard link is basically the same file, and the same file can't exist on two different disks. So after a few hours on that issue, I moved the local cache to the same partition as the temp dir. After this I noticed that local cache has got issues with, erhm... caching. It doesn't seem to recognize permission changes and perhaps file changes. This could be an issue with Git, I don't know, and I can't be bothered to care. I simply ditched the cache; Bandwidth to the people!
If you're a seasoned developer/sysadmin you'll feel in your gut that my problems with caching resulted in "other problems". One naturally assumes that when you update your code, you get new code. So I've spent hours trying to figure out why things aren't updating as they should.
And then we come to the Capistrano recipes. *sigh* I find Capistrano terribly difficult to debug because the output is so vast. Once I had a basic set-up working I got stuck in trying to get Ferret working with Capistrano. This seems to be a fairly known issue, and to some degree fixed in SVN (why it's not released, I don't know). Needless to say the instructions aren't that clear, and it took me ages to get to where I was. My tip is to basically apply the patch and you should be half way there. Notice that if you do it manually, save a few hours by noticing that line 39 is deleted. *sigh*. I'm not the only one having been frustrated by this. On top of that I've done some 25+ commits into Git to try to resolve this (I refuse to code downstreams, i.e on the deployment machine in my case).

It's difficult to describe how deflated I am after all this, especially without sounding ungrateful. I can understand that some people feel the need to do rants about Rails' stability and community. Personally I guess I just have to come to terms with the fact that the Rails environment is filled with people from most spectrum, but probably overpopulated with young people who have a huge energy (which I don't want to belittle), but also that these same people have got little experience in the commitment that one makes when one writes software. Software has got a nasty tendency to linger way beyond its "best before"-date. (For those who know me I can provide this acronym to get you nauseous: HMS1). It is probably this fear of commitment that has resulted in my lack of contributions as a software developer to the world.
I'd like to communicate a few points to the contributors to the Rails environment; 1) I'm not interested in writing a f***ing blog. 2) I'm not f***ing interested in writing another f***ing facebook/twitter/myspace/social-networking/site. 3) In fact, I'll let you in on a little secret, the world needs another blog software or another social networking site like it needs another PHP DB abstraction layer, or indeed, you need another hole in your skull. Just say "no", please. 4) The application I'm trying to write is a corporate level application, I need data integrity, you know, enforced foreign keys, subqueries, transactions, and so forth. I don't care if Rails can handle it without those fancy-pants database features, but I need my data to be sound, regardless of where it's being presented. I want this requirement to be reflected in the code and the software I use.
When I install a plug-in, or indeed, Rails, I naively trust that the code I'm installing will have some sort of backing, and if it doesn't have the backing at least I'd like to know that there's no support - preferably in big red bold letters.
I'm just very happy that the era of Mongrel Clusters seem to be moving into the past. Something we can all, hopefully, point and laugh at in a few years, when our mental wounds have healed.

Just to top things off, here's what deflating my enthusiasm even more; I'm only half way through. I still want to create a deploy-to-multiple-servers Capistrano, and then I want to wipe the staging machine clean and document the installation step by step. Just to make sure everything works.
But right now I just feel like getting a bottle of Finlandia and crawling into a dark closet and not come out before the bottle is empty...
... but that would be counterproductive (even if I'd support the workers of the vodka factory), so I better get on with some more ghettoing! ;)


We should boycott flights.

Having personally had an "incident" with a Heathrow "Security" Guard many many years ago I think it's now time to boycott flying as much as we can. Because things are just getting totally ridiculous!
Update: At least a bunch of people agree with me. Sadly I don't think anything is going to change.