Lets stop the abstraction!

There is an old saying - "Give a programmer 5 hours to write a particular program, and they will spend 4 hours writing another program that can write the original program in one hour!".

Increasingly these days, it is hitting me just how true that old adage is.  I have been cutting code for over 30 years now, and more than ever I am of the opinion that the world of programming is just drowning in a sea of constantly evolving tools.

It is no longer enough to just pick a language and become proficient in that, and just plain write code using that language.  Nowadays, it is a constant dance of selecting frameworks, database layers, deployment layers, and even additional languages that simplify the writing of the base language of your choice!

We all know that at the core, all computers just function on a series of 1's and 0's - the turning on and off of electrical impulses.  The closest we can get to that is to write in assembler code - manipulating the registers and directly accessing blocks of memory in the hardware.  But that, as we know, is fraught with danger.

So we rely on higher level languages, which are then compiled or interpreted down to machine language so we can run our apps using code that is easier for us to understand as humans.  For years, we simply picked a high level language, then let the compiler or interpreter get on with converting that language into machine language.

But lets look at an ubiquitous language of today - Javascript.  Now Javascript in itself is a fairly simple language, bearing close resemblance to C and other languages, so that programmers can usually pick up the nuances and write decent code in short order.  It is also an interpreted language, usually being converted into machine instructions at run time within a browser.  Not the most efficient language, but still serviceable and functional.

But somewhere along the line, someone decided that Javascript was still a little too hard, so they invented a simplified version called CoffeeScript.  Lets paint the picture here - we now have a specialised language which is then converted into another language which is then interpreted within an environment written in another language which then converts everything into machine language.

But it didn't just stop there.  CoffeeScript itself became bastardised over time, and now exists in about a dozen different flavours.  As of writing this post, there are around 40 different languages that 'compile' down to Javascript.  This is not counting the hundreds or so other extensions that generate javascript code based on a whole other language.

It is no longer enough to say that you know CoffeeScript.  You have to now define the flavour of CoffeeScript that you are familiar with.  You have to remember a whole new syntax to compensate for the fact that you could not remember another syntax in the first place.

I just can't wait to see the next iteration of languages that compile down to CoffeeScript, which then compiles down to Javascript, which then compiles down to.....  You get the picture.

I am theorising here that there is a glut of excess programmers out there who are not actively engaged in solving real world problems, so they take out their energy and time by writing yet another interpreter/compiler for a perfectly valid working language.

To put it in a more primal context, the village is thirsty, but rather than locating water or digging a well, the villagers are busy improving each other's shovels.  We will all be dehydrated soon, but man will we have some great shovels...

 

 

 

The lost art of Customer Service...

"Don't worry - you're not the first woman to have a baby".  That was a line I clearly remember coming from a nurse when we were in hospital having our first baby son.  Nothing was really wrong - things were going well (if a little long), and we were just two people who were anxious about embarking on this remarkable new journey in our lives.  The nurses were great.  They were jaded veterans who had done this many times before.

I mean, I realised that there were probably thousands of women giving birth across the planet during this same time, but for us, it was a time of change and redefining of who we were.

Not all things are as massively life changing as having a baby.  But in the small things still lie important forks in our life path.

Earlier this month, I found out that I needed to wear glasses for close up work.  Back in my younger days at flying school, I had better than average 20/10 vision, and I prided myself in not having to wear glasses like a lot of my peers.  In a way, that fact help to define me as a person, and the knowledge that I now had to resort to glasses was a dent in that perfectly moulded idea of who I was.

When I went in to pick up my glasses, I was strangely nervous.  The young lady who fetched my prescription and asked me to try them on was perfectly nice and friendly, but she was also busy and I could see that she just wanted me to like them and be off.  It was all part of a routine process for her.

I tried to explain that this was my first pair of glasses ever, and I kept trying to stretch out the interaction a little more than I normally would have.  I guess I was just waiting for her to reassure me that it was all OK, and that the glasses looked good and life would go on as normal.

In the end, I walked out and trust in myself that this new fork in my road would lead to good things.  But I couldn't help shaking the feeling once again that I was just a cog in a big machine.  Just an Input that had to be processed and Output again.

I lead me to think that a lot of skilled professions have basically come down to that - a big processing machine.  I know I am guilty of that.  Pressure to turn clients/jobs/projects over and keep revenue flowing will lead to the commoditisation of the humanness of the interaction.

