The Slightly Disgruntled Scientist 7% more viral!

What's all the fuss about Centrelink reclaiming debts? A summary and a simple example.

| Comments

Centrelink is Australia’s welfare service, responsible for administering unemployment benefits, pensions, and other related programs. This includes making payments, checking compliance with the conditions of such programs, and collecting debts if payments were made when they shouldn’t have been.

So what’s the fuss about? Isn’t it expected that Centrelink will try to reclaim benefits that should never have been paid?

The problems arise from recent changes to how Centrelink detect incorrectly paid benefits. For a few years now, Centrelink have been using an automated system to check reported income against Australian Tax Office (ATO) data. The trouble is, it’s very error prone and makes a number of assumptions about income that don’t hold up.

To put it simply: a large percentage of these “debts” are not really debts, they’re mistakes in Centrelink’s data matching algorithm.

Until recently, Centrelink were issuing approximately 20,000 notices per year for debts calculated under this system, with a manual review process to account for errors. Even so, at least 20% of notices raised by this system did not correspond to a real debt. Now Centrelink have increased rate at which they apply this algorithm to 20,000 per week (roughly a 50-fold increase), while decreasing oversight and review for a process known to be flawed.

An Example

Here’s an example to illustrate the problems:

Let’s say you became unemployed on July 1st 2009. You claim a Centrelink benefit (eg. Youth Allowance) for a few weeks, at $430 per fortnight. (I don’t know what the Centrelink payments or thresholds were in 2009, so I’m estimating from this year’s numbers. It doesn’t really matter.) The rules for each fortnight are: if you earn $430 or below, you receive $430 from Centrelink. If you earn $430-$1173, your Centrelink payment is reduced by $0.50 for each $1 over $430. If you earn $1173 or more, you receive no Centrelink payment.

You eventually find a casual job, getting a couple of shifts some fortnights and none in other fortnights. In a good fortnight, you’ll earn $800. You report this income to Centrelink, and your payments are reduced to $245. In a bad fortnight, you’ll earn $0, so you receive your full payment of $430.

After a few months working at this job, you start to pick up many more shifts, more regularly. Now your income is $2000 per fortnight. You report this income, and since it’s over the threshold for Centrelink payments to cease, you receive no benefits any more.

When July 1st 2010 rolls around, you do your tax return. You’ve earnt $30800 over the year (13 fortnights of $2000, 6 of $800), and you report it as well as your Centrelink payments of $4480. From July 1st 2010 you continue to earn above the threshold and claim no more payments from Centerlink. End of story, you’d think.

Note that everything here is above board. Having reported your income totally honestly and accurately, you’ve only received what Centrelink say you’re entitled to: $430 in the fortnights you earn nothing, $245 in the fortnights you earn $800, and $0 for the fortnights you earn $2000.

Six and a half years later, in January 2017, you receive a notice that you owe Centrelink $4480 plus interest.


Arguments about privacy and the 2016 census

| Comments

Every few years, Australia conducts a nation wide census, surveying every resident about a huge cross section of things, from basic details to cultural and religious background, from socio-economic status to sexuality. This year, for the very first time, they’re (admitting to) keeping our names along with the data they’re collecting.

Many people have voiced concerns about the implications this change has for people’s privacy; many others have responded. And I’ve been a little shocked by how people who are usually in favour of policy that’s (a) evidence based and (b) respectful of people’s rights, are now dismissing critics as “census truthers,” or conspiracy theorists, or worse.

Incivility. ON THE INTERNET. Can you believe it?

The same arguments keep cropping up again and again, and in many ways they’re independent of the census context. I think a lot of this applies whether we’re arguing about the census, or law enforcement, or the conduct of companies rather than governments.

I do not have advice for you on the census; whether to do it or not, and if you do, how. That is for you to decide. This post is about unpicking some of the arguments that have been levelled against critics of the census.

It’s no worse than other government departments

The details that the census ask for aren’t much more than Centrelink, Medicare and the Tax Office already require.

If you think that other governments departments already have the same breadth of personalised, multidimensional data that the census takes, then logically we wouldn’t need the census. We could just use that data. But you know why we can’t — because they don’t. They have nothing like the kind of data the ABS needs. That data doesn’t cover everyone. It doesn’t cover everything. It suffers from biases due to being optional, or gathered under certain circumstances, or any number of other reasons.

You can’t simultaneously claim that we need this extra level of detail now while also claiming it’s nothing new. Any deficiencies in existing data reflect data that is not gathered or linked, and is therefore not a privacy risk to someone.

In other words, if it adds something to our statistical capabilities, it necessarily adds something to the privacy risk.

It’s okay by me, or, people already use intrusive apps

Eh, I don't really care if the government or hackers have that data on me. It doesn't worry me.
Commonly used apps already track and store your identity, location, and many other details about your life. The census isn't as bad as many of them.

(These are pretty much the same argument: I/some people cede control of privacy and don’t care, therefore it’s not an issue for anyone.)

