Sunday, 5 July 2020

TV review: Good Omens

Armageddon is coming. Still, it’s not the end of the world…

The angel Aziraphale [Michael Sheen] and the demon Crowley (originally the snake Crawly) [David Tennant clearly having immense fun] have been on earth since the beginning of time (that is, about 6000 years), slowly become unacknowledged friends, and the only immortals around. But now time is up. The Antichrist has been born, and it’s Crowley’s job to make sure he’s placed with the American Ambassador, ready for Armageddon in a few years time. But Crowley messes up, and the boy is placed with a surburban British couple. Apocalyptic hijinks ensue.

This is Neil Gaiman’s adaptation of the book by him and Terry Pratchett (I haven’t read the book). Some might not feel it’s a good idea to watch an end of the world tale during a global pandemic lockdown, but it felt appropriate. There may be a few places where Gaiman is simply having too much fun, but on the whole this is a great series. It is clever, funny, scary, weird, sarcastic, touching, inventive, and wonderfully irreligious.

For all my SF TV reviews, see my main website.

Saturday, 13 June 2020

not a shop

There is a good discussion of what education is for, and how different disciplines use different tools, in the post How to speak truthfully about what it means to be human: a user’s handbook.  All of it is interesting, but there is one paragraph that speaks forcefully about why students are not “customers”, itself a quote from another piece (my emphasis):

We go to school, not to get what we already know that we want, but because we want to receive an education. Here, we would expect teachers not just to give students what they know they want or say they want or are able to identify as what they want, but to move them beyond what they already know that they want. We want teachers to open up new vistas, new opportunities, and help children and young people to interrogate whether what they say they want or desire is actually what they should desire. To turn the student into a customer, and just  work on the assumption that education should do what the customer wants is therefore a distortion of what education is about, a distortion that signi´Čücantly undermines the ability of teachers to be teachers and of schools, colleges and universities to be educational institutions rather than shops.

Hear, hear.


Friday, 5 June 2020

Covid-19 diary: learning lessons from history

Black Death, COVID, and Why We Keep Telling the Myth of a Renaissance Golden Age and Bad Middle Ages” is a brilliant essay by Renaissance scholar and all round Renaissance woman Ada Palmer, on why the question “If the Black Death caused the Renaissance, will COVID also create a golden age?” is based on multiple misconceptions about history in general, and the Renaissance in particular.  However, there are things we can learn from history about how to tackle the Covid-19 aftermath, but will we?

The post is marvelous in general.  But in particular, the concept of “Ever-So-Much-More-So” really struck a chord with me.  As Palmer says, sprinkle some Ever-So-Much-More-So powder on the Middle Ages and you get the Renaissance: much more of the good bits, and much more of the bad bits.  

And this just keeps on: the good things keep getting more and better, but the bad things keep getting more and worse.  This is different from utopias (only the good things increase) or dystopias (only the bad increases): in the real future, everything gets Ever-So-Much-More-So.  The optimists notice only the more good; the pessimists only the more bad.  The reality is everything gets more complicated, more complex, more more.  Ever-So-Much-More-So.

Tuesday, 2 June 2020

Covid-19 diary: online workshops

We were due to run a small workshop in York on 25-26 March.  Lockdown started on 23 March, but we had anticipated this, and moved the conference into a virtual format.

Here's a short report on how it went, and what we could do better next time.

Friday, 29 May 2020

Covid-19 diary: seeing clearly

The window cleaners came today for the first time since lockdown.

We can see clearly now the spider webs are gone.

before window cleaning -- webby windows
after window cleaning -- clear and sunny

Thursday, 28 May 2020

blooming May

It might be the dryest May on record, but the garden is blooming.

Wednesday, 27 May 2020

Covid-19 diary: eye tests

Dominic Cummings has said that he drove to Barnard Castle with his wife and child at the end of his lockdown-busting trip to County Durham in order to test his eyesight before making the long drive home to London.

If the Indepedent’s report is accurate (and I have no reason to believe otherwise; there is plenty of other evidence), then here are only two possibilities: 
  1. Cummings is lying about his reason for his actions
  2. Cummings is telling the truth about his reasons for his actions
If he is lying, then he should be sacked for this lie.

If he is telling the truth, then he should be sacked for being too stupid to be a government advisor.

Additionally, if he is telling the truth, and he is happy to risk his wife and child’s life in such a manner, then it rather calls into question his original excuse for travelling north: worry for his child’s well being.


Sunday, 24 May 2020

rational conics

I’m currently reading Elliptic Tales, some light relief from lockdown.  On reading the preface alone, I discovered something I hadn’t known before.  This might be quite well-know to people with a “traditonal” maths background, but I did “modern maths” at school: lots of cool set and group theory, very little classical geometry.

The discussion in the book is just about circles, but a little googling helped me discover this is a result that applies more broadly.

Consider the general quadratic equation of two variables:

\(a x^2 + b x y + c y^2 + d x + e y + f = 0\)

where not all of the coefficients of the quadratic terms, \(a,b,c\),  are zero.  Depending on the coefficent values, this gives a circle, ellipse, parabola, or hyperbola, that is, a conic section.

Let’s now consider the restricted case where all the coefficients are rational numbers.  A rational solution to this equation is a solution \((x,y)\) where both \(x\) and \(y\) are rational numbers.

