Tue, 21 Aug 2012

## Finding forks.

github has become the place where a lot of code is made available.

It turns out that not everyone has the time or inclination to answer queries / questions or apply pull requests.

So, whenever I am investigating using something I've found, I always look to see what the forks are; if there are common issues, etc.

In the past, I've done this by hand, for small repositories it isn't too time consuming. Today, though, I sat down and wrote find-forks.py which will do this automatically.

Now, I find a project, clone it, run ./find-forks.py and settle down with gitk to examine the history and various other forks.

This works well for me, feel free to use or improve as you like. I hereby place this in the Public Domain.

Tue, 05 Jun 2012

## Internet-o! Or why the Internode Business SLA is not worth a damn.

Last week (28th May), I had five Internet services across two countries.

This week, I have seven (7), with two new ones in Australia.

It all begin, when Internode decided that in their own best interest to migrate me from my existing DSLAM to one of their own infrastructure.

They had sent an email indicating when it was likely to occur. And they were sending invoices to the same address.

Naturally, they would send the date of the migration to the same address they had used for the past 9 months to communicate to me with, right?

Wrong.

Internode still do not understand why they never sent the notification email, as it turns out.

Compare the response time, update times, and restore times they specify to what actually occurred.

2012-05-28 12:05 BST

I'm informed of an outage. In the past, the problem has been at my end, so I run through the standard diagnostic procedure. Everything seems to be normal, so I call Internode. Sure enough, our service dropped off the Internet. According to Timothy, that happened at 11:15 AEST because of a migration to their own DSLAM.

After some diagnosis from Internode, they realise that whilst the migration has successfully disconnected the service, they have not reconnected anything. There is no sync. Ticket #454448 raised - which is when I'm informed that I'm on the business SLA.

I've asked for updated to both an Australian and UK mobile. "Not a problem".

Estimated time of resolution: 48 hours.

Yes, 48 hours. There goes the first SLA milestone.

2012-05-30 07:28 BST

I ring and speak with Carl. He indicates that as best he knows, the service is to be 7pm. for those keeping score, no updates have occurred during this time.

To either number. I query him about the SLA period. He says the response time is 2hrs and restore time is 10hrs.

He also indicates that this can all be checked online and that we can apply for a refund.

2012-05-30 10:27 BST

I ring, again, and this time speak with Justin.

I ask why I've not have an updated, since 7pm AEST has well and truly gone. He authenticates me and places me on hold to investigate.

Advises that the issue is fixed, says he sees sync on the line. I indicate that I do not.

He asks me to turn off the ADSL modem, we do, and he still sees sync. on the line.

Believes there is another problem at the exchange, another issue raised with wholesaler. No ticket number issues to me.

ETA to fix 7pm 2nd June.

Note:This was a 1 hour International call

2012-06-01 04:00 BST

I happened to check, and notice I have connectivity to the external interfaces (and thus, obviously, line sync.) again. No notification though.

2012-06-01 14:31 BST

Amidst all this, I also have to to source two external connections - Telstra & Optus, get them setup, reconfigure routing, email delivery and other network services so that the businesses which are relying on the Internet, still work.

Not fun.

Especially when I have no access to the routers. I had to get multiple people on site.

2012-06-04 11:XX CEST

I'm told that the second site has gone done. Inexplicably.

After some round-trip and diagnosis, we determine that the routing change has occurred.

However it has been done incorrectly. And, of course, no notice / or update occurred either.

Multiple tickets are raised by multiple people, amongst them: #4562559 from my mobile phone whilst I am in Zurich.

2012-06-04 16:56 CEST

I am informed, and it is confirmed, that the attempted routing change has been reverted and we are back to how things were on 2012-06-01.

2012-06-05 05:44 CEST

I wake up, and find out that of at least three hours ago, they appear to have called (finally!) and actually fixed the routing to both sites.

That is a week of down time, multiple people (4 people) around in various countries around the World and hundreds of dollars in calls between us all to get things working.

Now, to look into compensation.

2012-06-05 09:43 CEST

I receive a missed call, which I later learn is Internode actually calling me (for once!). At that moment, I'm actually giving a lightening talk on Django-PaaS

And that, dear reader, is why Internode Business SLA is a waste of money.

The services were broken by a change of no net benefit to me, was over a week ago.

Also, during this process.

My UK home Internet went down. My UK Three post-paid service "ran out of money" and Vodafone has a service outage for half a day.

A perfect storm of Internet dis-connectivity.

So, if you have been wondering, that is why I've been offline for various parts of the last week.

Wed, 23 May 2012

## Lifelong learning

Below are four of my (150!) browser tabs opened, that I oddly had in sequence.

There has been much made of the pheonmen of lifelong learning and although I thought I had finished my exams when I finished University, I'm still doing them.

From left to right:

Duolingo, where I am learning Spanish.

Quite a reasonable site, currently invite-only. My worry is my pronounciation will be crap though. I do wish that it did not have to use Flash to accomplish things though.

Udacity, where I am doing CS212 - Design of Computer Programs

Nice interface, annoying that it uses YouTube to host videos as that meant I had to whitelist YouTube in Flashblock.

I picked this course as one of the other ones I wanted to do had already closed. I suspect I'll eventually do each of the courses they have on offer. One nice thing is that courses run every 8 weeks or so.

Codeacademy, I am currently doing their Codeyear course.

Well presented, but I find that their Javascript interface is extremely slow to startup. It consistently lags behind my typing speed by about 3 seconds.

I'm using Firefox beta, so I'm always running something fairly fast and modern too.

I'm primarily doing this course to see how/what they are trying to teach non-programmers. My feedback is that it is not geared towards someone with no programming knowledge. The initial 10 weeks of Javascript presentation proceeded at a very fast pace. If I weren't a programmer already, I'd have stuggled to keep up.

Coursera, here I am doing the Machine Learning class.

I'm not a fan of this interface at all, which is why I find it hard to come back to the site each week. I'm not sure exactly why though, since it uses WebM and no Flash. Hurray!!

Either way, I'm doing the Machine Learning class. I tried this last time it was offered and got to week 5 — same week I'm on now — and then I got suddenly busy IRL, so was not able to complete the course.

Unlike Udacity, courses run at set times and you have to do the work on the required dates in order to get the statement of attainment, which can be hard when you are juggling multiple things

Keep in mind, these are just the extra things I have decided to learn. I'm also learning more about Django, Puppet and Python in my work everyday. Plus I'm actually doing a Spanish course in real life too. Oh, and I have a job and I go out. I'm generally actually pushed for time.

Which probably explains why I have not been keeping up with the blog. It isn't because I hate you, although it might be too ;-) , I'm just busy.

Tue, 10 Apr 2012

## The state of Django money.

Updated (2012-04-11): Now contains the final and correct pip install command.

TL;DR: `pip install django-money` will give you a working set of Django fields that handle Money and Currency. Read below for how that happened.

I began this Easter weekend trying to finish up one of my pet-projects and get it ready to publish. The goal of the website is to compare providers, of the same thing, from around the world.

Representing prices is simple. A float will do if you are in a hurry.

Except.

When you need to perform calculations and you run into rounding errors. At that point you will likely discover the Decimal module.

Which also works perfectly fine. And if you only ever deal in a single market that is fine.

But across markets? That requires Money. Money is normally defined as a value and currency. Once you have both of those, you can then do cross-market comparison – and upgrade you program to handle multi-currency – easily.

I hoped that I was not the only person who had realised this, so I started to look around.

And I struck gold! I found Python Money. It even included appropriate Django fields as well.

Unfortunately it had had no updates since 2008. ☹. Worse it didn't work so well. I continued my search.

I kept on looking and found Django Money. Even better. This separated out the Django support and the Python support.

It turned out Jakewin's py-moneyed was actually a fork of Limist's py-moneyed.

So I set about retrieving every fork and comparing them.

It turns out that Jakewin's version was good, just out-of-date. It mentioned waiting until a pull request has been merged in to limist's version.

