jump to navigation

Friday Philosophy – Despair of the Dyslexic Developer and Your Help Please June 1, 2018

Posted by mwidlake in development, Friday Philosophy, Perceptions, Private Life.
Tags: , ,
1 comment so far

Like a surprisingly large number of people, I’m dyslexic. I’ve mentioned this before, describing how I found out I was dyslexic and also how I think it is sometimes used as an odd sort-of badge of distinction. I am mildly dyslexic, the letters do not try to “merge or run away” from my eye, if I hit a large word I am unfamiliar with I can visually chop it up and get through it. But that is just me. So, today, I want to ask you all, if you are a dyslexic developer or know one, are there any steps you have taken to reduce the impact?

I should mention, neither Jim or Richard are dyslexic as far as I know!

A recent, slightly jokey, conversation on twitter reminded me of the issues I have had in typing the wrong thing (over and over and over again – my usual example is how often I have tried to “shitdwon” an oracle instance). And that in turn reminded me of a more serious conversation I had when at the OUG Ireland conference back in March.

As a developer, I sometimes struggle to spot spelling mistakes or use of the wrong (or missing) punctuation in my code. As my friend JimTheWhyGuy said in the twitter conversation, spotting you had spelt UDPATE wrong. I was telling the audience that I was something of a slow developer, partly due to dyslexia. I can stare at code for ages, especially if I am using a new construct to me, not understanding why I am getting an error. It is often not a syntax problem but a spelling one. I had real problems with the word “partitioning” (and still do) when I started using that feature. – it is a little long and has almost-repeated sections in the middle and I “spin” in the middle if I read it or try to write it. It’s a little too long for my wrists to learn to automatically tap it out.

After the talk a lady came over and asked me if I had any advice on how to reduce the impact of dyslexia when writing code. She’d been diagnosed at school and so had grown up knowing she was dyslexic. (I was not diagnosed as a child, which oddly enough I am still glad about – as I learnt to cope with it in my own way. But I am NOT glad I am dyslexic). I do not know what support and advice she had been given through school, but it was obviously still something that impacted things. All I could come up with were a couple of tricks I use.

One is to copy text into MS Word and see if it highlights anything. You have to teach your version of MS Word (*other word processors with spell checkers are available) that the normal syntax words are real, but all the punctuation and special characters get in the way. Where it does help a lot is reducing the number of errors in specifications & documentation I produce and, now, articles I write. But as I know most of you who come by here have already realised – spelling errors that give another correct word are not picked up by a lot of spell checkers, such as this WordPress site. My blogs are full of missing words, wrong words and other crap.

The other major advance is the use of, Software Development Tools (SDTs – and YES, I spelt SDT wrong first time around writing this!) or Interactive Development Environments (IDEs). These highlight syntax errors (so highlighting typos), allow auto-completion of command words and provide common code constructs. They help, but I’ve never been that good at getting the best out of them. I use SQL*Developer more than the others and it does help.

The final other thing is that I just factor in that it’s going to take me more time to write or read stuff. Like many dyslexics, there is nothing wrong with my comprehension (I went off the scale for reading age when I was 12) but it takes me longer and is more effort.

Looking around on the web about this, there is a lot of stuff, the above point about IDEs being a main one. One common thing is to use different fonts to help stop letters skipping about or moving, but I don’t have that sort of dyslexia so I’ve never looked into that. I was going to review the topic of dyslexic developers more before putting this article together, but reading it all was taking me too long! That and I found the constant “It gave me an advantage” to be bloody annoying.

So, knowing a few of you out there are also dyslexic to some degree or another, have you any tips to share? If you have something to share but do not want to be identified, contact me directly.

I’d really appreciate it, if not for me then for if ever anyone else asks me how I cope as a dyslexic developer.

My main opt-out of course was to move into performance. It’s somehow more “pictorial” in my mind and you write less code…

Advertisements

Friday Philosophy – Not My Cup Of Tea March 16, 2018

Posted by mwidlake in ethics, Friday Philosophy, Perceptions.
Tags: , ,
3 comments

A few days ago I tweeted a copy of a “motivational poster”. I don’t normally like motivational posters but this one struck a chord with me as it was a lesson I took a long time to learn. Not everyone will be your cup of tea. Which is a very British (I think) way of saying you don’t like something or someone. “Ohh, that Mavis, she’s just not my cup of tea!”.

Over time my opinion of people and how we all get on have changed.

Not everyone in this world is going to like you. No matter what you do, how reasonable you are, the number of olive branches you offer, some people are just never going to like you. That bit I learnt early at school when Nigel was leading the bullies. Each one of them I could manage on their own, negotiate some peace, but not Nigel. Over time I realised it’s just a reality: some people will not like you and there is no discernible reason. And it can be a very passive dislike – no anger, no hate, just a total absence of like rather than actual dislike I guess.

You are not going to like everyone. This is not a case of you needing to be a better person or some sort of saint, I don’t think I’ve met anyone yet who likes everyone. Some people respect everyone, have time for everyone, will try to think the best of everyone. But not like. I did not like Nigel, for good reason, but there are other people who I do not like who have never done anything bad to me. Again, it is not that I dislike them, I’m just indifferent or mildly irritated by them. For many years through my 20’s and 30’s I thought I should try and alter that – but I failed. I just don’t like some people.

It’s OK and Normal that some people you will just not get on with. I struggled with that for years. Surely, so long as someone is not psychotic or just simply a bad person, bridges can be built? When I started thinking more about teams, managing people, getting people to work together, I did learn more about how to identify the reasons for bad feeling and resolve them. I had more success at it than I thought I would, and acknowledging that half the time it was my fault not theirs helped. But with some people, no it was not happening, we did not like each other. But things could usually be improved – if not bridge-building, then at least waving politely at each other from our respective sides of the river.

That led me to what I felt was the final part of being someone’s cup of tea. I like tea with sugar and milk, some people think that is disgusting and, anyway, it should be green tea. They are wrong. But it does not matter. If they want a cup of tea, I’ll make them a cup of green tea.

