2015/06/18

Power to the People

Yesterday I received my usual gas and electricity bill from my supplier with the not so usual increase to my monthly direct debit of a nice round 100%! 100% on top of what is already more than I care for... joy!

What followed was the all too familiar vent-spleen / spit-feathers etc. before the situation was resolved by a very nice customer services representative who had clearly seen this before... humm..

So, as I do, I ponder darkly on how such a situation could have arisen. And as an IT guy, I ponder darkly about how said situation came about through IT (oh what a wicked web we weave)... Ok, so pure conjecture, but this lot have previous...

100%! What on earth convinced them to add 100%? Better still, what convinced them to add 100% when I was in fact in credit and they had just reimbursed me £20 as a result?...

Customer service rep: It's the computers you see sir.

Me: The computers?

CSR: Well because they reimbursed you they altered your direct-debit amount.

Me: Yeah, ok, so they work out that I'm paying too much and reduce my monthly which would kind of make sense but it's gone up! Up by 100%!

CSR: Well er yes. But I can fix that and change it back to what it was before...

Me: Yes please do!

CSR: Can I close the complaint now?

Me: Well, you can't do much else can you? But really, you need to speak to your IT guys because this is just idiotic...

(more was said but you get the gist).

So, theories for how this came about:

  1. Some clever-dick specified a requirement that if they refund some money then claw it back ASAP by increasing the monthly DD by 100%!..

  2. A convoluted matrix exists which is virtually impossible to comprehend; a bit like their pricing structure, which details how and when to apply various degrees of adjustment to DD amounts and has near infinite paths that cannot be proven via any currently known mathematics on the face of this good earth.

  3. A defect exists somewhere in the code.


If 1 or 2 then sack the idiots who came up with such a complete mess - probably the same lot who dream up energy pricing models so a "win-win" as they say!

If 3 then, well, shit happens. Bugs happen. Defects exist; god knows I've been to root-cause of many...

It's just that this isn't the first time, or the second, or the third...

(start wavy dreamy lines)

The last time they threatened to take me to court because I wouldn't let their meter maid in when they'd already been and so hadn't even tried again..  and since they couldn't reconcile two different "computer systems" properly it kept on bitching until it ratcheted up to that "sue the bastards" level. Nice.

(end wavy dreamy lines)

... and this is such an simple thing to test for. You've just got to pump in data for a bunch of test scenarios and look at the result - the same applies to that beastly matrix! ... or you've got to do code reviews and look for that "if increase < 1.0 then surely it's wrong and add 1.0 to make it right" or "increase by current/current + (1.0*current/current)".

So bad test practices and/or bad coding practices - or I could also accept, really bad architecture which can't be implemented, or really bad project management which just skips anything resembling best practices, or really bad leadership which doesn't give a toss about the customer - and really bad operations and maintenance regardless because they know they've got some pretty basic problems and yet they clearly can't help themselves to get it fixed.

It all comes down to money and with practices like this they'll be losing customers hand over fist (they do have the worst customer sat ratings apparently).

They could look at agile, continuous-integration, test automation, dev-ops, TDD and BDD practices as is the rage but they need to brush away the fairy dust that often accompanies these concepts (concepts I generally support incidentally) and realise this does not mean you can abandon all sanity and give up on the basic principles of testing and coding!

If anything these concepts weigh even more heavily on such fundamentals - more detailed tracking of delivery progress and performance, pair-programming, reviewing test coverage, using tests to drive development, automating build and testing as much as can be to improve consistency and quality, getting feedback from operational environments so you detect and resolve issues faster, continuous improvement and so on.

Computer systems are more complex and more depended on by society then ever before, they change at an ever increasing rate, interact in an constantly changing environment with other systems and are managed by disparate teams spread across the globe who come and go with the prevailing technological wind. Your customers and your business relies on them 100% to, at best, get by, and at worst, to exist. You cannot afford not to do it right!

I'm sure the issues are more complex than this and there are probably some institutionalised problems preventing efficient resolution mores the pity. But hey, off to search for a new energy provider...

2015/05/27

Bluemuddle

I'm experimenting; or trying to, with IBM Bluemix virtual machines. Clearly beta and half the time I get a UI in italian (!?) but the documentation is woeful.

Simple VM created... What's the connection string?

