Sunday, 30 October 2011

Qantas Rant

Qantas rant! I also object to Mr Joyce's pay hike but lets put things in real numbers with respect to union demands. Pilots already get paid (in my opinion) WAY more than they should thanks to strong unionism and after a 17% hike - way more than inflation - a second hike seems plain greedy.

A senior pilot's wage is around $500k according to this and presumably a senior co-pilot would be around $350k. According to this most pilots work 215hrs a month (75 hours of that flying). In hourly rates, that's $193/hr for pilots and $135 for co-pilots.

If a plane flies 80% of the time, there are 86.4 of the 108 qantas grounded planes in the air at any given time with a pilot and copilot each. That's an operational cost of $28339.20 an hour (24/7) or $248 million a year. A 2.5% pay increase for pilots will this cost the airline $6.2 million in flight time alone. That doesn't cover ground-based preparation and other duties.

There are no parties here that are NOT being greedy but the union is trying to tarnish the brand in order to push around management. Strike action is their biggest hammer and they've been swinging it around with way too little regard for the people they hit with it for way too long. If pilots are not happy with their conditions they should walk with their feet (out the door). If their salaries are average as they claim for senior pilots, they shouldn't have trouble finding work elsewhere.

As for the CEO's salary, keep separate issues separate. That's a topic for another rant.

Monday, 5 September 2011

Can OpenWRT save my Netgear DGN2000?

I made the mistake of buying a Netgear DGN2000 ADSL2+ modem when I first got ADSL. Not only does it not support IPv6, its WiFi range is pathetic, bridging between WiFi and ethernet seems to die after several days of operation, and under heavy load the device hard-crashes, requiring a reboot. I suspect the crashing might be due to poor thermal design and perhaps my specific device but clearly the software is not also without some blame. Given my experiences, I would NEVER recommend this device. But, now that I have one that I can't return, I'm going to document the process of installing OpenWRT to see if I can give this thing a second lease on life.

Wednesday, 24 August 2011

Python's Global Lock

For years I've heard (and occasionally been part of) religious Perl vs Python language debates. I've always been firmly on the Python side of the fence. While I have made some great use of perl in my time, I love being able to actually re-read my code without having to decipher it first. Python has always seemed like a much easier language to work in to me.

So, given my firm stance in this debate, I'm a little shocked after seeing
Carl Karsten's video. Want to know why Ctrl-C doesn't work in threaded python apps? Why threading in python can actually slow you down? Why not all Python C bindings are not born equal? If you have even a general interest in python, I greatly recommend checking out this talk. It'll shake your faith. :)

Tuesday, 26 April 2011

Blog moved

Maintaining my own wordpress instance was getting tiresome so I've switched to blogger. Article information should still work just fine but comments are missing. My apologies!

Saturday, 16 April 2011

Building Python2.5 for Ubuntu 11.04

I run a few appengine instances and so I was quite disappointed after upgrading to Ubuntu 11.04 to find no pre-packaged versions of python2.5 (the version on which appengine is currently based). Python 2.7 is not compatible with various parts of the appengine dev server. After a bit of playing around this is the easiest way I found to get everything working that I needed. YMMV.

edit the top of dev_appengine.py and replace
#!/usr/bin/env python


with
#!/usr/bin/env python2.6


Python 2.6 is not ideal but it seems to do the job. If you want to go the extra mile (as I did) and install Python 2.5.5, you need to manually add ssl and address some bad assumptions python makes about sqlite3's library locations...

Saturday, 16 October 2010

Announcing iLatitude: A Google Latitude Daemon for jailbroken iPhones.

iLatitudeMy trusty iPhone 3G has done me fairly well over the past few years but the more time goes on, the more demanding I am of the little sucker.

I have wanted a native background Google Latitude app for a while now but the only offering seemed to be a $2 application in the Rock Your Phone app store called "Longitude".  Sure I could have paid for the app but I figured I was due for a bit of self-study and having never written anything using Objective C, the latitude API or OAuth before, I set about reading. A few days of tinkering later and the app is fully functional! How unexpectedly painless. :)

The actual location handling code on the iPhone side is mostly thanks to Chris Alvares and his very useful tutorial on writing an iPhone Daemon. (Thanks Chris!)

You can access the source code for both the appengine side (OAuth, Latitude API) and iPhone side (setup application + background daemon) at github.

My next step is probably to get it pushed into a cydia repository somehow. (i.e. More research.)

PS. I also half suspect I'll receive an email from Apple's lawyers demanding I change the applications name but time will tell. :)

Tuesday, 13 July 2010

Arduino power meter reading

Being the curious nerd I am, I decided the other day that I really needed to put an end to argument that pulling the plug on a WiFi access point when not in use does or does not provide any significant power / cost saving benefits.

Armed with an Arduino Decimilla I rigged up a very simple app that samples an analogue value from a photo resistor and waits for a transition from light to dark and back to light again. A transition was defined as a 2 standard deviation change in the sampled light level based on the previous 32 sampled values. The number of values sampled every 20 minutes was written to EEPROM, providing up to a week of recording on my tiny 512 byte EEPROM.

An LED and photo-receptor with a cardboard sheeth around it (to stop direct light from the LED from shining on the sensor) were placed on the meter in front of the rotating disk and to my suprise, things just worked - really well. I didn't spend a long time confirming it worked well under very slow rotations (low power usage) and fast rotations (high power usage) but the times I checked on it, it seemed to be doing its job perfectly.

Results were not super suprising. The power usage late into the night was the air conditioner set to turn off around 2:30am. The spike in the morning was the air conditioner, microwave / toaster + lights and PC that basically all came on at once.
Power Usage


Some more testing is required to confirm or reject my hypothesis. Of course, if I used decent gear I could figure this out with a lot less effort but where would the fun be in that?