Not getting on with someone is not a problem – so long as you don’t MAKE it a problem. If you don’t like someone there is no need for you to make them “The Enemy”. If you do, well you just made an enemy and that person is likely to be obstructive to you, retaliate and generally make life less nice. And that will spill over to others around you. Oh, I’m not a saint, I try to apply this rule to myself but I don’t always pull it off.

I’m not wise enough to know all the reasons we do not all get on but I think sometimes the reasons are just not important. I might remind you of someone you really detest, I might find the way you keep singing bits of “The Smiths” an affront to good musical taste. And even if there are reasons that seem good, the less antagonistic you can keep it, the better. And I repeat, sometimes it is not active dislike, it is just an absence of like.

The context is also a factor in this. In a social situation, if you do not get on with someone it’s easiest just to avoid them. And we all do this. But you don’t need to try and make everyone else dislike them. In a work or family situation it can be harder as you have to deal with people you don’t like. I think that acknowledging that you just don’t get on and it happens, no blame either side, makes it easy to be equitable about it.

It seems to me that the people I do not get on with have a different life philosophy to me and the larger the difference, the larger the chance of dislike. I don’t like Right Wing conservatives. I don’t like selfish people. To them I am probably sanctimonious, deluded and borderline communist – which is not fair, I AM communist. In that I think our community is the most important thing about being human. But I also use humour a lot and that really annoys some people as I use it in inappropriate settings or they do not think I am taking issues seriously enough or professionally enough. And they may be right.

So, all very good and very grown-up of me so far. Now for my final point.

Some people are just not nice. We’ve all met them, the person who no one can get on with as they are so self-opinionated, bullying, harsh, self-serving. And any attempt to build bridges with them is either seen as weakness or used as a way to get you on-side before they hang you out to dry.

Is this just an extreme case of not being your cup of tea? Well, maybe, but I don’t think that.

Some people are just not worth the trouble. And some people are trouble.

It comes back to Condoning Bad Behaviour. I actually decided that some people are not nice (and probably never will be) long before I came to the conclusion about it being OK to not get on and trying to not make it a problem. At that point I wondered if that would be the whole solution, just accept that you do not get on and let it lie.

But I kept hitting up against the occasional person who, no matter how much you tried to not make it a problem, they did make it a problem. And they continued to bully, oppress, be antagonistic – and they got away with it. With these people I still try and walk away. And if I cannot? I don’t condone bad behaviour. I’ll tell them what I think and, if I can, I’ll stand against them. It is not easy though as they are like Nigel. They surround themselves with similar people or stooges they can direct. Now that is a totally different issue.

I think it’s right to try and be friends with everyone.
But you won’t be friends with everyone so strive for peace with the others.
And if peace is difficult, distance should work.
But I will not condone bad behaviour, OK?

Some people need to see me using this cup

Friday Philosophy – Explaining How Performance Tuning Is Not Magic? March 9, 2018

Posted by mwidlake in Friday Philosophy, performance, SQL.
Tags: , , , ,
8 comments

Solving performance issues is not magic. Oh, I’m not saying it is always easy and I am not saying that you do not need both a lot of knowledge and also creativity. But it is not a dark art, at least not on Oracle systems where we have a wealth of tools and instrumentation to help us. But it can feel like that, especially when you lack experience of systematically solving performance issues.

SQL statement be fast!

I recently spent a couple of days with a client discussing how you solve performance issues and I am preparing a talk on exactly that for the up-coming OUG Ireland conference on the 22nd-23rd March. The guys I was talking to at the client are very, very capable production DBAs, but traditionally the developers at their site initially look at any performance issues. If they think it is the database but not something they can fix, they throw it over the fence at the DBAs. It’s not always the database of course and, if it was a simple fix (missing index, obviouosly inefficient query), then the developers fixed it. So these two guys are expected to only solve the more difficult issues. That’s not really fair as, if you are not practising on the simple problems how are you supposed to gain the experience and confidence to solve the harder ones?

Anyway, a part of the discussion was about Explain Plans. What does the COST mean in the plan, they asked? They saw it as some number that in an undefined way gave an indication of how expensive the step in the plan was, but they could not link it back to anything solid that made sense to them. It looked like a magically produced number that was sometimes very, very wrong. Like most (good) technical people, they want to know the details of things and how they work, they don’t want to simple accept something as working.

So I took them through some simple examples of plans and of how the COST is just a result of simple maths estimating the number of IOs needed to satisfy the step.

I won’t go into the full details here but have a look at the below, this is how I started:

I explained how you read “down” the slope of plan to the end (so step 3) and then worked back up the slope. So the first thing Oracle does is the index range scan. I showed them the BLEVEL of the index, the number of blocks per indexed value and why Oracle knew it would, on average, need 3 IOs to get the leaf block entries for the provided “DOB=to_date(’08-OCT-1934′,’DD-MON-YYYY’)”. Each DOB matched, on average, 20 rows. So the cost of step 3 was passed up to the step 2 of accessing the table rows. This would be done 20 times so the cost was 20+3. 23.

OK, they could accept that, it made sense. So let’s extend it…

I took the original query against PERSON for a given DOB and now joined it to a second table PERSON_NAME. Why is not important, it’s just a demonstration of a simple table join:

Now I explained that as you work “back up the slope of the plan” from the first, most indented step (so from step 5 to 4 to 3) at 3 there is a nested loop joining the rows passed to step 4 to the step in line below it, i.e. step 6. They had already seen steps 5 and 4 in our first example, Oracle is expecting to get 20 rows for a cost of 23. Look at line 4. And for each of those 20 rows, it will do a range scan of the index in step 6 and for each row it finds in the index, collect rows from the joined table in step 7.

So for each of the 20 original rows it does a scan of an index on the joined table for a cost of 2 (I showed the stats to them how this cost is calculated) and expects on average to find 5 matching rows so it needs to do 5 IOs to the PERSON_NAME to get those rows. Add that together and that cost of 7 is done 20 times. 7*20 is 140, plus the 23 from the orginal scan of the PERSON table, the whole COST is… 163.

Light bulbs came on and they got it! My job here is done.

But it was not. I then went on to explain how it is now hard to get such a simple example. This one is, I think, from an early version of Oracle 11. I told them how histograms on a column will make the estimated cardinality (number of records per given value for a column) more accurate, but harder to work out. I showed them how the cost of a unique index scan is reduced by 1. I explained how Oracle was blind to the correlation of column values unless you took steps to tell the optimiser about it (you know, how for a given value of car manufacturer there will be only a few values of car model, the two values are related)…

