Author Archives: Josh

AUSTRALIA’S FIRST WEB CHICKEN

Walking to the train station from work, saw this big red ad – and I must admit, I think my vision is going – I think it’s degenerated to the point where it’s as good as most people’s. And perhaps I’m slightly dyslexic, but I read the ad as “Australia’s first web chicken”. Perhaps I spent too much time in NZ as a child. In fact, in looking critically at it, and recalling a UI design subject I didn’t do (but damn it, should have, it would have been one of the few subjects I would still be using), humans are crap at reading uppercase letters.
Australia
Ha! So, I’m going to claim it’s not my fault I misread it, and I’m going to do a geekrant about it, because now it’s a geek issue – look, it’s got web on it. And the fun part is, a few months after the ad went up I noticed it, but just as soon as I blog about it they pull it down. So you’re just going to have to take my word for it – the ad was up there. There’s a beer ad now.

What’s with that logo in the bottom-right corner? How does that add to the ad’s message? Why isn’t the VirginBlue in a more prominant location? Why did they change colours midway through the web address, and what’s with that aeroplane tail – are they intentionally making this hard to read? Or perhaps they’re making the name look like a plane – so why haven’t they added wings? And what does “me-time” have to do with the smirking idiot on the left hand side?

If you join the mile-high club after doing a web chicken, is that kinky?

Enormous house valuation leaves owner unimpressed

Even governments have to live within their means. But the nice thing about taxation, where you figure out how much tax (or rates) someone owes you, is that revenues are pretty predicatable. You say it, they owe it. Nice. I wish I had that kind of lock on my ‘customers’.

Unless you stuff up.

If you stuff up, suddenly the USD$8m you were counting on isn’t coming in, and you have to start sacking public servants. Read the link, that’s what this rant is about. I’m not going to recount it at length. Let’s just say there was a single character typo and leave it at that.

The nifty thing about this stuff up is that it was via a records enquiry system, by an external operator, who accidentally activated a retired program that shouldn’t have been able to affect property prices anyway (what with being retired and all). Valuation on the property went from USD$150K to… tray lots: USD$400m. Any reasonable system would have said “wow, that’s a fairly heafty increase in valuation, you’re going to have to enter several ‘no, seriously, I’m not kidding‘ codes before I actually believe you.”

Daniel, where’s our “risks” category?

I put it to you that few system developers would have considered this could ever happen, acidentally or otherwise, and that when offered the opportunity to spec a system like this it’d be rare that anyone would suggest a check like “if the rate of increase was more than twice that of any other property in the system, or the increase more than ten times the value of any other property in the system, get it checked by a human other than the one entering the data”. But there was no checking, and with today’s inconnected computer systems, the new valuation cascaded into other systems. Such as the county’s budgeting system, thus the surprise sackings to lower costs.

Please, someone tell me I’m wrong. Tell me that this failure has got to be a one-off, that I’m a cowboy, and the industry I work for is fine.

CallerID blocking backfires

Every employment agency I’ve come across uses CallerID blocking on their phones. When they phone, it’s a surprise who they are.

I’m not sure why they do that, perhaps it’s to prevent embarrassment when they’re calling candiates on a landline at work… but I can’t think of anyone who would give their work number in their contact details.

So I got a call from an agency. I went through my normal routine of answering a phone, where I announce my name. The agent asked “Is that John Parris?” to which I responded in the negative. “Oh, right, Josh, sorry” says the agent, obviously having misread my name. And before the caller could identify themselves, the call disconnected, no doubt as a function of it being a mobile telephone call. He never called back (perhaps he thought I hung up intentionally), and I couldn’t call him back because I had no idea who/where he was. Let’s face it, they all look and sound the same, so agencies all blur together anyway. I would have thought they’d want to stand out, or at least leave a number they could call back on.

Can anyone suggest why agencies use CallerID blocking?

.id.au rush on now