Which had been done a while ago. And Jakewin's Django-money (djmoney) was nicely done too, unittests and all. It had just bitrotted compared to newer versions of Django (and South).

I discovered there were a set of forks of django-money at github too. I analysed them all, and basically only jakewins's and reinbach's mattered.

I created fixes for jakewins and reinbach's version.

I also opened up on an issue asking limist's to tag and upload a new version of py-moneyed.

I also got a response from limist and now you can do `pip install py-moneyed` and get a useful, working, version.

And reinbach also responded and now you can do ` pip install django-money` and get a working, usable, representation of Money within Django.

It turned out to be a productive, if yak-shaving, weekend after all.

Tue, 27 Mar 2012

## An apology.

### And a personal reboot.

All my life, so far, I've always prided myself on not having any regrets.

I've told people that if I had to live my life over again, I would not change how I had acted or anything I had done.

Over the last few days I've come to regret my actions.

They have caused me to hurt a dear friend and, then, ultimately lose them.

It all stems from with not being honest.

To my friend. And to myself.

By not telling myself the truth about how I feel, or what I want, it has meant I have not told others the truth either.

They have then acted on what I said, and when I've changed my tune or wanted more (or less), they are rightly upset.

I wish I could say that this was a new thing. Like some kind of habit I picked up because it was shiny.

Unfortunately as I review my life, and the various people who have come into and out of it, I can see that my inability to be truthful has been mostly constant.

To be unable to articulate my needs has caused various amounts of pain to others.

Sometimes that pain has come back to me, as with my friend, magnified. Other times I have escaped it.

This is a personal apology from me to all that I've hurt.

Some of those people are (now) deceased.

Some of them no longer talk to me / interact with me at all.

For what it is worth.

Sorry.

For those of you who are still with me, on this journey, thank you for putting up with how I have been in the past.

The journey is not over but I hope the rest of it will be more truthful and, ultimately, less hurtful.

Anand

Wed, 31 Aug 2011

## PSA: Use a 303 (or 307).

HTTP has redirect codes. Lots of them. The full list of codes is available on wikipedia.

But some common ones are widely used and widely misunderstood.

TL;DR: After you receive a POST, and you want the client to perform a GET, return a 303.

Here are some of the redirection codes:

301
Moved Permanently
302
Found (originally Moved Temporarily)
303
See Other
307
Temporary Redirect

Basically, if you create something server side and you make that thing available via GET. Send back a 303.

If, when a POST is received you would like it done somewhere else (e.g. from one cluster to another) use a 307.

The full and complete historial gory details are outlined by Eric Law'sIE Internals blog.

This post inspired by the redirect misuse on (an otherwise informative) blog post by Valya Golev's.

Mon, 08 Aug 2011

## Some thoughts on eBay feedback.

NOTE: This post uses MathML. You will need a modern browser to view things correctly.

I just had a fairly annoying experience with pocketronics and have left negative feedback for the first time.

Basically they expected the customer (my mother in this case), to contact them when Australia Post failed to deliver. And, rather than sending out another item — as they had to anyway — they wanted to wait until Australia Post reported back.

Which takes 10 working days. So for about ~AUD\$30 they decided it was worth throwing away their reputation.

Obviously a company with a different view of the life time value of a customer and the earning of goodwill than most.

With eBay generally almost never leave 'positive' feedback because, frankly, that should be the default case. Anyway.

But some feedback about eBay's feedback system.

Limiting to 80 characters is pointless. I could have put in a bit.ly link to a twitter status as my feedback for pocketronics. Or a blog post (like this), linking to their site (as above).

If I want to write an article, then let me.

And just as I can respond as many times as like via other media, I ought to be able to do the same via the internal ones.

The score calculation is weighted towards positive feedback. As explained scores are: $\frac{\mathrm{positive}}{\mathrm{positive}+\mathrm{negative}}$ Which for pocketronics comes to: $\mathrm{99.7}=\frac{\mathrm{5071}}{\mathrm{5071}+\mathrm{16}}×\mathrm{100}$

If the calculcation instead took into account neutral feedback too, then things change - not by much, but enough. To wit: $\frac{\mathrm{positive}}{\mathrm{positive}+\mathrm{negative}+\mathrm{neutral}}$ And it becomes: $\mathrm{99.0}=\frac{\mathrm{5071}}{\mathrm{5071}+\mathrm{16}+\mathrm{36}}×\mathrm{100}$

I think that also by default feedback to be neutral by default, it would reduce the gaming of feedback.

To have a positive score you would need to be exceptional.

Not just run of the mill. Which is what the current system encourages.

Mon, 25 Jul 2011

## Licence stupidity in 2011.

As amazing as it is, there are still people who simply do not understand Free Software licences (but actually generate Free Software).

Consider this gem.

A project that is released as GPL cannot be used in any commercial product without the product itself also being offered as open source.

What? You mean like the Linux kernel? A GPL'd product used in many commercial products?

Even worse, he conflates "open source" with Free Software.

For shame, Kenneth Reitz, for shame.

Wed, 01 Jun 2011

## First steps with DNSSEC

As you all probably know by know, DNSSEC has been enabled on the root ('.') since July 2010.

And on most TLDs like .com shortly thereafter (in the specific case of .com, since March 2011).

The Debian guide to turning on DNSSEC is useful but some things you need to know (after using it for a week or so).

BIND loves IPv6.

If you have 'listen-on-v6', set to yes and you roam to a non-IPv6 network. Your name resolutions can take 30+ seconds.

Since I roam from a some networks they do have IP6 and some that do not, I have had to turn this setting off to achieve reasonable performance

Each new network requires manual intervention

Just like Andrew Cowie, I'm trying to get new features in NetworkManager. by blogging.

My use case is simple – if a bit geeky – use the local resolver on my system irregardless of what I get dynamically (via DHCP) or automagically (via SLAAC).

I can do this manually for each network I connect to, but it quickly looses its appeal.

Very little software takes advantage of DNSSEC (yet).

Apart from the happy DNSSEC campers, very little takes advantage of DNSSEC yet.

Kind of like the early days of IP6. It would be nicer if websites stored the fingerprint of the SSL website in DNS and it could be cross-checked against what was sent.

The effort to do so is underway at the IETF by the name of DANE.

In fact publishing SSH key fingerprints via DNS is already possible RFC4255 but I am unaware of deployed support.

Things are progressing, and I suspect now is a great moment to get involved if you have spare time, in making it significantly harder for 3rd-parties to censor the Internet for everyone.

Wed, 04 May 2011

## Django and Whiskey.

No, not programming whilst inebriated. Although the effects of the Ballmer Peak are well known.

I mean using wsgi and Apache together with Django.

But, perhaps, I should explain my (current) layout of projects.

I now use:

``` /path/to/project/
.git
.gitignore
project_name/
urls.py
settings.py
production_settings.py
[...]
apache/
project_name.conf
django.wsgi
env/
[...]
sitestatic/
requirements.txt
fabfile.py
```

This allows me to have revision control of things meta to the project and of the project itself.

This setup is relatively new, I've only been using it in about 4 projects now.

Which meant that my wsgi file had to be slightly modified.

This took me a lot longer than I expected to get going. But if you decide to use a layout similar to mine, this might help.

```import os
import sys
import site

## Assumptions:
# Assume that the Django project and the environment are at the same level.
# i.e.
# /home/
#      /<project root>/                                     <- *
#                     /<project name>/                      <- *
#                                    /apache/
#                                           django.wsgi
#                                    production_settings
#                     /env/
#                         /lib/
#                             /pythonX.Y/
#                                       /site-packages/     <- *
#                     /sitestatic
#
# Directories marked with '<- *' need to be imported for everything to work

PROJECT_NAME = "control"

PYVER = "%d.%d" % (sys.version_info[0], sys.version_info[1])
APACHE_DIR = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.abspath(os.path.join(APACHE_DIR, ".."))

site_packages = os.path.join(PROJECT_ROOT, 'env/lib/python%s/site-packages' % PYVER)
sys.path.insert(0, os.path.join(PROJECT_ROOT, PROJECT_NAME))
sys.path.insert(0, PROJECT_ROOT)

# import from down here to pull in possible virtualenv django install
os.environ['DJANGO_SETTINGS_MODULE'] = 'production_settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
```