Worry was creeping back into their faces. “so it is simple mathematics – but the rules are complex? It’s complex simple mathematics?!?” Err, yes. And with 11 and 12 Oracle will use various methods to spot when the simple, complex mathematics does not match reality and will swap plans as a result…

I think I lost them at that point. Especially when they asked about the SQL Profiles and how they modified Costs… Baselines controlling how plans are used… Bind variables…

That is a real problem with Oracle Performance tuning now. Even something as simple as COST is based on a lot of rules, factors and clever tricks. And they are not the only things controlling which plan is executed anymore.

So I took a step back.

I told them to accept that the COST is really, honestly based on maths, and the expected number of ROWS is too. But the actual, specific values could be hard to totally justify. And it is when the estimated COST and (possibly more importantly) the estimated ROWS goes wrong you have problems. So look out for ROWS of 1 (or at least very low) in a plan for a statement that takes more than a few milliseconds. And for very, very large COSTS/ROWS in the millions or more. And what really helps id if you get the ACTUAL ROWS as opposed to the ESTIMATED RIWS. Where there is a significant difference, concentrate your focus there. Of course, getting the ACTUAL ROWS is not always easy and is for a later (and properly technical) post.

So, they asked, if they could not get the actual ROWS and there were no 1’s or millions’s in the plan ROWS/COSTS? How did they know where to concentrate? “Well, you just get a feel for it… do the costs feel reasonable?…”

Damn – I’m not sure I really delivered on my aim of proving Performance Tuning is science and not magic.

Any pointers anyone?

(Update – Vbarun made a comment that made me realise I had messed up the end of this post, I was talking about estimated ROWS and still had the words COST there. Now fixed. And the other thing I was hoping someone was going to suggest as a pointer was – to split the query down to individual tables & two-table joins and *check* how many rows you get back with the where predicates being used. It takes some time but it shows you where the estimates are going wrong.)

Friday Philosophy – Criticism is Critical for Believable Endorsement March 2, 2018

Posted by mwidlake in ethics, Friday Philosophy, Perceptions.
Tags: , ,
7 comments

If you had a friend who always told you that your were the best, that you had no faults, and that everything you did was great – would you trust them? I know I would not. I am fully aware that I am not perfect(*). I used to see this sometimes in relationships too, especially when I was younger. One of them would be so desperate for their boyfriend/girlfriend to like them that they would never criticise the light of their life. The relationship never lasted as it was, well, creepy and false.

Perfect In Absolutely Every Way

For your opinion of someone to be seen as honest, there has to be space for criticism. I love my wife very much, but she’s crap at loading the dishwasher. Joking aside, I believe my wife when she says she likes some aspect of my character as she will tell me about the ones she does not like. Thankfully, not at length.

In exactly the same way, for your opinion on a technology or application to be accepted as honest & worthwhile, there has to be space for criticism. I’m not saying that there has to be some criticism within any given endorsement of a product, I’m saying you need to be confident that the person would mention any faults or drawback they are aware of for you to believe that endorsement. I’m really hoping you are all agreeing with me on this!

So why do Marketing departments so often not get this? What is so fundamentally broken – OK, let’s be nice and say different – about their view of the world that any criticism is not acceptable? I just don’t understand either their belief that their product is perfect or that people will be fooled by an uncritical opinion of that product.

I can see how this would work in social media reviews like TripAdviser though. I recently did reviews of several places I had visited and a couple of companies then contacted me to ask me to remove the bits where I had said anything negative. They fundamentally wanted me to lie for them, or at least implicitly (and complicitly) give a better review by omission. I don’t take it well when I am asked to lie. In this case of social media I can see how “cleaning up” the reviews might help as most people look at the sum of all reviews and not at the reviewers.

But when you are actually a known person giving a review or endorsement, your reputation is critical to how the review is perceived.

What triggered this post was I recently discovered a friend of mine had been asked by a marketing person to remove some negative things they had said. They refused and made the point I have just made – if they were to be seen as believable when they said something else that the company produced was great, they had to be seen to be honest in criticising anything that was less-than-perfect. And let’s all be grown up about this, I’d say no software or application is perfect! However, the marketing person found this concept alien to them.

I wonder if people who work in marketing departments have difficulty maintaining long-term relationships? Based on my experience, quite a few of them are willing to ask you to lie for them and they don’t understand honesty is core to trust. Or am I just being very, very naive?

For me to trust the opinion of someone commenting on software & applications, in fact on anything really, I want to see some proof of their integrity by them being critical as well as complementary. If it is all positive, I will assume that their opinion is bought in some way or they are not particularly discerning. So Marketing People asking for negative comments to be removed? You are doing your employer a disservice. Please keep that in mind.

(*)I’m not perfect – but sometimes I’m so close it hurts. My wife got me a T-shirt with this on, so it must be true… Or she was being sarcastic?

Friday Philosophy – Doing DOAG (& a Little, Light, Hem-Touching) November 24, 2017

Posted by mwidlake in conference, Friday Philosophy, Presenting.
Tags: , ,
1 comment so far

This week I’ve been at annual DOAG conference. DOAG is the German (Deutsch) Oracle User Group annual conference. It’s my second time there and I very much enjoyed it, meeting lots of people & seeing some great talks. I also got a request to do more Friday Philosophies, so…

DOAG is now the biggest Oracle User Group conference in Europe, it overtook the UKOUG conference a few years back. Do I see this as “competition”? Well, a little bit of me does because for several years I was involved in organising the UKOUG tech conference – and a part of me would like “my” conference to be the biggest. But that is just misplaced, juvenile pride – really there is no competition between us. DOAG caters to the German Oracle User community (and nearby countries), UKOUG to the British Isles and, to a certain extent, Ireland and the closer parts of mainland Europe. If there is any competition then it is for presenters. I know that sometimes presenters have had to pick between the UKOUG and DOAG as they can only manage so much time doing these thing. But I also know many presenters who do both. Also, both conferences are lucky enough to receive many more, very good presentation abstracts than they have presentation slots for. There will always be a great selection of presentations at both conferences.