Now comes the interesting bit.  Take a straight line with rational slope, \(y = q x + r\), where \(q\) is rational, that cuts the quadratic curve at two points.  Then either both points are rational solutions, or neither is.

The book proves this for the case of a circle, and then shows how to use the result to find all the rational points on the unit circle, \(x^2+y^2=1\).  You need one point that you know is rational, so let’s chose \((-1,0)\).  Then draw a straight line with rational slope that crosses the \(y\) axis at \(q\); that is, \(q\) is rational.  This line has equation \(y=q(x+1)\).  Then solve for the other point where the line crosses the circle to get a rational solution:

It is clear from the form of the solution that if \(q\) is rational, so is the point \((x_q,y_q)\).  Additionally, there are no rational solutions that correspond to an irrational value of \(q\), so we can use \(q\) to parameterise all the rational solutions.

Notice also that if we scale up the yellow right-angled triangle, multiplying it by a suitable integer \(n\), so that both  \(n x_q\) and \(n y_q\) are integers, the three sides form a Pythagorean triple.

These points and triples can be generated very easily, just by scanning through values of \(q\) and printing out the unique triples.  And Python’s fraction module makes this particularly straightforward (with a bit of fiddling to print in a fixed width format to make things line up neatly; yes, I’m a bit picky about things like this):
from fractions import Fraction as frac

found = set()
for denom in range(1,15):
    for num in range(1,denom):
        q = frac(num,denom)
        xq = (1-q*q)/(1+q*q)
        yq = 2*q/(1+q*q)
        n = xq.denominator
        triple = sorted([int(xq*n), int(yq*n), n])
        if triple[0] not in found:
            print( '{0:<7}  ({1:^7}, {2:^7})  {3}'.format(str(q),str(xq),str(yq),triple) )
This gives the output:
1/2      (  3/5  ,   4/5  )  [3, 4, 5]
2/3      ( 5/13  ,  12/13 )  [5, 12, 13]
1/4      ( 15/17 ,  8/17  )  [8, 15, 17]
3/4      ( 7/25  ,  24/25 )  [7, 24, 25]
2/5      ( 21/29 ,  20/29 )  [20, 21, 29]
4/5      ( 9/41  ,  40/41 )  [9, 40, 41]
1/6      ( 35/37 ,  12/37 )  [12, 35, 37]
5/6      ( 11/61 ,  60/61 )  [11, 60, 61]
2/7      ( 45/53 ,  28/53 )  [28, 45, 53]
4/7      ( 33/65 ,  56/65 )  [33, 56, 65]
6/7      ( 13/85 ,  84/85 )  [13, 84, 85]
1/8      ( 63/65 ,  16/65 )  [16, 63, 65]
3/8      ( 55/73 ,  48/73 )  [48, 55, 73]
5/8      ( 39/89 ,  80/89 )  [39, 80, 89]
7/8      (15/113 , 112/113)  [15, 112, 113]
2/9      ( 77/85 ,  36/85 )  [36, 77, 85]
4/9      ( 65/97 ,  72/97 )  [65, 72, 97]
8/9      (17/145 , 144/145)  [17, 144, 145]
3/10     (91/109 , 60/109 )  [60, 91, 109]
7/10     (51/149 , 140/149)  [51, 140, 149]
9/10     (19/181 , 180/181)  [19, 180, 181]
2/11     (117/125, 44/125 )  [44, 117, 125]
4/11     (105/137, 88/137 )  [88, 105, 137]
6/11     (85/157 , 132/157)  [85, 132, 157]
8/11     (57/185 , 176/185)  [57, 176, 185]
10/11    (21/221 , 220/221)  [21, 220, 221]
1/12     (143/145, 24/145 )  [24, 143, 145]
5/12     (119/169, 120/169)  [119, 120, 169]
7/12     (95/193 , 168/193)  [95, 168, 193]
11/12    (23/265 , 264/265)  [23, 264, 265]
2/13     (165/173, 52/173 )  [52, 165, 173]
4/13     (153/185, 104/185)  [104, 153, 185]
6/13     (133/205, 156/205)  [133, 156, 205]
8/13     (105/233, 208/233)  [105, 208, 233]
10/13    (69/269 , 260/269)  [69, 260, 269]
12/13    (25/313 , 312/313)  [25, 312, 313]
3/14     (187/205, 84/205 )  [84, 187, 205]
5/14     (171/221, 140/221)  [140, 171, 221]
9/14     (115/277, 252/277)  [115, 252, 277]
11/14    (75/317 , 308/317)  [75, 308, 317]
13/14    (27/365 , 364/365)  [27, 364, 365]
and larger values are readily calculated, such as:
500/1001  (752001/1252001, 1001000/1252001)  [752001, 1001000, 1252001]

So I’ve only read the Preface so far, and yet I’ve already learned some interesting stuff, and had an excuse to play with Python.  Let’s hope the rest is as good (but I suspect it will rapidly get harder…)

Sunday, 17 May 2020

the Buddhabrot

As we have seen, the Mandelbrot set can be calulated by iterating a function, and testing whether the sequence it generates diverges or not.  The so-called Buddhabrot (named for its appearance) looks at the trajectory of the generated sequence, as the generated points hop about, diverging or not. Points that start with a \(c\) value outside the Mandelbrot set, and so produce diverging sequences, may nevertheless have points along the way that land inside the set.

