Friday, November 28, 2014

How I'm voting tomorrow

Tomorrow we go to the polls here in Victoria Australia.

There are two parties in the running: Labor and the Liberal/National alliance. There is a distant third in the race, the Green party.

I'm not going to be voting for the Liberal/National alliance. There are many reasons, but there is a prime driver for me. They lie.

In the last Victorian election, they promised to improve public transport: and I distinctly understood them to say that they would get going on building a rail line Doncaster. My local candidate for the Liberal Party has told me that I was misinformed on this last point. Go figure.

Regardless, once in power, as a regular public transport user, all I have seen is ongoing maintenance. The timetables have been changed in such a way that it now takes me longer to get to my place of work, and the crowding, breakdowns and failures continue unabated.

However, the Liberal/National alliance did change the way in which the running of the trains was assessed. They also allowed the operators to now skip stations if they are behind schedule. The Liberals then used these dodgy tactics to triumphantly crow that they had 'fixed' public transport.

People who use public transport on a regular basis will agree that this is a lie based on dodgy figures. When you have to drive 10 kilometres late in the evening to pick up your teenage daughter because the train she was on suddenly turned into an express and dropped her in the middle of nowhere you'll understand the anger. As an aside, I do wish that the people who govern us would deign to use public transport regularly, just to understand the pain of using it.

What the Liberal party did do, once in power, was to commit to building a dirty great big freeway. One that they hadn't mentioned in the election. And that has its business case shrouded in secrecy. A freeway so expensive that I believe it's going to suck cash out of the public purse for decades, meaning that there is going to be very little money left to spend on other needed services.

It would appear to me that the freeway was chosen, not because the Liberals genuinely believed it was needed, but rather either because it made moving freight by truck easier, or because it threatened to wedge the Labour party and drive support to the Liberals. Pandering to special interest groups, or playing politics. Neither of these seem like a very good reason to hock the future of the state.

But in the last desperate weeks before they had to go to election, the Liberal party committed us taxpayers to this freeway, seemingly aborting due process and rushing to sign contracts with builders that have some sort of large cancellation clause added. But again, we the public have no idea as to what's in them, as they've been kept secret. The secrecy, the unwillingness to take it to an election: the whole thing just reeks. And its not a good reek either.

Along the way the Liberal/National party also won the federal election. And guess what: we soon learned that they had lied there as well. It's the same party, and the same people.

So I now have the Liberal party pegged as a bunch of pathological liars. I don't trust them one little bit. On this basis alone, I don't know how anyone can support them, and I don't understand why anyone would admit to being a member.

As I said, there are many other reasons to not vote for them IMHO, but this is my primary driver.

Which leaves either the Labor Party or the Greens.

The Labor party seem to be poll driven. By this I mean that I feel that they avoid making public pronouncements that might affect them in the polls. For example, their commitment to cancelling the freeway project was not expressed as a clear commitment until fairly late in the game. I guess if you're ahead in the polls its a fair strategy, but not one that endears them to me.

And they appear to be the other half of a rather cosy duopoly with the Liberal/National alliance. So whilst I would prefer Labor to be in government, rather than the Liberals, I would also like to see the duopoly ended. We do need change, otherwise it's going to be same old, same old.

So I'm going to be putting the Greens at the top of my list, followed by Labor. And I'm writing in all my choices below the line. This effectively means that in my seat I'm probably going to be voting for Labor. But if the Greens get enough votes, they might win the seat. It also means that I've registered my disgust at the Liberal lies, and indicated to Labor the direction in which I'd like them to move.

As you can gather: we have a fiendishly complex electoral system. If you've read this far, educate yourself about voting below the line, and the parties you'll be voting for in the election here: http://notionoriety.wordpress.com/2014/11/25/victorian-election-2014-tips-for-voting-below-the-line/

And then create your own how to vote card: https://www.clueyvoter.com/ and take it with you to the polling booth.

And don't complain about the status quo if you vote for it!

Thursday, October 23, 2014

The Cloud and I

A true story

Why my enthusiasm about the cloud?

I used to be such a doubter. I thought it was all just was just marketing hype. 


Then a few years ago the company I then worked for placed me as a consultant in the roll of technical team lead on a project developing a new website for a University. 

The team and I had a hard deadline of two months to deliver the new site, on a new CMS, with new content and a new look, on new hardware. 

The first thing I did was calculate the number of servers that the team and I would need for the project. 

I picked up the phone to the university's IT services department.
“Could I have 7 servers to go please?” 

The voice on the other side cackled: “You're new here, aren't you? Go to our website, download the application form, fill it in in triplicate, mail the copies to the acquisitions committee, who will then either approve or decline your request. If approved, the request goes out to tender, the successful bidder is selected and an order placed. Eventually you will get your servers.” 

“How long does this take” I asked, feeling faint. 

“The committee sits once a month, and they've just sat, so you'll have to wait a month, and then ordinarily it takes at least 4 weeks for the hardware if the purchase is approved. So for you, at least 8 weeks” 

I hung up and buried my head in my hands. We were totally screwed. There was no way that we could make our deadline! 

Then the Universities development lead said “I know a site that will host our source code and defect tracking system for a few dollars a month. Someone lend me a credit card”. 

Inspired by his example I thought “Amazon!” 

I phoned my companies hardware and network guru to talk it through. 

“Don't worry about Amazon - I've got a big server lying spare” he said. “I'll set up some virtual servers for your team on it. How many do you want?” 

30 minutes and $10 later we had all the hardware and software we needed and by the end of the day we were already committing code and accepting defect reports. 

In a blink of an eye the politics, processes and policies of the University had been totally upended. 

When physical servers eventually arrived their cost was in the order of about $20 000. And they arrived well before the end of the project, because we threatened to go live on our virtual servers, thus demonstrating that the IT services department wasn't really needed... 