Well, if .id.au domains are free, why not grab yourself a .id.au domain? You can transfer it to another domain seller when the free six months are up. I guess they’re planning on you stumping up the $67.50 for the remaining 18 months when you’ve found it to be indispensable, rather than moving it somewhere else.

Now, how am I going to remember to move mine in five months?

When things become super freaky do a RebuildAll

I just solved an irritating problem. I had a program sending heartbeats to another, but with the wrong frequency.

Putting in a breakpoint at the point where that frequency is set showed the value at 2000ms, rather than the 5000ms we had in the registry. So I checked the registry reading code was pulling the right value into the appropriate variable, and indeed it was. No other lines of code referred to the member that held this value. There was no way of setting the value other than reading from the registry in this one location. Even putting a breakpoint on change to that variable failed to show what was going on – it never broke on change – although the program did run like a dog with that breakpoint on. Much pulling of hair ensued.

Then I took the opportunity to inspect this. And I noticed, browsing through the various values, that there was a value of 2000 in the preceeding variable.

I then proceeded to use the old adage, “When things become super freaky do a RebuildAll”, and the problem was solved. Seems like there was some sort of link problem. I just wish I’d tried it earlier.

Vaccination and Hippies

Owen turned four (months) recently, and he was taken to the doctor for that round of inoculations. That reminded me that when Cathy and I were doing childbirth classes we discovered that the lunatic fringe is alive and well in Melbourne. The subject was “Sleeping Soundly”, the opening minutes of which were about vaccination for no reason I could discern.

The World Health Organisation, whom the Choices for Childbirth speakers quote when lamenting (quite rightly, in my opinion) the high medical intervention rate during childbirth, is studiously ignored when talking about how one ought to explore both sides of the “debate” over immunization. The WHO says “No child should be denied immunization without serious thought about the consequences, both to the child and the community”.

Humans are terrible at estimating risk (also known as probabilities). They happily play lotteries (one in millions chance of winning), but then drive their kids to school (running a pronounced risk of a car crash and injuries vs a vanishingly small risk of a perverted old man snatching their kid and having his way with them). Humans are prejudiced machines – they decide things without knowing all the information (pre-justice, or pre-judge). They make decisions based on what they can recall on the subject. And this counterpointed by the news media, which reports news. They don’t report that millions of Aussies got out of bed, went to work and came home again, without incident. That’s not news. Someone being bitten (or better yet, taken) by a shark, that’s news – because it hardly ever happens. Things that are unusual, different, out of the ordinary and notable are part of every night’s TV viewing. A viewing night of four hours – 240 minutes – includes 30 minutes of really unusual stuff, so odd and weird that the TV station sent a film crew out to take pictures of it (ever woken to find a camera crew filming you getting out of bed? “This morning, Josh got out of bed…” No, didn’t think so). And humans think “I better be careful when I go swimming, a shark could get me. I’ve seen that happen a couple of times in the last few months. In fact, just to be safe, I won’t go swimming”. We have crime shows on every night, leading viewers to think “there’s a lot of crime out and about. I’ll drive to the shops”. The news loves a good kidnapping “little girl snatched from her bedroom”, and happily ignores the fact that almost all child abductions are performed by relatives. But we’ll drive them to school, to keep them safe (and fat). So when the Tabloid TV shows announce that a child has reacted poorly to an inoculation, immunization rates plummet, in the same way breast cancer screening rates jumped right after Kylie got it. More often than not, they use their power for evil rather than good.

These same TV shows give equal time to minority and majority opinions, in the interests of fairness. Which would be fine, except humans will go “hmmm, it seems that professional opinion on this seems to be divided down the middle, I’ll just be safe and not vaccinate my child (besides, needles hurt).” It’s dangerous and irresponsible, scaremongering amongst the vaccination decision makers – parents. And they’re being affected by it. Infectious diseases the developed world thought it had eradicated (think whooping cough, which was almost wiped out – ) are resurfacing as a result of the crazy hippies who reckon that this vaccination thing is all a money making scam by the multinational pharmaceutical companies.

