Hybrid Vigour

Having been forced by Mrs. Woo to take a week of holiday from what she usually refers to as “staying at home, doing nothing”, I found myself on the Snowdrop Trail tour in the garden at https://www.nationaltrust.org.uk/sunnycroft. I was quite surprised to discover that the leaflet I was handed had photographs of 17 of the forty-odd different varieties of snowdrop in the garden. Later in the day I was talking to our guide’s long suffering wife who explained that there were over 400 varieties in his garden, of the approximately four and a half thousand types currently known to be in existence.

People with a passion often interest me. Quite why these smallish, mostly white flowers that I would previously have assumed were all the same had become the focus of this man’s life was not clear but his obvious fascination was infectious. It almost made me wish that I was a little less promiscuous in my obsessions. For our second snowdrop trip of the week, we visited https://www.nationaltrust.org.uk/attingham-park to see snowdrops at scale, lining the woodland floor. They all looked the same. I have much to learn.

My favourite Sunnycroft snowdrop fact was that when chasing the holy grail of a large ‘double’ snowdrop, gardeners had used the advantage of ‘hybrid vigour’ to mix and match the desirable characterisics of different species and create a giant amongst snowdrops. Take that, racial supremacists: you’re all snowflakes, by comparison!


Nothing but the Truthiness

On 2 January 2017, I half-heard on Radio 4, ‘The New World. Nothing but the Truth’, presented by Jo Fidgen of the BBC World Service and produced by Gemma Newby. It lasts 45 minutes and is available on BBC iPlayer Radio for 1 year, at http://www.bbc.co.uk/programmes/b086nzlg, so if you don’t listen to it after reading this, I want a note from a grown-up to explain why.

“Are we really living in a post-truth world?” or is ‘post-truth’ a new label for liberal angst, due to loss of control? It even asked us to consider whether Michael Gove was misrepresented by the media (He was. I’ve seen the transcript.) Sadly, there are a lot of experts in the program, so perhaps you shouldn’t take it as seriously as I want you to. Listen for yourself, in case I can’t be trusted.

It finds that people are not rational in their analysis of facts that challenge their beliefs. They believe The Wrong Thing even harder.

‘Truthiness’ was coined by Stephen Colbert to refer to “what we feel to be true.” Another parody of right-wing politicians, Donald Trump said, “Fact is not always the same as Truth”, though 70% of what he says has been shown not to be true by fact-checkers. People are looking for “a deeper level of truth, their identities”. Trump’s facts are rhetorical tools, not actual information to be taken seriously. He is only President Elect of the USA.

We wear our beliefs as a badge of membership of our group. “We determine the truth by the people and sources we trust. That’s how we know truth.” When faced by ‘an alleged fact’, we decide how we feel about it then look for evidence of how right we are. Educated people are not immune. Numerate people were shown to be better at assessing data but to lose their intellectual advantage when faced with facts related to their political beliefs.

At the end, the programme presented a 10 minute Drill:

  1. Ask the opinion of someone you disagree with and don’t interrupt
  2. Don’t assume they are stupid
  3. Resist forwarding to all you echo chamber buddies that article that proves how right you are
    [ I would add “unless it contains new information, but not without fact checking first” ]
  4. Bear in mind that just because you like the story, doesn’t mean it’s true

What first caught my attention in the programme on first listen was use of the word ‘truthiness’ which the programme has in common with the functional programming language Clojure. Falsiness is ‘nil’ or ‘false’. Truthiness is everything else.

If we imagine ‘nil’ as being a bit like the Scottish legal verdict ‘Unproven’, we should demand higher standards than “You can’t prove I’m lying, yet.” from our politicians.
We need to demand truth, not either value of falsiness.

In hospital statistics, ‘Deaths = 0’ is different to ‘Death data was not measured’. We expect politicians to attempt to try to lead interviewers away from the second option with weasel-words like, “there is no evidence of deaths” and we expect journalists to destroy them whenever they do. Accepting falsiness gives us corrupt politicians and journalists. No politician stands in front of a bus promising £350M per week to spend on the NHS when they known it is not true should have any further input to UK politics. No newspaper calling people who point this out “Remoaners”, to silence them, has any interest in their readers knowing the truth. Resignations are long overdue and it’s almost too late for them to be honourable.


Change Time