I know I am guilty of it.  It is easy to become complacent, bored, jaded with doing the same thing day after day.  The magic goes out of it for us, and that is reflected in the way we deal with those that we are committed to helping.

Perhaps it is time for us to start giving back a piece of ourselves in every interaction?  To treat every transaction like it is the first time - for BOTH myself and the recipient.

 

Why do teachers Teach ?

Yesterday afternoon, my younger son (aged 12) paused as he walked past me, and asked: "Dad, why do teachers teach?".

I was a bit puzzled by his question, and decided to answer it at face value.  "Well son, because it is their job I guess... to teach people".

"No", he quickly answered, furrowing his brow in a mixture of exasperation at my shallowness and his attempts to articulate the question more meaningfully.

"I mean" he continued, "They seem to do the SAME thing every day.  They just sit in the classroom and teach".  He continued "In 10 years or 20 years time, they will see kids they taught who are successful and millionaires, and they will still be doing the same thing - TEACHING !?".

Ah, I was beginning to see what he was getting at.  I paused and thought about my answer.

"Well", I replied, "For a lot of people, just money and success aren't important to them.  What IS important to them is to make a difference and change lives.  That's why some people teach, and some work in health care or emergency services.  Not everyone has the goal to become a millionaire".

I watched his forehead crinkle even further as he digested this information.

"But WHY would they do it? Don't they get sick of not getting ahead themselves?  Year after year, with new kids just coming in and then going on to be successful while they stay the same??" he asked.

"Exactly!" I answered him.  "You just answered your own question.  Every year they will get a new batch of fresh minds that they can work their magic on.  They have a whole year to make better people out of them, then pass them on to the next teacher - whether it is a school teachers, university professor or boss.  What keeps them excited is the new possibilities each year.  That is exciting, isn't it?  Besides, they can always get promoted within the school.  Teachers can become Principals, Principals can become district administrators and so on...".

His expression changed from puzzlement to (what I hope is) understanding.  He went quiet and didn't speak to me again, but wandered off somewhere else to ponder this mystery.

I hope that I have sowed the seeds of some deeper thinking for him, and to remind him that success is not just measured in terms of dollars in the bank.  It is my fault really - when he was little, most of our made up bedtime stories used to centre around how he would be a high flying millionaire as a grown up due to his vast worldwide doughnut empire.  It even included stories of him in his flying Airbus A380 doughnut factory, and having a Bugatti Veyron in every city to drive around when he got there.

I see now that I am going to have to delicately unpick the definitions of success that have been sowed in his mind, and remind him that alongside monetary success, there must also be compassion, humanity, and a desire to change the world into a better place...

 

Cloud Overload

About 5 years ago, my PC desktop screen was starting to look a lot like the image here on the left.  Cluttered with a myriad of windows, it was getting so that I couldn't even bring a background window to the foreground because (a) I couldn't identify it any longer and (b) no matter where I clicked on a background window, it was a 'hot spot' that caused something to happen when I didn't want it to.  I just wanted to bring the window to the front but ended up executing a macro or changing the view etc because modern applications have pretty much < 1% of the active window that is not a clickable area for executing something !

So in 2012, we successfully converted ALL of our usual desktop apps over to cloud, or web based services.  This was wonderful.  It gave me bragging rights at parties and a feeling of smug accomplishment.

But just today, I realised that I have created a monster in another form.  You see, I just realised that my normal working day now requires me to open up at least 25 tabs on my browser.  Just to get my day to day work done.  For some specialist tasks, I am looking at around 40 browser windows.

This is NOT counting the other tabs I will need to open up for research or fact finding.

I am beginning to loath it when Chrome crashes, and when I click 'Restore Tabs', I have to wait about 10 minutes whilst it reloads content in 50+ tabs.

I used to get upset when the number of tabs negated the titles of the web sites, so I began to rely on the little favicons to identify which tabs did what.  Now even the favicons are being obscured by a veritable tsunami of grey tabs, and it is common for me to accidentally hit the 'x' close button instead of the actual tab when switching with a mouse.  Alas I lack the pin point mouse accuracy of an SAS sniper.

I need to consider shutting down some of our web based services.  Either that, or get a browser that is more command driven.  I have been intrigued by the Vivaldi browser project, started by the guys who made Opera, but that is still in early days.

How ironic.  Though I am developing apps for modern web and touch based devices, I seem to be craving my tools be command driven, just like when I started on DOS based terminals back in 1985...