The Buddhabrot takes all the points ourside the set, and plots each point in the trajectory to divergence.  This leads to a density map: some points are visited more often than others (it is conventional to plot this rotated 90 degrees, to highlight the shape):

42 million randomly chosen values of \(c\)
In addition, there is the anti-Buddhabrot, which plots the trajectories of all the \(c\) values inside the Mandelbrot set.  These do not diverge: some converge inside the set, others cycle around.

Again, the code is relatively simple, and you can calculate the Buddhabrot and anti-Buddhabrot at the same time:
import numpy  as np
import matplotlib.pyplot as plt

IMSIZE = 2048 # image width/height 
ITER = 1000

def mandelbrot(c, k=2): 
    # c = position, complex; k = power, real
    z = c
    traj = [c]
    for i in range(1, ITER): 
        z = z ** k + c 
        traj += [z]
        if abs(z) > 2: # escapes
            return traj, []
    return [], traj
def updateimage(img, traj):   
    for z in traj:
        xt, yt = z.real, z.imag
        ixt, iyt = int((2+xt)*IMSIZE/4), int((2-yt)*IMSIZE/4)
        # check traj still in plot area
if 0 <= ixt and ixt < IMSIZE and 0 <= iyt and iyt < IMSIZE:   
            img[ixt,iyt] += 1    

# start with value 1 because take logs later
buddha = np.ones([IMSIZE,IMSIZE]) 
abuddha = np.ones([IMSIZE,IMSIZE]) 
for i in range(IMSIZE*IMSIZE*10):
    z = np.complex(np.random.uniform()*4-2, np.random.uniform()*4-2)
    traj, traja = mandelbrot(z, k)
buddha = np.square(np.log(buddha)) # to extend small numbers
abuddha = np.log(abuddha)          # to extend small numbers

plt.imshow(buddha, cmap='cubehelix')    
plt.imshow(abuddha, cmap='cubehelix')
These plots are more are computationally expensive to produce than the plain Mandelbrot set plots: it is good to have a large number of initial points, and a long trajectory run.  There are some beautifully detailed figures on the Wikipedia page.

As before, we can iterate using different powers of \(k\), and get analogues of the Buddhabrot.
\(k = 2.5\), the "piggy-brot"
More figures and animations of the Mandelbrot set, the Julia set, and the Buddhabrot, are available on my website.

Saturday, 16 May 2020

Julia set

Before the Mandelbrot set came the closely related Julia set.

Consider the sequence \(z_0=z; z_{n+1} = z_n^2 + c\), where \(z\) and \(c\) are complex numbers.  Consider a given value of \(c\).  Then for some values of \(z\), the sequence diverges to infinity; for other values it stays bounded.  The Julia set is the border of the region(s) between which the values of \(z\) do or do not diverge.  Plotting these \(z\) points in the complex plane (again plotting the points that do diverge in colours that represent how fast they diverge) gives a picture that depends on the value of \(c\):

\(c = -0.5+0.5i\), a point well inside the Mandelbrot set
\(c = -0.5+0.6i\), a point just inside the Mandelbrot set
\(c = -0.5+0.7i\), a point outside the Mandelbrot set
If the point \(c\) is inside the Mandelbrot set, the corresponding Julia set is one connected border around one connected region.  If it is outside, there are instead many disconneted regions.  The deeper inside the Mandelbrot set, the larger and rounder the black region in the Julia set looks; the further outside the Mandelbrot set, the smaller and hence paler he Julia set looks.

This leads to the idea of plotting the Mandelbrot set in a rather different way.  For each value of \(c\), instead of plotting a pixel in a colur representing the speed of divergence, plot a little image of the associated Julia set, whose overall colour is related to the speed of divergence:

Julia sets mapping out the Mandelbrot set

As with the Mandelbrot set, we can construct related fractals by iterating different powers, \(z_0=z; z_{n+1} = z_n^k + c\):

\(k=3, c = -0.5+0.598i\)
\(k=4, c = -0.5+0.444i\)

The code is just as simple as, and very similar to, the Mandelbrot code, too:
import numpy  as np
import matplotlib.pyplot as plt

IMSIZE = 512 # image width/height 
ITER = 256

def julia(z, c, k=2): 
    # z = position, complex ; c = constant, complex; k = power, real
    z = z
    for i in range(1, ITER): 
        z = z ** k + c 
        if abs(z) > 2: 
            return 4 + i % 16 #16 colours
    return 0
julie = np.zeros([IMSIZE,IMSIZE]) 
c = np.complex(-0.5,0.5)

for ix in range(IMSIZE):  
    x = 4 * ix / IMSIZE - 2
    for iy in range(IMSIZE):
        y = 2 - 4 * iy / IMSIZE
        julie[iy,ix] = julia(np.complex(x,y), c, 5)
julie[0,0]=0   # kludge to get uniform colour maps for all plots

plt.imshow(julie, cmap='cubehelix')

Thursday, 14 May 2020

Mandelbrot set

When I reviewed Matt Pearson's Generative Art, and plotted a Mandelbrot set made from random splodges, I went and looked at my own webpage about this structure.  I discovered a case of bit rot: the little Java applet I'd written many years ago had stopped working, as is the way with much old software.  Rather than rewrite it, I pottered around in Python, reproducing some of the plots.