Vaccines don’t always work. They are not 100% effective. You can get a disease after being vaccinated against it – the vaccine may not provoke an immune response. And that doesn’t have to matter.

Needles hurt. Vaccines have an inherent level of danger. Injecting pathogens into your body isn’t something it’s really designed for, and keeping vaccines viable for an acceptable time means there’s stuff in them that some bodies will not react well to. Some immune systems go ape shit when they see the disease. Some people die. I’d like to point out how badly the bodies of these people will react when they get the real, live, unattenuated, unadulterated, honest-to-God virulent form of the disease – exceptionally poorly. But none the less, there is a potential cost associated with being vaccinated.

I’m going to talk about Herd immunity and the free loader effect. A certain level of non-vaccinated members of the population is acceptable, but varies from disease to disease – the immunization you’re given may not invoke an immune response in you, but at the same time, if about 90% of the population is immune, generally an infectious disease is not going to become pandemic. Which is fine, and everyone’s happy. Until God damn hippies start running around not getting immunised, becoming free loaders on those of the population who have run the risk of reacting horribly. With enough people unimmunised, eventually the herd immunity effect breaks down, and the kids of the hippies end up getting diseases that we thought no one got anymore. And, no doubt, the hippies whinge about it, but refuse to take the blame for the kids of responsible parents who got the disease despite being vaccinated against it – because their bodies failed to produce an immune response. And those responsible parents will be too grief stricken to blame the hippies for killing their child.

The Australian federal government’s Immunisation Myths and Realities booklet talks about the complaints that hippies put forward. Myths such as the MMR vaccination causing autism.

The adverse reactions a vaccination may produce are mild compared to what would happen if they actually got the disease. The only elevated risk is to those intolerant of egg products.

Let’s have a look at what these diseases do. Because, if you were against immunizing against them, they can’t be that bad, insofar as diseases go, right? Because you’re happy to run the risk of your child catching and living with (and dying from) these diseases, verus the risk of your child having “something happen to them” as a result of being vaccinated.

From the Australian National immunisation program schedule of immunisations, things that you’re innoculated against:

  • At the moment of birth: hemorrhaging. Normally Vitamin K is produced by bacteria in the intestines, and dietary deficiency is extremely rare unless the intestines are heavily damaged. But newborns are nearly sterile – if the embryonic sack is intact, they are sterile. Thus, no bacteria, and no Vitamin K, which is needed for the posttranslational modification of certain proteins, mostly required for blood coagulation.
  • Polio, check out photos of polio victims. The virus invades the nervous system, and the onset of paralysis can occur in a matter of hours. Polio can spread widely before physicians detect the first signs of a polio outbreak – so forget pulling your child from school when someone is noticed with polio, this is not a prophylactic method with any level of success.
  • Diphtheria, check out photos of children with Diptheria, a bacterial infection. Long-term effects include cardiomyopathy (the heart wastes away) and peripheral neuropathy (ie, paralysis).
  • i

  • Pertussis or whooping cough. Doesn’t sound so bad, a bit of a cough. Check out the photos of babies with a bit of a cough. Complications of the disease include pneumonia, encephalitis, pulmonary hypertension, and secondary bacterial superinfection.
  • Rubella, a relatively mild disease (photos) unless it’s caught by a developing fetus. Lifelong disability results. But I guess that’s the fetus’ problem, not yours.
  • Mumps usually causes painful enlargement of the salivary or parotid glands. Orchitis (swelling of the testes) occurs in 10-20% of infected males, but sterility only rarely ensues; a viral meningitis occurs in about 5% of those infected. In older people, other organs may become involved including the central nervous system, the pancreas, the prostate, the breasts, and other organs. The incubation period is usually 12 to 24 days (again, don’t bother pulling your kids from school – they’ve already got it). Mumps is generally a mild illness in children in developed countries. So your child should get it.
  • Hepatitis B – Over one-third of the world’s population has been or is actively infected by hepatitis B virus, so it can’t be all that bad. Hepatitis B infection may lead to a chronic inflammation of the liver, leading to cirrhosis. This type of infection dramatically increases the incidence of liver cancer. Only 5% of neonates that acquire the infection from their mother at birth will clear the infection. Seventy percent of those infected between the age of one to six will clear the infection. When the infection is not cleared, one becomes a chronic carrier of the virus.