One slight tweak I have also done is to rename the `django.wsgi` file, to be the environment file. e.g. `devel.wsgi`.

That means the only hardcoded thing in the wsgi file is the PROJECT_NAME. Apply this patch on top of the file above:

```--- apache/django.wsgi  2011-05-06 00:38:57.266316530 +0100
+++ apache/devel.wsgi   2011-05-05 14:23:33.708685680 +0100
@@ -24,14 +24,15 @@
PYVER = "%d.%d" % (sys.version_info[0], sys.version_info[1])
APACHE_DIR = os.path.abspath(os.path.dirname(__file__))
PROJECT_ROOT = os.path.abspath(os.path.join(APACHE_DIR, ".."))
+ENVIRON_TYPE = os.path.basename(__file__).rstrip('.wsgi')

-site_packages = os.path.join(os.path.dirname(PROJECT_ROOT), 'env/lib/python%s/site-packages' % PYVER)
+site_packages = os.path.join(PROJECT_ROOT, 'env/lib/python%s/site-packages' % PYVER)
sys.path.insert(0, os.path.join(PROJECT_ROOT, PROJECT_NAME))
sys.path.insert(0, PROJECT_ROOT)

# import from down here to pull in possible virtualenv django install
-os.environ['DJANGO_SETTINGS_MODULE'] = 'production_settings'
+os.environ['DJANGO_SETTINGS_MODULE'] = '%s_settings' % ENVIRON_TYPE

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
```

If you have any suggestions for improvements, or thoughts on how to remove the PROJECT_NAME, let me know!

Tue, 26 Apr 2011

## The SciFiRomCom.

In the last few weeks I've seen both The Adjustment Bureau and Limitless. And I've realised they are really both in a new (new to me, that is) category.

If you have the chance, they are both worth seeing. They are not particular spectacular and neither will really make you think. But what is this “new” category about?

Basically you have a Romantic Comedy but the trigger is Science Fiction.

For example; in the Adjustment Bureau, a man loses an election. He meets an amazing girl who lifts his spirits and inspires him. To not only give a great consilation speech but to not give up.

However, he never meets her again. Or he does but "outside forces" (the titular Adjustment Bureau) conspire to keep them apart. The remainder of the story is about him trying to overcome those obsticles.

In Limitless, a man reaches rock bottom when his girlfriend leaves him. Whilst bumbling around he gets a 'magic' pill that helps him get into a state of flow and solve problems.

Along the way, he arranges to do things that enhance his social proof; like learning (multiple) languages, earning lots of money, etc.

Whilst the remainder of the story is about him trying to overcome the obsticles that life with the pill throws up, a significant sub-plot is the relationship with the ex.; and how he tries to win her back.

Thus the SciFiRomCom, there are, no doubt many examples of this genre. But the earliest that I can recall seeing is Groundhog Day (which is a classic and MUST be seen). What other classic SciFiRomCom's are out there?

Thu, 18 Nov 2010

## End of the line for Phone numbers.

Whilst a lot of people believe that Facebook's move to offer an email address is because it wants to compete with Gmail, I think it actually something far more interesting.

Nowadays, no mobile carrier would consider selling a phone which did not allow some kind of social network access. And Facebook's idea is to allow you, from any FB account to contact another FB user. By whatever preference they have set.

Imagine if a lot of people start using the FB application to contact people, and they have indicated that they prefer delivery of IMs via SMS (or Texts as some people know them).

Since, much of the world, charges the sender for SMSes (or texts; I verb your noun.) people who now use FB will not be incurring - excessive - carrier charge for SMS.

The, other, additional little detail FB indicated was that everyone will now get an email address. Email addresses are interesting because, as well as receiving email they are also SIP identifiers.

SIP, for those of you not technical, is what is used to route practically all telephone calls. Landline, international, mobile. This basically sets the stage for FB to takeover calling between customers and cut out the carriers in another way.

Couple this with Apple's Facetime and some upcoming change with Google's Android and you have multiple companies doing their best to relegate mobile carriers to wideband ISPs. Which can only be a good thing.

This also means that telephone numbers will be increasingly less and less important. People will, firstly, start using walled garden applications to make calls between their friends and then, once Google and others come to the party, start using email (SIP) addresses. The end-of-line for phone numbers has come.

Sun, 14 Nov 2010

## Hold the phone

So, I've had a Nokia 5800 for just on 18 months now. As I've discovered in the past few days, the device has 87Mb of internal memory. At the moment, after checking the device memory profile, 64Mb of that is "in use" by 'other' files.

Nothing on the device, nor the OVI suite, can tell me what though.

That means that various functions of the device are not working / working incorrectly.

This morning, the phone started beeping telling me that 'it had run out of memory in order to receive messages'.

So - if you have my alternative contact numbers; use them for now.

I'm actually writing software — possibly because I can see some of the source code — to rectify this.

Aside from this, and the fact that it runs Symbian, it was actually not a bad effort for a first-generation touch screen phone. I am waiting for a MeeGo device to become available (or be announced even). Otherwise I'll probably go for a Nexus Two or Nexus S or whatever it is called.

Tue, 29 Jun 2010

## Vodafone and Talktalk billing

Another day, another bill

Like most countries, the UK has been valiantly trying to force consumers to reduce their paper usage. Let's set aside the fact that most paper is not generated by consumers. And that, it isn't about reduce usage but reducing expenses relating to delivery of this paper.

Let's us also leave aside the fact that most airlines want consumers to print out their boarding cards at home. Because it reduces expenses incurred in maintaining staff at airport check-in counters. Anyway, most communications providers have taken up this challenge by making it more expensive to obtain a paper bill.

But I don't want a paper bill, per se, what I am really after is a copy of the bill I can keep for my own records. And print if I so need to.

Both Vodafone and Talktalk will send you notifications, via email, that you have a bill.

But neither of them allow you to obtain a copy of the PDF that would have been printed and sent to you.

Instead you have to fart-arse around with their systems to get (at best) a CSV file.

Why, oh why, can neither of them just send the PDF that was going to be generated? That have a bill run process anyway, it generates the PDF, sends the emails, and then promptly discards the PDFs. That would mean I have an immediate archive of all my bills from both companies in my email.

Just Broken.

Sun, 27 Jun 2010

## L'arnacœur (The Heartbreaker)

Heartbreaker★★★★½

The setup and premise is fantastic. Alex is a professional in the love game.

He job is ensure that people do not end up with the “wrong” partner.

He is good looking, charming, speaks a multitude of languages are swears by a moral code to Never break-up a happy couple.

His mission is to break up the seemingly perfect couple — Juliette (played by Vanessa Paradis who has a lovely Diastema) and Jonathan (Andrew Lincoln) — before they marry in 10 days.

Stylish and set in luxurious Monaco.

It's damn French.

It's damn funny.

Plenty of high-tech. spy stuff, drama about loan sharks, lots of dancing and lots of fun, if you get the chance, see this. You'll enjoy it.

Sat, 26 Jun 2010

## Get Low

Get Low★★

A story about getting people together to tell them a story of regret involving the main character, which we see at the start.

The story itself isn't very dramatic. Which is why there isn't a film about that. Instead we have the story about getting people to tell the story.

This is a great example of a movie with a mind-boggingly amazing cast (Bill Murray, Robert Duvell, Sissy Spacek, Lucas Black) having a script that is crap.

Having the director present, to discuss the film, after the screening lifted this from a 1 to 2.

Hearing Aaron talk about the different styles of Duvell, Murray and how the editing process was actually done (Final Cut Pro) was very entertaining.

The story drifts, the soundtrack doesn't annoy and the filmography is alright. Oh, the period setting is done very well. Not much else to recommend it though.