There are some aspects of DOAG that I really do wish we could replicate for UKOUG. The first is the venue. Not only is the space they have at the Nuremberg conference centre so much larger and and better suited than the ICC in Birmingham, but it costs them “a lot less”. It might be outside of town (and Nuremberg is a nice town) whereas the UKOUG conference is almost in the middle of Birmingham, but at DOAG you get free transport as part of the conference pass. The second is the catering. The food at DOAG is very, very good; coffee is available at all times; you can get real, decent coffee from some places (in the UK you need to go find a place that will sell you decent coffee); DOAG end the conference with beers and light snacks – the UKOUG conference tends to fizzle out.

But for me, though it is a close-run thing, I do ever so slightly prefer Birmingham and the UKOUG conference. I find it a little more relaxed (certainly there are less suits in evidence) and, on a personal level, I know so many more people there. I like knowing where the pubs & restaurants are and which ones are terrible! And somewhat ironically, our German Christmas Market is not only in full swing during the conference, but it is bigger than Nuremberg’s. But how many wooden toys, Gluhwein and sausage do you need in your life?

I did have a somewhat bizarre time with my presentations at DOAG though. First, I had to cancel a presentation. I was preparing a new one on the philosophy & process of performance tuning but due to some back pain issues (or rather the impact this had on my sleep and the pain medication had on my brain) I was utterly failing to get it done. So with only a week to go I had to ask if they could replace me. I hated doing it so late, I know what it is like organising these conferences and losing talks when you have printed the agenda is a real pain. Plus you now need to find a replacement. But I also know they would not appreciate a poor talk, so I let them choose. They chose to drop the talk.

But I honoured my other two presenting slots. The first was at 11am the first day and I experienced that thing that most presenters secretly like – it was so popular there was only standing room! As a result, the DOAG organisers asked if I would repeat it the next day or last day. Of course! However, as it worked out, they asked me to repeat it later that afternoon as one speaker was lost in transit. There was of course no time to really advertise the change. So I repeated the talk 4 hours later in the largest auditorium I have ever presented in – to 27 people. They of course were scattered around the room like lost souls. I guess it was using a room that would otherwise have been empty, and the session was recorded I think. But it did feel odd.

In between these two talks, I saw a couple of other people present. And in one talk, my phone kept buzzing. That was unusual, especially as it was a German number. I eventually exited (from the front row) and took the call. It was DOAG! They wanted to know why I was not at the interview I had agreed to do. “Because that is on Tuesday!”. Pause. The confused lady on the phone said “Yes. It IS Tuesday…” *sigh* – did I mention the pain meds and my brain? That was embarrassing. I had to go back into the room, to the front, get my stuff and wave an apology to Chris Saxon & Heli Helskyah before scuttling off to this interview. Which I did very badly.

My final talk was interesting for other reasons. The talk was on calling PL/SQL from SQL and the impact it can have on performance and the point-in-time reliability of the results (if your called PL/SQL function itself runs SQL). I’ve discussed this topic with Bryn Llewellyn, the product manager (distinguished no less) of PL/SQL & EBR, in the past and I was able to catch up with him just before the talk. Then he came to my talk. I’m presenting in front of the Oracle employee who owns the tech I am talking about. No pressure. Then I look around the crowd and it is liberally scattered with other senior Oracle technical people, OakTable members, Oracle ACEs…

This is an unappreciated, small problem with becoming friends with these people. The bas…. good fellows and ladies come to your talk – and heckle.

Well, it keeps me honest and the heckling that did inevitably happen was all good-natured, and corrected a couple of slightly weak bits of my talk. So the crowd got a better talk than they otherwise would have.

And the Hem Touching? Well, go back a few years and we did not have the breadth and diversity of information the web now provides for us. In fact, we are talking back in the 1990’s when there was nothing like google and blogs and Oracle Base. What information was out there for Oracle was much more paper-based (you know, actual books & magazines!) or the odd word document that was emailed between people. One name I saw on such things quite often and who taught me an awful lot back then was Craig Shallahammer. Well, Craig was at DOAG, I’d seen him in the crowds once or twice. And after this talk he came up for a quick chat. I might have been presenting now for a good few years and met many of the best known people in our world of Oracle and I’m generally immune from the desire or need to go “Oh! You’re xxx! I’ve read all your papers!!!!”. But I did a little with Craig, as he was from my “Oracle childhood”. And he was very nice about it.

So all in all, an excellent few days. I’ll try and come again next year. Maybe if I finish that talk on the philosophy of performance tuning, they’ll let me do it?

Friday Philosophy – Smart or Smart-Arse? October 20, 2017

Posted by mwidlake in Friday Philosophy, humour, Perceptions, rant.
Tags: , , ,
1 comment so far

Many of you know what a “Smart-Arse” is. For those who do not…

A “Smart-arse” a person who is irritating because they behave as if they know everything or try to catch you out by misleading you.

A smart person will look at your problem and say something like “have you tried checking the array size?” and, 8 times out of 10, their input will help you solve your problem. It may not be THE answer but it makes you think about root causes.

A Smart-arse will say something more like “well, I would never have your problem as I would not have joined a company full of Java Nerds!!!”. Yeah, maybe that would have avoided my specific problem #1, but it is of no practical worth right now. .

You can usually pick out a smart-arse just by the tone of their voice. Think about the two situations above. The Smart person probably gave their advice in a quieter voice and with a passive or supporting manner. The Smart Arse person will usually have a higher, louder voice with a slightly sarcastic tone. Basically, in a superior or attention-seeking manner.

Another “Smart-arse” thing to do is to try to catch you out, in the misguided belief it makes them look cleverer than you.

In these situations always ask – “what is a Smart-arse hoping you won’t spot”

I’ll put my hand up right now. Sometimes, especially looking back on my past, I have been the smart-arse. (And, as humans, we hate the fault in others that we see in ourselves). And I bloody hate smart-arses. And I keep seeing smart-arse crap all over the internet. Let me give you an example. Look at the figure on the right.