The Mandelborot set is a highly complex fractal generated from a very simple equation. Consider the sequence \(z_0=0; z_{n+1} = z_n^2 + c\), where \(z\) and \(c\) are complex numbers.  For some values of \(c\), the sequence diverges to infinity; for other values it stays bounded.  The Mandelbrot set is all the values of \(c\) for which the sequence does not diverge.  Plotting these points in the complex plane (and plotting the points that do diverge in colours that represent how fast they diverge) gives the now well-known picture:

If \(z\) is raised to a different power, different sets are seen, still with complex shapes.

iterating \(z^4 + c\)
The power doesn't even need to be an integer.

iterating \(z^{2.5} + c\)
The discontinuities visible are due to the fractional power resulting in a logarithm in the solutoin, which is multi-values in the complex plane. The plot shows only the principal value.

We can make an animation of the shape of the set as this power \(k\) changes:

\(k = 1 .. 6\), step \(0.05\)

One thing I love about the Mandelbrot set is the sheer simplicity of the code needed to plot it:

import numpy  as np
import matplotlib.pyplot as plt

IMSIZE = 512 # image width/height 
ITER = 256

def mandelbrot(c, k=2): 
    # c = position, complex; # k = power, real
    z = c
    for i in range(1, ITER): 
        if abs(z) > 2: 
            return 4 + i % 16 #16 colours
        z = z ** k + c 
    return 0  

mandy = np.zeros([IMSIZE,IMSIZE]) 
for ix in range(IMSIZE):
    x = 4 * ix / IMSIZE - 2
    for iy in range(IMSIZE):
        y = 2 - 4 * iy / IMSIZE
        mandy[iy,ix] = mandelbrot(np.complex(x,y), k)
    plt.imshow(mandy, cmap='cubehelix')

And there's more.  But that's for another post.

Friday, 8 May 2020

Covid-19 diary: VE day

Today we celebrate the 75th anniversary of the liberation of Europe from a brutal fascist dictatorship, and acknowledge the sacrifices our parents and grandparents made during the time.

The rise of the Nazis is an important lesson of history.  It didn’t happen overnight; it was a gradual process.  Not everyone subscribed to the ideology, but as its grip strengthened, it became increasingly difficult, and dangerous, to resist.

The lesson is that we should watch out for similar processes happening today, and nip them in the bud.  There are currently distressing parallels of the rise of nationalism and fascism around the world, from nationalistic groups arising in European and other countries, including the nationalistic underpinnings of Brexit, to the nibbling away of the rule of law, of checks and balances, in other countries.

Crises can tend to amplify nationalism, as people pull together locally, but apart globally.  And necessary measures put in place during crises can be difficult to remove after the crisis has passed (is it really over? better be safe than sorry!)

VE day reminds us of the utter horrors of fascism.

Don’t let Covid-19 help them return through the back door.

Tuesday, 5 May 2020

Covid-19 diary : snooker

The 2020 World Snooker Championship should have been on TV last week, but unsurprisingly it has been postponed.  So BBC2 have been showing highlights of old matches.  Ask anyone who has been around a few years which match they would definitely show, and you will get the answer “the 1985 final”.  That final, between Steve Davies and Dennis Taylor, is the stuff of legend.

It was the best of 35 frames.  It looked as if it was going to be over quickly, as Steve Davies took the first 8 frames.  But then Taylor started coming back, and the match went into its second day.  We decided to watch the end game, thinking Davies would probably clean up quite quickly.  But then it reached 17 all.

The final frame was agonising, but riveting.  It took over an hour, and went on past mignight.  It was eventually decided on the black ball, which didn’t go down without a fight.  Truly memorable, and there were a lot of bleary-eyed people at work the next day!

BBC2 showed it at the end of last week.  I watched the final frame.  Again.  I had forgotten the details of the agonising safety play, the foul strokes, the snookers, the missed pots, the green that ended up in a different pocket from where it was aimed.  I held my breath during several shots.  And then there was that final black, hanging on, with another succession of safety shots and missed pots.  Eventually, Steve Davis missed a pot, and the white hit the black on the rebound, leaving a clear shot for Taylor; the look Davies gave the table when he saw what had happened.

In the interview afterwards, we learned that nearly 19m people, nearly one third of the UK population, watched that final frame, after midnight, on BBC2.  And we learned how snooker had grown; only 13 years earlier, in 1972, Hurricane Higgins won the championship playing in a cramped workingman’s club.  David Attenborough was responsible for this growth, wanting a relatively cheap programme to show off the new colour television service.

One intersting little fact I got from Wikipedia: Taylor had not been in the lead at any point during the game, until he potted that final black to win the championship.

And I suppose that, if not for Covid-19, we might not have seen it again.  It’s a funny old world.

Saturday, 2 May 2020

book review: Generative Design

Hartmut Bohnacker, Benedict Gross, Julia Laub, Claudius Lazzeroni.
Generative Design: visualize, program, and create with Processing.
Princeton Architectural Press. 2012

Having read Pearson’s introduction to Generative Art with Processing I was in the mood to move on to the next level. Hence this book, also based on the interactive Processing language, but with many more, and more sophisticated, projects. These cover bothart and design.