‘Get Low’ refers to burying in the film. Something I think that should have happened to this film.

Fri, 25 Jun 2010

## The Rebound

The Rebound★★★½

Another “coming of age” movie. All about age differences and timing. Somewhat ironical given the relationship Catherine Zeta-Hones is in.

Had some realism – from what I have observed of relationships with big age differences – but this is also very similiar to Prime (with Uma Thurman) except that this also involved children (and thus you get the associated children gags).

Seems to really play off of Aram Finkelstein (played by Justin Bartha), one of the protaganists, being Jewish. Just like Prime. The Jewishness only added two (or, maybe, three). I felt the film could have done without it. It might have forced the writers to come up with something a bit more original.

For me, the reason to watch this was Catherine Zeta-Jones who, as one of the characters notes is a MILF. The chemistry between two leads is really what saves this film.

## Barry Munday

Barry Munday★★★★½

This is a fairly classic “coming of age” story involving an unwanted pregnancy. Like the others in this genre, it has a twist (in this case neither of the parents are teenagers, like Juno) but revealing it would give away much of the plot.

Oddly this film was finished in 2008 but has taken two years to surface. Apparently the first cuts just did not work. So it was redone a few times. I am glad that the extra time was done, since this film feels "right".

Patrick Wilson, from Watchmen, is perfecly cast as Barry. The other big names make this a delight to watch, as they put in a comedic turn.

There are quite a few cringe worthy moments, especially when Barry is being his pick-up artist self. But he evolves and makes the film warm-hearted.

If you end up seeing this film, I think you'll enjoy it. It won't challenge you but it will entertain.

## Beginning Django Development

Oddly, I have had four different people ask me about the best way to begin a Django project or setup their system to make it easy to develop with Django.

Since I've now given my response via email so many times, I figure I might as well broadcast it and hopefully this will help others as well

My assumptions:

• Using Linux (or a Unix machine)
• Single developer with root access (quite possibly a laptop)
• Knowledge of DVCSes (e.g. git / hg / bzr )

What we will do is create a private binary directory and another Python modules. Then take a checkout of the two most important Django projects, and make them work.

```\$ sudo adduser newbie
\$ ssh localhost -l newbie
\$ whoami
newbie
```

Then we want to create some local bin and lib directories. First the binary directory

`\$ mkdir ~/bin `# On Ubuntu/Debian, this will automatically be in your PATH the next time you login

And now a local directory for our various libraries

```\$ mkdir -p ~/lib/python
\$ echo "PYTHONPATH=~/lib/python:" >> ~/.bashrc
\$ echo "export PYTHONPATH" >> ~/.bashrc
```

This will add that directory to our Python path. If you happen to also use another language you can put things into ~/lib/ruby, ~/lib/perl as appropriate

```\$ mkdir ~/Projects
\$ cd ~/Projects
```

Here is where we will store copies of upstream software. What is the reason for using the repositories rather than packages? This allows us to checkout specific versions to match what our clients might be using. Or test things against newer versions of the upstream project.

First, let's setup Django. I tend to use git by default, especially if the upstream is using Subversion. If they are using Mercurial or Bazaar, I use those directly.

```\$ git svn clone -s http://code.djangoproject.com/svn/django/
Initialized empty Git repository in /home/newbie/Projects/django/.git/
Using higher level of URL: http://code.djangoproject.com/svn/django => http://code.djangoproject.com/svn
r1 = 5cda37203ffa6ea83da2958a95c377984482877f (refs/remotes/trunk)
A	django-docs/images/users_changelist.png
A	django-docs/model-api.txt
A	django-docs/build.py
A	django-docs/db-api.txt
A	django-docs/writing-apps-guide-outline.txt
A	django-docs/templates.txt
r2 = b8249ac45e2154933b9649fd8181d5769e31c9fc (refs/remotes/trunk)
A	django/utils/feedgenerator.py
A	django/utils/datastructures.py
[...]
r13399 = f3902c67a3b8788de2145899e435a394c512b455 (refs/remotes/releases)
M	tests/regressiontests/m2m_through_regress/tests.py
r13400 = cd72207306a5a4eecdf07f65c109f37c8317ed81 (refs/remotes/trunk)
\$
```

Now we have Django, push it into our python path

```\$ cd ~/lib/python
\$ ln -s ~/Projects/django/django/
\$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
>>> import django
>>> django.VERSION
(1, 2, 1, 'final', 0)
```

Now, let's do the same for South. South is a database migration helper for Django. These are the two things you want to have in any Django at a minimum. There are also plenty of other amazing things like haystack, piston, satchmo, etc. You can follow the same recipie for them too.

```\$ cd ~/Projects
\$ hg clone http://bitbucket.org/andrewgodwin/south/
destination directory: south
requesting all changes
updating to branch default
143 files updated, 0 files merged, 0 files removed, 0 files unresolved
\$ cd ~/lib/python
\$ ln -s ~/Projects/south/south
\$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
>>> import south
>>> south.__version__
'0.7.1'
```

Finally, we want to be able to create Django projects. There is a great helper called django-admin that will do this. Let's put it into our path

```\$ cd ~/bin
\$ hash -r
```

That last statment will cause your interpreter to re-read PATH and make anything new available for execution.

Now, you should go ahead and create your projects. There are a variety of ways to do this. However what I like to do is keep Django applications separate from the Django project. That way, they can easily be re-used if required.

So, for a project called 'foo', we might have

```\$ mkdir -p ~/Work/foo
\$ cd ~/Work/foo
\$ mkdir foo.example.com
\$ mkdir templates
\$ mkdir media
\$ mkdir <individual apps>
```

For each individual app, put them into the Python library. And you then have your re-usability from within Django. For a application called 'bar', you would do:

```\$ cd ~/Work/foo
\$ cd ~/lib/python
\$ ln -s ~/Work/foo/bar
```

And now, in your Django foo.example.com setting.py's file you can put 'bar' as one the installed applications and things will Just Work

Obviously there are many way to slice this particular mango, but I've found that this works pretty well for me. You can spruce it up by revision controlling each directory in your project (I do) and also take advantage of things like virtualenv and Fabric to make deploying just as easy as developing. But I'll leave those topics until a later date

Thu, 24 Jun 2010

## Brilliant Love

billiantlove★★★★

With great love, comes great sex.

This felt like a truly British film, kind of like it captured the essense of Lily Allen (Noon looks a lot like Lily Allen), Natasha Beddingfield, Kate Nash. The photage is ‘raw’ there is probably too much nudity for this film to get a large run in the UK (or elsewhere).

Basically this is an exploration of young lovers, one of whom is a photographer, the other a taxidermist. So there is this undercurrent of trying to capture the present (photo, stuffed animals) for the future.

That exploitation theme runs throughout the movie, in fact you could say it is self-referential too. The story is fairly simplistic, so I'll focus more on the technical aspects of the film.

The costuming was excellent; Mel O'Connor really captured the „typical artist„ look. Slightly odd and somewhat edgy. Sometimes I wonder if artists really dress this way, or only because everyone expects them too

The soundtrack fitted the film: obscure, offbeat but all good. The Cinematograhy: lush, raw and very personal.

## Silent Voices

Silent Voices★★★½

The introduction of this movie felt really contrived. A group of people waiting to go on a prison visit, when one of them suddenly becomes hysterical because she is unable to read the piece of paper telling her if this is the right place. The pullaway shot of one person tugging the arm of another to drag them away from the specticle was a nice touch though.

There are three major story threads going on during this movie:

• Alexandre + Laure

A young couple who have met, fallen for each other and are struggle to remain together even though one is behind bars

• Stephane + Else

An older couple who are struggling to find direction, money and love with each other

• Zorah

A mother who is trying to understand what has happened to her son

Each of these has a number of sub-threads. Unfortunately, I found both the first two story threads to be clichéd. Cute, but clichéd. Obviously each of the threads intersects, and the finale helps you understand the title.

