Archive | December 2015

Core Process

Another one from some years ago, when I was a member of the now-defunct business networking site, ecademy. Only two comments in this preface: First, I’m surprised that the links still work – after a fashion, at least. The new owner had his developers hack the guts out of ecademy and so top-posts are mangled beyond legibility, and much of the following discussions – where the real value lay – has been lost. Second, the phrase we came up with still resonates with me. At the time, I didn’t really expect it to stay with me as long as it has.

Anyone who has been around ecademy for a while might recall a blog I wrote a few years ago on a fictitious self improvement program named CPR. This was a light-hearted poke at a something which seemed to be quite in vogue at the time: Core Process. The blog enjoyed a brief flurry of activity and I hope the participants had fun but after a fairly short time it disappeared from the front page and was forgotten. Or so I thought.

A couple of weeks ago I received a telephone call from Nick Heap. Nick explained that part of his business offering is Core Process and he also runs a Core Process group on Linked In. He told me that someone had recently posted a link to my CPR blog, and that was the reason for his call. My first thought was that I was going to get a telling off but instead, Nick asked me if I would like to try Core Process for myself. It would take a couple of hours at the most, and I might find it useful. If nothing else, at least I’d then know a bit more about what it was. He also said it would be OK for me to post my thoughts about it in a blog.

Although I’m quite sceptical about such things, honest scepticism requires that from time to time, if not all of the time, we re-examine our attitudes and beliefs, so I accepted Nick’s offer and we arranged a call on Skype a few days later.

The conversation followed a set format, which Nick outlined at the beginning of the call. Without going into too much detail, Nick first gave a brief history of what Core Process is and how it came to be invented, after which I was asked to come up with three or four stories about events during my life when I had felt particularly “good”. I found this difficult, but managed to dredge up three stories and we were going to move on to the next stage when another story came into my head and I asked to tell it. During the course of each story, Nick captured the essence of it by jotting down a handful of key words.

Next Nick asked me to choose one story to focus upon and to extract from it three verbs and three nouns which describe the main themes running through that story. From these we then settled on two words – again a verb and a noun – which was intended to encapsulate the theme that ran through the chosen story. Coming up with the noun was easy; almost obvious. But it took several minutes to settle on the verb, but when I did it was a real “Aha!” moment. Surprisingly to me, neither of the words was in the original list.

Once the two-word phrase had been selected, we tested it by examining the other stories: was it a good fit? It turned out it was for three of them and could be “made to fit” in the remaining story, although it wasn’t perfect. However, that story had been told in desperation while I was anxiously racking my brains for stories where I had “felt good” and so I wasn’t too concerned about that.

There was a final check which I won’t spoil for anyone who might decide to explore their own Core Process, but I have to say it was the only point where my sceptical gland came into play during the entire conversation.

Overall, I was left with a good impression of the process and of Nick. He has a very good voice on the telephone and although I was a little nervous at the start of the call his relaxed manner and reassuring tone put me at my ease almost immediately. My moments of brief panic when I got “stuck” at various stages were calmed by Nick’s reassurances that this was a normal reaction and to just relax; the story will come.

At the time I felt elated and I almost wanted to write this blog straight away, however I’ve been on too many “personal skills” courses when in corporate life to not recognise that the novelty might wear off and I might feel very differently about it after a few days. It’s been a little over a week now, and indeed that initial elation has faded somewhat but I’m still more than happy with the result.

Will determining my “Core Process” change my life in any significant way? Probably not. I don’t think I subscribe to the central idea of Core Process: that there is a single theme running through each of our lives which Core Process can expose. On the other hand I am confident that it captures an important part of my personality, quite probably the most important and almost certainly that which informs much of what I do and how I think and behave. I think what I am saying is that I am no longer sceptical about Core Process: I don’t buy the whole package but I think it will be useful to me.

I’m not going to tell you what we came up with, mainly because it has real meaning only to me: as a phrase taken on its own it is open to various interpretations, none of which would match mine.

I expect this post will make some people laugh: that’s fine – laughter is good, and I used to laugh too so in that sense I deserve it. I hope I’ve done justice to the process in my description and I’m sure I must have forgotten some significant detail but my excuse is that I was concentrating too hard on the various activities to take very much notice of how the process actually worked.

If this blog has made you curious about Core Process, please get in touch with Nick who can tell you more about it. The challenge I have now is to work out how to condense this post into a testimonial.

Advertisements

Welcome To Oz: Living In The Matrix

In the 1939 film The Wizard of Oz we discover at the end that the events of the story are a dream from which Dorothy eventually wakes (this is different from the book The Wonderful Wizard of Oz by L Frank Baum upon which the film was based.) We can empathise with Dorothy – when we look back on our dreams in the minutes after waking we are often amused at how ridiculous they are in retrospect but during the dream it all seemed perfectly logical.

Philosophers and Writers have long speculated about this inability to tell the difference between dreams and “reality”.

In the 4th Century BC, Zhuangzhi said:

Once Chuang Chou dreamt he was a butterfly, a butterfly flitting and fluttering around, happy with himself and doing as he pleased. He didn’t know he was Chuang Chou. Suddenly he woke up and there he was, solid and unmistakable Chuang Chou. But he didn’t know if he was Chuang Chou who had dreamt he was a butterfly, or a butterfly dreaming he was Chuang Chou. Between Chuang Chou and a butterfly there must be some distinction! This is called the Transformation of Things. (2, tr. Burton Watson 1968:49)

Zhuangzi could not know whether he really was Zhuangzi and not a butterfly dreaming of being Zhuangz.

Descartes expanded on this with cogito ergo sum – I think, therefore I am – explaining that all any of us can know is that we exist; nothing more. And the Brain in a Vat thought experiment considers the impossibility of knowing whether we are experiencing the Real World or some artificially induced view of the world.

In H.P Lovecraft’s short story, Polaris, the subject of the story awakes from a dream of guarding a city on a far off planet, only to realise with horror that it is this apparent reality which is the dream, he has fallen asleep at his post and the city’s enemies will now pass undetected.

And so on.

But recently another idea has begun to penetrate the public consciousness. The idea that we do not dwell in a physical universe but are, in fact, simulated beings in a highly-sophisticated virtual reality environment. We have already become used to this idea through the mediums of film, such as The Matrix series, or in novels and short stories by writers such as Greg Egan, a Computer Programmer turned Science Fiction Writer whose stories are centered around human-like consciousnesses inhabiting virtual worlds, or people whose brains have been replaced by sophisticated Quantum computers known as Qusps. But what many people don’t realise is that this idea is being seriously explored by modern philosophers, perhaps the most recent and best known of whom is Nick Bostrom, whose Simulation Argument rests on three propositions one of which, Bostrom argues, must be true:

“… at least one of the following propositions is true: (1) the human species is very likely to go extinct before reaching a “posthuman” stage; (2) any posthuman civilization is extremely unlikely to run a significant number of simulations of their evolutionary history (or variations thereof); (3) we are almost certainly living in a computer simulation. It follows that the belief that there is a significant chance that we will one day become posthumans who run ancestor-simulations is false, unless we are currently living in a simulation.”

Most people who come across this argument dismiss it, believing the notion that we are living in a simulation is nonsense: “Of course it’s not a simulation. I can look around me, see the world, touch it, smell, taste, feel it. It seems pretty real to me.” But how can we be so sure? Our five senses – sight, hearing, touch, smell and taste – are as far as we know all relayed to us. We do not experience anything directly; the information from our senses is first filtered and interpreted by the brain. Those sensations could just as easily by artificially induced; like the Brain in the Vat, we have no way of knowing whether our experience is real or fed to us by sophisticated Virtual Reality software.

Consciousness: We find it hard to believe that a computer could be conscious. But why? Personally, I find it just as plausible that a lump of meat can be conscious – an opinion shared by the machines in Terry Besson’s short story They’re Made Out Of Meat. And many theorists and futurists point to the year 2045 as the most likely point when machine intelligence – that is, simulated intelligence – will finally equal and then begin to surpass our own.

We make a distinction between our normal conscious state and the unconscious state when we are asleep. But nobody can agree what consciousness is; neither Philosophers, Psychologists, Neuroscientists or anyone else. Some even suggest that consciousness doesn’t actually exist, and that what we experience as consciousness is an illusion.

Free Will: In a strictly rule-based simulation such as might be implemented on a computer, there would be no such thing as free will. Since everything comes from software operating according to predefined rules, then it follows that everything that happens will be predetermined (although it might not be knowable in advance). So since we have free will, we can’t be a simulation, right? Wrong. Time and time again, experiments to determine the extent of our free will have come to the same conclusion: we don’t have it. In his classic experiment, Benjamin Livet found that the decision to perform an action actually trailed behind the neurological impulses required to perform the action. In other words, his subjects decided to do something only after they had done it. Of course, there might be something wrong with the experimental setup, or the experimenters might have made some errors, but similar experiments have been performed many times and all with the same result.

I’d argue that we can’t know for sure that we are not part of a computer simulation. This does beg the question, though: how could we tell if we were? Some ideas.

Software bugs: What if we could find a fault in the software? In modern programming terms, perhaps we could discover a state which will put part of the program into an infinite loop, or cause a variable to overflow. Of course, we don’t know what this would look like until we try it, but perhaps we could keep an eye out for anything “out of the ordinary” which might be an indication that here is an area worthy of further exploration.

Easter Eggs: Computer programmers are notorious for adding what are known as “Easter Eggs” into software. In-jokes, extra (but usually non-useful) functions, handy tricks and so on. What if the programmers who created our simulated world added some easter eggs to our simulation?

There might be some clues already lurking, as you might expect, in the realm of the very small; I hardly dare say the phrase, but here goes – Quantum Physics:

Heisenberg’s Uncertainty Principle states that we can’t know with any accuracy both the position and the momentum of a particle. Observation of one of these prevents any observation of the other. This strange phenomenon might be as a result of the programmers attempting to limit the amount of computer processing power required, similar to the way in which computer games only render information which is deemed necessary at a particular time. 3D games, for example, only calculate for display those parts of the virtual world the player can see.