This is the perfect example of the “Smart-Arse” question. You are faced with what looks like a simple logic puzzle and normally the tag line is something like “93% of people will get this WRONG!!! – Only Geniuses can solve it!!!!!!!”. They never cite a basis for the “93%” as it is as utterly made up and is as asinine and bloody annoying as whatever trick is in the post. What they are doing is giving you what looks like a genuine puzzle that needs a bit of thinking about but most of us can solve (though not you Dave, you really are an idiot). BUT! But they have hidden a detail. The are purposefully leading you astray so they can go “Aaa-Haaaa!!! Noooo! You forgot to check for the closed pipes!” (check tank 5 to 2). Or whatever the trick is.

This is “Smart-Arse”. It is not checking if you can solve a problem, if you are smart. It is checking if they can con you. Checking if they can give you a load of information and then go “Ahh HA!! Got ya!!! You did not check for the tiny bit of info we hid from you!!! O-hohohohho we are so clever!!!!”

Well, I have news for you, Smart-arse. You are a bloody idiot. Your answer is wrong, as any fool can see. (Bear with me on this…)

More boxes, same smart-arse shit

You may have seen other “tests” like this such as the one to the left – a bit more complex but the question is the same, which one fills up first.
In my head my response is always “which one fills up… *first*????”.

First! That is my response. Not which one but the fact that the question itself is wrong. It should be “which one fills up” full stop, as “any fool can see”. Not which one fills up first.

I better justify that claim.

Look at this second example, clearly labelled with the icon of utmost smarts Mr Einstein (who, I bet, could not plumb a toilet let alone all these pipes as, back in his time, there were no push-fittings – just copper and solder. I think he once said he was rubbish at practical tasks). They think the key “got ya” is that the pipe from C to D is blocked so water goes from C to J. And then from J to L, as the pipe to I exits higher than that to L. One sneaky trick and then a bit of good physics – it is not the input but the output that counts. So water pours into L and then to F – but not H as, again, a sneaky block has been inserted. So F fills up.

And only F fills up!!!

As as soon as it is full it overflows. It overflows below the height of any other buckets the fluid had flown through – and so no other bucket will fill. Their initial question is flawed. “Which will fill first” indicates one will fill second. No other bucket will fill second. The question is not logical! Bloody idiots.

I can’t say why I initially was struck by the fact that only one bucket would fill when I saw the first example of this, even before I spotted the blocked pipes, but we all think in different ways. It does not make me smarter, just different. I’m interested to see if any of you can point out a flaw in my logic above though as I have a sneaking suspicion I could still be wrong.

However, this is not the major flaw… (I told you that I was also an utterly insufferable smart-arse).

Figure 2 has a drip filling the A tank, figure 1 has a gushing tap filling tank 1. Now ask a simple question. No matter if the tap is gushing or dripping, can the pipe out of tank A (or 1) empty the water faster than the tap supplies it? Well, if the tap is dripping you would say “yes” – but if these tanks are 5mm cubed and the pipe out is less than 1mm thick then no! No scale is given. And in fig 1 the tap is gushing. Have any of you had a shower where the plug hole drains slower than the shower produces water? After 2 or 3 minutes your feet are in a shallow bath and if you keep the shower running it overflows into the rest of the bathroom.

With figure 1, the one with the gushing tap, my brain says that tank 1 will fill as the tap supplies water faster than it will exit through the pipe to tank 5. Tank 1 will fill and piss water all over the shop and whatever goes down the pipe to 5 will eventually fill that tank. Which of tanks 1 and 5 fills first is “it depends” (the classic answer to most I.T performance questions). The question is how much slower is the flow out of the pipe from tank 1 – if it is, on average, above half the rate of the tap flow then tank 5 will actually fill first. In any case, you have soaked the bathroom floor and the people in the flat below are banging on the front door…

With that new idea in your head, if you turn up the tap in figure 2 you can now see that which tank fills first is probably A or.. C – depending on the max flow out of the pipes (all pipes are the same bore so flow rate is the same, increasing header pressure in each tank as they fill allowing…) I think it might be C as it’s outflow is higher in relation to the tank top than B or C…

So depending on the tap flow rate, the drain pipe flow rate and the relative height of the clear output pipe it could be…. absolutely NOT the answer of the Smart-Arse original poster. That is the problem with smart-arses! They are so fixed on their clever “gotcha” answers that they stop thinking of the real world.

And don’t get me started on those images where bananas are added to cans of beer and divided by a plate of cakes, designed to look like some sort of Algebra test. Always they are being smart-arse. They try and hide the introduction of multipliers where all the first examples are addition, or you need to count the number of items, or yellow is 3 and green is 6, or it is in base 23. I was going to include an example (again, a really wrong one) but I’ll save that for another week when I am also in a bad mood.

And, of course, I am a “smart-arse” for pointing this all out. Did I say how much I dislike smart-arses?

I promise you, when you start looking for the smart-arse aspect to all those “are you smart enough” bollocks things on social media it just turns into so much blargh and you can either answer them easily or just decide you can’t be bothered being misdirected. And you can use that saved time for looking at funny kitten videos or, I don’t know, doing some productive work?

Is there any other relevance to your working life? Maybe. Next time your management structure asks you a seemingly benign question about what you are doing this weekend or when you think you are on leave (hang on, “think”?), or how minor will be the impact of a small change to how the business functions to the application you are developing – just switch on the bulb with “smart-arse” painted on it. They are asking you a question where they are expecting you to think in the clear, simplistic way most of us would. Now ask what the bloody hell they are up to.

Friday Philosophy – Are Leaving Presentations A Quaint British Tradition? August 11, 2017

Posted by mwidlake in Friday Philosophy, off-topic, working.
Tags: ,
9 comments

A few days ago a friend, Robert Lockard, started a discussion on Facebook about bad bosses and the strange things they did. I mentioned how one of my first bosses had refused to do my leaving presentation, arguing with his boss (very loudly so all could hear, despite it being in “an office” – a plastic box in the corner) that he did not want to be nice to me and do the presentation. Neither did his boss!

Another friend of mine, Jeff Smith (oh he of SQL*Developer fame) replied to my comment saying “what is a ‘leaving presentation’ – they let you get up in front of everyone and invite them to kiss your a$$ goodbye? Because, that sounds pretty amazing”.
That took me by surprise, it had never occurred to me that “leaving presentations” were not universal. That’s one of the great things about the global reach of social media, it helps you realise that so many things you thing are normal are, in fact, local to your region and are seen as bizarre by others in other cultures.

