3G (1) 8600GT (1) AI (4) amazon (1) API (1) apple (3) apple mail (1) atlassian (1) audio (1) bambo (1) Bamboo (1) bloat (1) boost (1) bugbear (1) C++ (5) calling conventions (1) cdecl (1) chromecast (1) CI (1) compiler (1) continuous integration (1) coursera (1) custom domain (1) debugging (1) deltanine (1) diagnosis (1) diy (5) DLL (1) dns (1) don't be evil (1) ec2 (1) education (1) electronics (1) express checkout (1) fail (6) fink (1) firewire (1) free hosting (1) GAE (1) google (1) Google App Engine (4) H170 (1) hackerx (1) hackintosh (1) Haskell (3) homebrew (2) i1394 (1) icloud (2) iOS 9 (1) ipad2 (2) jobhunting (2) lag (1) letsencrypt (2) libjpeg (1) linux (1) mac (2) mbcs (1) mechanic (1) memory (1) MFC (3) Microsoft (1) migration (1) ML (1) mobile (1) movi (1) MSBuild (1) music (1) naked domain (1) NLP (2) o2 sensor (1) obd (1) Optiplex960 (1) osx (1) outlook express (1) payments (1) paypal (1) photos (2) PIL (1) Project Euler (1) projectmix (1) python (2) raspberrypi (3) recruitment (1) renwal (1) skylake (1) soundcloud (1) ssl (2) stdcall (1) stripe (1) subaru (2) supermemo (1) supermemo anki java (1) sync (2) Telstra (1) tests (1) thunderbird (1) udacity (1) unicode (1) Uniform Cost Search (1) university (1) upgrade (2) vodafail (1) vodafone (1) VS2010 (1) vs2013 (1) VS6.0 (1) weather (1) win (1) Win32 (1) Z170 (1)

Tuesday, 17 July 2012

Subaru Outback O2 sensor replacement...

In a previous post I mentioned how I had managed to diagnose a check engine light on my 2005 Subaru Outback and tracked down the fault to a burned out heater coil in the front o2 air/fuel or lambda sensor.

After baulking at paying $530 for the official Subaru part I tracked down a compatible Denso sensor part number 234-9015 on ebay for only $110 shipped from the USA. Then it lay around on my shelf for a month or two, as I actually had no idea where this part was supposed to go.

I didn't have a service manual, so I watched a few you tube videos, and read some forum posts, then finally got under the car and had a look. Finally I saw what looked like an O2 sensor, it was on the exhaust system as expected, but there was barely any room under the car, and it looked like I needed a special tool- a 22mm O2 sensor wrench to remove it anyway. I duly ordered the tool from ebay for $17, then one Sunday afternoon parked the car with the drivers side wheels up on the kerb so I could squeeze under the car and replace it.

I came off easier than I expected, but it looked a little different to my replacement part. Never mind, I plugged it in, also noticing that although the plug fit, the connector was not quite the same either, and would need to be taped to hold it together.

It wasn't till I started the car and checked the OBD codes on my Mac with the excellent Movi software that I realized the damn error codes were still present... only then did it twig that I had mistakenly replaced the rear O2 sensor!!! Finally, I located the front O2 sensor, but it was up near the drivers side wheel obstructed by the plastic engine undercover, and looked like it would be a real pain to replace from  under the car, as it would involve removing the engine undercover. After much cursing, I swapped back the original O2 sensor, incredibly glad that I didn't remove it by cutting the wires, and resolved to pay my mechanic to fit the replacement sensor a my next service.

But it actually turned out easier than I expected - I opened the bonnet and removed the air intake duct that goes into the air filter so I could get a better look and observed that it was quite possible to remove the O2 sensor without having to muck about under the car. It was about as hard as replacing a light bulb, then all I had to do was clear the codes and BAM! No more annoying engine light and flashing cruise control indicator distracting me on the dashboard.

So all up it cost me $110 for the part, $17 for the tool, $20 for an OBD code reader and $50 for the software... all up $197 instead of $530 for the official part, plus labor.

So awesome, I blogged about it...

Wednesday, 11 July 2012

Google App Engine with a custom domain

So, you don't want to publish your brand new groundbreaking web app to the world with a boring old url like ?

Just say say you want to use your own custom domain such as

One would think this would be a relatively simple and straight forward thing to do, but apparently not so...

First they make you sign up to Google Apps, then you have to prove you own the domain, then finally you have to tell them the domain name you plan to use, finally you have to update the details with your dns registrar so it points to google apps hosted website.

This was the tricky bit... so if anyone else wants to know how to do it, here's how I did it.

you need to create a CNAME record for your website,


and point it to:

Google app engine does not support naked domains, such as

to get this to work I setup a 301 redirect with my dns registrar, redirecting



just posting this cos I spent hours googling this...

Friday, 6 July 2012

Installing Python Image Library (PIL) with jpeg support on mac os 10.7.4

Recently I have been playing with Google App Engine - I'm porting the  Sydney Inline Hockey website from PHP (ugh!) to Google App Engine using Python.

Anyway, in order to use the google image library to manipulate images in App Engine, you need to have Python Image Library installed locally if you want to test your code.

Python's easy_install module maged to install PIL, however at runtime it would crash with an error about no jpeg decoder. No jpeg support was a bit of a dealbreaker... it seems libjpeg needs to be installed before PIL.

That's cool - lets just install libjpeg using fink, which seems to be one of a myriad of different tools for installing package on unix systems. But I didn't have fink installed...

after much yak shaving, I was finally able to to type:

sudo fink install libjpeg
sudo easy_install PIL

and it was all good!

For detailed instructions - see this post on Marcio Garcia's blog. Thanks Marcio!