After some time trying to think about almost nothing, the last 24 hours have been an alarm call. As others come out of hibernation too, they post interesting stuff and Radio 4 provoked me with a discussion on facts and truth. Now Marc Cooper is at it, with difficult  links about computation and I’m all on Edge https://www.edge.org/response-detail/26733
Before I read about “discrete tensor networks”, I need to write down my own ideas about time, so I will know in the future what I thought, before my mind was changed.

I am ill-equipped for this task, having only 1 term of university maths to my name so I intend to talk in vague, abstract terms that are hard to argue with.

Much of physics is very dependent on Time, like almost all of computer science and business management theory. You can’t have change without time, it seems. Einstein talked about space-time, mostly in the language of mathematics. I can just about order a beer in math(s) but I can’t hold a whole conversation. I know what the first 3 dimensions are: left-right, up-down and back-forward. My personal model of the 4th dimension is that same space in continuous state-change through time. There are a few things I’m not happy about:

  • There is no evidence that time is either continuous or constant.
  • We only have evidence of time being a one-way dimension.
  • What the heck does ‘continous state-change’ mean? Is state a particle or a wave? Make your mind up, physics!
  • There’s that troubling many-worlds interpretation of the universal ‘WAVE’function (which I don’t understand either) which says that everything that might have happened did, in other universes. I don’t like this. Yes, that’s my entire justification – I don’t like the conclusion of a thought process I don’t even understand. It doesn’t feel right.

I’ve been learning about the functional programming language Clojure which does not ‘mutate (change) state’. It doesn’t have ‘variables’ like the more common imperative languages such as FORTRAN, BASIC, C, Java or Python. In Clojure, data flows through functions and is transformed from one form to another on the way. It is basically magic. In a pure functional program, no state is changed. State-change is called a “side-effect”. Sadly, side-effects are required to make a program do anything useful in the real world. Arguably, the purest magic is encapsulated in the world of mathematics and the physical world is a messy place that breaks things.

Clojure models time. It does not model the real world by replacing the current value in a variable and throwing the old value away but by chaining a new value onto the end of a list of all previous values.

Now let us extend this idea ‘slightly’ in a small thought-experiment, to a 3-D network of every particle state in the universe.

Space-time now has 2 regions:

  1. The past – all historic states of those particles as a theoretical chain of events
  2. The future – all possible future states of the universe; effectively an infinity of all possible future universes that could exist, starting from now.

Which brings us to what I mean by ‘now’ – a moving wave at the interface between the past and the future, annihilating possible future universes. Time becomes a consequence of the computation of the next set of states and the reason for it being a one-way street becomes obvious: the universe burned its bridges. Unless the universe kept a list, or we do, the past has gone. Time doesn’t need to be constant in different parts of the universe, unless the universe state ticks are synchronous but it seems likely to be resistant to discontinuities in the moving surface. I imagine a fishing net, pulled by current events.

It’s just an idea. Maybe you can’t have Time without change.

[ Please tell me if this isn’t an original idea, as I’m not very well read.
I made it up myself but I’m probably not the first. ]

2017: Fighting back

2016 was an excellent year for the progress of Evil. It’s time for those of us who believe there ‘is such a thing as society’ to start pushing back harder, for a happier 2017.

I plan to take on fascism, corrupt media, lying politicians, hierarchy in general, fixing democratic reform, climate chaos and replacing the failing socialism and capitalism systems, as the year warms up; but for now lets warm up with open communication protocols. This article recommends the Franz messaging application:
http://www.omgubuntu.co.uk/2016/12/21-must-have-apps-ubuntu. It says:

“The days of multi-protocol instant messengers are long gone, with (mostly) proprietary mobile-first services now ruling the roost.

Want to chat on WhatsApp, Facebook Messenger, Telegram or another well-known messaging service on Ubuntu, without using your browser? Try Franz.”

Or don’t. Ask why Google needed to assimilate XMPP into Google Talk, in order to destroy it, so it could launch Hangouts to compete with Skype and Apple and control yet another market. It got beaten and left us with the current fragmented mess. When will we all learn the lesson to choose open protocols not products and suppliers that do what is good for us rather than for themselves? We will only progress in software if we stop throwing everything away every few years and starting again with something worse. Customers and governments must start demanding this. We must NOT Brexit or Trump on international communication. Tribal thinking is Bad, kids!