So that made me wonder how common “leaving presentations” are? I could have asked on Twitter or mailed a few friends, but I have this blog thing I can use…

I suppose I should describe what a “leaving presentation” is, in case other cultures do the same but call it something else (or just do it without a title). So:-

For most of my working life in the UK, if you are a permanent member of staff and it is known you are leaving (so it’s not a case of you being sacked) and it is only you (so it’s not a case of the company slashing the workforce) then “Shirley from Accounts” will take charge and will buy a card. I don’t know why, but it is nearly always a woman who gets the card and the same woman organises most people’s leaving card. The card is sent around the office in an envelope and people sign it (maybe adding some words like “begone foul demon”) and, depending on the organisations, there may be a collection made at the same time. It is beholden on you, the leaver, to pretend to never notice the card going around (or checking how the collection is going. I did know one guy who put money into his own collection to make himself seem more popular!).

Back in the 1980’s/90’s, the places I worked at did not have email – not even internal systems on the mainframe, so lots of envelopes would be going around with company memos or things you had to read and sign you had read. So the odd card going around was easy to ignore. These days of course everything is email so the last few times I’ve noticed a card going around, it stuck out like a sore thumb and you knew it was a leaving (or “congratulations” or “get well soon”) card.

Then on your last day your boss gets the team around, (s)he says you did not steal much and you did not piss off all the users, they give you the card and pretend to care what happens to you in the future. People then clap politely. This not the US, there is no whooping or saying it is the saddest day of their lives. If a collection had been made they will have bought you something with the collection. It is always almost, but not quite totally, useless. You might have to do a small speech and then, the best bit, you take them down the pub and buy everyone a drink (it used to happen at lunch time but now it tends to be more at the end of the day). The round generally costs you more than the collection they gathered for you. Sadly the last bit seems to be dying out.

As a contractor/external consultant you tend to avoid the mild discomfort of it all as you are not around long enough to become part of the team and, well, it’s just not done for over-paid contractors.

Personally, I have always found the whole thing a bit weird and, if I am the leaver, mildly uncomfortable. I try to avoid the whole thing by keeping my exit quiet or stealing enough stationary so that management do not feel I deserve a leaving presentation. Of course, in the case I cite above, I nearly avoided it just by making my bosses hate me. ho Hum.

But I do still try and do one bit, the “taking people to the pub” at the end of the day, even when I am a contractor and we are not supposed to get leaving presentations.

So what if anything do they do where you are? Is the leaver expected to do something (bring in cake, kiss everyone, do a dance)? Do you have a tradition that is eminently sensible and common in your country but, not you you come to think of it, maybe it’s a touch strange? Or do people just leave quietly and no one notices much – except for the scramble for the chair or your higher-res screen?

Friday Philosophy – Sometime The Solution Has To Not Only Match The Problem But Also… August 4, 2017

Posted by mwidlake in Architecture, development, Friday Philosophy, Perceptions, Programming.
Tags: , , ,
3 comments

…The People!

When you design a system for end users, a good designer/developer considers the “UX” – User eXperience. The system has to be acceptable to the end user. This is often expressed as “easy to use” or “fun” or “Quick”. But in reality, the system can fail in all sort of ways but still be a success if the end user gets something out of using it. I’ve said it before and I’ll say it again and again until I give up on this career. In my opinion:

User Acceptance is the number one aim of any I.T. system.

OK, you all know about UX probably. But what about solutions that have no End Users? I’m thinking about when you create a technical solution or fix for an internal system, to be used by fellow I.T. professionals. How many have you considered the skills and temperament of the people who are going to house-keep the solution you create? I suppose I have had opportunity to think about this more than some of you due to how I work:- I’m a consultant who gets called in to fix things and then leave. At times I have chosen a solution that has been influenced by the people who will be looking after it.

I’ll give you an example. At one site that I worked at for about 9 months, I did a lot of work for one system. The developer/systems administrator who looked after the system was…stupid. I don’t really like saying that, we all vary in our skill set, experience, intelligence, *type* of intelligence (I know some people who can speak 3 languages or know a lot about history but could not wire a plug). But this guy really seemed to struggle with logic, cause-and-effect or learning anything new. And I had to help him look after this database application with one main, huge, hulking table. It had to be partitioned, those partitions maintained and the data archived. I implemented the partitioning, I explained partitions to him several times, what was needed to maintain them, where to look in the data dictionary for information. It was like talking to my mum about it. He just seemed not to understand and his efforts to code something to do what needed to be done were woeful.

I knew it was not me, I’ve run enough training sessions and presented so often that I know I can explain myself (Well, I hope so! Maybe I am deluded). He just was not getting it. Maybe he was in the wrong job. So I wrote him a set of SQL-generating scripts to get him going. He kept messing up running them. In the end, I knew I was about to leave and when I did within 3 months the real customer would have a broken system. So I wrote a mini-application in PL/SQL for him to do what needed to be done. And set it to email a central team if it failed. The team he would call when he broke it all again. I also simplified the solution. My original system had some bells and whistles to help with future changes, such as over-riding where new partitions went or how old ones were compressed. I stripped it out to keep it as simple as possible. I altered the solution to suit the person that would run it.

I’ve done something like this a few times over the years. Usually it is more to do with the skill set of the team as opposed to actual ability. I’ve on occasion worked with people who are new to Oracle and my time is limited so, rather than give them a solution written in PL/SQL that none of them know, I have done so with SQL and cookery instructions/shell scripts. It’s not the best solution but it is something they can live with.

More recently I had to look at fixing the performance of some SQL statements. Baselines would have done the job perfectly. However, the team were all Java experts and had no desire at all to learn about database administration. (To be frank, they had no time to learn either, it was the usual situation of them having 75 hours of work each every week as management thought just shouting would get things fixed, not hiring enough people). I strongly suspected that they would forget about the baselines and if they had a problem they would be confused as to what was going on. So I fixed the key SQL statements with a set of hints to force both the overall structure of the execution plans as well as which indexes to use etc – and said over and over and over and over that if they ever changed indexes or migrated to a later version of Oracle, those hints would need reviewing. They were, in effect, part of their code base. A big advantage of the hints was that they would see them in their code and it would remind them what had been done. They seemed happy with that.