There are other diseases, but I’ve only got so much time. Read the Australian federal government’s Immunisation Myths and Realities booklet. And for the love of all that’s right in the world, get your children immunised.

Just because you don’t understand statistics, science or even simple logical reasoning, doesn’t make vaccinating your children a bad thing. Perhaps, if you don’t understand any of these things, you should leave the decision making on vaccination to the professionals?

.NET security bites back

I was running a .NET app, and all it did was say:

Request for the permission of type System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.
Request for the permission of type System.Security.Permissions.FileIOPermission, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 failed.

After I hit Ok, the app crashed with an exception. I didn’t write it. Others could run it, I couldn’t. What was I doing wrong?

I was running the exe from a network share. Copying the exe to local fixed the problem.

This is God calling

Yesterday I answered the ‘phone. Because I was home, having a holiday, which is soon to be rudely interrupted by a short working stint, but that’s by-the-by. I could tell that whomever had called didn’t know anyone in the house; the phone’s listed in my girlfriends name. “Hello, Mr [Girlfriend’s-name]?” is a dead giveaway that they’ve pulled the number from the phonebook, and immediately puts me on the defensive. Which is why I have no interest in having the phone in my name. I can spot low-life scum a mile away with the arrangement as it is.

Now, the first thing I do when I have a telemarketer on the phone is to get them to tell me who they are. The lass weasled about, talking about a survey. Surveys don’t care about the identity of the respondent; this was marketting. Eventually she said she was representing the Jehovah’s Witnesses, at which point I terminated the call; religous fundamentalists get up my nostril.

Neither Cathy nor I get any telemarketing calls – oh, well maybe we get a couple a year from local gyms. It’s because we’re signed up to the ADMA’s do-no-call list. If you’re not signed up, stop reading, and go sign up now. The local gyms get the line “we only purchase goods from members of the Australian Direct Marketting Association” and they’re taken care of.

So, here we have technology being used for evil. Evil, not only because it’s evangelical fundamentalists at work, but because they claim they’re doing a survey about how people in the local neighbourhood feel about stuff. Because it’s a survey, that would be covered by the Australian Market & Social Research Society, which (they would claim to keep the statistics clean) doesn’t operate a do-not-call list (in spite of the fact that people that don’t want to be surveyed are going to do all sorts of bad things to their stats).

Worst of all, I don’t think there’s much I can do about it, except I remember hearing about a guy who had installed a PABX with and IVR – “if you want to talk to Cathy, press 1 now. To talk to Josh, press 2 now. Pressing 3 now will let you talk at Owen, but don’t expect a cogniscient conversation out of him.” Apparently, in the US, he was getting zero telemarketing calls – which is quite a feat.

Questions:

  1. Has the obesity epidemic reached the point where the Jehovah’s Witnesses can’t be bothered leaving the house to recruit souls so that they can, pyramid-sales-scheme-like, go to heaven?
  2. Why don’t the Jehovah’s Witnesses tell people up front you’re not going to heaven, even if you convert (there’s only 144,000 spots – what are the chances you’ll be goody-two-shoes-super-converter enough to get in)?
  3. Why doesn’t the AMSRS operate a do-not-call list?
  4. Why doesn’t the government ban harrassment like this?
  5. What can I do to stop this from happening again?

C++: Pointers to member functions

Now, C++ programmers can all program C, to varying degrees of competency. And some know that in C you can store an entire function in a pointer, like so:

int DoTheThingThisWay(double count)
{
...
}

int DoTheThingThatWay(double count)
{
...
}