The book is in three main parts. First, Project Selection, is over 100 pages of glossy pictures, whetting the appetite for what is to come. Second, we get Basic Principles, starting with an introduction to Processing, and chapters on working with colour, shape, text and images; these projects are quite sophisticated in their own right, but each focusses on a single aspect. Finally, we get Complex Methods: more ambitious projects combining the concepts introduced earlier.

All the code is available online (in Java mode), which provides an incredibly rich resource to start working from. I didn’t directly use any of this code; I did, however, get inspiration from the Sunburst Trees project to write some of my own (Python) code to draw basins of attraction of elementary cellular automata:

a basin of attraction of N=14 ECA rule 110

A lovely book all round: great content, and beautifully typeset.

For all my book reviews, see my main website.

Monday, 27 April 2020

book review: Generative Art

Matt Pearson.
Generative Art.
Manning. 2011

This is an introduction to producing generative art using the Processing language. I had a brief fiddle around with Processing a while ago, and produced a little app for playing around with the superformula; I read this book to see how Processing is used for art. Processing was invented to be an “easy” language for artists to learn. In its original form, it is based on a stripped down version of Java. I discovered with a bit of Googling that there is also a Python Mode available, which I find preferable.

The book has an introduction to generative art, and introduction to Processing (Java Mode), and three example sections on its use for art: emergent swarming behaviour, cellular automata, and fractals. There are lots of good examples to copy and modify, and also lots of pictures of somewhat more sophisticated examples of generative art.

There is a lot of emphasis on adding noise and randomness to break away from perfection: [p51] There is a certain joylessness in perfect accuracy. Now, fractals are one area that can provide exquisite detail, but are they too accurate? I decided to take his advice, and add some randomness to the well-known Mandelbrot set: instead of a regular grid, I samples the space at random, and plotted a random-sized dot of the appropriate colour:
It certainly has a different feel from the classic Mandelbrot set picture, but I’m not going to claim it as art. However, the Python Mode Processing code is certainly brief:
def setup():
    size(1200, 800)
def draw():
    cre,cim = random(-2.4,1.3),random(-1.6,1.6)
    x,y = 0,0
    n = 0
    while x*x + y*y < 4 and n < 8 :
        n += 1
        x,y = x*x - y*y + cre, 2*x*y + cim
    fill((n+2)*41 %256, (256-n*101) % 256, n*71 %256)
    r = random(2,15)

Note for publishers: don’t typeset your books in a minuscule typeface, grey text on white, with paper so thin that the text shows through, if you want anyone over the age of 25 to read it comfortably. I frankly skimmed in places. Nevertheless, this book should provide a good introduction to Processing for artists, providing basic skill that can then be incrementally upgraded as time goes by.

Thursday, 23 April 2020

book review: Unthinkable

Helen Thomson.
Unthinkable: an extraordinary journey through the world’s strangest brains.
John Murray. 2018

The brain is amazing, and amazingly complex. One way to learn about how it works is to study it when it goes wrong, or behaves differently from normal. Here Thomson, following in the footsteps of Oliver Sacks, provides multiple different windows onto different brains. Each of the nine main chapters is based on a single person with a particular difference, with a personal conversation, discussion of other similar cases, and some suggestions of what is going on, or not going on, in these different brains.

We get a man with a perfect autobiographical memory, a woman who can’t find her way around (Developmental topographical disorientation), a colour-blind man who sees people with colourful auras (synaesthesia), a man whose personality changed after an electric shock and is now compelled to paint all day (sudden artistic output syndrome), a deaf woman who constantly hallucinates music (Musical ear syndrome, an aural version of Charles Bonnet syndrome), a schizophrenic man who thinks he is a tiger (clinical lycanthropy), a woman completely detached from her feelings (depersonalisation disorder), a man who thought he was dead (Cotard’s syndrome), and a man who can feel what other people feel (mirror-touch synaesthesia). The fact that these disorders have medical names shows that these people are not unique: there is something reproducible and systematic going on here.

The colour-blind synaesthete tale sparks a question. The chapter starts off recounting an experiment demonstrating that people can’t actually see “auras”, and goes on to explain the particular subject’s perception of colours in terms of his synaesthesia. Putting these together: maybe most of those people who claim to see auras aren’t lying, aren’t con artists; maybe they are just mistaken, misinterpreting their own synaesthetic perceptions?

Several of the other chapters make me want to build some sort of unified brain model (I will resist the temptation). This thought initially started on reading Dennett’s Intuition Pumps, which made me wonder if blindsight recognition and Capgras delusion are just two sides of the same coin: emotional and rational perceptions being out of synch. Many of the descriptions here are similar: the brain is a mass of different models – rational, emotional, perceptual, proprioceptual, predictive, generative, and more – and it needs to integrate all of these coherently for “normal” cognition and feeling. If one or more of these models fails to be properly integrated, there appears to be something out of kilter with the world. The brain desperately tries to make sense of these contradictions, and “explains” the situation the best it can, with bizarre consequences. Different models failing to integrate give different problems, helping us understand how they do usually integrate. (So much for simple rational-only models of artificial intelligence.)

So there is much food for thought here, told in an accessible style.

For all my book reviews, see my main website.

Sunday, 19 April 2020

book review: Understanding Systems

Heinz von Foerster, Bernhard Poerksen.
Understanding Systems: conversations on epistemology and ethics.
Kluwer/Plenum. 2002