The double-slit experiment has as it’s explanation a single, indivisible particle – a photon – being in two places at the same time. Unless the particle is “virtual” then it is hard to see how this is possible; and if the particles are virtual, doesn’t it follow that everything else that is made from those particles is also virtual? Aside: this odd result might just be the evidence of a software bug mentioned earlier.

In A Brief History Of Time and elsewhere, Stephen Hawking explains that there is nothing in the Laws of Physics which would prevent the universe working equally well if time ran in either direction. This rather odd-seeming result might suggest an entirely deterministic universe.

The race condition so unlikely it’s not worth worrying about will probably occur on day one.

I’ve spent the last week or so optimizing a set of scripts which analyse and report on competence scores for employee assessments. As with most optimization tasks, the key to improved performance was in the I-O, in this case reading a SQL database.

By replacing SQL reads with cached lists, accessed via Linq, I took several scripts which were taking over a minute to run down to a much more acceptable 5 seconds or less.

To improve performance further I decided to cache the data between page loads. To do this I implemented a singleton class which used a static instance to store the data between page loads. Since it was static this had the added benefit of all users being able to share the same data; so we only have to generate the instance once. Code fragment:

public class ReportingCache
{
private List<AssessmentInstance> assessments;
// more lists of objects…

private static ReportingCache _instance;

private ReportingCache()
{
Initialise();
}

public static ReportingCache Instance
{
get
{
if (_instance == null)
{
_instance = new ReportingCache();
}
return _instance;
}
}

// Getter for assessment, with just-in-time load of assessment list.
public AssessmentInstance GetAssessmentInstance(int id)
{
if (assessments == null)
{
assessments = new List<AssessmentInstance>();
new AssessmentInstance().Iterate("SELECT * FROM assessment_instances", AddAssessmentInstance);
}

AssessmentInstance assessment = assessments.Where(i => i.Id == id).FirstOrDefault();
if (assessment == null)
{
assessment = new AssessmentInstance();
}
return assessment;
}

private void AddInstance(AssessmentInstance assessment)
{
assessments.Add(assessment);
}

// More accessors/JIT loads.
}

Whenever a script needed to access, e.g., an assessment instance, instead of going to the database, it instead made a call such as:

ReportingCache.Instance.GetAssessmentInstance(id);

This worked really well, and there was very little else needed to bring the runtimes down. However, there was a potential problem.

If two users happened to simultaneously access the same list in the instance before it had initialized, they would both attempt to perform the initialization at the same time, leading to incorrect results or even an exception. I did some benchmarking and decided because list population took less than a second or so, and there were only a handful of users of these particular scripts, this was unlikely to happen very often, if at all, so decided to worry about it in the future if it ever became a problem. In other words, I filed the problem under YAGNI: “You Ain’t Gonna Need It.”

Release day was today, and I received a call around 11am to say that the script had thrown an exception, and would I look into it. It turned out that this was caused by the exact race condition I’d anticipated but dismissed as being so unlikely it wasn’t worth worrying about.

What I hadn’t considered was users talking to one another while they ran the reporting scripts, and in particular the site owner training other users in its use. He’d been on Skype with one of the end users explaining how to run the scripts, starting with the slowest running but also the most useful report. In a “Do it with me” session he and the user had both opened the report at the same instant, and one of the scripts promptly fell over. Fortunately, it was the owner’s script which died and not that of the end user, but it still needed fixing.

How to fix it quickly? I considering setting flags on the object while lists were being created, having the ReportingCache object script sleep for a few seconds on exception before retrying, and so on, but in the end I did the simplest thing I could think of: catch the exception in each reporting script at the highest possible level, present the user with a message that the report’s data was being regenerated, and auto-reload the page after a few seconds. It’s not the prettiest solution but it should work as a stop-gap while I work out something more permanent.

What I learned: the race condition with a one-in-a-thousand chance of occurring, is probably going to happen on day one.

 

Early Morning Poetry

Rising uncharacteristically early this morning, I turned on the radio and tuned to Radio 4. By chance I caught the tail end of an Avant Garde poetry program, and although I’m not normally impressed with such things, preferring more traditional forms of poetry, I was blown away by the simplicity of structure, the tempo, and the apparent lack of respect for any established poetical conventions. Even though the words have no apparent meaning in themselves, they speak directly to the subconscious in a way I’ve not encountered before. Wonderful stuff!

I Googled the piece but have been unable to find any references to the poet or his/her work online, so I wonder if anyone can help? Here’s a fragment; if anyone recognises it I’d be grateful for a pointer to the poet’s other work.

North Utsire,
South Utsire,
Southwest veering
Northwest 3 or 4,
Occasionally 5.
Moderate.
Showers then.
Fair, mainly, good.

Shannon.
Rockall.
Malin, west.
3 or 4, occasionally 5.
In Rockall, backing,
South or southwest,
And increasing.
5, occasionally 6.
Later slight.
To moderate, occasionally.
Rough.
Later showers,
Then rain.
Later.
Moderate.
Or good, occasionally.
Poor.
Later.