Farida Rahouadj's portrayal of Zorah was very compelling and makes up for all the other imperfections of the movie. It held the movie together and made it watchable. 3.5 out of 5.

## Back at the festival.

Once again, it is Edinburgh Film Festival time.

Which means a lot of great, obscure, or pre-release movies (and some dross and dreck thrown in too) to watch.

This week, rather than spending my meagre money on rather pointless stuff like food, instead I'll be spending it on movies!

Wed, 23 Jun 2010

## I'm definitely still alive

Yes, folks. If you haven't been stalkfollowing me on various other online channels (Facebook, Linkedin, Twitter, etc.), it might have appeared to you as if I was no longer alive.

A blog with no updates in over 6 months! Heavens.

However, the truth is that I've had a number of pressing matters to attend to.

Mostly they relate to my personal finances and to my Fathers' health.

Fortunately both of them are slightly better now.

I shall endeavour to post once a week, or more frequently, when I've got interesting news / reviews / rants I'd like to share with all three of you (Hi Mum! Hi Dad! Hello you other weirdo!)

Wed, 28 Oct 2009

## Falsum in uno, falsum in omnibus.

Note: via Blog post (obviously different formatting) and sent by email

roughly: Lying in one, lying in all.

Please see the attached screenshot — I have obliterated service identifying information.

I find it telling that what I said in my original post, of all the things there the one you decided to fact-check was the number of emails between us.

And you got that wrong.

What was is you said again? Falsum in uno, falsum in omnibus? Do you still stand by that statement?

If you have looked at the original complaint, no one asked for anything but information on 'what went wrong'.

It simply noted that fact that payment occurred, and we were disconnected and went on to say "We find the above experience of diconnecting [sic] our service by EXETEL a very poor customer relationship experience."

The response to that could have been: "Yes, that is a poor customer experience. We will look into it and see if we can improve."

Instead we had an accusatory email back commenting, firstly, of the amount of time of the disconnection.

As if someone paying for something and not receiving it for only 1 minute is OK.

The point being missed – we paid for something and we did not receive it.

The point being missed -- this is a poor customer experience

The second email then, falsely, accused us of not actually paying in the first place! Later the individual concerned, after the TIO complaint, clarifies that 'yes', we did indeed pay.

Very telling indeed, then, when you were pointed to my blog entry and rather than pick up on the stratgeic ("we are getting feedback, for free, on how we can improve our processes") you looked at the tactical ("he is lying! How I prove it and thus be happy in ignoring what was said").

As I said, It is easier to hear when your fingers are not in your ears.

In light of your recent blog post, and the recently released TIO report, I find Exetels' behaviour all the more perplexing.

Complain about Exetel, and get libelled publicly.

But I guess when you have 1/6th (163 out of 620) of your complaints related to Customer Service (from the TIO report) and 3% of your own existing customers (from your blog post) complaining, you get the reputation you earn.

Tue, 27 Oct 2009

## Things I learnt on Sunday about Salsa

1. When I have had three rums, my ability to keep a Salsa beat is vastly more diminished than I expected
2. Hook turns, spins and handflicks are not easy for me to do
3. My face is a lot more readable than I expect

But my thanks to the ladies who helped me with both (1) and (2). Feedback is always appreciated.

Sun, 25 Oct 2009

## Policy-based routing in Linux

Just a quick note.

Most routing is done on the basis of the destination address, unless you have a BGP feed.

However occassionally you need to do routing on the basis of some other policy: in my case this weekend it was the source address.

I spent quite a few hours this weekend looking at various Google results, lartc.org, www.policyrouting.org (the latter has a fairly detailed book with some useful examples) before I came up with a solution that works for me.

```ip rule add from <source addr> table 203
ip route add default via <new default> table 203
```

You can also use the ToS field and act upon fwmarks thus linking your routing with your iptables policy.

Thu, 15 Oct 2009

## It is easy to not hear when your fingers are in your ears.

I read this post by Steve Waddington of Exetel where he says that customers never seem to follow-up with him when he asks them about their poor customer experiences. I just had to laugh. I had actually just filled a complaint with the TIO about Exetel.

I have emailed Steve Waddington a number of times, generally outlining problems, but I am yet to ever receive a response.

Generally if you want to hear feedback from your customers, you have to take your fingers out of your ears.

Here is my (most recent) Exetel story.

To set the scene, I am synchronising a large backup of data. Think around 100Gb. In reality a small amount.

Towards the end of September, we receive an email indicating that we had used a large amount of service. Furthermore that we had 72 hours to pay an interim fee of AUD\$100. The email was sent in the early hours of a Friday morning. Which effectively turned it into a single business day. Heaven help you if you had decided to take a long weekend.

At any rate, the fee was paid by that afternoon and a name and receipt were obtained. Everything should have be hunky-dorey.

Come Monday morning - the Internet service had mysteriously failed. After some remote, expensive AU to UK phones calls and diagnostics I determined that the problem was that Exetel's system had disconnected the service anyway.

I emailed them to see what the problem was, and contact was made from Australia. Around the middle of the day, service was restored.

A complaint was filed with them (reference: #1691636), that day, which was summarily responded too. I left things for a while since I was busy.

But on the 13th Oct night, I decided to file a complaint with the TIO (reference: 09/251856). Here is the full text:

On 25 Sep, roughly 07:30am, an email was received from Exetel that they required an interim payment as our usage had exceeded AUD\$100. The email indicated that if payment was not received within 72 hours - the service may be suspended.

At roughly 3:15pm, on 25 Sep - i.e. the same day. A payment of AUD\$100 was made and we were issued receipt number 346650646 by an employee who indicated that there name was Rukshani.

On 28 Sep at roughly 8am, the Internet ceased to function. After some investigation we determined that Exetel's automated systems believed that the payment had not occurred.

#1: I sent an email at 11am on 28 Sep to their billing department, along with their senior management, with payment and service details asking why this occurred.

#2: A complaint was sent by the payee at 11:30am on 28 Sep indicating that we were unhappy with the service -- having been customers of long standing (over 4 years) -- being disconnected for over 4 hours despite paying is annoying.

Particular when this was not through fault of our own. Nor a technical fault.

#### How did the service provider respond to your complaint

#1: On 30 Sep at 12:45 an email was received from James Lowe, who said "Your service is un block now [sic]". No explanation was provided for the outage and non-application of the payment made.

#2: 2 responses were received to this email.

#2a: At ~11:50am on 28 Sep we received an email from Larry Kaeto who said that the service was unavailable for 2hrs 31mins, not the 4hrs as we had claimed. Additionally he indicated that we had a residental service which is not to be relied upon for business/mission critical requirements and suggested we purchase a more expensive service which has "business grade type support".

#2b: At ~09:40am on 29 Sep we received a further email from Larry Kaeto who claimed that no payment had been received by Exetel on 25 Sep.

#### How would you like the service provider resolve your complaint

Exetel appears to pride itself on its automated systems. (c.f. http://johnl.blogs.exetel.com.au/index.php?/archives/2783-Automating-Key-Systems-Is-A-Never-Ending-Task.html)

However, in this case, the automated system issued a demand for money. The money was paid, but it suspended access to the service anyway.

Service should not have been disrupted for 1 minute nor 150 minutes nor 240 minutes.

I believe the charge of AUD\$100 and the monthly charge should be credited back to us for the hassle.

I've put in the headings as they are on the TIO complaint form, and made the URL a link otherwise it is exactly as I submitted it — which is also why the text is not very lengthy, as the TIO restrict how much you can submit.

This morning, at 09:10 I received an email from Exetel acknowledging receipt of the TIO complaint and asking Please detail in a point by point manner your concerns. This email was from Larry Kaeto. It also contained a copy of the most recent LNS logs. I replied with a full copy of the complaint as I submitted it to the TIO (reference: #1770435) and also indicated I would speak with the TIO to confirm what they had sent to Exetel (Exetel reference: #1771491).

By 12:56, Larry Kaeto was able to responsd, quoted here and edited to occlude privacy information:

Exetel acknowledge payment 25/9/09 was manually processed 25/9/09 but the record to remove the timer to suspend in 72 hrs was not removed.

I did not see the manual payment of the 25/9/09. Sorry for my ''incompetence'' for saying payment was not made.

The duration of suspension was 2 hours and 28 minutes (or thereabouts) as the facts show below (our session logs and your usage time logged in and out) and nto 4 hours as is claimed.

As gesture of goodwill, Exetel will provide a refund of \$100

Exetel has made a commercial decision to end the relationship with you. See e-mail sent separately titled ''Ticket #1771491: XXXXXXXX5X - Notice of Termination - XXXXX XXXXXX ''

So, as you can see from John Linton's post, if there is a problem with taking payment – your service is summarily disconnected.

And, as you can see here, even if they take payment, but their automated system fails, if you complain about it, your service is summarily disconnected.

It is much easier to listen to your customers when you take your fingers out of your ears.

Fri, 18 Sep 2009

## Firefox, Flash, FAIL!

(aside: I have a number of blog posts in draft – don't worry they won't spam the various planets – but this was timely so I pushed it out first)

The most recent version of Firefox 3.x will also prompt you to update your Flash plugin if it is out of date. According to Ken Kovash, the response has been phenomenal. Almost 10,000,000 click through.

That is 10,000,000 failures.

Like a lot of people, I provide technical support for my Windows using family (and some friends). So I get to see how badly Windows is in the 'update' space. It is pretty common to have: Windows, Anti-virus, Java and one / two other applications (e.g. Google apps, Skype, Yahoo IM, etc.) prompt you with little annoying notification bubbles.

Most of them have trained themselves to not look in the bottom right of the screen and to ignore requests to update.

Which means that whenever I see a big, important update, like the Firefox one — I end up having to remotely take over their machine and do it on their behalf.

The user experience was:

1. Update Firefox.

So far, so good.

2. It prompts and say Flash is out of date.

Great. It also includes, checked by default, a download of McCafe's anti-virus tool something or other.

Why is Adobe offering me more than just an upgrade of the product I am after? Apparently this is very common in the Windows world (think Safari included with iTunes, etc.)

It includes instructions on how to enable things so that this plugin is updated by Adobe all the time. I, rather pointlessly, ponder why Flash does not do this itself.

6. Once installed, you need to restart Firefox. I do so.
7. This time the "Your Flash is out of date page" does not appear.

At this point a normal person would think that they are now secure. Nothing could be further from the truth. Adobe has stupidly decided that first you need to have their update plugin. Then you need to actually do the update. FAIL.

8. I manually go the the '3.5.3' release note page, where it detects, again, that Flash is out of date.

I click through to Adobe's site (again), this time, it figures out that it needs to update Flash. It autoinvokes the autoupdate plugin and does the update.

9. Prompted to restart Firefox, again. I do so.
10. Everything is now perfectly fine.

That was a total user experience failure.

But Mozilla can make a difference in this area. And work around the stupidity of Adobe.

1. All plugins MUST register a https URL where their version can be checked.
2. Periodically Firefox does the version checky thing (like with Add-Ons) and ensures they are up to date

That implies that there is a, separate "Your plugins are out of date page" distinct from "You've installed an upgraded version of Firefox"

Fri, 14 Aug 2009

## Hospital Week, or why the NHS is actually OK

It is odd seeing various reports that implementing properly state-funded health care in the US will lead to problems with death panels, or poor service.

I can only really comment on my own experience of the NHS.

I've found that the system of registering yourself to a GP is fairly pointless, time-consuming and buearucratic. Actually seeing a GP requires it to be an emergency or you to "plan" your sick days, because you need to have an appointment or be willing to wait, many, many, hours.

However, once you have a referral to a specialist, and you see them, further appointments, tests other diagnostic stuff is amazingly fast.

I've been in and out of hospital all this week on various days and I've got at least another 3 - 4 appointments covering the next month already lined up.

I don't recommend visiting hospitals so frequently but if you have, the NHS is a nice way to do it

Sun, 09 Aug 2009

I just received an automated call from Santander.

Let's set aside the stupidity of calling me on a Sunday, when all banks are closed, as the parent organisation being in Spain and the call centre being in India and this being a case of cultural stupidity.

What really annoyed me is that they wanted me to answer a few security questions, like what my address is, my date of birth.

They called me.

There is no guarantee that the person who claims to be from Santander is actually from there. It could be any random person calling and pretender to be them.

But what mechanism could they use to validate themselves? What about using two-factor authentication?

They could have called me from a number that they print on the back of the card, which is would have at least been a good starting point. It is not impossible to spoof an originating number but does increase the burden of effort on someone trying to perform identity theft. Fail one.

After explaining this to the women on the other end, she kept asking me to fill in the questions and then hung up in a gruff. Fail two. I had a similar call from HSBC earlier in the week as well. After explaning that since they called me, they either have something to tell / sell to me or they don't. He agreed. HSBC wanted me to come in for an appointment to review some ways they can "help me".

So it was a marketing call. At least HSBC have someone who is able to independently reason. They only score a single fail for trying to have me authenticate to them.

Principals of outbound calling:

• If you make the call to me, the burden is on you to prove who you say you are. Not me.
• Not all calls require me to verify my identity to you. Particularly sales and marketing calls.
• There is no reason to disturb me on the weekend.

Fri, 07 Aug 2009

## Eating healthy.

I came across Graze, a few weeks back and thought that even though I try to eat healthy, it might be simpler for me if I just had the food delivered.

It can be a hassle buying for one and then finding out that you don't like the food — or that you have to buy it in bulk just to have a portain of it each day. Plus food is nicer when it is fresh.

The boxes are, apparently, custom designed to have three different foods in them. My first box contains, pineapple, apple strudel and cashews. It looked like this:

And about 2 minutes later it looked like

Pretty good but the pineapple was almost fermented — it had not kept very well. I dropped the guys at Graze an email saying that. I was not expecting much, as I am on a trial offer and the first box was free, after all. But I was pleasantly surprised when I received a response from Natalia apologising for the pineapple and indicating that my next box would also be free.

Sweet!

My second box, below, also disappeared pretty quickly. Although I was not a fan of the dried raspberries as compared to the grapes and nut mix.

Their website is pretty slick, and the sign-up process is lovely. My one complaint is that when you rate foods, you have to 'bin' them, or 'love' them. I don't mind cashews and dried raspberries — I'd still like them to be sent up, just not as as frequently as, say, apple strudel. I'd rather give it a thumbs up, thumbs down are wavy hand.

I think that at £2.99 / box, the service is a bit too expensive for an individual to have. But a company might be able to arrange a "bulk rate". However one thing I particularly like is that each box contains a different image inside the lide. If they included some kind of inspirational quote as well, it be even better.

Tue, 30 Jun 2009

## My last five girlfriends …

Going to see films has been, for me, usually a solitary exercise.

Either no one was interested in seeing what I wanted to, my tastes are somewhat elceltic. Or they wanted to see that right at the beginning or right at the end.

Fortunately there are film festivals where other people with eclectic tastes gather. And even more fortuitously there is one in Edinburgh.

Whilst I would have loved to see some films during working hours -- that was not to be. Instead I saw My Last 5 Girlfriends. It stars Brendan Patricks and, judging by the swooning going on in the audience, he is likely to be the Hugh Grant of his time. The story is a cross between Eternal Sunshine of the Spotless Mind and Being John Malkovich in style.

Most of the girlfriend scenes are what you expect them to be: alternatively predictable, funny and often cringe-worthy. That is not because the script is bad, actually it is the opposite. It is due to the fact that everyone has gone through this exact set of problems and issues with girlfriends. If you get the chance, well worth seeing. ★★★★☆

Oscar Redding wrote and stares in Van Dieman's Land. The movie is graphic, haunting and beautifully shot. In particular I liked the fact that there was little "flinching".

If the guys had to cross the river, the camera was setup and the guys crossed. Buttocks and all.

If the guys had to hit someone, and they were still not dead. You hit them again. And again.

If you want 'popcorn' entertainment, this isn't for you. Why isn't this a 5? Basically — even though I was unaware of the original historical story — I felt that the ending of the film was telegraphed too early. ★★★★☆

Wed, 13 May 2009

## Broken TalkTalk

That basically sums up my interactions with TalkTalk, so far.

But, let's begin at the beginning.

Having moved to Edinburgh earlier in the year, and finding a place, the next most important thing is to get connected to the 'Net. I had a look around at various deals. The closest the UK has to broadbandchoice.com.au is SamKnows.

It basically told me that in my exchange area I could choose between BT, TalkTalk and Virginmedia. Despite the fact that LLU has been around for longer here than in Australia very few companies choose to put in their own equipment. That is because openreach, apparently, do not attempt to charge an arm and a leg for their service. Just an arm and a foot.

I quickly discovered my choices were:

1. Pay BT £213 to "activate" the line that already existed in my place
2. Use TalkTalk and pay them £50 to do the same

Obviously, this was a no brain-er. Particularly as the "activation" here is related to re-connecting the MDF(and/or street cabinet) back to the exchange — which is literally 10 metres walk away from me. I choose TalkTalk.

TalkTalk's offer was (at time of writing – 2009-05-12), £11.25 line rental and £6.49 for broadband. Yes, £17 / month. As offers go, it is not a bad one. I get unlimited (i.e. no longer than 60 mintues) call to any landline in the EU, Australia, New Zealand, Canada and the United States.

The first catch is that whilst the offer is for 18 months, if you are a "new" customer, you have to sign up for 24 months.

That is because TalkTalk have no confidence in the quality of their product or it's continued competitiveness. There can be no other reason, since you are also obliged to pay more for a 'new' install.

I believe that is broken because it was never any specific persons' job to think about it.

The second catch that occurred is the wait time. I know this information after the fact, after having discussed it with a number of TalkTalk employees, but their systems impose a minimum 14 day (that is working days) delay before submitting an order to BT.

This means that from the time you order the Phone + Broadband service, it can be up to 6 — yes, six — weeks before you have network connectivity.

Catch 3 is not having any access / idea about your usage -- but being charged for it!!!

Again, you get unlimited usage (i.e. up until 40Gb) but there is no mechanism to see your existing usage for the month. Why bother to charge for something where there is no meter?

Catch 4 is having to specifically sign-up to new 'price plans' -- why not just make it automatic?

It is good that price changes are announced in the corporate blog but as it notes on TalkTalk price changes, you have to opt-in to every change which is beneficial to you. For every change (rental increase, etc.,) that is not; you are automagically opted in. Nice.

Catch 5 is discovering that the blog engine will take your comments but moderate them out the wazzo. My comment was about Catch 4 -- price increases you are automatically opt-ed in for, whereas price decreases you are not.

Catch 6 is finding out that whilst TalkTalk can email you, you can never respond to an email -- you either have to use their 'contact us' web form, or ring.

What is with arrogant companies who want to use email as a one-way tool? Why can't they tie the sending address to a ticketing system so that if/when a customer replies it can be looked at? This is trivial to do, and I've done it at a number of companies. Without exception, when customers realise they can use the existing tools -- rather than to find the number on the website, or work out some stupid 'contact us' form they are happier.

Tue, 16 Dec 2008

## You make a grown man ...

... cry.

In my prior entry, I noted that I resigned from Debian. I also upgraded my system to Ubuntu.

This is my story.

The good
• since the tools are based upon Debian, easy to upgrade to.
• much usage of dpkg -P --force-depends && apt-get -f install occurred
• most things Just Worked
• always had either suspend or hibernate working before. Now have both working. Cool.
• I like how Gnome has a 'personality', makes it even nicer.
• splash-y boot is nice. Makes other people go 'schweet'.
• Having the single-user mode option come up with a menu of options is good
Unfortunately neither 'netroot' nor 'fsck' work correctly. The latter should NOT run the init scripts first.
• managed to futz video
• managed to futz networking
Would be great if there was a command line network manager tool that connected to the network
• managed to break sounds
• stock Gnome, which I have been using for ages, sucks.
• hard to just update to packages in jaunty/main.

I want to switch all the 'core' packages over to the Ubuntu versions. This is seemingly impossible unless I do: apt-get -du upgrade and note which packages came from 'jaunty/main' (but I bet there is some easy fix)
• why no OpenOffice 3.0?

Odd that they are willing to break with Debian on: X, Gnome, Firefox, the kernel but not this.
The ugly
• found 2 bugs; one already reported, gave a work-around
• reporting bugs is painful (hello? why do I need a browser to do this?)

I have found another 2 bugs but I do not have the time to interrupt my browser workflow to report them. Reportbug is basically perfect. Just re-use it. Whoever thought 'ubuntu-bug' using '-p' and '-P' is a good idea was ... not thinking clearly.
• ubuntu forums typically have the error message

But then lots of (rather) useless bleating and uninformed suggestions -- avoid them at all costs
• the wiki is horribly outdated

• no way to 'reset' things easily

system-clean is okay, but what about terminal 1? Should ctrl-alt-1 work?
• interesting, firefox has a 'ubuntu addon' that does specific stuff.

Why not just use iceweaseal, and then add back in the branding and addon stuff if required? Would make for greater re-use.
• why does the user switch applet default to showing your name?

Who is not always sure of their name? Why take up so many pixels? Not clear.

Something that I think would be very useful, would be a script that took a stable Debian release and updated you to the latest Ubuntu LTS. In the past I used be okay with the release cycle that Debian had but now-a-days, I think I would prefer knowing an upgrade is coming every 24 months and be able to plan for it.

## Leaving Las Vegas ...

... and Debian.

Today I resigned from Debian. It has been something I have been thinking about for quite a while but it was a recent post by Bastian Vethur that brought about a tipping point.

For me, Debian has always been about new, and shiny. I've always used unstable, and over the last few months had switched to experimental because the flow of updates had basically stopped. Bastian's graphic shows the issue dramatically.

There are also a whole bunch of other reasons but if I have not already discussed the political reasons with you in person they do not bear repeating again.

So, I changed my laptop over to Ubuntu (running Jaunty, and updating daily). The process was far from simple, but if you are used to living on the unstable (or, even, experimental) edge of the blade relatively uncomplicated.

Anyway, Debian is going through a growing phase. Whether it grows to be bigger, more relevant or more useful is what others will have to decide. It's been fun, and I hope the future brings success.

Mon, 15 Dec 2008

## I told you so Exetel.

I use exetel for a number of services in Sydney.

I have always found them to be the cheapest, even if their ability to support their service is sub-optimal.

An example is right now, they are currently totally offline.

```a2@eve:~\$ dig +trace exetel.com.au

; <<>> DiG 9.5.0-P2 <<>> +trace exetel.com.au
;; global options:  printcmd
.           338458  IN  NS  G.ROOT-SERVERS.NET.
.           338458  IN  NS  H.ROOT-SERVERS.NET.
.           338458  IN  NS  I.ROOT-SERVERS.NET.
.           338458  IN  NS  J.ROOT-SERVERS.NET.
.           338458  IN  NS  K.ROOT-SERVERS.NET.
.           338458  IN  NS  L.ROOT-SERVERS.NET.
.           338458  IN  NS  M.ROOT-SERVERS.NET.
.           338458  IN  NS  A.ROOT-SERVERS.NET.
.           338458  IN  NS  B.ROOT-SERVERS.NET.
.           338458  IN  NS  C.ROOT-SERVERS.NET.
.           338458  IN  NS  D.ROOT-SERVERS.NET.
.           338458  IN  NS  E.ROOT-SERVERS.NET.
.           338458  IN  NS  F.ROOT-SERVERS.NET.
;; Received 228 bytes from 192.168.1.1#53(192.168.1.1) in 58 ms

au.         172800  IN  NS  AUDNS.OPTUS.NET.
au.         172800  IN  NS  NS1.AUDNS.NET.au.
au.         172800  IN  NS  NS2.AUDNS.NET.au.
au.         172800  IN  NS  DNS1.TELSTRA.NET.
au.         172800  IN  NS  SEC1.APNIC.NET.
au.         172800  IN  NS  SEC3.APNIC.NET.
;; Received 413 bytes from 2001:503:ba3e::2:30#53(A.ROOT-SERVERS.NET) in 620 ms

com.au.         259200  IN  NS  ns1.ausregistry.net.au.
com.au.         259200  IN  NS  ns2.ausregistry.net.au.
com.au.         259200  IN  NS  ns3.ausregistry.net.au.
com.au.         259200  IN  NS  ns3.melbourneit.com.
com.au.         259200  IN  NS  ns4.ausregistry.net.au.
com.au.         259200  IN  NS  dns1.telstra.net.
com.au.         259200  IN  NS  au2ld.CSIRO.au.
com.au.         259200  IN  NS  audns.optus.net.
com.au.         259200  IN  NS  ns1.audns.net.au.
;; Received 354 bytes from 2001:dc0:2001:a:4608::59#53(SEC1.APNIC.NET) in 1302 ms

exetel.com.au.      3600    IN  NS  ns2.exetel.com.au.
exetel.com.au.      3600    IN  NS  ns1.exetel.com.au.
;; Received 99 bytes from 128.242.113.189#53(ns3.ausregistry.net.au) in 193 ms

```

This is something I reported (ticket #853640) to them around Oct 2008 (when they last had a failure), that the auDA has no in-balliwick glue for their DNS. I was told by their support supervisor, Dylan Friedewald, via email:

The DNS for helpdesk.exetel.com.au is operational and valid, I do not see the point in discussing that further.

It is interesting to note that Steve Waddington has blogged many times about customers being unable to identify issues, but it is even more interesting that when a customer does – it is explicitly denied as being a problem and then ignored.

Apart from no in-ballwick DNS glue, their nameservers are also open recursive ones. Great if you would like to perform a DoS attack against some unsuspecting person.

I have raised other issues with them that warrant further investigation and corrective action, lest they affect all their customers. But I no longer have the time to continually ping them about things.

Mon, 08 Dec 2008

## Coughing up blood

Normally, those would not be the search terms I would plug into Google, first thing in the morning. But they were appropriate, today.

Because that was what was happening.

When I was younger, I used to have asthma and, as part of that, I would invariably contract bronchitis periodicially.

Over the past years, even though my asthma has receeded, I would still get bronchitis at the interface between seasons. It did not matter if the season change was hot to cool, or cool to hot. Whatever the change, I would get it.

I've been used to this. It is, in it's own way, comforting. I can watch the seasons change, and notice that are changing earlier. It's like I have an in-built global warming detector!

This latest bout came on about 3 weeks ago. So, as usual, I thought nothing of it, bought my normal supply of strepsils and went about my life.

It was not until I was doing some training, and was left exhausted and wondering why that I decided to head to the doctor. He could not hear anything wrong with my lungs.

We did a few peak flow tests; my best of 3 being 250. Typical values for a health person are 600+.

His conclusion: ‘Your asthma has recurred.’.

A week later and I am still short of breath, but also coughing up blood. So after some searching on the interwebs, it appears that this can be normal with excessive coughing. And that the best ways to control excessive coughing are: codine1 (paracetamol / panadol) and chocolate 2

So, I've been indulging myself in both.

I'm off to get a chest X-Ray just in case this is more serious and the blood re-appears tomorrow. But now you know that chocolate is good for you (and your cough).

Sun, 19 Oct 2008

## How to get more developers.

Christian worries about how to grow the desktop share in the free desktop.

Some recent events (Chromium, Geode) have led me to believe that … We've won … already.

For example let's look at the reactions to Chromium (which I believe was released way too early):

I've just picked three links but the trend is clear. The digirati want to use Linux and Mac OS X to evaluate new technologies NOT Windows. Sure, some of them still have those boxes around for “client work”. But that is not what they use day-to-day.

Now let's take a look at Mozillas' Geode. Here is the Introduction to Geode. Look at the comments:

• Why is it not compatible with Linux (first one)
• Ele é compativel com linux? (seventh one)

In fact the outcry was enough for lack of Linux support that is merited a follow-up Common Geode Q&As:

Geode is meant as a temporary solution to allow websites to experiment with geolocation today. … Skyhook is built in. A side effect is that Linux isn't supported for the simple reason that Skyhook hasn't implemented Linux drivers. Although not ideal. …

A year ago this would not have happened. This amount of push-back from the digirati that the new technology they are supposed to look at and evaluate is not available on their platform would have been accepted as a matter of course.

Now, though, they all expect it on their platform of choice. We've won, already.

Whilst the largest user-base remains the Windows market, if you want the digirati to look at and evaluate what you have to offer it needs to work on Linux & Mac OS X. Another example, while I remember, is Adobe releasing Flash 10 for Linux on the same day as other platforms.

Unheard of.

So what does mean for Christian's question?

1. Within 12 months it will be inconcievable for software to NOT be released on Windows + Linux (and maybe Mac OS X)
2. Within 24 months we will have power users asking for Free Software (probably not Linux but more likely OpenOffice 3.x & Firefox) routinely
3. Within 36 months Linux will be 10% of the desktop market. Bigger than Mac OS X. That is a lot of people you can not afford to ignore if you are a company, it will mean that ‘web-based’ will be more and more common — integration between desktop and the web will be key.

Sun, 05 Oct 2008

## How to solve a credit crisis ...

Apologies to anyone bored of this topic but it is something I have been thinking about recently.

You have people commenting on why Banks are special and need government funded bailouts. Others arguing that the Free market is not dead.

We have even have a few solutions from some people within the Free Software community.

I think the first thing is to identify who should lose, and who should win.

• Investors should lose.
• Customers should win.

Much of the annoyance about the rescue from ordinary people is that it seems that investors are not losing (enough). They took some risks, those gambles failed, and now everyone else is paying the price.

If IBM were to go bankrupt, would the government step in? Unlikely. Investors would lose (money), staff -- another word for investors -- would lose (jobs), but customers would win (their computers would keep working). Some customers would win more than others (especially those who had the equipment on lease); if no one is collecting, why pay?.

So let's apply the same set of outcomes to banks.

• Borrowers would win, since they are living in a mortgaged house.
• Investors lose, since no one will buy their shares (no matter how cheap they are)
• Tax payers win, since they are not rescuing a particular industry sector

But hang on, you rightly ask, - a bank has the title deed (a mortgage is a promise to pay amount X over Y year in return for the deed) - why would customers (depositors), realising a bank is no longer viable, since remove their funds

I think that those two issues can be addressed fairly simply. The government would guarantee all depositors money. Customers never lose. They never have to worry about their funds.

For banks, who enter into administration, the standard laws about possession should apply. If a borrower is utilising (living in) the asset to which the bank has title for over Z years (where Z equals 5 or 7), then the possesor now owns it outright. That is plenty of time for a bank to either be bought, have the underlying asset value recalibrated, or to completely go bust.

All without a detrimental effect.

Fri, 03 Oct 2008

## Doesn't quite ring the bell

Oct 2, 2008 by Anand Kumria

The premise of this restauant is to give you the typical feel of an Austrian ski hut.

The low ceilings, the cosy place and the okay beer assist in evoking that feeling.

Unfortunately the very average food, and really poor service also do the same.

If you are going, make sure you enjoy the host's bell ringing but keep in mind that apart from this there is very little else to redeem this place.

This hReview brought to you by the hReview Creator.

ॐ (aum) - what was, what is and what will be, wildfire's musings

Anand Kumria
wildfire@progsoc.org

# Subscribe

Subscribe to a syndicated feed of my weblog, brought to you by the wonders of Atom.

# Blosxom

Rendered in only 0.4740 seconds.