That project showed me that despite my doubts, cloud computing is a game changer. Everybody in IT, no matter what their role needs to understand this.

Tuesday, August 27, 2013

Australia's got talent?


Mike Cannon-Brookes was on the radio. Slamming the government's drive to cut down on 457 visas. “We don't have the scale or scope of talent here”. For some reason his words were making me angry. Red hot under the collar, steam coming out of my ears type angry.

So I had to reflect. Was my anger because I'm not sure we actually have a shortage of software developers in Australia? Or that I think that employers in this industry are continually trying to hire people that they don't have to train? No. They might have been a contributing factor to my internal steam levels, but they weren't the cause.

I was getting annoyed because of the use of the word “talent”. To me it is such a nebulous term. What on earth do we mean when we use the word “talent” in the software industry?

I have a dread suspicion that it is an unconsciously used synonym to indicate “superstar” employee. That the real complaint here is not that we do not have enough developers, rather, that we do not enough superstar developers.

Trying to break this down a bit, first off, what is talent? In this article Scott Barry Kaufman, adjunct assistant professor of psychology at New York University, tells us that talent and practice are intertwined. And that 10 years of deliberate practice seems to be the general rule when it comes to developing deep domain specific knowledge.

Which leads me to wonder if the speaker at the developers breakfast I attended a few weeks ago, targeted the right thing when he suggested that we use the latest “hot” languages and tools to attract the “young talent, fresh out of university”. Surely we should be looking to attract the older and more staid developers, rather than avoiding them, if we are looking for deep domain specific knowledge?

Scott Barry Kaufman goes on in the article to tell us that talent can be see as the mix of characteristics that allows someone to either accelerate the acquisition of the deep domain specific knowledge, or to perform better than someone else who has a similar level of practice and learning.

He then notes that the interaction of genes and environment play a distinct role in helping us to develop by increasing our abilities according to our talents, and in turn those personal characteristics that we call talent. In the article he finishes by stating that “we shouldn't dismiss the seemingly untalented” and that we should in fact be “keeping the door open and instituting a dynamic talent development process where the only admission criterion is readiness for engagement”

Which is not what I feel we are doing in the software industry.

I have two dead canaries in this coal mine.

The first is Ted Neward. I've never met Ted Neward, and I have no idea what he is like as a person. However, I do know that not only does he write books and articles, he has also written what is to me one of the most insightful blog postings I've ever read in my career in software: The Vietnam Of Computer Science. I believe that the world would actually be a better place if this blog posting was required reading for software developers.

So if Ted Neward was interested in working for a company I was at, I would be delighted, as we could learn much from him. I would be trying to find out what he was like as a person, and seeing if he was a good fit for the people he was going to be working with. I certainly would not be getting him to write a programming test.

However, in this whacky industry: yes, he was required to write a programming test. And was rejected on that basis!

My second canary is someone I met socially, recently, right here in Melbourne, who has been unemployed since graduating two years ago. One of the desirable “young talent, fresh out of university”. Unable to find work, he has been getting by through tutoring and part time teaching at the university he graduated from. So. Degreed, good enough to be invited to tutor and teach, but not “talented” enough to hire, in a country where we are claiming to have a shortage that is so bad we need to bring in people from overseas on special visas.

What seems to be happening is that the software industry has adopted some sort of heard mentality as to how to hire people. Heard mentality in hiring is apparently normal. Not rational, but normal.

As ever, though, we've taken it to extremes by becoming increasingly set on using coding tests to find out if potential hires have “talent”. But really, how do you set a coding test for a mix of characteristics that will indicate that the person in front of you has the potential to be a better developer than someone with a similar level of experience?

The truth is that if we as an industry hire like this, a shortage of people passing our tests doesn't indicate a shortage of developers: it indicates a shortage of developers that companies are prepared to hire.

Some thoughts have been bothering me about all of this:
  • If anyone is going to have to pass a test showing their ability at hiring time, then I would very much like it to be, say the brain surgeon who may be about to operate on me. Strangely enough, the medical profession doesn't seem to work this way. Why is that?
  • Are we actually moving to a world where some newly graduated developers are not going to find work in the industry because they aren't “talented” enough? My second canary seems to indicate that this may indeed be the case.
  • Is this the hoary old chestnut about developer productivity raising its head again?
  • Why don't we regularly test existing employees? If recruitment tests are actually useful in determining “talent”, then it would be good to regularly check to see if our internal processes are helping our talented developers to further their acquisition of that deep domain knowledge?
  • How many companies regularly review their recruitment process and measure its effectiveness?

Having pondered the Scott Barry Kaufman's article on talent, I've decided that if a developer can pass a simply “fizz buzz” test, then they have enough “talent” to hire. End of story.

The onus should actually be on the companies that hire developers to create environments that are conducive to developing “talent”. Rather than creating ever more stringent and time consuming new hire procedures, they should be “instituting a dynamic talent development process where the only admission criterion is readiness for engagement”.

Just about the only Australian software company I'm aware of that seems to do this, by design or accident, is Atlassian. The company founded and run by Mike Cannon-Brookes.
Go figure.

Friday, August 16, 2013

A click is not enough


In the Maldives a 15 year old girl has been sentenced to 8 months of house arrest and 100 lashes from a whip. Her crime? She confessed to having been raped. This is, to our western sensibilities, clearly outrageous. A travesty of justice.


In Uganda the government is close to passing a bill that will introduce the death penalty for homosexuality. Again, to us in the west, a clear breach of basic human rights.

Something must be done to stop this terrible law being passed!