Foerster was one of the original cyberneticians. This book is an in-depth conversation between him and Poerksen, a journalist, probing his early life, life under the Nazis, later life in the US, but mostly his systems thinking and ((alleged) lack of) epistemology.

As I was reading this, I was firmly agreeing with parts, firmly disagreeing with others, and going do what? with the rest. The main thrust of Foerster’s personal philosophy seems to be that he wants to be epistemology free. Since everything is mediated through the senses, nothing can be known with certainty, and having arguments about whether something is “right” or not is fruitless.
[p40] If one just stops for a moment and says, “The person who is producing this view of the world is you. It isn’t outside, and it isn’t some so-called objective reality that I can relate to,” a very unusual emphasis on the respective personality of the person speaking occurs. All of the general statements that begin as “This is the way it is!” begin turning into statements that start with “I think that…” To return to rather lofty terminology, one uses the self-referential operator “I think” and decides not to use the existential operator “it is”. In so doing, a completely different relationship emerges that permits a dialog that is free and actually quite nice.
Although on the one hand this seems reasonable (I started writing “is clearly true”, but decided that was against the spirit of the passage itself), on the other hand, there are some things for which we at least have better evidence than others, even if that evidence is mediated through our senses and potentially unreliable. I have more evidence that I read this book (the notes I made while reading it, for example) than evidence that I understood it (the density of question marks in those notes, for example). We may be mistaken about the quality or provenance of the evidence (maybe somebody else made those notes; maybe I am hallucinating them), but if we treat everything on the same level, we would probably soon be hit by a car, or starve to death.

And what do you say when your conversational partners asks why you think X, asks for that evidence? If you always say “Oh, I have no evidence, I just think X”, your partner will soon stop arguing with you; you have to lay out your evidence. But Foerster doesn’t seem interested in presenting evidence, only in engaging in dialogue. I’m not sure what the purpose of the dialogue is, in that case. (This is presumably one of the bits I have not understood.) It also assumes that the person you are in conversation with is arguing in good faith, which is not always the case.

Anyhow, there is a lot of this sort of discussion, but at one point Poerksen calls him a constructivist, and Foerster replies:
[p43] No, no. I am Viennese. That is the only label that I have to accept. I come from Vienna; I was born there, that’s an established fact. Of course, you are correct when you say that there are a few people who claim that I am a representative of a certain epistemology. But that just isn’t right. I don’t have any epistemology at all.
Umm. How can Foerster claim that the “fact” of him being born in Vienna is “established”, or that Poerksen is “correct”, if he doesn’t “have any epistemology at all”? At first, I assumed this was a going to be a little joke, but it was never picked up on.

Despite these occasions of apparent self-contradiction (and who doesn’t do that?), there is a lot of food for thought in here, and interesting material on the dawn of the cybernetic age.

Wednesday, 15 April 2020

film review: The Man from Earth (2007)

John Oldman is a respected university professor, who resigns just as his career seems to be in the ascendant. He tries to sneak away, but his friends drop round to his cabin to throw him a farewell party. They can’t understand why he is leaving, and pester him for a reason. Eventually he agrees to tell them: he’s an immortal Cro Magnon who has to keep moving on since he doesn’t age. Initially his friends assume he is joking, but as the story lengthens, they start to think him mad, or maybe even start to believe him…

This is almost entirely dialog taking place in a single room, and is utterly gripping. Is he joking? As he and his friends point out, there is no way to prove what he is saying. But the story keeps building. One thing that makes John sound so believable is the serene way he both tells his story, and reacts to the jibes and questions of his friends. Could only someone who has lived as long as he claims, and been taught by the teachers he mentions, be so mellow?

Although filmed in 2007, this was conceived and written by Jerome Bixby somewhat earlier. I think that, with today’s technology, some of Oldman’s claims could indeed be substantiated: a DNA test might help demonstrate his stated age; some antibody tests might help demonstrate he had suffered the various ancient diseases he mentions. So he is even more right to keep hidden!

For all my film reviews, see my main website.

Tuesday, 14 April 2020

Covid-19 diary : online ordering

Went onto Amazon to order more of a consumable item that I’ve been buying for a while now.

Click Add to basket, quantity 1

Error message: Minimum order 2.
The item appears in my basket, but with quantity zero.

Increase the order quantity to 2.

Error message: This seller has a limit of 1 per customer.
The item now appears in my basket with quantity 1.

Proceed to checkout.

Error message: Minimum order 2.
The item now appears in my basket with quantity 2.

Proceed to payment.

(At least it didn’t get into a loop.)

Monday, 13 April 2020

book review: Complexity: a very short introduction

John Henry Holland.
Complexity: a very short introduction.
OUP. 2014

When I saw that John Holland had written “A Very Short Introduction” to complexity, I was excited, and snapped up a copy. Given Holland’s stature in the field, I was looking for a good distillation of concepts, and, maybe, a suitable introduction for my students.

Unfortunately, I cannot recommend this book. This is for two main reasons. Firstly, it is riddled with errors. Secondly, the part on Complex Adaptive Systems, or CAS (as opposed to the somewhat simpler Complex Physical Systems, or CPS), appears to be a summary of Holland’s own work in the area, not the more general introduction I was looking for.

