#gardening #cookery #gamesdesign #webdesign #astronomy #fiction #travel #unfiction #books #bookbinding #bcp #dnd #maps #technology #photography #walking #admin #comics #friends #ocd#projects #omwb #vegetarianism #if #videogames #wildswimming #kayaking #copyright #archiving #events #knole
I am now just getting on with it and making a start on the actual coding of my virtual godlet. This is something which, historically, has been completely beyond my grasp; I find it usually very difficult to begin making anything until I’ve spied some sort of syzygy happening in my head; until all the spheres of my thinking on a topic are in alignment. Of course, all of you sensible people know that this is a rare event, certainly one which I have yet to witness in my lifetime, and when one is dealing with computer code it is a lost cause. Unlike natural language (in which I might ask you, for example, ‘what’s the smell of parsley?’), it is impossible to predict with any certainty whether what I ask of a computer will be understood in any sense whatsoever. Putting aside the complications of dialect, translation or channel, if we take human beings as, in small part, information processors, we see that they share certain expectations of semantics; a human response to a sentence that contains the words “what” “smell” and “parsley”, in that particular order, will be understood by the asker to some degree, even if it is not the response they were looking for. And once we have that basic understanding parlayed between us, the originator of the sentence can always return to the words at any point and prune, snip, train, trellis, topiary, coiff or shave them as needs must. As long as the inherent meaning of the sentence remains, or a new one is established, the individual parts may as well be the follicles, or foliage, that those verbs signify. They are components to be easily styled, removed, augmented or bouffed without destroying the trunk of the meaning.
This ideal consensus on language, which means that a first draft of most written natural language can stand alone as a parseable piece of work, rarely migrates to the context of computer code. The difference, I think, comes in the nature of the processing of the two different language-modes. When I am writing a natural sentence, the biological computers receiving and transmitting it are close to one and the same, within an acceptable degree of wet, mystic tolerance. My brain (that of the speaker/writer) and your brain (that of the hearer) have subscribed to a communal pattern of interpretation that we can agree upon, and which allows a fuzzy, thick-as-thieves, nod-and-wink as to the inherent meaning of the shared transcript without an exact, binary translation of what I, the speaker/writer, completely meant.
With a digital computer, not the case. We often speak about the problems of having computers recognise natural language, but there is still discrepancy in handing computers instructions written in supposedly-formalised programming languages. A programming language is, to a similar degree, a human construct; the computer must always translate what I am typing into a machine code that can actually be executed on its physical components. No matter how automated the instruction there must always be, as far as I can tell, a clumsy, mucky human defining something somewhere in the chain of proscription. Therefore no matter how precise and elegant that negotiating language, it will always be dictated by an entity entirely alien from the one that must understand it. Even a single line of code can contain errors of typing, syntactical heuristics that humans understand ‘just because’, not to mention assumptions as to the computer’s ability to ‘know what we’re getting at’. With all of these rules-of-thumb and degrees of error, it is always very likely that the code we have written, which we believe is hermetic and executable, will just grind the program to a halt, with no real indication as to why. As I am starting to understand, we cannot assume the computer to be another language-using entity like ourselves; though it has been created by minds like my own, I and it do not share a jot of common sense, lexical generosity or culture. It cannot (as yet) fudge my statements into something that it can understand ‘just because’. It instead operates with a mathematical unambiguity, through a language “clearer and more precise than the spoken languages like English or French” 1 in the words of J.W. Forrester; a statement that I can agree with, even if it glosses over the paralysis of self-expression that such a language presents to the creator.
It’s taken me quite a lot of space here to write through my ideas to the point at which I can say the following; if it has to be this way, and you do have to work with such an unimaginative, taupe correspondent, then it’s best to find out where you are making mistakes and assumptions (the stuff of imaginative discussion) very early on in the process, before your ways of working get too cozy and the relationship starts to sour.
It is the start of the second term of my PhD, and as well as thinking about the above I have become sick of talking about my work without having anything post-verbal with which to illustrate it. I have already begun to fiddle about with Construct 2, a development environment for HTML5 games which has a very sunny, persistent manner in asking me for money. I’m still not its biggest fan; instead of coding scripts directly (as I’d become used to in Gamemaker: Studio) a Construct 2 game consists of ‘event sheets’, lists of conditions and actions chosen from a fractal series of menus that could have been hand-coded in about one-third of the time. It does have its advantages2, but my main reason for using it lies in its native support for Google’s voice recognition API. I have put together a small prototype of
knole‘s titular creature, consisting of some non-committal artwork and some basic looping functions. The voice recognition is already installed; with no work on my part, my deity has its oracle, its psychopomp, a form of priesthood. It can hear the prayers of those that speak them near its (that is, your) microphones.
I haven’t implemented any feedback or reactive behaviour into this prototype. What is important, at this initial stage, is to test my approaches to creating some illusion of life. Without a conscious decision, and apparently ignoring the fact that my character is divine, I have begun by encoding a semblance, a performance, of breathing and blinking. I suppose I settled on these two functions for several reasons:
- These are very low-level behaviours, relatively ‘easy’ to interpret, which can loop with no contingent input from an audience.
- Breathing and blinking are perhaps two of the initial qualities that we expect, in the absence of any other vitality, from a living being with lungs and eyes. I have decided, independently, that lungs and eyes are a good starting point for getting people to identify with my creature, even if it is divine and has no need for them. Kittens and celebrities and people’s mothers have lungs and eyes. People like things to have lungs and eyes, and for those lungs and eyes to do things, quietly and diligently. Without some sort of diligent, quiet, primitive animation, no amount of interaction would counteract a very atavistic sensation on the part of the audience that there was something ‘wrong’ with my creature. Prothesis of biology is nothing new when gods are concerned; just look at Zeus and his rampant, transcendent teledildonics.
- They were quick to code up, and allowed me to test my architecture for the creature with little fuss.
This ‘architecture’, my chosen way of theoretically constructing and organising the encoded ‘self’ of my creature in programming language, is based very much on the principles of Behaviour-Oriented Design, a method of building believable computer agents developed by Dr. Joanna J. Bryson, now of Princeton and Bath universities, during her PhD.
To over-simplify her work, agents (let’s call them ‘creatures’) in this system have separate modules of ‘behaviour’, self-contained micro-programs that chug along quite happily on their own within a large network of other independent behaviours until called upon by something called a ‘reactive plan’. Such a plan is a series of rules which determines which behaviours ‘run’, influenced by both internal and external factors. In the mammalian metaphor of my creature its behaviour, its goals and its ‘plan’ for acting can be influenced both by stomach-aches and thunderstorms, depression and the sight of dew.
In the argot of BOD, then, my prototype’s breathing and blinking are action patterns influenced by a drive selection. In these foetal stages, my creature’s low-level drive could be said to be ‘stay alive’, ‘collect air’ or even ‘pretend to be a living animal’; however I choose to frame this drive, it leads to the creature prioritising, over all others, its breathing behaviour. In more complex agents, there are many arenas of conflicting drives, all of which jockey for priority throughout the agent’s existence. For now, though, we have only lungs and eyes, and even those only function in the most mechanistic, abstract fashion. There are no other factors to consider in its behaviour; it has no concept of fear, because I have not told it what it must do when it experiences the thing I call its fear; it has no concept of hunger, because I have not told it what food is nor that it should crave it. I might not imbue it with these things at all. But for the moment, with nothing to constrict its throat, it hangs there and breathes; in and out, without, very literally, a care in its world, forever.
If you have a copy of Construct 2 you can download the
.capx file from
knole‘s Github repository and look at how these primitive actions are structured for yourself. Though I am currently using BOD for my theoretical applications, I haven’t encoded that architecture into the prototypes yet; Construct 2’s event sheet architecture doesn’t lend itself to it incredibly well. The creature as yet doesn’t have a concept of ‘staying alive’, which might be the thing which compels it to breathe; or a concept of ‘irritation’, or anything to irritate it in the first, place which might cause it to blink. It does these things because it is told to do them, without causality of any kind.
Looking at the functions themselves, at the moment there are no biological simulacra encoded into the architecture; only logical process. Each drawn component of the creature’s face (its brows, its eyes, the various segments of its nose) are separate objects, all of which move at certain rates, in certain directions and up to certain thresholds, simulating the motor functions of a face. These movements are controlled by separate breathing and blinking event sheets, but the values of all of these rates, thresholds and directions are stored separately as number variables within each object itself. There’s a smidgen, then, of BOD’s modularity, but I’m not quite there yet.
This is how the breathing functions, in pseudo-code:
Start ----> 'breathe in'
If: creature is 'breathe in'
And: face < upper threshold ----> move face up @ preset rate
If: face = upper threshold ----> 'breathe out'
If: 'breathe out'
And: face > lower threshold ----> move face down @ preset rate
If: face = lower threshold ----> 'breathe in'
And so on, in a contented loop. The blinking happens concurrently, shrinking and growing the eyes at a much swifter but randomised rate. While I did not test whether the two behaviours would interfere with each other, they seem to make good subliminal bed-mates. What is most important about this architecture is that it is extremely adaptable; every component’s movement, the threshold of that movement and the rate that it moves can change. Once the god has things that it can react to, whether that input be vocal, tactile or otherwise, these inputs can change those numbers, and so complicate its behaviours. The passing of time could make the creature’s eyes droop and sag with tiredness, or a tender finger run along its jowls might make it hyperventilate.
Though in this prototype I sought to bring my way of thinking, my authorial, human language of ‘creatures’, ‘wants’ and ‘breaths’, around to the precise concepts of the computer, to perform a translation between myself and the machine as an initial lemma, the next and important step is to use this mathematicised abstraction of my godlet to explore the shared vocabulary of the human mind that I share with my audience; that emotive syntax of smelling parsley. Even in these very early stages I am witnessing the tabula rasa that coding a creation presents; how everything, every preconception and grant taken, must be explicitly stated there in the code. I cannot write what I like; the rules of grammar in programming are far more ironclad than in English, and everything must be stated very dully and fully before I can begin to play with them. But it is not dull to do so; I am getting excited at how the creation of every single element of this creature’s internal world assumes my authorship. What reasons will I give the creature for breathing? What will irritate it into blinking? What will I tell it to like, and what will I tell it to hate? It will be interesting to start realising some of the principles of BOD into the work.
Of course, this translation is going through several different exchanges now; from my brain to the computer and back into the brain of you, the ‘reader’ of the creature’s face. But it is in that final process, from the computer language into the language of your imagination, that the most telegraphing effect will take place; a sharing of semantics between myself and you. The computer is no different from any other artistic media; I am using it as a vector for significance, relying on our shared animalisms, our closed-circuit sentience, to provide a system out of which all of the personal peculiarities of you witnessing the creature, as part of your particular life, might arise. There are some things that I can predict about your reaction (that you will see my thresholds and rates as the breathing and blinking of a being, rather than as maths) but there are other things that I cannot. I would be interested to hear your initial reactions to the prototype, but I’m happy to report that most of the people that I have shown it to are very taken with it, even at this simple, allegorical phase.
People’s eyes are drawn to its reassuring, regular, cyclical movement, even its lack of reaction. Though there is as yet no sound to accompany it, when I look at my silent godlet I hear behind my ears a wheezing, sucking snort as it draws the nonexistent air inside. Through the movement of the simple lines that make up its nose, people will into being the three-dimensional chambers and membranes that such a nose must have in real life. My tutor even said that it was ‘hypnotic’ to watch. It’s an odd feeling, using digital, documented architectures to test what is, in the end, an organic sort of computation; a parsing of subtle, inexpressible data, garlanding and enmeshing the code with imagination and inference, like fronds of laurel on bobbed curls.
Unlike a computer, the human brain will always compile something; it will never lock entirely. Even when we give it such an impoverished test as this, it cannot help but engorge it into a plump, living deity, pregnant with pauses, expectant to begin.
1. As quoted in Joseph Weizenbaum’s Computer Power and Human Reason, in a less-than-flattering context. <-
2. For example, unlike most programming environments if you change the name of an object or variable it is changed everywhere, which functions a little like a cosmic spellcheck in a universe where an ‘i’ before ‘e’ after ‘c’ can cause total and utter heat death. <-
Now that I am starting to grope into my PhD in great fistfuls, and work out exactly how I might start to build my digital godlet, I think it’s time to focus on specifics. At the moment I don’t have many of those; my notebooks are filled with misty calls to ’empathy’ between the human agent1 and the creature, as well as long, hopeful lists of potential interactions that will, I am sure, prove very difficult to code into being. However, one specific has stood since the beginning of this project, and persists as the mechanic upon which everything else must rely; the ability of the human agent to read the poem, which tells the creature’s story, aloud to the digital creature itself.
Fundamentally, I am talking about natural language processing; the now-banal ability of computers to take the waveform input of a human voice and understand that input as words and sentences, in a computerish sort of way; this is not of course the same as ‘understanding’ in a human sense, but rather involves transcribing those words into parseable text, or ‘strings’, which the computer can use for something else. Most people’s everyday interaction with this technology is limited at best; despite Google’s best advertising efforts, not many of us walk down the street and boss our phone out loud, as if we had a small staff of lice understairing in our fingercreases. If we do use NLP at all, it is in clipped, unbroken phrases; to dictate a text message when we are using our other hand to balance a ziggurat of biscuits, or to ask our phone something provocative in front of all our friends who have not heard its reply. I haven’t yet found much evidence of computers being read anything beyond functional, spare instructions.
Therefore last night, as I am now a Computer Scientist and I do things with a shining, experimental rigour, I lay in bed with some Medjool dates and a cup of oily tea2 and read my phone some poetry.
Though there is a lot of academic writing and positivist chicanery to come in regards to my PhD project, diminutively named
knole, I think that this development log might benefit from something a little woolier.
A few years ago I happened to visit Longleat Park with my family, in my Dad’s Orinoco-green jeep-simulacra with its orrery roof and arse-heaters. Longleat, at its own centre, is a stately home; though its movement through time has been anything but regal. From its owner’s pornographic impastos in the drawing rooms to its transformation into a Middle-English safari park in recent years, I get the sense that the National Trust would wilt around their green-lobed blades if they ever got their hands on it. We were there, along with a parade of other brightly-coloured vehicles, to do something which I to this day find not only absurd but grotesque; we joined the slow queue along the tarmac as it wound past the entrance gates and into the woods, a queue no different in composition from that we had been sitting in an hour before on the A303. It stunk of caramel and onions inside the car, and I could see the snot-glint of grease on every haunch of leather, but of course we could not open the windows. I had one of those apocalyptic, drifting instances when I realised and recognised what everything around me was constructed from, its heredity; from the seatbacks to the diesel in the engine, and the fat girl’s proto-bicep in the car behind us. Luckily, this granularity did not last.
The landscape we were moving through was former huntland, with that posh grass you only seem to get on the posh ranges of grand estates; curated by ewes, thick as a club sandwich, as unbroken as garnet. The woods were sparse and very old, and there was a tiger, predictably, shivering in its colour almost like a fox. The lion’s den was empty for the winter. The macaques had tortured all the squirrels. There may have been a rhino but I may also be dreaming that, now; I see it parked beside a rosehip hedge, as congruous as a battle tank in Wiltshire, with the syrup dripping into its armour.
The whole day was glum and gross, and we hadn’t even reached the shops yet. Longleat is not a circus; the animals looked healthy, and were not badly-conserved. They just looked embarrassed.
We reached a curve in the road; on one side were the woods, and the Park, and on the other an open, massive, slow basket of field, on its opposite side thick with ferns and the chain-link fence, keeping out the greater part of England. As we sat there idling, I caught a large-scale reconfiguration happening in the dogtooth pattern of the ferns. I had been so used to the limited, blaring palette of Longleat’s charges that I could see nothing apart from the fact of movement over there. Eventually, it resolved itself; a small, closeknit herd of deer, wandered through some gap from their territory outside. The main motif of the group was an enormous stag, his antlers a petrified, Celtic diagram. His fawns and does were flush against his coat, and I could barely pick them out in his fallow; could scarcely tell what was eyeball and what was autumn hide.
We had startled them, and they were rammed right up against the boundaries of our experience. Everybody in their cars turned away from the exotic obvious and watched, steering-locked, as the wild family unused to fences negotiated its length, looking for their way back into anonymity. They were the colour of the ferns at that time of year; the colour of the diesel in the engines, and old computers and brown meat around the wishbone and ash and bare branches and every grey sky of England that we had come there to forget. And yet we watched him and them, at the very edge of their freedom, resplendent in their camouflage. The plane on which we all sat shifted, and I (and I will speak for) everybody else on that road experienced a form of moral vertigo, the distinct feeling that humans feel when they see a thing within its nature, unaware, while we crawl along on wheels and eat coconut from the bag. Its an pre-Catholic, primeval sort of guilt; a recognition that past the glare and bombast of what we think we might like, the tropical and the dazzling, there might be a native alternative, a dunner dinner for our eyes, something all the more remarkable for it.
If feels as if
knole, and what I will be attempting with it, might spring in part from that day; that distant clutch of ferns, chevroned like a prison uniform, and the doe’s eyes like a pelt, hiding on the background.
I’ve been given some money by the government to do something which might very well fail.
I am presumptuous about its outcomes already, and even now self-congratulatory about its results. I have yet few of the technical skills necessary to complete it. It will take three years, and I sincerely hope not any more than that. If it succeeds, I may very well have exasperated some intelligent people; I can’t even presume to properly upset them; perhaps even in that I am presumptuous, and it just won’t matter that I’m a charlatan. At the moment, the something is just called
knole; a codename that I decided I required after watching the documentary series about videogame developer Double-Fine. I watched Tim Schafer, their lead designer and writer, weebling and bobbing his way through San Francisco’s Chinatown, pointing up through the blear at the neon signs of bars and clubs which had given his early projects their first, have-to-do names; ‘Lipo’ became Psychonauts, ‘Buddha’ became Brutal Legend, ‘EZ5’ became Happy Action Theatre; a game which I had never heard of before, and whose marketing material seems to involve smelting children.
The placeholding of my projects is not something that has ever occurred to me; whilst ‘working titles’ are certainly a technique that people use across the field into which I have been corralled, they are not nearly as codified as the ‘codename’ in software development, possibly because of the latter’s collaborative processes. Not only is this name designed to give you something monosyllabic and crunchy to talk around in meetings, but it also provides a self-important cant which is meaningless outside the company in which one works. I do not work in a company other than Bonfire Dog, and that makes me lonely; my codename is more of an attempt to feel like a proper developer, surrounded with support, than to obscure anything important from you. Having no work colleagues, I go out drinking far less regularly than the Double-Fine shower (but not as little as the difference between our workforces might suggest), and so it felt disingenuous to name my project after my favourite pubs where I do anything but crawl with my friends. Therefore
knole was named after an ancient deer park near my parent’s house that I sometimes walk through, full of haunted trees and fawns with backs like plasterers’ jeans. Across the undulations where the horses once tailed the dogs, you sometimes catch sight of the grand old house for which the park was named; tea-stained and pensioner-wracked, trusted nationally.
My latest kitten has just learnt (or, perhaps less impressively, just grown) to jump clear from the kitchen floor and into the fridge. I have an irresponsible habit of leaving its cheese-thick door ajar when constructing lunch, and for the past week or so with almost no fail I have heard the corn-grind of his nascent toenails on the lacquered wood, hoiking himself up and into the cavity. At first it was laughable that this compact oik, this tiny hoiker, no longer than an Evian, with a rib-cage like an arm of bangles, should be able to leap eight times his own height. But, of course, on comes life, filling him up, changing his schematic, upgrading him, hardening his bones and his claws. Every day his face grows more and more concave, more SETI-like, though his enormous eyes, the colour of lager, never cease dominating. He pips the pip of the pipistrelle when he is pleased to see me or is hungry, and his tail lashes like a cat. His tongue, when he deigns to display it, is as sweet as a banana chip. He eats like his own tapeworm, and has found the longest stretch of unbroken space in our house, an isosceles from the tip to the tip, and he runs it daily, religiously, back legs pulling forwards and to the right, threatening at every moment to throw him out of control. With all of these disparate likenesses in him, it is becoming no trouble to rally some of them to his cause and pull himself up into odd places, especially if they contain nice smells.
It would be very easy, if a little odd, to begin this piece with some final remarks; certainly far easier than dreaming up some opening words of my own. The done thing is to lead with a quote from somebody else, centred on the page like a cartouche. It’s a reassuring start, to have another person go before you and pharmaceutically compact whatever it is you’re about to spend 3,000 words discussing into something elegant and digestible. However using a person’s last ever words, what they choose or do not choose to say in the final, rattle-to-a-halt moments of their life, has an altogether different effect.
Now, this might be a mite awkward, but I’m desperate to start as I mean to go on; that is, profoundly. And where better to find profundity but in the dying words of some of the finest examples of public humanity from history? Even a very brief prescription from the Internet provides me with no shortage of options.
Hold still, and swallow. They may be big names, but they’ll go down without any trouble.
I shall be going to my own personal sort of Gap, all sycamoreish and lonely. I won’t be available in any format.
In the meantime, there is a short, glacial period in which you can still book your tickets for Crossroads Of Curiosity, the festival of derivation at the British Library of which I’m a part.
Enjoy your weeks.
She might have been a councilwoman; she had a municipal look to her.
It has now been a span of many years, at least several, and I have forgotten everything about her from the head down. I think that she was large, but I have forgotten. I think that she was pale-skinned and mole-filled, but I have forgotten. I have forgotten where I saw her, who she was with, what her hands were doing, and what she wore. Above her all, extending past her actual limits like a gillie, camouflaging whatever there was below her neck, hung her head, to all appearances on top of nothing. I don’t even remember her face or neck or ears all that well, because it was her hair which made me notice her and keep her. It has been a canoptic sort of relationship; I have removed the extraneous material from her, and kept only what is necessary to write about her now, as a fleeting glimpse. I think that if she were to read these statements about herself, she would laugh and be worried.
Whatever else I lay over her and under her when I glanced at her, all those several years ago, her hair was cut into a winged bob, tipped like a sphinx and high-buzzed at the back, and its lower third had been dip-dyed the streaked crimson of fresh muscle or a changed bed, and in seeing that, and coveting it enough to remember it, to annihilate the rest of her, rather than camouflage her, I have used her. Her hair, devoid of the rest, has become a tool hung, ready to have roles ascribed to it, uses and totems and reductions and essences. I am ashamed of myself, and apologise to her here, for finding no use for her for so long that I have forgotten the rest of my Gaze, for keeping her bottled for so long without her knowledge. I apologise to all the others, as well, but she will stand as their symbol, even if in making her so, and in hearing such an apology, she would roll her eyes, vape and go straight back to her spreadsheets.