Practising your Process

My very sincere thanks to Simon Powers for posting the ‘onion diagram’ in his ‘What is Agile?’ post on LinkedIn and for answering my question. The post is also available on his own blog
It shows ‘tools & processes’ separate from ‘practices’. I’ve been thinking for a long time about whether there is any real difference between process (what) and procedure (how) or if they are simply different levels of detail. I think I’ve just been convinced that the equation I’ve been searching for is:

  • process + practises = procedure

Simon actually listed in his answer to me, ‘roles, interactions and artifacts’ as the difference between the set of Agile practices and the set of Agile processes, so I’ve corrupted his definition for my own purposes but I haven’t broken his diagram so I hope he’ll forgive me. (Or maybe I don’t understand whether the layers of an onion diagram are inclusive or exclusive.)

I think making the process one of the practises would make the function recursive and this is supposed to be one of my Lisp rest-days. If my process diagram shows roles or artifacts then I’m sure I’ve moved into the realm of specifying practice. Interactions may be input-output that is part of the definition of the process, so it is probably necessary to split them down more, into message type & format.

Finding Order

I was all of a Twitter this morning about my discovery of not one but 5 specimens of a plant known variously as ‘Lords and Ladies’ or ‘Cuckoos Pint’ in 3 different locations around Llangollen yesterday. I now know that it is a fairly common plant and poisonous, but a day earlier I wouldn’t have known anything about it. Would I have noticed this brightly coloured plant at all, if @BrownhillsBob hadn’t told me about it?

The reason this occurrence struck a chord with me was that it wasn’t my first ‘not really very strange’ coincidence of the day. At university, my systems analysis lecturer was a guy called David Avison. A few years ago when I moved into my first analysis job, my team leader loaned me his copy of a book called ‘Information Systems Development’ by David Avison & Guy Fitzgerald. I skimmed through it but it seemed stuck in the the ancient ways. I wanted to rush forward to Agile development. I put it aside.

Yesterday, having stopped for coffee in Llangollen, I went upstairs to ‘powder my nose’ *. The upstairs of the shop is a second-hand book shop. On the stairs was a bookcase labelled ‘Computers’. Well, you have to have a look, don’t you? There was a near pristine copy of Avison & Fitzgerald, 2003 marked at £10 and there was a half-price sale on. I flicked through and found “5. Modelling Themes”. I had spent my last couple of days work modelling what I called “Programming Paradigms”, a sub-component of a model I’d called “Themes” and my plan for today was to write about modelling. Dear Reader, I bought it.

I am not a Fatalist. I believe we can’t see things until our minds are in a state to accept them. Our total knowledge is not the sum of everything we have experienced but of the order in which we were ready to take on board new information. Learn something too soon  and the other end of the connections I think cause creativity may not be in place, ready.

  • I learned at Plas Newydd that the phrase “power your nose” came from the dual-use of powder closets, where fine ladies powdered their hair to provide a private toilet space and an opportunity for ambiguity, as ideas about personal privacy changed.

Getting to Know Relations

I don’t really KNOW relational databases. I’ve hung around with them quite a bit but I have no real experience. I know there are things I don’t understand about them. As with anything I’m genuinely uncertain about, I don’t even know what it is I don’t understand. I am in unknown unknowns territory.

While getting my  Umbrello UML modelling tool working again, I tripped over this:

It was a bit of a surprise because:
a) entity-relationship diagrams aren’t part of UML and
b) the explanation of the ‘overlapping specialisation’ example didn’t make sense to me.

I now knew this was one of the things I didn’t understand, but the KDE document wasn’t helping me. I searched for a better explanation and it took me here:

It uses UML class diagrams to model relations. I think this might sort me out.

The Tao of Corbyn

Owen Jones wrote an article called ‘Questions all Jeremy Corbyn supporters need to answer’ on Medium. This is my response.

I am not a ‘Jeremy Corbyn supporter’. I may sometimes support the same ideas as Jeremy Corbyn but not all of them. I am not ‘of the Left’.  I would defend Owen Jones right to hold different views to his party leader (though posibly not “to the death”), and to express them in a non-destructive way. I am over 50. I may be atypical.

I like Jeremy Corbyn because seems a decent bloke. All his enemies admit that he is. In a world of spin and misdirection by politicians and the media who are supposed to hold them to account on our behalf, that’s his greatest strength. “But he’s not a leader”, they say. Corbyn’s been described as a signpost rather than a weather-vane. He knows what he thinks and so do we. That’s his appeal to those outside the Westminster bubble, to those of us who have taken the trouble to fight through the media smoke screen. We are really sick of being lied to and the EU referendum feels like the final straw that broke unrepresentative democracy for many.

Is a clear political message important? #Leave won with a very clear pack of lies. Is that what we want more of? I think the next General Election will be won by whoever the public trust. I think the rebel MPs may have ensured that it won’t be a Labour leader but I am 100% sure that it won’t be Owen Smith because he’s a flag. He follows the wind AND he flaps!

This entry on a current leadership style demonstates that Corbyn is both ahead of the political game and very far behind it:

It contains the following passage from the Tao Te ChingLao-Tzu written, between 570 BCE and 490 BCE:

The highest type of ruler is one of whose existence the people are barely aware.
Next comes one whom they love and praise.
Next comes one whom they fear.
Next comes one whom they despise and defy.

When you are lacking in faith,
Others will be unfaithful to you.

The Sage is self-effacing and scanty of words.
When his task is accomplished and things have been completed, All the people say, ‘We ourselves have achieved it!’

Vacuous Thoughts

A minute ago, I juxtaposed 2 phrases on a Slack chat:

I listened to Rich Hickey’s video on Hammock Driven Development a couple of days ago. It’s about modification of mind mode without resorting to chemicals. There’s a long tradition in hacker-lore that points to Zen and the martial arts too. I find showers, lawn-mowing and writing what i think I know so far (a variation of the cardboard coder trick) all help. The poets seem to prefer long walks. ‘Empty Mind’. “Nature abhors a vacuum”.

As a result of my subsequent wanderings, I learned a new word, “plenist” and “plenism” (the usual suspects)

and I saw the word “idiom”. I’ve heard “idiomatic” a lot recently, in relation to styles associated with programming languages but I wasn’t sure precisely what it meant:

I think the intended meaning is Google’s 2nd choice:

a characteristic mode of expression in music or art.

but the alternative is interesting too:

a group of words established by usage as having a meaning not deducible from those of the individual words (e.g. over the moon, see the light ).
How often does a ceremony gets associated with an idea, long after anyone remembers why? I ask this after reading a thought provoking comparison of the functional and object paradigms that only partly agrees with the ideas I mapped out in stickies on a paper table-cloth yesterday.
I’m “still not working”, as people say. My Dad kept a dictionary beside his chair. I continue his work with ‘tear-off here’ computer science. At least my inherited etymology is idiomatic of the Clojure community.

It’s Getting Harder to Love Linux


I used to be an operating system specialist. I’m not any more. I want to use a computer as a tool to get something done, like most people do.

I’ve used Linux for many years without ever learning too much about it. There was a time when I considered that to be proof it had caught up with Windows for ease-of-use. Windows has crashed and burned on me more than once

Things seemed to change when Canonical took their premature decision to move Ubuntu to the Unity graphical shell on the Gnome desktop. I finally lost patience with Unity a few months ago and installed the Gnome Desktop instead. It’s been mostly OK but I’ve had a couple of odd disappearances of freemind (Java) and umbrello (KDE.) Umbrello is running with it’s icons missing and I’ve manually reinstalled freemind. I now have to work out how to add a Java app to the Gnome desktop. This is too hard for ‘us normal people’.

In the meantime, freemind is started from my terminal with the command

sh -c “cd ~/bin/freemind && sh ‘'”

At least that’s nice and simple, if you like that kind of thing. Sadly, I don’t.

Update: I’ve fixed Umbrello. Via the KDE bug system I discovered that Fedora users were short of an icon library so I experimentally searched for the same library in the Ubuntu repos and added it. The oxygen-icon-theme transitional package adds oxygen5-icon-theme.

I’ve updated the bug report:

Update 2: It came unfixed the first time I tried to save – after a couple of hours work, obviously. I’ve backed up to paper before applying this workaround:

I used the synaptic package manager to add kio then let it sort itself out. UML updates saved, with no loss of data. This is why I use a real operating system. Morning not wasted after all. The Linux love is returning.

Objects vs Functions

I learned to ‘programme computers’ long ago, almost before there was no “me” in ‘program’ and certainly before I knew how to ‘team’. I had a very brief and unsuccessful exposure to functional programming in LISP (not Lisp) then stopped. I did other ‘Data Processing’ things.

In recent years I’ve been working as an analyst, alongside people who write code according to the object model. I think I have a feel for objects but never having written code in an object-oriented language, I can’t be sure. I decided to try, in the Python language, then got distracted by the shiny Clojure language which is functional. I feel that right now I’m approximately equally confused by objects and functions, so I thought I’d write this quickly before I know what I’m talking about. I can come back later to laugh at my naivety, along with the rest of you.

Like the person who wrote this ,
I’ve been watching some talks online recently by Rich Hickey of Clojure fame”
The post asks “So if I follow Hickey’s advice, how am I supposed to represent a book? As a vector of vectors of vectors of vectors of strings? If so, then how do I prevent a change in the representation of the Book from breaking client code?”

I found the question very interesting because representing ‘books’ in a functional language is exactly what I want to do. I think differently to the author because  I’m not yet trapped inside the object paradigm. I can see that ‘book’ is a real-world class of objects, a very specific and limited implementation of the representation of a small subset of all the information in the world. That’s what my ‘book’ was going to be about and why I’m now playing with functions instead of writing it.

Objects are good at simulation of real life systems. They encapsulate small sub-systems of a process and it’s local data into an object. What I always struggled to understand was what you did with the data that didn’t want to be enclosed – “information wants to be free”. People seem to cope by inventing objects that don’t really exist: to be data shepherds.

Functions are good at abstraction. A book is a single output format from something much richer. That’s what I want to write. Data and processes are complex. Objects and functions are simplifying models; there may be others.

p.s. (not Lisp) Get it?