Tag Archives: information

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 https://news.ycombinator.com/item?id=4246018 ,
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?

Advertisements

The Information thing

Most of computer science is built on top of Claude Shannon’s “Information Theory”. Observers have noted that ‘computer science’ has very little to do with computers. I have come to think of it as ‘computation and information science’. I might throw in the word “process” to bind everything together, if I could work out where to put it. For a long time I was ready to dismiss the word “science” but I have recently changed my mind.

In the book I’m writing, I plan to point out that Shannon explicitly says in his paper that he and his theory don’t care about the meaning of any signal being transmitted. It could be meaningless. To my mind that is data not information. Our foundations are shaky.

There is a long tradition of drawing a triangle with layers labelled ‘data’, ‘information’ and ‘knowledge’. Here is one: http://www.knowledge-management-tools.net/knowledge-information-data.html
I am trying to develop my own model that adds layers and explains the difference between them. My working definition of the difference between data and information is that information requires a cultural context to be understood. I tried to think of the simplest information I’d ever seen. It was 3 sticks laid down on a forest path, to make an arrow shape (or they fell randomly from a tree. Here, Shannon has something useful to say.) I realised that interpreting this arrow requires a knowledge of human weapons technology. Recognising whether an arrow symbol on a path is a message also requires environmental, cultural and statistical knowledge.

I only came up with my distinction between information and knowledge a few days ago, so I’ll keep testing my hypothesis until the book comes out. I will say that I don’t believe you can store knowledge in a computer system. Oh dear, someone else beat me to the ‘wisdom layer’: http://plmindia.com/services/knowledge-management/

Applying the Science Process to Process Change (see Recursion)

Now that we’ve established that very few people who work in “IT” have anything to do with technology, except as a tool, and that “computer science” isn’t about computers, we’re back at the original reason I began to write a book. I was once an ‘Information Systems Engineer’ and wasn’t very sure what any of those words meant, particularly “information”.

Software development teams often see their role as solving their customer’s problems. Software package providers say they are “solution providers”. What does the ‘unspeakable profession’ actually do? We got some clues from Hal Abelson in the video I linked to in my last post, that new areas of intellectual endeavour often confuse the ‘essence’ of their subject with their tools; so do we really engineer software?

Hal said that writing software is the process (or function) of formalising our intuitions about process (function.) Our software is a speculative formal abstraction of our intuitive understanding of a process we may not entirely understand. No wonder software projects so often fail. Like the rest of science, software is built on ideas that haven’t been proved wrong yet.

Software developers are presented with, or attempt to discover, experts’ (declarative) knowledge of the business process in the ‘domain’ we are about to change. This is ‘the abstract requirements’. Some of this may have to be implied from imperative knowledge embedded in existing software. It may be presented as imperative solutions. It may be incomplete.

We then follow our own process (function) for: ‘the way we do software’, in order to design a new process, some of which is also likely to be have to be embedded in software. Applying functions to change functions? That’s what functional programming does, isn’t it?

I believe that the ‘stuff’ of ‘computer science’, is state-change of systems of process and data. Who remembers ‘Data Processing’? Functional programming points out that the processes themselves are data and dynamic state-change is unpredictable and therefore dangerous.

Engineering would apply ‘project thinking’ to this unstable, poorly defined change. I may once have tried to be an information systems engineer but I saw that it didn’t work and took a 20 year break from software development.

Agile frameworks recognise such changes as risky experiments and carefully apply the scientific method, incrementally with feedback loops, to check assumptions.

We may need to return another time to see what functional programming has to say about 2 projects making concurrent changes from the same initial state. Until then, good luck with those.

Agile, Lean and Failing Early

About a year ago I started to write ‘a book’ with a working title of ‘Information Metaphysics’, about the essential nature of this thing called ‘information’ that we all think we understand, until we think about it more. That is still a work in progress.

I deliberately allowed myself to be distracted, to explore my notion of creativity and to write another book about the role of co-incidence in life while exploring a painting and a poem of the same name. At some point I ran aground in shallow water and started to worry that I was failing to demonstrate any progress towards ever earning any income from writing.

In the corner, I had a stack of  ideas that didn’t fit in with my evolving concepts for either book. I came up with the idea of writing up each of these ideas, as you might a blog post, and Lean publishing them, regularly in an online portfolio. People would be able to download a sample, then if they liked it, effectively subscribe, at a low price point (US $5,) for all further instalments ever. This would partially fund my extravagant life-style of black coffee and cheese sandwiches, while I completed my main book. [ If you are a regular reader of this blog , at this point please think of yourself as EMI rejecting the Beatles, or perhaps sacking The Sex Pistols. ]

One of the main advantages of Agile and Lean development (I had planned to explain what the differences are) is that something that is bound to fail, fails quickly, with minimal damage. This morning I accepted that my experiment has not worked and ‘unpublished’ my book “Finds & Thinks”. There is apparently no market for my kind of cheap, concept-culture, when people can see as much free stuff as they have time to read, watch or listen to without having to think at all. You might wish to Pinterest this post so you can forget about what you’ve done.

Of course, I may just be rubbish at thinking and writing but I prefer to think it is an early warning sign that Free culture isn’t working for those who come up with new ideas. Which, I think, is about what Iggy Pop said in his BBC John Peel Lecture.

http://www.bbc.co.uk/programmes/b04lcj6z (only available for 14 days)

I might even get a job. The Man pays better. If you see him, tell him I’m waiting.  But if he’s late, I may have completed my solution to intertwingularity. If you don’t know what it is, look it up. It was going to be in the $5 book.

Call yourself an ‘Information Systems Engineer’?

A few years ago, I was on the cusp of becoming a Chartered Information Systems Engineer. The night before my peer review interview, I sat imagining questions I might be asked. I had long been aware that there is no agreed, consistent, meaningful definition of the word “systems” but I suddenly realised I didn’t know what “engineer” meant either. Once again, the word has been so horribly misused that its value has been depleted. Luckily there remains a core meaning that an engineer applies scientific knowledge to solve practical problems. But everyone does that, surely? I preferred a definition I found that evening, “an engineer is someone who can do for ten shillings what any damned fool can do for a pound.” It has an element of quality and value. We were getting into Zen.

Many years later, I was working on a ‘Knowledge Management’ project; to capture snippets of information provided by engineers and scientists. I started to think about the difference between data, information and knowledge. I wasn’t convinced that you could build a computerised ‘information system’ that could store ‘knowledge’. At about the same time, several people around me were getting interested in blogs and wikis. With my colleague, a librarian, I attended a ‘Knowledge Management and Social Software’ event. There was an open question session so I asked the assembled experts what they understood to be the difference between information and knowledge. There was an awkward moment before someone tried to answer me, then a fairly rapid intervention by the chair, who said it was a very theoretical question and we all understood what we meant. A noticeable wave of relief radiated out as people retired to their comfort zones.

I’m still not sure if this had been discussed so many times, without reaching a satisfactory conclusion, that they were bored or if they didn’t want to think about it because it’s A Hard Question. I was forced to conclude that I didn’t even know what ‘information’ was. Awkward!

I’ve thought about the subject a lot since. I have a few ideas but I’m not there yet. I’ve decided to think of it as “Information Metaphysics”. What is information? Does it exist? What is it made from? How does it work? Some people think the universe is made of information. I think they are Wrong. I think information is related to matter, energy, order, disorder, chaos, entropy, intelligence and culture.  I think it is probably unwise to settle for ignorance. That is rarely a good idea. We need more information – whatever THAT is.