My point is, sometimes the “best” solution is not the correct one, even when you are keeping within the walls of the computing department(s). Sometimes you need to think about who you are giving the solution to and change the solution accordingly.

Friday Philosophy – Improving Your Working Life July 14, 2017

Posted by mwidlake in Friday Philosophy, humour, Perceptions.
Tags: , , ,
1 comment so far

If I got you all to write down the top 5 things that make working bearable, and then got you to make a list of the top 5 things that make working enjoyable, I have a suspicion there will be one thing high on the “Enjoyable” list that may not even be on the “Bearable” list:

Being in a good team.

This one thing can make a real difference to your working life. I know this is true for me and it’s something I’ve heard other people say a lot. The team you are in can make up for a lot of negative things about any given job. I’ve found myself in roles where I am unsuitable for the task, or under a ridiculously high workload, even being paid much less than I know I am worth. But if I have been in a good team, working with people I like (well, at least some of them!) it makes it all a lot better. A lot, lot better. Think about the jobs or roles you have most enjoyed in your life. In any of them did you not like the team you were in?

Unfortunately in most teams there are people like Miserable Kevin, who does nothing but complain and slag everyone off. Or Oddly Quiet Katrina who is about as much fun to be with as eating a jar of pickled frogs.

You might expect me to now suggest you leave any team you do not like being in – but that is impractical advice for most people and impossible for many. And in fact I think there is a much, much better option:

Don’t change which team you are in – Change the team you are in.

You may think that it’s the responsibility of the team leader or maybe “management” to create a good team, perhaps by punishing or getting rid of Kevin and Katrina. And to a certain extent you are right. But most team leaders got the job for reasons other than their soft skills (the ones that allow them to understand and work with people – Heck, most of us in I.T. are there at least partially as we do not like other bloody people!). But actually, anyone in the team can change the team into somewhere more pleasant to be. I’m willing to bet that if you have worked in teams that are fun and satisfying to be in, the person or people who made it that way were not the team leader. Or at least not limited to the team leader.

Be warned, I am not claiming it is easy to change a team and it can take a while. But I think anyone can improve their team, if they put in a little effort. And you can do it in small, easy steps.

It helps if you know or learn a little about how different people think, a little bit of pop-psychology can go a long way (all those management training courses I once went on helped me a lot in this) but in essence you just need to help people to talk, relax, interact and get to know each other a little better. Try to see things from their side, consider why they are being objectionable or difficult. And be nice to people. Not in a creepy way, but just try to not lose your temper at someone who is being annoying, do not join in with the weekly team moan about Kevin behind his back. I’m not saying you should not disapprove if someone is being an arse, but you can make it clear you are not happy with them without being antagonistic or retaliating. Just one person doing this can make a big difference. I know, I’ve done it.

Another thing to do is try to include people more. If you and another team member are discussing an issue, maybe ask Oddly Quiet Katrina what they think. If you can find a common interest with someone you don’t know well in the team, try to talk to them about it. I don’t mean do what one bloke I know did – come in the office, ask how your weekend went and then look stunned with boredom when you told him – He had no real interest, he was playing a role, and doing it badly. If you are going to try and draw someone out a little, it really helps to be interested in what they say.

Once thing I have found helps significantly in creating a better team is suggesting the occasional coffee, go to lunch together (especially if it means going out the office to get something, even if only a sandwich) or have an after work pint. {I’ve previously mentioned this as Team Ice-Cream}. It really helps if you know at least 1 other person who will join in; and you are not trying to get everyone there. You just let people know, go and have the coffee or drink and let whoever wishes to join in. Sometimes there will be someone who will refuse to join in but, heck, the last thing you want to do is try and make it “enforced team fun” – as that never works well. I’ve done this in 3 or 4 roles now and after a few weeks (and it can take weeks and months) most of the team was coming along most of the time. And the intra-team bitching had plummeted. I even saw people help each other without being told to!

One thing to mention – don’t be too enthusiastic and gung-ho about it. Don’t come in first thing and cry “Hi team! How’s it all going! Hi-Fives! Who’s for a pint after work!?”. This will make you into Psychotic Barry. No one trusts Psychotic Barry.

The key principle is to be a bit more friendly and inclusive without people really noticing you are doing it. Keep it all low key.

Why should *you* be the person to put in the effort? Well, think of it selfishly. It will be nicer for you if being at work is less bloody awful. Also, it’s a skill you can use everywhere! Each time you change team, you can see if you can improve the new team a bit and see if you can do it more effectively. You can use it in social situations too. Maybe even the wider family, but if you try that and it all goes horribly wrong, don’t sue me.

Another reason to do it? Many people who know me in the flesh may be surprised to know that I’m not naturally very good in a crowd. I got a lot better at it, and more comfortable with people in general, by trying to improve the team.

So go change your team. It’s actually easier than you think and, heck, what have you to lose but some wasted effort and a couple of quiet evenings in a pub on your own (or maybe worst case scenario, just you and Psychotic Barry)? At least you will know that you gave it a go, it is now definitely the team leader’s problem.

One final word of warning. That bloke over there who is a militant vegan, self-appointed know-er of all and despises all contractors on philosophical principles? Don’t expect to get anywhere with him and don’t try too hard. Some people need professional help!

Friday Philosophy – Robots Rising & Tech Taking Over? July 7, 2017

Posted by mwidlake in ethics, Friday Philosophy, future, Perceptions.
Tags: , , ,
7 comments

Today I saw some cracking photographs of a lighthouse. How many of us have at some point wondered if it might be nice to be a lighthouse keeper? The solitude, the scenery, the stoic fortitude in the face of the storm – quite literally. (Thank you Brendan Tierney for the photo I’ve stolen from him).

No one lives here anymore

It’s an odd job lighthouse keeper, it holds a special place in Western culture and literature. A job to be held by those a little apart from society and yet with a dedication to the betterment of mankind. I suspect a lot of people in I.T. (and the wider community) find a resonance in that, as so many of us are a little bit apart and yet intelligent & care.

Well, you can’t be a lighthouse keeper anymore. At least, in the UK you can’t. Check out This web site about UK lighthouses and lighthouse keeping. That job, that vocation, was handed over to automated I.T. systems a few years ago, effectively handed to robots & technology. You might think you know where I am going with this, and initially you will be right, but bear with me.

I’ve been thinking a lot over the last 2 or 3 years about the increasing use of technology and robotics to do tasks that we humans have been doing. An obvious one is autonomous driving vehicles, where The I.T. smarts and sensors are leaping along incredibly fast. I am in a long-running “argument” with a friend about when fully autonomous vehicles will be a reality on public roads. He says under 5 years, I think it is more (I started saying more than 5 years to him in 2016, so, giving some leeway, I say not before December 2021 will we see fully autonomous vehicles driving from a town centre to another town centre, sharing lanes with human drivers – specific enough Neil?). But self-driving vehicles will be safer than humans “soon”, and cheaper than employing humans, so companies will swap to it. That will end a lot of employment.

I know others have pointed this out and it is not as if history isn’t almost a continuous tale of technology assisting or replacing human effort. Tolpuddle martyrs, dark satanic mills and all that. Industrialisation of farming has put a lot of farm labours out of work but we could not feed the current mass of humanity without it. People move on to new tasks.

But the difference now is not that we are handing jobs to a slightly better automated system where we still need some human control, we are removing the human element. And we are doing this in a lot of areas in a very short space of time. Factories are becoming far more automated, we order our goods online and huge conveyor robotic systems are being built to do the packing, with fewer people involved and lower long-term costs.

But it’s not just physical tasks that are being automated. Genetic algorithms, neural nets, deep data and machine learning is starting to replace tasks that have needed human interaction. Chatbots are getting smarter, to the point where they are used by companies as first-line support {often laughably poorly at present, but it is getting better – and Oracle do have an interest as was covered in Oracle Scene recently {sorry, that link might not work for long}. Expert systems have been developed that can judge simple court cases such as parking fines and beat humans at spotting pre-cancerous cells in tissue samples.

Oracle and the Bots

We now see expert computer systems breaking a lot of barriers and doing things that until now have been deemed uniquely human cerebral tasks. Computers won at playing chess 10+ years ago, they triumphed in “Go” last year and now they can win at versions of Poker where you are not sure of the data and have to read the play of your opponent – in effect second guess a human. Currently all these systems are very expensive, highly focused and specific to a task, built on huge data sets and using fine-tuned sets of algorithms, to do one task. We have nothing as generally capable as a 5 year old child or even a dog.

Only, we keep building systems that are better and better at specific tasks.

So why do I say this bothers me but not in the way you would expect? It’s because I keep seeing “thought leaders” present the same denial of these impacts on us in I.T. of the systems we as an industry are developing, platitudes that we are a special case and will be OK. Several times over the last couple of years I see some utter pillock in a suit from upper management telling a crowd of I.T. experts that we will be just fine as we are smart and we can stop doing the easy tasks and concentrate on the harder ones, use our brains more.

This is balls for two reasons. Firstly:

What about everyone who is below smart?

Most of us in I.T. are not only above average intelligence (probably IQs of 125 and upwards), we are surrounded by similar smart people. Our life partners are generally above normal intelligence, we work in teams who are above-average smart, we probably mostly socialise with generally intelligent people (as a raft of psychological studies show, we gravitate to those at a similar IQ to ourselves, irrespective of where we are on the scale). Even the end users we abuse tend to be above average intelligence. I suspect that most of us somehow don’t “get” that well over 60% of people are not only less intelligent than we are but they have few options if our society passes the jobs they can do to computers and robots. And they are not that likely to be philosophical about having no point to their lives and being poorer. They’re probably going to be very angry, very poor and pretty pissed off with smart-arses who say that “we are OK” – and there are a lot, lot more of them than us.

And that leads to the second reason it is balls.

The smart work will also be doable by Tech

As I’ve said already, we can already create technological systems that can beat us at specific cerebral tasks and there is going to be a small and smaller pool of work for highly-intelligent workers. Let’s face it, a lot of what we do now in I.T. is drudge and boring, there is not really that much smart work needed doing, even in this industry stacked by us smart people. And doing work that really needs you to be smart is tiring (well, I find it tiring!). And our work in I.T. tends to be logic-based and what are computers good at? We will just have a breathing space before our work is also more cheaply done by computers.

I’m annoyed as I think those of use who are involved in this revolution are being told a deluded lie that we will be OK if it pans out like I have just said. Those extra 25+ IQ points are not going to keep us special for very long.

So if computers can drive the taxis & lorries, manage the steel works and build the cars, derive the best drug treatment and give the perfect injection (yep, theoretically a robot already wins on that) what do we as humans do?

Only a few people can be “utterly human” – artists, poets and philosophers. And we do not need 7 billion of them anyway.

We could try and legislate against it, tax robots hard. But those who make a lot of money already run the “free market economy” and will continue to do so. If Robots and computer programs do tasks more cheaply, companies that uses robots will rise to the top of any monetary-based society, i.e. a capitalist society. What will change what has been in place for 100+ years? I can’t see the currently rich and powerful objecting to working methods that increase their wealth. Even if it means more and more poorer people.

Some argue for a basic living wage to keep us all alive – fed, warm and basic healthcare whilst machines do the work. That would give us that often cited nirvana of being free to do “what we want”. But if you have no job, what do you do? Again, for those of us with high IQ we can maybe come up with things to do. Maybe. I seem to be relatively happy being semi-retired, but I’ve done a lot of stuff and had my time of striving to achieve. And still do. But how about those who are IQ 100 and below? I suspect entertaining yourself is not as easy. I think anger, resentment and the feeling of being disenfranchised is just going to continue increasing. I think it’s why the UK is leaving Europe and why the US has an egotistical man-child as president. More and more normal people are unhappy with their lot and see no good future – so they vote for a change. ANY change. Even if it is crazy change.

I know, not a very happy Friday Philosophy. Will someone please tell me it will all be OK? And I mean OK for everyone, not just us “smart” people.