Launch Horizon (oddly a separate site, but ok,.. beta...) says it's:
ssh -i cloud.key <username>@<instance_ip>

Ok, I know the key, I know the IP, but what's the username?
(the username might be different depending on the image you launched):

Yeah, ok, but what is it? It's a standard IBM image (CentOS 7 in this case) so...

Nada (Spanish, so still not sure what's with the Italian)! No documentation, no advice, a broken link in the VM docs... Stack Overflow has no questions under bluemix usernames.. But thankfully DW answers does - though not specifically my question, rather others with sudo issues! Not a great way to find out... Perhaps they hand out that bit of info on the training course... Anyway, two days lost of whatever free period I get, I can login. Now I need to remember what I wanted to try out..

For the record it's:
ibmcloud

2015/05/18

Communication Breakdown

G+ Polls are really very useful for a quick; if not terribly scientific, survey and I recently asked "How do you typically share solution designs?" on the IT Pros community given the variety I see from day to day.

Screen Shot 2015-05-18 at 21.20.17

That presentations are top and models are bottom is sadly unsurprising. I'm in two minds over documents and wikis as effective forms of communication - the former quickly gathers dust though at least provide a snapshot of what was intended at one point in time, the latter decays rapidly into a confusing contradiction of opinions in which the truth is a long lost fairy-tale.

But the really surprising thing for me was the number of votes for whiteboard + photos + email (and/or some online post). We all do it and it's a excellent way to frame a discussion and share ideas. Does it really end there though? Personally I need to take the output of these sessions and work it into something more cohesive and focused which often yields insights which were not uncovered during the rabbit hole exercise that whiteboarding can become.

Truth be said, I still hunger for a good model and the liberating constraints of UML. Unfortunately it seems I need to both improve my PowerPoint and drawing skills instead.

2015/05/08

Electoral Load-balancing

I can't help but think that I'd not get away with load-balancing of resources assuming an equal prioritisation of requests as the British political system allows with votes. No doubt the Tories got the most seats and should rightly be charged with forming a government. However,  based on raw votes the distribution is unequal and the system is weighted in favour of the main two parties...  and the emergent SNP! The table below is based on UK elections result data from The Guardian assuming you get the number of seats relative to the number of votes cast.

Suppressing minorities or mitigating extremities? Or a bit of both... It should not though be for the incumbents; and the system is a product of them, to decide. Perhaps our electoral system could do with an updated load-balancing strategy.



































































































PartyActual
Seats
Proportional
Seats
Benefit
of the
System
Conservative331240+91
Labour232198+34
Scottish National Party5631+25
Liberal Democrat851-43
Democratic Unionist Party84+4
Sinn Fein440
Plaid Cymru34-1
Social Democratic and Labour Party32+1
Ulster Unionist Party220
UK Independence Party182-81
Green124-23
Independent12-1
Alliance01-1
Trade Unionist and Socialist Coalition01-1
Traditional Unionist Voice000

 

2015/05/02

Woke up this morning...

... annoyed!

Been hearing some daft comments recently like "cost is a secondary concern" and "we shouldn't worry about cost"... wtf!?

You need a vision. You need  a goal. You need to know what the hell it is you're trying to achieve!

But! The most important thing once your have the vision is how the hell you're going to get there. Time and money thus become primary concerns and if you ain't got the money or you ain't got the time then you ain't going there and you need to adjust your expectations!

Hell, I want to go to the moon for a vacation but that isn't going to happen anytime soon.

And as Hemingway said, "It's good to have an end to journey toward; but it's the journey that matters, in the end".

2015/04/27

Nanoseconds

I've been doing a little performance prototyping and my usual technique of logging milliseconds spent doesn't quite cut it as the result fluctuates between 0ms and 1ms - not enough granularity to allow for any useful comparison. Switching to nanoseconds does the trick - case A is a little over 0.6ms slower than case B in my test... Cool!

What's the difference between a nanosecond(10−9) and a microsecond(10−6)? Grace puts it in perspective... but I'm talking milliseconds(10−3)... so that'd be just shy of 300km per ms or 180km longer in A compared to B. What a waste...

https://www.youtube.com/watch?v=JEpsKnWZrJ8

Voyaging dwarves riding phantom eagles

It's been said before... the only two difficult things in computing are naming things and cache invalidation... or naming things and som...