FreakoutITGeek's Blog

Random IT postings from Freakz

Monthly Archives: June 2013

3 steps to avoiding a Pink Elephant

A few years ago my wife told me about a course that was sweeping through her work. As usual this printed booklet of business guidance was not some marvellous new discovery by someone within the organisation that had just had an epiphany, nope, instead it was prompted by management who were looking to make changes to the culture of the organisation.

The book in question was “Drop the Pink Elephant: 15 Ways to Say What You Mean… and Mean What You Say” by Bill McFarlan (Foreword by Eamonn Holmes)

After my wife read the book she advised that it could be something I would be interested in, so I gave it a try.

The book is well written, funny and well presented ( considering Bill’s background I’m not surprised) but the book becomes something more when you start relating it to your own life.

Let me take you back a few (quite a few) years.

When I was in high school I realised that if I had forgotten to do my homework, the best way to deal with it was to say to the teacher before the class had started, instead of hiding the issue and being caught out in front of everyone. I still use this principal today, there’s no point in hiding issues, as they will happen, and hiding them doesn’t help to resolve them. Being open and honest allows such issues to be discussed and resolutions or work arounds to be found ( this is where my systems thinking kicks in – that’s for another post). Hiding issues, in my opinion, only compounds the issue and leads to greater problems later.

So how does my high school attitude to homework and the book relate?

Well they both show that being honest, helpful and open are the best policy.

The key point I took from the book was not to hide what is happening ( the pink elephant of the title) but to acknowledge the issue and take ownership ( a management phrase I don’t like but fits the bill). There is a section in the book about this key area, it mentions (to paraphrase) a 3 stage process…

  1. When issues occur it is better to admit there is an issue (ie apologise)
  2. Explain what has happened
  3. Explain what is going to be done to resolve the issue, not just this time but in the future.

It appears, from what I have heard that some organisations don’t like to apologise as this appear to be an admittance of failure, guilt or other such issue. Admitting to such issues in some
organisations is seen as failure and is seen as a possible route to court action. Personally I would rather apologise for the issue, inconvenience or other factors in a manner that doesn’t leave the organisation open to such action, but allows the recipient (customer) feeling that their feelings, frustrations and issues acknowledged and therefore more willing to engage with the organisation and help in the process of resolving the issue and repair the broken relationship between both parties.

Now this is a simplistic overview, I feel that there is so much more to this topic, such as listening to the customers issues, trying to understand their view point ( there’s the systems thinking again) and working with them to reach a final goal that is to everyone’s benefit.

I highly recommend reading the book (I may even download it to my iPhone) as it has a lot of insights and along with my OU courses has, I believe, had a beneficial influence on my life.

Stick to the script

My first taste of real IT was as part of a one weeks high school “works experience” at Strathclyde University’s IT department back in the 90’s (it probably was called data processing or something back then). The systems were all unix and I was used to an Acorn Electron and BBC Master, both running a version of the BASIC programming language, it was a tough learning curve, especially when I was given a manual, pad of paper and asked to write a script. I can’t remember what the script was supposed to do but I remember being lost in this manual, trying to figure out this strange programming language that made no sense to me.

The university IT guys obviously didn’t understand my situation as their experiences were all with Unix shell scripting and possibly some C programming. To them I was a waste of space as ‘all computers worked the same’ and this should be simple for a kid with a home computer.

As I grew up I learnt Pascal, C, COMAL, COBOL at college and tried to teach myself Assembly language and C++ (both with not much luck) at home.

It’s not until recently that my programming skills have come back into use. Not just for my Open University courses on Java / Object Oriented Programming (which would have helped back in the 90s when I was trying to get my head round Objects after 2 years of procedural programming in Pascal and years toying with BBC BASIC) & web design using JavaScript. My programming has come into use more recently as part of my current support role.

The last year (or so) I have written more programs in AutoIT and Batch (DOS) scripting than I have done in a long time.

As with all programming languages, sometimes there are ‘quirks’ that you have to get your head around but it’s amazing what you can do with a bit of creativity.

One of my most recent Batch scripting triumphs was to resolve an issue we have with Altiris.

We have a wide range of sites in one of our sections ( 13 large sites with servers and 51 smaller sites with a Local NAS each), with each site needing support via Altiris. The central Altiris server does not have the spare capacity for all the installs and whilst the network links are sufficient for standard use, pulling multiple installs over the links can bring sites to a crawl.

My aim was to create a script that could be used to determine the site, check the local data store ( NAS or server) for the install and if not present copy the files from the central Altiris server to the local data store, then run the install. This sounds quite simple bit you need some safeguards to prevent multiple PCs from copying the files. some way to check the files copied successfully last time and a check that if the copy was taking too long that another computer would take over (assuming that the original had failed to copy the files – ie powered off or disconnected from the network ).

So what appeared, at first look, to be a simple little script, soon became a challenge.

I’m happy to announce that the script is currently working. So what does the script do?