The Rhinoceros stands on the very brink of extinction, the surviving few at risk of being killed and dismembered so that some Chinese and Vietnamese people can drink the powdered horn in the form of a tea, to cure their ailments. Whilst I can sympathise with the fear a cancer sufferer must have, the world stands on the brink of loosing a wonderful animal because of some unscientific belief system.


I'm sure I'm not the only person in the world who is aware of these terrible injustices.

For they flood our email inboxes, crowd our Facebook pages and fill our twitter streams. Sent to us by our caring friends.

The truth is we can all take action about any perceived injustice right now! Thanks to modern tools, anyone can create and distribute an online petition. And invite their friends to join in the outrage by signing, cascading the anger on through the world.

Coca-Cola have brought and won a court case against deposits on containers right here in Australia, dealing recycling a tremendous blow.

There's a petition about that!

Monsanto are patenting genetic sequences: the building blocks of life, and charging people 'licensing fees' to grow crops that contain those genetic sequences.

There's a petition against that!

But what good are all these online petitions if all we ever do is simply sign them?

We've signed the petition: we've done something. Our consciences can rest easy! Now to plan our holiday to the Maldives, whilst munching on our genetically modified granola bar and sipping on our Coke.

Why fear online petition if the only effect it has is to stroke the signatories ego?

In fact, if the signatories now feel that they have acted on an outrage, on-line petitions might make wrong doing easier to get away with!

“They won't do anything: they've signed the petition. Their consciences are clean” I can hear the captains of industry and politics smirking.

Given the ease with which we can now create, sign and distribute on line petitions, I believe that we now have to do more when we become aware of an injustice.

You have to decide if you care enough about the injustice to take further action. If you don't care enough to anything more, then I believe you shouldn't sign the petition.

If you do care and sign, then, you have to work out what more you are going to do, and how you are going to let the parties know what you are doing.

The reason Coke gave for their lawsuit against the container deposit scheme was that “Australian families do not deserve to be slugged with yet another cost of living increase”

Knowing of the huge islands of plastic that is found in the oceans this justification made me really angry.

The Australian CEO of Coke received compensation of just under $8 million last year. Assuming that they make a 10% profit per can of Coke sold, and that a can sells for $1.20, that means that Coke Australia have to sell over 60 million cans right here in Australia just to cover their CEO's compensation alone.

Coke's global CEO got over $29 million in compensation in 2011.

If Coke really cares about the cost of living for Australian families they simply need to cut their CEO's remunerations to make a difference. Not only have I now signed several petitions against Coke's actions, I now am boycotting Coke's products where possible.

I let Coke know of my intentions by writing a message on their face book wall. If you care about the environment I strongly encourage you all to join me in these actions.

Online petitions need to show that not they only publicize wrongs, but that they also lead to behavioral changes by those that sign them.

Changes that will directly affect the targets of the petition.

If we don't give online petitions this added power, they are going to loose their impact on the world.

The only way we are going to change the world is if we change ourselves first.

A simple click is not enough.

Sunday, July 28, 2013

Some thoughts now that I'm an Australian.




Australia.

An island, ringed with golden beaches, and girt by beautiful blue seas. To the north east the great barrier reef, verdant with colour and life.

A continent, the desert in the centre flat and ochre, Uluru, warn smooth and rounded by the hands of time punching through the dusty plains.

And more than just this natural beauty, a land full of iconic imagery.

Possessor of bountiful mineral resources. And wealth, one of the best performing economies in the world during these troubled times.

Australia, truly the lucky country!

Not nearly as lucky, is the country that I grew up in, South Africa.

Also blessed with golden beaches, iconic imagery and bountiful mineral resources, South Africa seems to have continually made choices that brought nothing but misfortune.

I have so clearly etched in my mind, memories of searchlights, shining, ironically, from an old english fort on the apex of a hill, their probing beams of light slicing through the night, sweeping slowly across the face of the township on the other side of the valley to our family home.

Every night the search lights used to dance.

If we took out field glasses and looked at where the oval disks of their light fell, we could sometimes see the security police, heavily armoured, moving slowly from door to door, looking for people. It was rumoured that the people that they were looking for were destined for summary execution - without trial.

But we didn't know.

Information was tightly controlled. All we knew was that from time to time people seen as enemies of the apartheid regime just disappeared.

Some people, unable to withstand the uncertainty of being seen as an enemy of the regime, fearful that they would be the next to vanish, would flee. Their trip to escape doubly dangerous, for if they were caught their attempt to flee was obviously an admission of guilt.

Those that succeeded became refugees, living in countries far away from their homes, families and friends.

But this country, Australia, I've learnt, was founded not just on the sweat of criminals, but also by the sweat of refugees.

I've learned about Australia's roots because I, as one of the scatterlings of Africa, was swotting up for my Australian citizenship exam.

We don't know why the Aboriginal came here, but they may very well have been the first refugees. 

Following the first fleet of convicts, there have regular waves of refugees. The first recorded being Lutherans, arriving in 1839, fleeing from religious prosecution in Prussia. Between 1933 and 1939 more than 7 000 Jewish Germans found sanctuary in Australia. After the second world war, the largest wave of refugees ever to come to Australia. Over 170 000 people, mainly from central Europe: countries like the Ukraine, Yugoslavia, Czechoslovakia and Poland.

Poland.

My father was a Polish refugee. That's how we landed up in South Africa.

He was a captain in the Polish army at the outbreak of the Second World War. Captured by the Russians, he somehow lost all sign of his rank.Which was really lucky, as the Russians took quite a lot of the Polish officers they captured to a forrest; Katyn, and shot them.

But my wily father not only managed to avoid the massacre by loosing his rank: he contrived to escape and made his way through occupied Europe, to England, where he joined, and fought for, the Free Polish Army.

At the end of the war, the British prevented him from marching in the victory celebrations and mandated that he was to be sent back to Poland.