The first issue is more of a problem. Here are a few examples. On p.7, Holland discusses von Neumman’s cellular automaton (CA) replicator, a complex pattern that can replicate itself, then references figure 1, which shows a glider from Conway’s Game of Life CA. On p.11, he says that CPS tend to be modelled using partial differential equations (despite most of his examples being discrete space and time CAs), then states that the theory of partial differential equations (PDEs) is additive, that is, linear (and says this again on p.25); by p.13 he is talking about PDEs being used to describe chaotic (necessarily non-linear) systems. On p.15 he states that the Koch snowflake fractal curve is “everywhere discontinuous”, rather, it is everywhere continuous, but nowhere differentiable. And so on.

Okay, so maybe the part on CAS is better than the part on CPS, because that’s his area of expertise? But no. Take figure 6, which has two parts, one a set of rules, and the other supposedly a network representation of the behaviour of those rules. Except that the two parts don’t fully correspond, and the hash notation in the rules (a wildcard) is nowhere explained; the figure as it stands is unintelligible. Furthermore, this specific formulation of rules is Holland’s own model of CAS, which would be absolutely fine in a book about his model, but not so much in a general introduction.

I gave up reading soon after this point. Even if there are some interesting insights (and I’m sure they must be) how can they be picked out from the mass of erroneous statements, and the potentially over-specific model presented? Unfortunately, this book will have to go back on my shelf; I will not be recommending it to my students, or to anyone else.

For all my book reviews, see my main website.

Friday, 10 April 2020

Covid-19 diary : bats

Today I learned that there are over 1200 species of bats, and that they make up about 20% of all mammal species.

So, one fifth of all mammal (species) can fly!

Tuesday, 7 April 2020

Covid-19 diary : pollution

So, the Covid-19 lockdown has reduced pollution noticeably, in more ways than one.

Less smog in China, less NOx in Europe (but unfortunately not dolphins in the clearer Venice canals).

And, something I’ve recently noticed – no spam phone calls!

Monday, 6 April 2020

correcting proofs

I’ve spent a couple of hours correcting proofs of a paper.

There were several … interesting … changes made by the typesetter.

But the one the really had me yelling at the screen was in some mathehatical text.  We had introduced an operator called redacted (well, it wasn’t actually called that, but I’m protecting the guilty here).  We consistently used a sans serif font, to distinguish it from other terms.

In some places it had been changed to redacted.  In some places it remained as redacted.  And in other places it had been changed to redacted.


Sunday, 5 April 2020

Bach, the Universe & Everything

I was supposed to be in London today, giving a talk about Can a Bacterium Compute at the Orchestra of the Age of Enlightement’s “Bach, the Universe and Everything” event.

However, *gestures vaguely at world*.

The guys in charge organised a virtual event instead.  I recorded my talk, which was a quite straightforward process, just requiring a webcam, a stepladder and a tripod.  More impressively, the orchestra performed remotely, and individually.  I assume each part was recorded separately, then mixed together for the broadcast performance.  I rather like the montage of individual performers: you can see who is doing what, very interesting.

With the power of the web, you too can indulge in this virtual event, timeslipped from its original release.  This might even reach more people than the planned live event would have.

Tuesday, 31 March 2020

the moon

This is a photo of the moon tonight, taken with my phone camera, just hand-held, through a 40mm eyepiece on our new telescope, an 8" Schmidt–Cassegrain.  So, a proper camera, properly mounted, is going to be great!

raw image, not post-processed; 21:51 BST

It was a beautiful sight to see: the seas and more craters were much more visible to the eye, which has better dynamic range.

sequestering carbon, several books at a time CV

The latest batch:

Saturday, 28 March 2020

Covid-19 diary : names

There are lots of names around: coronavirus, Covid-19, and people are also talking of  SARS-CoV-2.  What's with all these letters and numbers and names?  Well:

  • Covid-19 is the name of the diseasecoronavirus disease 2019
  • SARS-CoV-2 is the name of the virus that causes Covid-19: severe acute respiratory syndrome coronavirus 2; it is also being called “the Covid-19 virus”
  • coronavirus is the name of the bigger group of viruses of which SARS-CoV-2 is one type

See the W.H.O. site for more details of why there are different names.

Thursday, 26 March 2020

Covid-19 diary : video

I was supposed to be giving a public lecture.  It was cancelled.  Then it was reinstated as a virtual event.

I was going to provide a voiceover on slides.  But I was asked for a video of me talking.  So I needed a background a little less cluttered than random piles of books.

Cue black sheet slung from a tripod and stepladder:

Wednesday, 25 March 2020

Covid-19 diary : gloves

I saw a workman leave an elderly neighbour’s house this morning.  He was carrying a big tool box, and was wearing protective gloves.

As he left, he stated to take off his gloves.  Because he was carrying the toolbox in his right hand, he stripped off his left hand glove with his teeth.

Saturday, 21 March 2020

Wednesday, 18 March 2020

wash your hands to Brahms

There’s a lot of dark humour out there at the moment, but this is definitely on the lighter side.  Certainly beats singing Happy Birthday to yourself!

Tuesday, 17 March 2020

silent Hangouts

As part of working from home, there’s a lot of discussion of various conferencing apps.

I’ve been using Skype successfully for a while, but haven’t been able to get Google Hangouts to work: video fine, people can hear me, but I can’t hear them.  And since Skype works, I’ve been defaulting to that.

But now there’s going to be a lot more remote conferencing, and work is defaulting to Hangouts.