First it determines the site, originally this was done using the computer name as each site names it’s PCs with a site specific prefix. After a bit of planning it was realised that some support staff take the computers to one of the larger sites when the machines are rebuilt or if there is a large number to be built. So to account for this it was realised that the unique identifier for each site was the IP address, or in our case the gateway address, using a FOR loop it was easy to strip the gateway address from the IPConfig command.
Another FOR loop then striped the IP into the data we needed and then compared it to a CSV file to get the Server / NAS details.

So that was the easy part done, we know the site & local server / NAS ( data store) but what about the rest?

Checking for the files is easy using IF EXIST, but what if it’s not there. It would be easy to just copy the files but what if 20 machines are all trying to copy at the same time? Simple, create a lock file. Each machine ruining the job cheeks for the file, if it exists it loops until the file is deleted. If the lock file doesn’t exist it is created with the name of the creating PC (for manual error checking) before using robocopy to copy the files/ directories over (other tools are available & better but Robocopy comes with Windows 7 and a version exists for Windows XP – so the easy option was taken), once
Robocopy completes the lock file is deleted and all the PCs continue with the install from the local data store.

So what if the files exist but there have been changes ? This was a bit trickier, I used the DIR command to check the number of files in the directory (and sub folders) as well as using DIR to report the size of the directory(s). This should be a simple (but not completely fool proof) way to check for changes and act accordingly.

So what if a PC is powered off and the lock file exists? Well there are two checks, the first is when the script runs – it checks the date of the lock file and if it doesn’t match the current date then it’s deleted (keeping it simple). The second check is if the batch script comes out of the loop and the lock file is still there then it sends an error back.

There are loads of other error checking in the script and there is a heavy use of CALL, IF and FOR commands within the script to do what it does, but it does everything I had planned and more than the original concept.

So, after a lot of testing and a few changes, I’m now off to look at my next challenge.

If this post is of interest please let me know by liking or posting a comment and I may add some more of the same.

Think Different

Many people know the phrase ‘think different’ from Apple’s successful advertising campaign. It’s still something that I associate Apple with today, from their continuous strive to push technology and design forward to things as simple as their Apple Stores.

Apple does what *it* thinks are the best things to do, not what the industry, press or public think and that makes it what it is today.

Now I’ve already gone off on a tangent.

This post is really about something that I’ve felt for a long time. It probably started at the latter stages of primary school, into high school and is a part of my life every day, however I never realised it’s impact until I did my Open University degree.

To me, thinking different is something everyone does whether they realise it or not. Whilst, as a teenager, I decided not to be a sheep and follow what everyone else did and instead decided to do the things I was interested in ( sometimes for the better, or worse) it wasn’t until two of the courses on systems thinking touched on the concept of ‘world view’ that I started seeing the power of not just empathy but in trying to see things from other people’s vantage point.

Now this may sound a bit basic, but consider how a child sees the world, with their basic understanding of their environment learnt from exploration, trial and error, with their environment as their teacher ( and yes that environment includes other people such as friends, family, neighbours, teachers etc.. all with differing views, values, skills, knowledge & dare I say it their hangups, issues and problems). To a child everything is new, an exciting, never ending, constantly changing world of learning. Their view is unlimited but it has some constraints in the form of what they can see (their access to or view of [due to height, locks or physical barriers]), hear and gain access to (sometimes for their own protection).

Now consider an adult in the same situation, they have gone through the education system and been taught the rules of life, what to do, what to say, how to act, warned of the dangers and learnt to be cautious. Their view is restricted by that teaching, their values, their Environment (work, money, education, religion, laws, rules, beliefs)

OK I think I’ve gone too far too fast. Lets bring this back. let’s consider a simple example.

Identical twins are looking at a scenic garden from a terrace. The garden is divided into sections by hedging. If one of those twins is standing on a box or something which makes the whole garden viewable, their view will be more enjoyable (assuming you like gardens) than their twin who can only see a small section, with their view restricted by the hedge(s).

So what I’m saying is that people are affected by their life experiences or ‘world view’ (There is a German word for this but I could never remember it from the courses ).

So everyone lives different lives, have different experiences, see things from different angles and no one can truly share or know what you know, you are unique. And so is everyone else.

I realised this in high school but life got in the way and I think I lost that insight until I studied those OU courses.

So once you know this info, what’s the use?

Well if you realise that your view on something is not the same as someone else, I hope that you would realise that in order to help people you have to realise that you need to try and understand their viewpoint first.

This involves finding out more about them, why they feel the way that they do, what lead them to this feeling and what they need from you in order to satisfy whatever need it is that have come to you to have satisfied.

This may sound a bit weird, but if you think about it everyone needs something from someone else. Whether it be help from a doctor, friend or work colleague. Goods from a shop. A service from a company. Or the other way round a customer, friend, colleague, family member that is looking for something from you: help, a person to talk to, an item, time or something else.

So what I’m saying here is please don’t judge others, learn from them, engage with them, find out their ‘world view’ and your world may just turn out a tiny bit better.