Desperate not to return to a country under Russian control, he ran from embassy to embassy in London, looking for any country that would accept him as a refugee. The South African embassy franked his passport on the spot, and he was on the first ship he could find to Africa, a Polish refugee.

Had he been accepted on the spot by Australia, I would have been born here, and not in Africa. But I've made up for that now: I passed my citizenship test. I've got my letter from the minister, and attended the citizenship ceremony. I'm now a new minted a citizen of Australia!

I'm not the only person who wants to make this wonderful country their home.

I regularly hear terrible stories of Australian bound refugees on boats, drowning, because the overladen and unseaworthy rust buckets transporting them have foundered in the dangerous waters to the north.

I don't know why those “boat people” want to come to Australia.

Are they trying to come to Australia in order to build a better life for themselves and their children? If so, the risks they take are enormous.

Are they perhaps, like the enemies of apartheid, fleeing before the rough justice of their homeland state can be brought to bear?

Or is it because, like my father, they fear almost certain death for simply being who they are?

Whatever force is driving these refugees, it must be incredibly powerful.

Simply look at the risks they are taking with their families and themselves in order to try to get to a different place far on the other side of the world.

When I see these refugees being herded into detention centres, reminiscent of concentration camps, with children in tow, I feel deeply troubled.

For I learned during my citizenship studies that we Australians (I think I can say this now), we Australians hold a shared set of values.
  • Peacefulness
  • Respect for the dignity of the individual
  • Freedom of speech and association
  • Equality before the law
  • Equality of opportunity

And that we share a strong spirit of egalitarianism that embraces tolerance, mutual respect, and a compassion for those in need. And that no one should be disadvantaged on the basis of their country of birth.

I've thought about these shared values that we Australians hold dear. And compared them to the values that were in play in the country that I grew up in. And to the countries that my father both fought and fled from in the second world war. And even to those of the countries that the boat people currently are fleeing from.

And I'm sure that its these shared Australian values that make the difference. That make this the place where we all want to be.

Knowing that, the way we currently treat refugees seems somehow un-Australian to me.

We Australians are legally obliged to vote.

So in this coming election I'm not going to vote emotionally. I'm not going to vote for the party I identify most with. I'm going to my research and vote for the party that most espouses our shared Australian values.

For I believe these shared values are what have truly made this the lucky country.

“For those who’ve come across the seas
We’ve boundless plains to share;
With courage let us all combine
To Advance Australia Fair”

Monday, June 03, 2013

Spatialite and Me

I had the misfortune to need to connect to a Spatialite enhanced SQLite database, and found myself in some sort of titanic struggle. I first tried using JDBC on OSX and got roundly defeated. For round two I tried with Python on Ubuntu.

For what it's worth (and because this should be documented somewhere, for those who follow) I believe that the following are the steps required to get Spatialite up and running in python on Ubuntu 13.04 (Raring Ringtail) and Ubuntu 12.04. I say 'I believe' because I haven't worked with this in any anger yet :(

Thoughts

If you bother to read through the following then you'll see that my problems were largely caused by the PyPi version of pyspatialite. I think that this software is fundamentally broken in several ways:
it assumes a layout and content of the Spatialite site it references, it does not notify the user clearly when those assumptions are broken, and it caches files and does not remove them if an error was encountered.

The net effect is that every time the Spatialite site is changed (what, no stable url's?) the PyPi download is likely to break and will need repair. And innocent users such as myself will waste a lot of time trying to work out what went wrong.

So if installing on Ubuntu simply use:

sudo apt-get install python-pyspatialite

The downside is that this package is only supported on Quantal and Raring Ringtail.

If you need some sort of automated deployment then clearly you are going to do a lot of work if you want to deploy to anything other than Quantal and Ringtail...

Ubuntu 13.04

I started out on Ubuntu 13.04 and decided that I would try to do some sort of self contained install so that I could make use of virtualenv.

Do not do what I did: 
pip install pyspatialite
For if you do you will be met with:
download_file = pattern.findall(download_page)[0]
IndexError: list index out of range


This is because it would appear that the installer is trying to fetch a file from the Internet: a file that does not exist. From my search on the Internet, this seems to be a regular occurrence with the different versions this software, and may be fixed only to reoccur on the next release :(

If you have the misfortune of making this mistake be aware that the installer has already downloaded files, and it will not try to get replacement copies without manual intervention. More on this in the section on installing on Ubuntu 12.04 below. For I think with a little bit of hacking you could fix this.

Be warned: if you get this error and then attempt to install an older version, you will be met with:
error: conflicting types for ‘spatialite_init’

Do not try to clear ~/.pip/cache – because that's not where the files are being cached :( A pip un-install will not work either, as the software was never installed :(

Having run into the above I simply switched to a new VM, discarding my 'broken' one, and in the new VM I ran:
pip install pyspatialite==2.6.2-spatialite.2.4.0-4

But don't you do this yet: first you need to run:
apt-get install python-dev

Or you will get the following error:
fatal error: Python.h: No such file or directory

Wait: don't run that initial install yet! You also need to run:
apt-get install libgoes-dev

Otherwise you will get:
error: geos_c.h: No such file or directory

And be still that twitching finger: Next you need to run:
apt-get install libproj-dev

Otherwise you will get:
error: proj_api.h: No such file or directory

Then still hold off: for next you need to do:
apt-get install libsqlite3-dev

For if you don't you will be met by a:
fatal error: sqlite3.h: No such file or directory

Then (yes, there's more) you need to
cd /usr/lib
sudo ln -s libgeos-3.3.3.so libgeos.so


For if you don't, you will be met by the somewhat mysterious:
/usr/bin/ld: cannot find -lgeos

This last one is happening because the libgeos-3.3.3 package installed with libgeos-dev forgets to create create this needed symlink (!) It used to, I know, because the Internet tells me so.

Then, finally, don't forget to do a:
apt-get install libspatialite-dev

Otherwise you might be met with a:
fatal error: spatialite.h: No such file or directory

Finally, finally you can run:
pip install pyspatialite==2.6.2-spatialite.2.4.0-4

Don't forget to use sudo if not running as root in all of the above…

Having got to this stage, you can then open up a python shell and try to connect to the database. I say 'try' because you are not yet done!

You need to:
gedit /usr/local/lib/python2.7/dis-packages/pyspatialite/dbapi2.py
And change line 50 to be:
version_info = tuple([int(x) if is instance(x, (int, long)) else x for x in version.split(".")])

This is because the version_info contains strings as well as integers, and the original, as written, thus dies at this point:
version_info = tuple([int(x) for x in version.split(".")])

This last step fills me with dread, as who knows how this string is actually used? How might this step bite later on? However, after all of the above, I could now open the two Sqlite databases I have with Spatialite data in python and execute queries against them.

As you can gather, I made each of the mistakes above, and had to resolve where I had gone wrong: a time consuming task. And one that has had me muttering dark words and wondering nasty thoughts about Spatialite.

The alternate process is to simply accept machine wide installation and to do the following:


sudo apt-get install python-pyspatialite

Which gave me my python bindings on more up to date versions of the software without any of the pain I went through doing the pip install.

However, having done all of this I discovered that I actually needed to run Spatialite version 3 on Ubuntu 12.04. So, getting the whole shebang set up on 12.04 became my next task.


Ubuntu 12.04

On 12.04, having been trained by my previous experiences, I simply ran:
sudo apt-get install python-dev
sudo apt-get install libgeos-dev
sudo apt-get install libproj-dev


Then I downloaded pyspatialite 3.0.1 from:
https://pypi.python.org/pypi/pyspatialite/3.0.1
and unpacked it into a directory off of my home directory.

Then I moved to this directory and ran
sudo python setup install
Which crashed and burned with the infamous error message:
download_file = pattern.findall(download_page)[0]
IndexError: list index out of range


I went to the line causing the error (line 97)
and replaced the "pattern.findall(download_page)[0]" with "libspatialite-amalgamation-3.0.1.zip" (the version of the file I wanted to install) I also edited the url in the following line to read: "http://www.gaia-gis.it/gaia-sins/libspatialite-sources/", because as it stood it was not a correct url.
I reran
sudo python setup install
and got the dreaded
error: conflicting types for ‘spatialite_init’
I simply deleted the amalgamation subdirectory into which the installer seems to download stuff into and reran:
sudo python setup install

And this time, it all seemed to work. Sweetness and light, and the trilling of angels ensued. More importantly, I was able to open and access the databases I wanted to work with.

It really shouldn't be this hard, should it? Also knowing all of this, I suspect I could get the pip install that I tried on 13.04 working. But life is too short.

Tuesday, December 18, 2012

An Introduction to OpenStack

Earlier this month I gave a talk to the December meeting of the LUV, introducing the members of the group to OpenStack.

Unaccustomed as I am to public speaking, I wrote the whole lot out before I prepared the slides.

Which turned out to be a good thing, as we couldn't get the overhead projector to show the slides...

Luckily I had prepared some hand outs, and was able to wing the talk based on the handouts. This is the copy of the talk I prepared before creating the slides. An Introduction to OpenStack

I thoroughly enjoyed both giving the talk and answering the subsequent questions. LUV seems to be a group populated by people both smart and friendly!

Sunday, February 19, 2012

Shot!


I thought I'd try my hand at a short story...
I'll never forget my 21st birthday. A day that was set to be most ordinary turned into the most memorable, and puzzling day of my life so far. For it was the day that I was shot. Let me tell you the story.
I'd been away from home for a few years, doing my national service. Unexpectedly the army sent me home on leave the day before my 21st birthday.
I thought I should celebrate, but when I phoned around none of my old school friends were in town. So I had a quite celebratory breakfast with my parents, and that was my birthday.
It had been a tough tour, I was probably depressed, so 8:30 that evening I decided that I would simply go to bed.

But I couldn't sleep. I tossed and turned. Sleep just didn't fall. After what seemed like an eternity I reached up, grabbed the dangling Victorian light cord, and switched on the bedroom light. The clock on the wall read 9:30. “Ah, I might as well get dressed and go to the pub” I thought. “I'll find someone to talk to.”

I found the pub unexpectedly crammed, full of people, strangers, shoulder to shoulder, beer to beer.

“What's going on?” I shouted at the closest person to me. “Why are you all here?”
“Conference. University.” he shouted back at me “Wonderful town!”

I waved my thanks at him and elbowed my way through that laughing happy crowd to the bar. The lone barman was struggling with the crowd, racing from customer to pump at the far end of the bar.
The clock behind the bar read 10:20. There'd be plenty of time for a few beers. As I waited for the barman to get to my end of the bar, I pulled a cigarette and out and lit it.
I was tapped on the shoulder: the woman next to me at the bar, blond and vibrant, asked “Can I have a light?”

“Sure” I replied, and held my lighter up to her proffered cigarette. She put her hand on my shoulder to steady herself as she lit her cigarette. My 21st was suddenly looking up!

“Are you part of the Conference?” I asked.
“No, my husband and I moved here a few months ago” she shouted back.

At that moment there was a disturbance in the crowd to my left.

“You!” a man popped through the crowd, shouting, angry, pointing at me: “You! You're the person who's sleeping with my wife!”
“No!” I shouted back, quizzically. “You're wrong!”
“I'm going to kill you!” As he made the threat, unbelievably, surreally, he pulled a gun out of his jacket and prodded my chest with it.

I felt the woman's hands digging into my shoulder.

“No!” I shouted, now desperate. “You've got this all wrong. It's not what it seems!”

BANG! The bastard had pulled the trigger.

My first reaction was anger. A deep anger at what the stupidity of the whole thing.
But quickly the anger was washed away by a wave of pain. Pain at a scale that I have never felt before or since. It was as though someone had plunged their hand into my chest and pulled a large chunk of it out. Which, in a way, I guess they just had.
And with that wave came powerlessness. I was no longer in control. I was falling, not just physically to the floor, but far worse, the world was falling away from me. Reality was closing down, the light and screams at the end of a tunnel that I was being pulled back into.
The physical world around was gone long before my body hit the floor. All that I had was pain. Excruciating pain. And then that faded away, leaving me as nothing more than a speck of consciousness in a vast empty void.

I tried rationalising.

I'd been shot. I must have died. There was life after death! I was initially triumphant. There is life after death.
But no relative came to take me elsewhere. Just the unrelenting nothingness, that went on and on and on.
I suddenly knew that this must be hell. An eternity of nothingness. I ranted and raged. I didn't deserve this! But no one can hear you scream in a vacuum. Not even yourself.
I calmed down. I tried remembering scenes from my life, remembering people, songs, places. Anything that could occupy me.

Then the insanity hit. If there was nothing but my consciousness, then I could create things. Like hands. I don't know why, but I fixated on hands. I worked really hard on feeling what it would be like to have hands – and I had hands!
I put them together, feeling, treasuring, the sensation of them touching. They hungrily explored each other. They had arms attached. And the arms connected to a body. My body!

But there was a sheet over my body? Why?

I rationalised again. I must be in a hospital!
I lifted the sheet felt underneath, where the wound would be. There was no wound!

But I was blind?
I opened my eyes, and in that infinite darkness, touched my eyeballs. They were there!

I rationalised, yet again. When I fell, I must have hit my head and suffered brain damage. Now, many months later, I had come to, my wounds healed. But my ability to see had been destroyed by the brain damage!

“Nurse” I shouted, “Nurse!” But no one came.

It must be night. It must be night, and the staff were sleeping. In a hospital, there must be an alarm bell, to call the staff.

I felt above my head. And there is was, hanging from a cord!
I pressed it. Light flooded the room. It was my bedroom. The clock on the wall read 10:30. 10 minutes ago I had been in a pub, lighting a cigarette.

You know, there are people who say that if you dream of dying, then you die. I have to disagree with them. For if they are correct then this world we stand in is one I constructed in my death.

Regardless, I have been shot. And yet am here to share the tale.

Saturday, November 05, 2011

The mice are driving the experiment

My next speech on. For this one I thought I'd try to give the audience a window into the wild and wacky world of software development, as I see it. And the view isn't that good...

A twig. It all started with a twig. Someone, a long time ago, prodded something, and noticed that it moved. Ever since then we have been poking away at things, and developing increasingly complex machines based on the results of our prodding. That jumbo jet that flies above can be seen as the apex of this twig technology.[1]

But our world is changing.

Through the wonder of integrated circuits we are now building machines out of the dancing of electrons. There are no moving parts in these machines. We are entering a new age – the silicon age.

Software development stands at the very forefront of this new age.

But if we truly look at the world of software development I fear that it shows we are not doing very well in this new post twig era. There are many issues, but I believe that there are two primary issues causing most of the problems.

But to explain, first you have to understand software.

Software can be seen as machines of the mind. Machines that have been created from words. Small sets of words written down to form tiny languages. With those small languages we instruct the electrons, building at first simple machines. As these tiny languages have such limited vocabularies, we communicate the ideas behind our machines of the mind with others through abstractions and metaphors.

Then we iterate, adding new words to our existing languages, developing new languages, wrapping existing machines to extend their capabilities, building new machines, and so on. We build on our past successes, learning from our mistakes... Of course, with the new languages and new machines come new abstractions and metaphors.

And so the circle of software development goes.

The speed at which we software developers extend and change our machines, languages, abstractions and metaphors mean that half of what a software developer knows today will be obsolete in three years time. This then, is the first issue: the need for continuous learning.[2]

Very few software companies have learning at their heart. So much so that Starbucks will spend more on training a barrista than the typical software company will spend on training a developer. [3] Software companies thus expect their employees to keep abreast of the rapidly changing world through after hours study, or they rely on new hires to bring in the new knowledge they require.

This makes the industry ageist.

Think about it. The more time you spend working on a current language or platform, the less time you have to study and learn the ones that will replace what you currently know. Especially if you have a family.

So the industry is also set against people with normal family lives.

Which makes the industry inherently sexist.

Any women who take time out to have children will find that the longer they leave their return to the industry the more out of touch they will be – and thus less likely to find work.

Google is one of the few companies that I know of that have developed a strategy to help their employees learn: they allow developers 20% of their paid time to work on things that aren't in their job descriptions. To try new things out, to experiment, to learn.[4]

When I tried to discuss Google's approach with the head of software development at a local company he was outraged – exploding in white hot anger at the thought that his developers would spend one day a week not “working”.

The next issue is subtly related.

People have ideas, and those ideas are turned into theories. But in software, those theories are mostly never tested. If accepted, they simply become dogma, a truth that all are expected to follow, unquestioningly. Those who don't follow are ostracized and ridiculed.

As an example there is a deep seated belief that there is at least a 10 times difference between the productivity of 'good' and 'bad' developers. But the truth is that there are no really valid metrics to measure programmer productivity. People can't even agree on what makes a good or a bad developer. So if developer productivity can't be measured, how can the belief have any basis?

We need look no further than the job adverts for software developers to see these two problems exposed: Employers choose to drill down on technology skills, riddling job adverts with acronyms, seeking years of experience in specific languages, platforms and tools[5] . The industry is looking for people it doesn't have to train - and applicants have to prove that they don't need the training. Nowadays even people with PhD's can expect to be asked to write a test to prove their competence when they apply for a post.

But here in Australia, for every hundred resume's received by a software company, only one person will be hired. In the United States that figure was two in a hundred.

This is in an industry that claims that that there is a shortage of developers.

Only one in a hundred applicants are accepted.

Isn't this really symptomatic of an industry that is picky beyond belief, doing its level best to only hire the “good” developers that require no further training?

I believe that these two issues expose us as the illogical beings that we really are. Struggling with unfounded beliefs and not able to deal with an the need for continuous learning in our workplaces.

Software development is the experimental frontier of the post twig era. In that experimental frontier I believe that that the mice are driving the experiment.

Footnotes

[1] Douglas Adams was the person who I first heard make this observation. Read the book: it is recommended!

[2] Can anyone say "Innovator's Dilemma"? Perhaps one of the reasons companies claim to look for people who go to user groups and write open source software is that subconsciously we recognize that passion does trump rational decision making?

[3] I believe that McDonald's might also spend more on training their burger flippers than a typical software company will spend on training its developers.

[4] Atlassian also do this: I think that their business focused way of directing this might be a a better way than Google's.

[5] Yes: the more acronyms, years and jargon I see in your job advert, the less I expect that you spend on training your developers. The best job advert for developers I have seen simply read "Wanted: Scala developer". I applied, but didn't make the cut as I was deemed "not to be a good fit for the company culture". I understood that to mean that I would be the only developer on the team with a wife and kids - I was too old :-(

Sunday, August 21, 2011

Beware what lies in the sand beneath

Another month, another speech. This one was a fun one to give, as most people in the audience really hadn't heard of toxoplasmosis.

Beware what lies in the sand beneath

There is a parasite that lives amongst us.

A parasite so small that when eaten by you, it will make its way through your gut wall, and then, using your bloodstream as a vehicle it moves to the sites in your body which it will call home.

These sites being your muscles and your brain.

Once the parasite has arrived at its future home it forms cysts inside your cells, hiding in the cysts, safe from your immune system.

It is a parasite that most of us aren't aware of.

Which is odd – because at least one in five of us are infected.

That's just the humans – a whole range of other animals are also subject to attack by this parasite. From mice and rats through to humans.

Not only is it a common parasite – but once infected it is very difficult to clear the infection.

The name of the parasite I am talking about tonight is Toxoplasma Gondii

Until recently it wasn't considered a bad infection to have.

Then it was noticed that toxoplasmosis alters the behaviour of infected rats.

Infected rats started to behave in very un-rat like ways.

They begin to hang out in areas where there are cats – even at times trying to go one on one against the cats, trying to show those cats exactly who is the boss.

Which is not a very bright thing to do, because, well, cats eat rats.

So infected rats, despite their bravery, generally don't have happy endings.

But here's the thought provoking thing: Toxoplasmosis can only breed in the small intestine of a cat.

So it needs to be ingested by a cat to breed. It is critical for the survival of the parasite that it find its way to a cat's gut.

How convenient then, from the parasites point of view, that a rat infected with Toxoplasmosis would change it's behaviour in such a way as to make it more prone to be eaten by cats.

Scientists believe that convenience plays no role in this. Rather, they believe that Toxoplasmosis cruelly and deliberately plays with the brain of its rat hosts to make them go out and get eaten by cats.

Singapore zoo has a its tigers separated from us human viewers by large plate glass windows. From some angles it looks as though nothing separates you from the tigers.

I don't know about you, but in those moments, when it just me and the tiger, my stomach always instinctively tightens in an apprehensive knot.

It is almost as though my subconscious recognises that a few thousand years back, when men were far more puny, and tigers, lion, and other large cats were far more plentiful, that, well, we were the prey.

Let us all do some basic scientific research in the form of a little thought experiment.

Could it be possible that us humans are also susceptible to behavioural changes driven by something so much smaller than one of our cells?

Also, if there are behavioural changes, just what might they be?

Scientists were also intrigued by this line of thought.

Having a fairly large infected population to sample, they found it fairly easy to design experiments and tests that would reveal changes.

And they found them!

Interestingly they found that the changes were gender related

Infected men are far more likely to disregard rules and are more expedient, suspicious, jealous, and dogmatic.

Infected women are more beautiful, warm hearted, outgoing and persistent.

Common to both are impaired motor skills, and slower reactions

So much so that people with toxoplasmosis are six times more likely to have traffic accidents than people without.

Thought provoking. Are these behaviours that increase your chances of hanging out with the cats?

Regardless, the killing tigers have now been replaced by the killing cars.

More disturbingly, there is emerging evidence that some of us might become schizophrenic or neurotic when infected. And now forms of brain cancer are also being linked to infections

How do you get toxoplasmosis?

Easy!

Touching or coming into contact with sand containing infected cat poo.

Eating uncooked, unwashed fruits or vegetables that have been contaminated by manure with infected cat poo.

Eating raw or undercooked meat that's contaminated.

And sometimes, very rarely, by being born with it (a woman who gets a toxoplasmosis infection while pregnant can pass the parasite on to her unborn child).

There is a belief by some that we humans are where we are today because of schizophrenia.

And because of dominant rule breaking people who have pushed the boundaries.

It is a sobering thought that our civilisation might be what it is because of a tiny parasite.

But you know what: looking at the modern world I think that perhaps we can live without this parasite

That the time has come for us to make our own way, brains unaltered, into the future.

So make sure that your children's sand pits are covered when they aren't playing in them.

Keep your cat away from the wildlife.

Do a good job of washing and preparing your food.

Wear gardening gloves.

Such simple steps to stay safe.

And remember, if you get hot under the collar while driving, and want to gun your car from one stop to the next, and those idiot cyclists who just slow you down and you get so tense at the stupidity of others...

Just remember it could be your inner parasite trying to introduce you to your modern tiger.

So take a deep breath, calm down.

Beware what lies in the sand beneath.

Wednesday, July 06, 2011

I don't understand the Australian IT business

Here in Australia employers are screaming out that they can't get skilled IT employees.

The situation is so bad, apparently, that we need the visa rules changed to allow IT specialists into the country (this link is one example of the articles that flood our papers).

But at the same time, IT companies in Australia will hire only 1 in a 100 applicants!

If you have a shortage of skilled people, then you don't turn your nose up at applicants at this rate. Sorry. You are obviously spoiled for choice and being super, super selective in who you hire. So much so that you are wasting more time in filtering and selecting people than you should be.

This, by the way, is in a country that has as almost standard, a probation period. If the employer doesn't like you in the first few months of your employ then you are toast. No recriminations, no blame. It would be surely be more cost effective to hire people and then shed them if they don't work out?

Do employers really want to open the gates to allow in people who they then aren't going to hire? It makes no sense to me.

I'm guessing that the real reason that we want the visa restrictions relaxed is to drop salaries, in some warped supply/demand way... If true, what does that tell us?

Footnote, 29th August: Of the 1 in a 100 applicants hired, almost 50% aren't up to the job...

Friday, June 17, 2011

Be Prepared

Another month, another speech..

Be Prepared

It has been a long day. The seats on the train are all taken. So you stand, hanging on to a strap as the train hustles you home.

A girl near the end of the carriage unexpectedly jumps up, sobbing, and steps through the inter-leading door between the carriages.

You see her framed by the door window, standing on the exposed, shaking, platform that bridges the two carriages.

Suddenly she picks her leg up, swings herself up and over the guard rails, and falls from sight.

You, and the the people in the carriage that saw this are shocked. What has just happened? Did she really just jump – why was there no sound – are trains really that brutally massive?

All these thoughts race through your mind. But before you can work out what to do you see her head bobbing at the bottom of one of the inter-leading carriage windows.

Relief fills you, and everyone else who saw her vanish. She's alright: she's clinging to the carriage! But she is in a very dangerous spot.

You realise to your horror that all the other people on your carriage who saw this drama play out are now starting to look at their newspapers, to look out the side windows – doing anything they can to exit the stage on which they unintentionally find themselves.

What would you do if that were you in the carriage?

I believe that we must consciously choose to act in the day to day drama's that intersect our lives.

I also know that we choose how we are to act in the drama. Our chosen role can range from deliberate inaction to full participation.

On that train rattling through the night, with the girl clinging to its side, I felt powerless.

She was behaving irrationally: if I went near her what might the result might be? Would she jump – or would she pull me out into the void to be with her?

I couldn't leave her, and I feared getting too close to her? What could I do?

There was another path I could follow. I could contact the driver. Every door on the train has an emergency intercom that allows you to talk directly to the driver.

But the more people there are around an unfolding drama, the harder it is for us to take an action that is different from theirs.

We look to the others around us for leadership – and when none comes we use their lack of action to abrogate our responsibilities.

I ran from door to door on that carriage, desperately looking for an intercom. And found none!

The people on the train were now starting to look at me – I was becoming the focus of their attention – not the girl desperately clinging to the side of the train.

It was just surreally wrong - if that had been your daughter, wife, or best friend of clinging to the side of the train, would you have ignored her to instead watch the strange man who was now running from door to door? I think not.

Yet on that carriage everyone did nothing, complicit in a unison of inaction. And now by focusing on me, made me feel as though I was the one who was strange and different – and that I was in the wrong.

Just then the train slowed and stopped at a station. I escaped their attention by leaping out the train.

I ran up the platform, to the drivers window, knocked on it, and told him of the girl.

Baden Powell, founder of the scout movement, said: “Be prepared”.

By that he meant that you must prepare yourself "by previously thinking out and practicing how to act on any accident or emergency so that you are never taken by surprise".

Later, when I got back on my carriage, after the driver had navigated the girl to the safety of the station platform, I saw that there were indeed intercoms on the carriage: others, standing, had simply been leaning against them, hiding them with their bodies.

Now when I get onto a train I check for the intercoms, making sure I know exactly where to go if something happens.

That preparation has already paid off: just last week another girl collapsed on the train. Whilst an elderly women aided her, I, nervously, because no one else was doing anything, called the driver.

No less than 8 officials met us at Flinders Station and and tended to the girl.

That brave elderly women and I were not punished for stalling that train in rush hour – none of the officials even bothered with the two of us once they were attending to the girl.

We just slipped away with the crowd when we saw the girl responding to their ministrations.

Ratko Mladic has just been extradited to the Hague, to stand trial for the Srebrenica massacre.

A massacre in which over 8000 men died. It is the largest mass murder in Europe since the end of the world war two.

What could tie the terrible deeds of Ratko Mladic to us, who were in that carriage with a girl clinging to its side?

400 heavily armed and highly trained Dutch soldiers were stationed in Srebrenica when the massacre took place. Unbelievably, they turned their backs.

The two events are related by the people who stood by and did nothing.

Evil blossoms when watered by the apathy of those around it.

If we can learn act in the day to day drama's that intersect our lives, we will be more able to act when evil starts to take root.

So be prepared – roll play scenarios in your head, learn from how others have behaved in emergencies.

And remember to choose your role – and act, when you find yourself inadvertently thrust into a drama.