People can opt out of using eg. Facebook. Many do. Or they can use a pseudonym. They can omit their religion and wage, if they like. The worst that happens is they’re kicked off the service. Which can be bad, but not “risking daily fines and prosecution” bad. No app is mandatory. There are no fines for turning your GPS off. It is not a legal requirement to use any of these things, and just because lots of people do, it doesn’t mean everyone does.

Even those who do, and who share things you perceive to be incredibly intimate on public social media still deserve to decide what they reveal about themselves and what they don’t, and to whom.

Disgruntled Science Policy Roundup 2016

| Comments

It’s almost time for the 2016 Australian Federal Election, which also means it’s time for an extra special double-dissolution edition of my science policy word tantrum!

Labor and Liberal

Ah who cares.

Look, I don’t want to do the too-cool-for-school crap of saying the major parties are exactly the same, because they aren’t. Spoiler alert: Labor is probably a better science vote than Liberal. But not so much that I can be bothered reviewing them separately.

The Liberals are obsessed with all things agile and innovation. But they have no idea what that means, or how science fits into it. They seem to think startups take a mere couple of years to reach success. They struggle to articulate what a startup is, and why eg. hairdressers aren’t one. They don’t seem to understand what it’s like to have an extremely viable business model that fails before it starts because it doesn’t fall neatly into mining or property development. For a party that’s meant to be all about business, they really seem to be at a loss as to how to help businesses. Except obviously rentseeking, that being the entire basis of their governance.

So they can’t conceive of science beyond making money off technology, and they have no idea how people make money off technology. Meanwhile, funding is cut, investment stops, and the smell of sovereign risk is in the air. Another term or two of the Liberal Party might actually see the end of Australian science altogether.

Labor like to give the knife a more gentle twist, giving passionate researchers just enough hope and praise so that they’ll continue to work for free and pay for their own supplies, just like the union movement fought for.

The cable tie that draws these two together is their complete, total, absolute, abject lack of vision when it comes to the potential of Australians. I have personally seen politicians from both sides be utterly shocked that Australian companies still employ people who eg. solder things, or design solid objects, or ship consumer electronics overseas.

This is obvious in their voices on the National Broadband Network, which is almost never discussed as anything but a consumer product. It is apparent in their involvement in the committee and debate on forcing ISPs to retain users' internet activity. It permeates every aspect of their politics, it informs every policy, it infects every budget.

Under the continued neglect of both parties, agencies have been reduced to empty husks. The CSIRO now hires managers at a six-to-one ratio over scientific support or researchers, because all they can do is churn money through meaningless commercialisation initiatives instead of inventing technology to commercialise. NICTA were eviscerated, haemorrhaging staff who simply could not live with the uncertainty, our successive governments so reluctant to commit to funding that they would rather leave tens of millions of dollars of valuable equipment in the sea to rust.

The fact is, science is not going to swing votes in marginal seats for either party, and this makes it invisible to both. It is the easiest part of the budget to cut, and the laziest piece of policy work for either.

(I would like to make a special point of the fact that a policy of “science funding at 3% of GDP” is pretty much what a six year old could come up with by Googling “what is good science policy” for a class report. It has no currency.)

So yeah, who cares.

The Greens

Last time around, my qualified praise for the Greens focused on their science policy (good), and their anti-science dogwhistling (bad).

These things still exist. The policy is there, it’s just as good as last time, although not updating it suggests a little complacency on their part. The anti-science sentiment still comes through in places, and I doubt it’s going away any time soon.

But I feel like there has been a permanent, albeit subtle, shift in the attitude shared by the Greens' parliamentarians. More and more I see technological proficiency and scientific literacy informing their participation, and a great example of this was Greens Senator Scott Ludlam’s work on the mandatory data* retention policy committee. (*There is no such thing as metadata you weasels.)

The Policy Fractal Paradox

| Comments

Once upon a time, when I was a busy and active member of the Australian Democrats, the thing that made me most excited of all was working on science policy. I ran a couple of public forums (that very few people attended) and spoke at the national conference (that only Democrats attended) and wrote a science policy (that only I read).

I had never written a policy before, and I was immediately struck by two questions. Firstly, where do you start? But more importantly (especially at 3am before a conference talk) where do you stop?

Policy was meant to be the thing that differentiated us from those other parties, big and small; those single issue minor parties, those major parties corrupted by vested interests, the dogwhistling senators and backbenchers, those ideological zealots who refuse to negotiate. We were a party that forged intricately detailed policy in the fires of committees and consultation and casting votes.

So where do you stop? If detailed policy is good, when do you stop writing it?

The Paradox

The paradox starts with the idea that detailed, well-researched policies serve as both a reason to take a party seriously, and a reason to dismiss them, depending on the voter. But the cost and benefit of each additional policy detail eventually diminishes and even turns around, as voters weigh their disagreement more highly than their agreement. A voter might not even notice their agreement with many details, it being a kind of common-sense to them.

There is more to it than this; policy details may stand out as weird exceptions to otherwise good policy, undermining how serious the party’s commitment to a particular policy even is. This has always been how I’ve felt about the Greens' opposition to ANSTO in relation to the rest of their science policy: it just sticks out as this sign of Not Getting It. And I will come back to that.

