Picaresque, happy ending. Marvelous character sketches from main to comprimarios to minors.
The Quy Effect is an anti-gravitic Meissner Effect analogue exhibited by a novel room-temperature organic superconductor developed by a lone maverick inventor. As the novel opens our hero, a ne’er-do-well basement tinkerer in his 70s, has made his discovery blowing up his employer’s factory and has been summarily fired and black-listed.
But the Quy Effect is not only the scientific discovery, it is Quy’s effect on his family, his friends, and the world. It is the effect that a maverick lone dreamer can still have in a world of science that has become bureaucracy and teams. It is Caractacus Pott - Crackpot - contra the mundane.
Unlike Fleming’s charming fable, there is no Evil in this story. There is opposition, and threat and danger, but it is all from simple human conflicts of interest, from pettiness, selfishness, short-sightedness, lack of vision and imagination, fear, self-doubt, self-absorption; and not from the opposition only: our hero creates his own problems by his own stubbornness, self-absorption, and selfish focus on what is essentially an artistic drive, tho’ his field is industrial and scientific. Against these are arrayed good-nature, kindness, and caring.
It is a book about fathers and sons: the relationships among Quy, his son Preston who worshipped him and whom he rejected to keep him from following in his maverick footsteps, and his grandson Alan, who also worships him, and from whose influence his father wishes to protect him are briefly but beautifully presented.
And there are redemption, and reconciliation, and understanding, and self-understanding.
The finale is an acknowledgement that teams are necessary for large projects and a plea for human-scale committees, small and unencumbered by self-protective procedures, energized by pride and commitment. (And I believe that NASA achieved that, with a third of a million participants; as great a feat as the engineering and scientific achievements.)
Disturbing follow-up to Many Dimensions. The English genius for intensity through a glass.
By itself, the story of a man nearing the end of his life, afforded a glimpse of hell and an opportunity to experience self-sacrifice and service.
As a sequel to Many Dimensions, Lord Arglay has a limited experience of the submission and self-sacrifice that Chloe fulfilled in the earlier novel.
Arglay, tempted to anger and rage and vengeance - the last most anathema to one who had devoted his life and shaped himself to the service of Justice - offers us his formula “there is entire clarity in the Omnipotence” for recalling oneself into peace from tumultuous and negative emotions. “It operated; the temptation passed into the benediction of the Omnipotence and disappeared.”
But for the Personalization this could as well be a Taoist or Buddhist approach, perhaps. But Williams is a Christian, and I think he wants us, through Arglay, to come to something closer to Christian faith. Arglay came late in life to belief: he chose belief in the novel as a carefully reasoned response to his enemy’s actions, chose it as an intellectual posture, chose to give himself over to acting out of belief, without, I think ever understanding what it means to believe. Chloe demonstrated that submission to the will of God is belief, that sacrifice is belief. Lord Arglay understood what she had done; I think in this short story he is given the opportunity to do so himself.
The second half of the piece is a ghost story, a very disturbing ghost story, largely atmospheric tho’ with one intensely unforgettable image (borrowed I think, like the last line of the story, from Dante.)
The best part of the story are Lord Arglay’s observations on aging and the acceptance of aging in the first half.
This is trickier than I thought. Here is a fragment of StarLogo code:
to patch-setup
activate-demon [evaporation-demon diffusion-demon]
end
to evaporation-demon
set-pheromone peromone * 0.9
end
to diffusion-demon
diffuse pheromone
end
StarLogo specifies simulations in terms of turtles - mobile agents - and patches - fixed pieces of ground. Turtles and patches can have properties and can execute code. Demons are procedures that, once activated, execute repeatedly and concurrently for each patch (or turtle, but in the example above, only two patch demons have been activated.)
So the intent of the code above is that a patch of ground may have had some pheromone deposited on it, and that the pheromone both evaporates and diffuses to neighboring patches (‘diffuse’ is a StarLogo primitive.)
StarLogo simulations should be thought of as massively parallel: each demon runs on each of their subjects simultaneously and in lock-step. All the patches are subject to evaporation and diffusion at the same time. That is woefully underspecified: in this simulation, does evaporation happen first, and some of the remaining pheromone diffuses? Or vice versa? Or do evaporation and diffusion occur in chance order for different patches? And does the amount diffusing in participate in the evaporation and diffusion in the current step?
For that last question, I decided on the classic Conway Game of Life solution: the current step changes a new copy of the world. The amount diffusing in doesn’t affect the current step. That leaves the question of the order of diffusion and evaporation. Since the simulation is intended to be qualitative and exploratory, I decided it doesn’t matter.
For simplicity, the demons will be executed in the order in which they were activated; each demon will run on each of its subjects before the next demon is run. Demons will operate on a copy of the world, and the final results will be copied back. That means that diffusion, for example, is calculated on the current stock of pheromone, and the results of all diffusing out and diffusing in are summed into a ’next’ array and then copied back.
It might be interesting to experiment with different implementation choices (for example, always work on the current world, so that the order in which patches are processed impacts the final result, or allow the demons to interleave) and see if there is much differece in the progression of the simulation. I wish I knew the mathematics needed to make predictions about the effects of these choices. There must be “process models” or reasoning techniques for such things?
StarLogo is a parallel-processing simulation language designed by Mitchel Resnick in the ’80s, extending ideas from Logo.
Logo was designed to teach children logical and procedural thinking, particularly in terms of “turtle graphics”: moving a turtle about on a flat surface and drawing lines. Sophisticated geometry can be explored procedurally: Abelson and DiSessa’s Turtle Geometry treats vector graphics, topology, and general relativity.
Resnick designed StarLogo to help teach systems thinking, and used it successfully with groups of high-school students. He describes several of these projects and investigations in Turtles, Termites, and Traffic Jams.
StarLogo specifies simulations in terms of turtles - mobile agents - and patches - fixed pieces of ground. Turtles and patches can have properties which can be set and tested, and procedures that execute repeatedly and concurrently for each patch or turtle.
(StarLogo was first implemented on a Connection Machine, a massively
parallel SIMD computer; by convention, parallelized versions of
various programming languages were named with a “∗”, for example
*Lisp
and C*
, hence the name StarLogo. Versions of StarLogo
were implemented on Macintoshes and in Java.)
I thought it would be fun to implement a StarLogo and play with the simulations described in the book. As I am learning Go, so my first thought was to model StarLogo demons as goroutines. As I don’t know how to do GUIs in Go yet I decided to prototype in JavaScript.
Here’s an outline:
a_simulation.js
sketch = {
setup: () => { ...initialization... }
step: () => { ... }
}
starlogo.js
const canvas = ...
const ctx = ...
const turtle_demons = []
const patch_demons = []
function Turtle () { this.x = random(); this.y = random(); ... }
Turtle.prototype.forward = function (n) { ... }
Turtle.prototype.right = function (a) { ... }
Turtle.prototype.draw = function () { ... }
Turtle.prototype.activate_demon = function (demon) { turtle_demons.push(demon) }
...
function Patch (row, col) { this.id = [row, col]; this.center = ...; this.color = ...; }
Patch.prototype.get = function (property) { ... }
Patch.prototype.set = function (property) { ... }
Patch.prototype.draw = function () { ... }
Patch.prototype.activate_demon = function (demon) { patch_demons.push(demon) }
...
const turtles = []
const patches = []
const setup = () => {
for (let i = 0; i < TURTLES; i++) { turtles.push(new Turtle()) }
for (let i = 0; i < PATCHES; i++) { patches.push(new Patch()) }
...
sketch.setup()
}
const step = () => {
sketch.step()
for(d of turtle_demons)
for(t of turtles)
d(t)
for(d of patch_demons)
for(p of patches)
d(p)
}
setup()
The heart of the simulation is the step function in starlogo.js. It
executes the sketch’s own step and then each of the demons for each of
the turtles and patches. There are a current-state
and a
next-state
as is usual in cellular automata implementations, which I
left out of the sketch above.
Cosma Shalizi wrote a fine essay at The Bactra Review on the paedagogy and the politics of decentralized systems in Prof. Resnick’s book.
“The heart of the book, on how to teach people about decentralized processes and emergent behaviors, and the tricky process of designing and controlling them, is excellent. Since I happen to think that self-organization is both quite important and quite neat, this is to me a thing of joy; and no doubt people with different scientific and philosophical biases will find Resnick’s woollier ideas congenial.” – Cosma Shalizi
My guru Charles Cooke, staff writer on The New Yorker and avid amateur pianist, whose Playing the Piano for Pleasure 1 got me started and has been a great practical influence, wrote:
When you substitute a good habit for a bad one, or when you decide to acquire a habit where none existed before, the new habit must function at first, for a little while, from power supplied by you. This is the stage where we have to make a strong conscious effort, even to the extent of a sensation of spiritual pain. But in a surprisingly short time the habit begins to take over the task of supplying power; it begins to develop its own momentum; and finally we get a sensation of spiritual pain if we don’t exercise the habit.
I’m starting to feel “spiritual pain" when I don’t play the piano: I miss playing, I feel a mild longing to play, when too much of a day has gone by before I start.
The reluctance to sit down and play came, I think, from beginner’s frustration. Every mistake led to self-judgement. Who wants to play under constant criticism? I think I’m starting to break the habit of self-judgement.
Cooke, Charles. Playing the Piano for Pleasure: The Classic Guide to Improving Skills Through Practice and Discipline. Skyhorse Publishing (2011) ISBN: 978-1-61608-230-7 Originally published by Simon and Schuster, 1941. ↩︎
Quotations from Charles Cooke’s On Playing Piano 1
Josef Hofmann once said in conversation: “Few people realize what can be done by playing a difficult piece six times a day, very slowly, for three weeks; then putting it aside for a few days, and repeating the process.”
Let me recommend very slow playing, with the most minute attention to detail" (Teresa Carreño).
The worst possible thing is to start practicing too fast: it invariably leads to bad results and lengthy delays." (Ernest Schelling).
Slow practice should be used as assiduously for practicing pieces as for setting fractures. You will be amazed, I think, at the rapidity of your progress if you bear this in mind.
Josef Hofmann once said in conversation: “Few people realize what can be done by playing a difficult piece six times a day, very slowly, for three weeks; then putting it aside for a few days, and repeating the process.”
You may have been wondering what you should do when, at this point in your work, you play a passage incorrectly. The answer is: don’t merely correct the wrong notes and then go on. Go back and choose a dowel pin at the beginning and another at the end of the passage that went wrong; then practice the passage, with its dowel pins, until it runs accurately and smoothly. Otherwise, you will certainly stumble again at the place the next time you come to it.
I’m going to make the confident assumption that no such flaw can occur at a place which was originally a fracture; for all the original fractures are of course set and are therefore stronger than any other places in the piece. Consequently, flaws can come only at places which are technically not forbidding. Nevertheless, set them like full-fledged fractures, with all the expertness you have acquired, and fit them snugly into their context. Halting to correct merely the wrong notes themselves will form lamentably wrong associations; it’s what Matthay calls, with sublime aptness, Unpractice or Dispractice.
Cooke, Charles. Playing the Piano for Pleasure: The Classic Guide to Improving Skills Through Practice and Discipline. Skyhorse Publishing (2011) ISBN: 978-1-61608-230-7 Originally published by Simon and Schuster, 1941. ↩︎
Series was brilliant, Len Deighton meets Lovecraft and I’ve no end of good things to say about the first six or seven but it has drifted from its remit and I’m reading out of mere inertia tinged with hope.