Can anyone recommend a good XMPP service provider that serves the UK which REALLY believes in open standards and privacy, like Google, Facebook, Apple and (occasionally) Microsoft pretend to? Maybe with an old-fashioned SMTP/POP email service that isn’t Gmail. Liars must be punished, or they’ll keep doing it… and we’re back to politics.

This week I mentioned a product in a closed Slack group and received targeted marketing next time I logged into Facebook. What else is being snooped on?

What’s left over if you don’t have Pi?

This feels important https://wordpress.com/read/feeds/42862283/posts/1269250708
Your old PCs and Macs are being aPIXELated. Cambridge computer science hippies are helping us back onto the right path to Freedom.

Those nice Raspberry Pi people are trying to give us a standard Linux that runs on old hardware, as well as new. I remember when we all thought that was Ubuntu, before they decided they wanted to be better than all the other distros. I’m not sure competitive communities are the way to go. That way lies tribalism, nationalism and eventually fascism. 2016 is OVER. We get it, Time Lords: power corrupts.

A Functional Mindset

When I started learning Clojure, I thought I knew what functional programming was but I’ve learned that the functional paradigm is now more than I expected.

Everyone agrees that it’s a computational model based on evaluation of mathematical functions, which return values. This is generally contrasted with imperative programming languages such as FORTRAN, C, JavaScript or Python, which are also procedural and some of which are object-oriented but may make functional coding possible, in a hybrid style. I wouldn’t recommend learning functional concepts in a language that gives you short-cuts to stray back  to more familiar territory.

Clojure is a member of the Lisp family, first specified in 1958. The unusual feature of Lisps is their homoiconicity – code and data are the same thing. Learning Clojure has informed my thinking about business process change.

Some modern, functional languages such as Clojure use immutable data whenever possible, to eliminate side-effects. This allows better use of multi-core processors but requires a complete change in thinking, as well as programming style. ‘Variables’ are replaced by fixed ‘values’, so loops have to be replaced by recursive functions. New data can be created but it doesn’t replace old data. Yesterday’s “today’s date” isn’t automatically wiped when we decide today has happened.

Objects with their methods and local data were designed for simulating the current state of real-world objects by changing (mutating) object data state. The object model, like relational databases, has no inbuilt representation of time. Functional programming splits these objects back into separate functions and data structures and because values can’t change, they may be transformed by flowing through networks of functions, some recursive, to keep doing something until a condition is satisfied. Eventually, code must have a side effect, to tell us the answer.

Rather than computation being a conditional to-do list with data being moved between boxes, it becomes a flow of data through a network of ‘computing machines’; and the data and machines can be transformed into each other.

I hear that map, reduce & filter data transformation functions will change my world again.

Becoming Functional

I’ve been playing with the idea of doing some functional programming for a while now. I’ve been trying to learn and paddling around in the shallows but this week I dived right in the emacs/CIDER pool. I was aware of some dangers lurking beneath the surface: recursion, immutable data structures and the functional holy trinity of map, reduce & filter, so I came up with some ideas to face my fears. I’ve also realised my maths has got rusty so: Some of That Too.

  1. I’ve ‘done recursion’ before but I thought I’d read that my chosen weapon Clojure didn’t do tail-end recursion. This isn’t true. What it can’t do is automatic optimisation of tail-end  recursion, to stop it blowing the stack after a few thousand iterations but Clojure has a ‘recur’ expression to manually signal tail recursion and fix that. I knocked off the programme in a couple of hours and went to bed happy. My code was happily printing the first n numbers of the Fibonacci sequence but a day later I still couldn’t get it the return the numbers as a sequence.
  2. I was finding out about immutable data the hard way. You can’t build up an immutable vector, 1 element at a time. You get to keep the empty vector you created first. It’s a big mind-set change to not have variables that can vary. In my next post, I’ll try to say what I’ve learned. On this occasion it was lazy sequences.
  3. I mentioned the Algorave in my last post. I only found out about that because of an idea I had for improving my theoretical understanding of music. I realised that I could write, for example, a function that would return the 1st, 3rd and 5th notes in a major scale, using a map function.While working the theory out, I found out that Lisps are already popular in the live-coding world.
  4. At Algorave, I was inspired by the live-coded graphics to try automatically generating some graphics too, to work out the maths of mapping triangular grids onto Cartesian co-ordinates. I need that for another idea.

Three basic working programmes in about a week. They aren’t ‘finished’ but is software ever? They have delivered value via increased Clue.