So policies become this ever-unfolding fractal of potential reasons to turn away from a party, more than reasons to support it.

The more I reflected on this, the more it bothered me. Partly because I began to see policy-as-a-platform in this relativistic way, no more valid than identity politics or uncompromising ideology (as though “validity” was not already a subjective idea). But also because I recognised in myself an irrational behaviour, a kind of perfectionism, that made me part of the problem I was trying to solve.

I would read policies point by point, scrutinising every line as a single manifesto. And when I found something I disagreed with, it would go on this mental pile of reasons not to support that particular party. But I didn’t really have a corresponding pile for the good points, or for the overall vision. I would just build up this list of excuses to dismiss a party and never check back.

Talking to voters later on made me realise I wasn’t alone in doing this… or in rationalising it. But it also made me realise that maybe, just maybe, I needed to let go of the idea that policy volume was an unconditionally good thing.

Case in Point: The Perfectly Planned City

The Science Party’s charter city policy might be a good illustration of when you should set down your 1950s orange cased space pen, put away your Futura stencils and stop writing policy.

The policy is simply that there should be a new city, subsidised by the government and funded by industry, focused on science, research, and commercialisation of technology. But… there’s more. The policy also details the location (between Sydney and Canberra), the transport mode to connect it (high speed rail), immigration law exceptions (more of it), and the zoning regulations (eg. minimum population density). Even the name is already thought up: Turing.

Here’s the paradox in action: there are exactly zero voters who would vote for the Science Party after reading the charter city policy who wouldn’t have already voted for the Science party. That is, no one is going to switch votes after reading it. (I feel pretty comfortable making this assertion, so it must be true.) But going the other way: there may well be folk who read this policy, think “WTF,” and look elsewhere.

Even if there aren’t, even if the number of people in the second group is also zero… what’s gained? Have the policy ⇒ possibly lose some voters, or maybe you don’t. Ditch the policy ⇒ no change.

Why do something that has only a cost and no benefit?

Valgrind and GDB: Tame the Wild C

| Comments

One thing I get asked a lot — almost daily, in fact — is: hey, why are you so amazing

…at identifying bugs related to undefined behaviour in C?

The answer is simple: by using Valgrind and GDB!

This tutorial is all about using Valgrind as part of your development workflow. Valgrind is an amazing tool for debugging, and I’ll start off by showing you what it actually does just as a standalone tool. From there I’ll show you how to use it in a systematic way to find errors via a debugger. Finally, you’ll see how you can actually add it to your code, so that you can catch runtime errors that might otherwise be concealed by the logic of your code.

So if, like me, you spend most of your waking life writing, maintaining and debugging embedded C code, then it’s time for you to crack open a console and put on your learning hat, and discover a few tricks that will make your life a great deal easier.

What are all these tools and concepts?

What is undefined behaviour?

This post assumes a basic level of knowledge about C, the standards that govern it, and the concept of undefined behaviour... but if you're new to these concepts, here's a quick summary and some references.

Unlike other languages languages (for example, Java), C programs are not required to keep runtime information about array bounds or whether memory accesses are valid. Neither are they required to initialise data to default values (except in very specific cases). If a programmer is not diligent about these things, their program can do something that is completely invalid — that is, undefined behaviour.

Undefined behaviour in a running C program means nothing less than: it is no longer possible to reason about your program. It simply isn’t. Cries of but it caaaaan’t be doing that! or shouldn’t x just be the last value? or I didn’t even have monkeys living in the server to begin with! mean nothing in the face of undefined behaviour.

This makes debugging very, very hard.

If you want to know more about undefined behaviour, refer to:

What is Valgrind? What is Memcheck?

Valgrind is not a single tool, but rather a set of tools for checking memory errors, cache usage, heap usage and other runtime behaviours, usually in C programs. This post focuses on Memcheck, a tool for identifying invalid or incorrect use of memory (stack or heap).

I am actually going to use the terms "Valgrind" and "Memcheck" interchangeably, since Memcheck is the default tool Valgrind uses when you run the command valgrind. Just be aware that there are other tools in there too.

The bugs that I’ve found using Valgrind are the worst of the worst, straight out of the C hall of shame. We’re talking about bugs that:

  • only appear on one person’s machine
  • seem to happen randomly, even in the same environment
  • don’t cause crashes, just give you the wrong output
  • crash, but the stack trace looks totally wrong (How did it crash there? I changed code somewhere else entirely!)
  • only occur at certain optimisation levels
  • only occur with newer compiler versions

Valgrind works by running your executable on a synthetic processer, and whichever tool you’ve selected inserts its own instrumentation code as it runs. You don’t need to recompile with Valgrind, or link with special libraries, or even run debugging builds (although it’s almost always the case that you should). Valgrind runs are significantly slower than normal runs though: about 50 times slower.

But since it cuts your debugging time down by a factor of about a thousand, it’s probably worth it.