int (*DoTheThing)( double );  // define the variable
DoTheThing = &DoTheThingThatWay; // set the variable
result = DoTheThing( 2.0 );  // call the function, whatever it is now

Giving you a nifty kinda polymorphism. People who have programmed in C, and needed something like this (say for a state machine) have gone “neat!” and remembered it for later.

So, here we are, later. I’m working in C++ and going to do a state machine. Objects and all. I recall that you can do that polymorphic thing with function pointers, and quickly reconstruct the syntax. Now, with objects I want to point at a function on an object rather than a dumb, lying around knowing nothing about objects function. Easy, let’s just whip that up, I’ve proven how pretty the syntax for calling an arbitary function is, now just to call an arbitary member function.

Half an hour of wrestling with the compiler later, an observation is made along the lines of “everyone does this, just look it up on the web”. Top hit on a Google search for C++ “member function” pointer is http://www.goingware.com/tips/member-pointers.html – which is the right page, and you end up with the call:

result = (objectInstance.*DoTheThing)( 2.0 );

which ain’t so pretty. But you need to do that to provide the hidden this pointer, because you’re working with member functions here, not boring old functions. Add some parameters, store the pointers in an array and before you know it you’ve got

result = (objectInstance.*DoTheThing[FunctionIndex])( 2.0, InitalStringSize, HuffalumpFactor );

which is a long way from DoTheThing(2.0), and I’m not sure what you just got for all that effort. Certainly not readability. Try a pointer to a polymorphic type instead (maybe even a functiod?), and flip the pointer to different objects as you go. Much nicer:

class CThingDoer
{
public:
	virtual int operator(double count);
...
};

class CDoTheThingThisWay : public CThingDoer
{
public:
	virtual int operator(double count);
...
} DoTheThingThisWay

class CDoTheThingThatWay : public CThingDoer
{
public:
	virtual int operator(double count);
...
} DoTheThingThatWay

CThingDoer* DoTheThing;  // define the variable
DoTheThing = &DoTheThingThatWay; // set the variable
result = DoTheThing( 2.0 );  // call the function, whatever it is now

“Education” Minister

Deeply distressing is the Australian government’s “Education” minister, Dr Brendan Nelson, has endorsed the teaching of Intelligent Design in schools.

“I think that parents and schools should have the opportunity – if they wish to – for students also to be exposed to this and to be taught about it”

I don’t think that telling impressionable young kids that space aliens or maybe God built all life on Earth because “there’s no reasonable alternative, it’s just so complicated, so someone or something quite clever must have done it” is a good place to go. Especially in that following Intelligent Design through to it’s logical conclusion, it means that only God could have done it, because someone had to build those clever space aliens, and it can’t have been space aliens because they’re so clever and all, and where could they have come from. Of course, ID happily ignores “so who built God?”.

The Intelligent Design community would have a better chance of arguing for Unintelligent Design. The number of stupidly designed creatures is impressive – just look at sausage dogs for a start. And the amount of junk DNA – 97% of the human genome. The aging process, quite clearly some nasty joke by our benovolent creator, along with cancer, another handy inclusion. Yep, whoever built us was a shoddy workman, that’s for sure. Intelligent design my arse.

But you know what? No (federal) politican has come out and said “Intelligent Design? You want to let them teach that bullshit? Are you as stupid as you look, or were you wanting to use it as the basis material for a subject on logical thought and reasoning?”

Australians have brought this on themselves. Stand by, now that Family First are in, we’re going to be hearing someone suggesting that Young Earth creationism ought to be taught as an alternative to the “theory” (it’s just a theory, so it’s as valid as any other, right?) of evolution. Mark my words. You see it happening the the USA, it’s gonna happen here, because we’re cultural lap dogs.

It just makes me want to cry. What kind of world will my children grow up in, if morons are driving the education system? If parents wish, they can bloody well teach that religious mumbo-jumbo to their children themselves! Now, if only for some effective child abuse legislation…