So today, I bit the bullet, and spent time trying to diagnose the issue.

1) Another computer in another room – it can hear me, I can’t hear it.  My speakers, or its microphone?  When I test my speakers in Hangouts, they work.  But so does the microphone on the other machine.

2) Try it on my laptop instead.  Same issue.

3) Try it on my phone.  I can hear that.  So it’s not the other machine’s microphone.  And at least I have a workaround if needed.

4) What’s common between my main machine and laptop, but not my phone?  Chrome.  So, try it on Firefox on the laptop.  It works!  So, it’s a Chrome issue, not a machine issue.  But Chrome and Hangouts are both Google.  Humph.

5) Googling suggests there might be an issue with a Chrome extension.  Fiddle around.  Discover that disabling “Disable HTML5 Autoplay” cures the problem, on both machines.

Yay!  I now have Hangouts working!

But YouTube videos now autoplay their followup video…

Friday, 13 March 2020

involuntarily clearing my diary

At the beginning of the week, nothing I was due to attend had been cancelled.

Here, at the end of the week, four workshops or conferences I was due to attend (in April, May, July, and August) have been cancelled, and in turn I’ve cancelled a workshop we were due to run at the end of March, and will not start to organise the one due to be held in August (at that cancelled conference).

So my diary is now a lot clearer that it was, and we are all discussing how we can move some of this research activity on line.  And I will be working from home for the duration.  I’m lucky enough to have that option, unlike some people.

Tuesday, 10 March 2020

view from a hotel window

Here I am in Swindon again; it’s raining again.

rainy Swindon seen through a wet window

London was noticelby quiet on my way through.  Lots of bowing and Vulcan salutes at the start of our meeting here, as opposed to handshakes.

I strongly suspect this will be my last outing for a while, although nothing has been cancelled as yet...

Wednesday, 4 March 2020

view from a hotel window

I’m in a hotel near Heathrow, at the EPSRC Global Grand Challenges Retreat, talking about cross-disciplinary research.

I took the Heathrow Express for part of the journey; the in-train announcements looked as if they had been hacked by an alien.

the black line wasn’t visible, but even without it, the messages didn’t make any sense

The view from my room window is over the interior of the hotel, with a rather bizarre moon on display.

once in a blue moon?

Monday, 2 March 2020

Harry Lauder's Walking Stick

I love the alien contorted complexity of our Harry Lauder's Walking Stick, aka Corkscrew Hazel, or more poshly, Corylus avellana Contorta:

Monday, 24 February 2020

well, I wasn't expecting that!

When I arrived in York last night at about 10:30, it was (relatively) warm, and dry.

This morning, I got a bit of a shock looking out the window:

But it had all gone by lunchtime.

Thursday, 20 February 2020


It was pouring with rain, then the sun came out.  So I rushed to a window on the other side of the house, to see:

16:33 GMT, looking east

Sunday, 16 February 2020

sequestering carbon, several books at a time CIII

The latest batch.  They didn’t all arrive at once; they’ve been slowly piling up, but I’ve only just got around to databasing them.

Saturday, 8 February 2020

bigger bird feeder

When we bought our new telescope at the weekend, we got a few peripherals, including a gadget to attach a smartphone camera to the eyepiece.  The gadget also fits binoculars, and I’ve been playing around with it today.

This is the view of our birdfeeder with the phone camera, and, from the same spot, with the camera attached to a pair of 8x42 binoculars:

small, far away
through binoculars

So, once there are actually some birds around, I should get some much better pictures.

The picture through the binoculars is cropped, because it gets a circular image.  Amusingly, from a distance, if you squint, the full picture looks a bit like Jupiter on its side:

not Jupiter!

Later in the evening, I tried the gadget on some 15x70 binoculars, looking at Venus, which is very bright in the west at the moment:

Venus, smeared; 17:33 GMT

Hmm.  Even firmly bolted to binoculars firmly bolted to a tripod, the camera wobbles when I touch the shutter button.  So I’ve now ordered a bluetooth remote shutter control…

Once the telescope is all properly aligned and calibrated, I'll try it on that, too.

Monday, 3 February 2020

view from a hotel window

I’m in Manchester for a meeting today.  So, another day, another hotel.

sunrise over Manchester: 8:15 GMT

Saturday, 1 February 2020

view from a hotel window

I travelled down to Kensington from York last night, staying at a hotel near the AstroFest event.

view from the (very grubby) hotel window
a more downward view, explaining the noise
I attended only today’s talks this year (as I had to work yesterday); they were all fascinating as usual.  This year we had people watching out for asteroids that might impact Earth, solar flares, that image of a black hole, ESA missions, Hubble and art, the history of the Royal Astronomical Society, a mission to an as yet unknown comet, and the next 200 years of astronomy. The Director General of ESA has the most wonderful sense of humour!

And, after having been talking about it for several years, we finally bought a new, bigger telescope, to be delivered next week.

Sunday, 19 January 2020

view from a hotel window

I’m in Nottingham, at the final #TechUpWomen residential.  Incredibly inspirational stories from a range of amzing women, who’ve been on a whole host of personal journeys over the last six months.  This initiative absolutely has to continue!  All credit to Sue Black for getting it off the ground.

The view from my window was the usual roofs-and-chimneys thing:

The view inside, down the staircase, was a bit more scenic, and rather vertiginous: