Friday, 26 August 2016

Whose right?

Madonna of the Yarnwinder:
a small part of Richard Scott's inherited wealth.
Let's start this by restating something which I've said often before, which has been for the past year the 'pinned tweet' on my Twitter profile.
The preservation, by the privileged, of their privilege cannot be a human right.
A group calling themselves Demos Scotland have proposed a draft constitution for a Republic of Scotland. As a convinced republican who believes that the independence of Scotland is in the interests not only of the people of Scotland but of the wider world, I am of course interested.

Now of course it's possible that Dr Mark McNaught, who posted this draft and presumably had a considerable hand in writing it, deliberately put in bombshells in order to spark debate. I don't think so, because, to me, most of the draft constitution reads very well; it's a sensible, if not a poetic or inspiring, document. But if he did he is to be congratulated, because I tripped over an epic one.

Consider article II.B.7:
[All citizens and residents of Scotland, regardless of their status, shall have] the right to hold private property, and to the peaceful enjoyment of his or her property.
Seems sensible, doesn't it, on the face of it? No-one wants strangers barging into their house in the dead of night and throwing them out into the street. No-one wants strangers arbitrarily seizing their phone or their laptop or their bicycle. Obviously everyone should have the right to keep their stuff, the right to enjoy their stuff in peace...

Oh, wait.

Wait a minute.

Wait a cotton picking minute.

This is Scotland we're talking about. Scotland in which just 432 citizens, residents and, in fact, primarily non-residents, own more than half of all the privately owned land, and similar proportions of other asset classes. So we're going to take that extraordinarily skewed distribution of wealth and we're going to enshrine in the constitution for all time?

I don't think so. I so do not think so. That is exactly how you start the bloodiest revolutions.

The right, in Scotland, to hold property cannot be unabridged. On the contrary it must be abridged by ideas about equity and justice.

There's a reasonable case to be made for a meritocracy: for a society in which everyone starts out with a more or less equal inheritance, and each person keeps all (or a high proportion of) the wealth they individually generate, through creativity or hard work, in their lifetime.

But the ability to acquire wealth is at least largely a matter of pure blind luck. A purely meritocratic society is not a generous place. It's not a good place to be ill, to be disabled, to have a random accident. A purely meritocratic society does not meet my conditions for a good society; I doubt it meets yours.

There's a reasonable case to be made for a communist society, in which private wealth, in so far as it exists at all, is distributed according to individual need - so someone badly disabled and not very productive would receive a slightly larger share than someone fit, creative and productive. As Marx expressed it, 'from each according to his ability, to each according to his needs'.

But many people will feel that a communist society does not provide enough incentive for people to achieve. To an extent, I feel that myself; when I finish writing this I'm off to buy myself a new bicycle, as a reward to myself for having worked hard and produced useful stuff. We are, at the very least, socialised to believe that good work should be materially rewarded.

However, I am going to assert that the good society lies somewhere between those two positions. The good society is not one in which the lottery of birth determines whether you have a life of ease or of hunger.

Looking at Scotland today, J K Rowling is hugely wealthy because work she has done in her own lifetime has given great pleasure to hundreds of millions of people. Richard Walter John Montagu Douglas Scott is hugely wealthy because he is the eldest male child of a long line of more or less rapacious mercenaries and thieves.

Of course, Rowling has also been lucky; across Scotland, across the world, other people were writing childrens' stories at more or less the same time. I'm an admirer of her work: it rattles along with pace and wit. But it isn't, qualitatively, vastly better than the work of many other contemporary writers. It's good; but also, she was lucky. She caught the zeitgeist and rode it.

A just society, I think (and I'm sure J K Rowling would agree), shares some proportion of that wealth around. To the writers who, for one reason or another, never caught the zeitgeist; to those who, for reasons of health or ability or luck, were never able to write at all.

But there is an element of merit in Rowling's wealth. She sat down and grafted. I know well just how much work there is in writing a novel, and particularly how much work there is in finishing one. There's no element of merit in Scott's wealth. He has done nothing significant to contribute to it, and very little at all to contribute to the well-being of the communities who have provided it.

There is, and must be, some moral distinction between these two types of wealth. I can see a good argument for J K Rowling being guaranteed a right to the peaceful enjoyment of at least some of her property. She has, one can reasonably argue, earned it. I can see no argument whatever that Scott should be guaranteed such a right. He is not a meritorious individual; on the evidence, somewhat the opposite.

So I'd like to propose an amendment to Demos Scotland's draft constitution.

II.B.7: delete all and substitute:
The right to hold a reasonable and limited amount of private property, and, within that reasonable limit, to the peaceful enjoyment of that property. Nothing in this clause shall invalidate any tax, duty or custom levied in accordance with the CSL, or an environmental regulation imposed on the development or use of land or natural resources. Nothing in this clause guarantees the right to pass property to a successor, nor to inherit property from a predecessor.
That last bit?

We all want to inherit from our parents. My father's copy of Heimskringla, my mother's rocking chair, my great grandfather's clock, the santa-claus hat I put on my little sister's gravestone each Christmas, are all precious to me. They are precious partly because they have been part of my life since early childhood, and partly because they bind important memories of people I've lost. To pass down small objects laden with memory and association from generation to generation seems undoubtedly a good thing.

But there's a line to be drawn somewhere between passing down these sentimental objects, and passing down items which make a fundamental difference to people's life chances. Is my life materially better because I have a copy of an old Icelandic book? Probably not. Is my life materially better because I grew up in a household where there were many books of early European thought and literature? Well, actually, probably it is. Would my life be materially better if I had inherited, for example, not an old and dusty book but the Madonna of the Yarn-winder?

Well, actually, yes it would. Dramatically better. And that is the point. We cannot have a good society and inherited wealth, because inherited wealth locks in inequity and privilege across generations. Even if you view earned wealth as a good thing, unearned wealth - inherited wealth - cannot be.

The right to property and most particularly to inheritance, in a good society, cannot be unconstrained.

Sunday, 14 August 2016

On functional programming: why tools and their quality matter

My rule-driven cellular automaton, MicroWorld,
modelling human settlement in the British Isles
Writing software is about solving problems, about finding elegant ways to solve problems. But it isn't and shouldn't be about finding elegant ways to solve the problems caused by the shoddy workmanship and poor technical design of platform you're working on. If the platform you're working on is shoddy, don't work on it.

Java is a case in point. Java was designed as a special purpose language for writing embedded software for small 32 bit appliances with limited memory. For that special purpose, it's OK - it's certainly more usable than assembly.

Jave inherits syntax from C, which in turn inherits it from BCPL, which inherits it from Algol. It inherits the idea of a virtual machine from BCPL's CINT Code Interpreter. It is, then, an imperative language, one step up from a macro-assembler. There's no mathematical formalism underlying its design.

There's a sort-of object-oriented layer bolted on top of the Algol-like language even in the earliest version of Java, but it's done without conviction. Primitive data items are not objects; there's no orthogonality. And there's no multiple inheritance, either, so it needs to be very clumsily simulated with interfaces. On the very small, memory-limited devices for which Java was designed, these were reasonable choices. But we now very rarely use Java in such constrained environments today.

The orthogonality problem was sort-of fixed in Java 5, with 'boxing' of primitives - if you referred to a primitive as if it were an object, the compiler would magically transform it into an object. But it's a hack.

And Java continues to be extended by hacks. Java 8, for example, hacked on functional programming, because functional programming is a fashion of today. But once again it's 'sort-of' functional programming, just as Java 1 was 'sort-of' object oriented.

Functional programming is in fashion today because we've reached the physical limits of Moore's law: individual processor cores are no longer getting faster. To increase performance, we need to share processing over more and more processors: to share the load. That's simple if the data being acted on by the process on one processor cannot be changed by a process running on a different processor, and so functional languages with closures and immutable data make programming for parallel architectures trivial.

But Java data is inherently mutable: that's the nature of object orientation. The state of an object is altered by setting its instance variables. Java also doesn't have first-class closures. So Java's 'functional programming' hack doesn't do what it implies on the tin: it doesn't make programming for parallel architectures trivial. On the contrary, it introduces more opportunities for subtle and intermittent bugs.

This is software design by marketing focus group: our customers want X, let's bolt something which looks superficially like X onto the side of our existing product.

C# is, in origin, an even worse story than Java. Java was designed to do something - to be used to create embedded programs for small appliances. C# is just a fit of pique, because a judge wouldn't let Microsoft release a non-standard Java and call it Java. So C# is a language like Java and inheriting all Java's faults, but deliberately incompatible with Java. And as each new feature has been bolted onto the side of either Java or C#, the other has slavishly (but subtly incompatibly) copied.

Programming languages don't have to be like this. Structured Query Language is soundly based in relational algebra; Prolog is based on first order predicate calculus. But the only computer language anyone actually needs to know is a straightforward implementation of the mathematical basis of computation itself: the lambda calculus.

Yes, I know all computer systems of any significant size contain elements which seemed like a good idea at the time and which later turned out not to be. Interlisp, Portable Standard Lisp and Common Lisp are all examples of LISP-2 - they have separate value and function pointers on every symbol. Interlisp and Portable Standard Lisp both also have subtly different symbol binding mechanisms between interpreted and compiled code, which means that the scope of symbols is different leading to semantic difference - which was an uncommon but horrible pitfall when your code worked when interpreted but broke when compiled.

Interlisp had an awkward inorthogonality between older functions which have abbreviated names in ALL UPPER CASE and newer ones which have LongerNamesInCamelCase. Oh, and there was the curious CLISP feature which you could either see as magical or a well of despair, depending on how you used it (I didn't).

Finally, in the Medley release, Interlisp had Common Lisp bodged onto the side. Common Lisp is a bit of a mess anyway, but the attempt to make one system interoperate functions written in two different syntaxes must have made for interesting debugging. But I had moved onto Prolog before Medley was released, so I never really had to deal with that.

In most early Lisps, too, data wasn't really immutable. The functions rplaca and rplacd, which allowed the overwriting of pointers in data structures, were Lisp's dirty little secret. These 'destructive' functions made data mutable. But even back in the 1980s, when parallelism wasn't yet a significant issue, we knew that these functions were inelegant and shouldn't be used.

Modern Lisps, like, for example, Clojure, don't have destructive functions. Data is immutable, and, consequently, parallelism really is trivial.

Of course, Clojure too has its faults. It is partially crippled by the JVM's limited, fixed size stack (back to that notional 32 bit minimal-memory set-top box Java was designed for); but while for many functions I believe that the recursive expression is both the most expressive and most natural, if you make idiomatic use of Clojure's lazy sequences the use of deeply recursive algorithms can be avoided.

There have been some bizarre decisions in Clojure's language design:

  • the default arithmetic operators do not gracefully switch to bignums on arithmetic overflow (although there are alternative operators which sensibly do, if you know about them);
  • nil is not the empty list (both (nil? '()) and (empty? nil) return false) and is also not false ((false? nil) returns false); also, bizarrely, the car of the empty list is nil ((first '()) returns nil) but the cdr is the empty list ((rest '()) returns ());
  • the decision to remove a layer of parentheses from cond and case means that pretty-printing does not give a rational code layout (and also makes translation of code from other Lisps that bit harder);
  • the decision to notate arg-lists and let binding lists as vectors is also bizarre and again introduces needless inorthogonality (yes, I know that as compiled for the JVM they're implemented as vectors, but that's an implementation detail)...

And so on. There is no perfect computer language.

But anyone who has looked at a fern-moss, or a frond of bracken, or a waterfall, or a birch tree, or a cloud, or a prawn, or the development of a human embryo, has to acknowledge that if God does not write Lisp, God writes some language so similar to Lisp as to make no difference. The physical world is built in all its aspects and at all scales of simple functions recursively applied. It physically hurts me to work on systems whose underlying architecture is a bag of hacks kluged together.

A good craftsman chooses his tools.

Wednesday, 27 July 2016

Witcher III: Poland's astonishing cultural achievement

Anna Henrietta, Duquessa de Toussaint
Last night I managed to get Anna Henrietta, Duquessa de Toussaint, killed.

I didn't mean to. I intended exactly the opposite. And in the moments after she was assassinated I rocked back quite literally, thinking 'my God, what have I done?'

I could have prevented her death. I did - clearly - know the risk. I had even alerted the captain of her personal bodyguard to it. But I did not tell the Duquessa herself, and I could have done so. I did have the opportunity.

Today, I have been thinking through the scene again, and come to the conclusion that, despite the dreadful consequence, I had made the right decisions. Geralt must believe in the possibility of redemption; otherwise he is not a monster slayer, he is just a monster.

Geralt?

When you play computer role playing games, you very often have great latitude to choose the character you play as. As such games have become increasingly voice-acted, it's no longer possible in many to choose the name of the character you play as; in the Mass Effect series, for example, you play as 'Shepard', but you may play as male or female, and have a wide choice of character traits.

But in The Witcher series of games, you play as Geralt, and Geralt is not malleable. He has an established character, created over a series of post-modern fantasy novels set in a dystopian eastern European by a highly regarded Polish writer, Andrzej Sapkowski. If you're not familiar with his work, the nearest thing in English literature would be Angela Carter.

Sapkowski uses his fairy tale world to talk about dark themes: ethnic and religious war, pogroms, genocide, ethnic cleansing, evil and redemption, the conflict between free will and destiny or fate. He does this centrally through the adventures of Geralt, a 'Witcher', or itinerant pest control operative.

Witchers, in his world, are a guild of specialist hunters, hunting and killing such magical pests as ghouls, draconids, vampires and so on. They do this largely for hire. Witchers are uncommon partly because the training is extremely arduous and involves the use of performance enhancing drugs which are toxic and cause the deaths of many trainees, and partly because religious cults view them as abominations.

Within this framework, Geralt, as he emerges from the novels, is a terse, hard-bitten man who affects cynicism but is deeply concerned with the morality of his actions; who is at once serially promiscuous and at the same time has strong loyalties to several lovers and a magical quasi-monogamous bond to one in particular, a sorceress, Yennefer of Vengerberg.

In playing The Witcher games, you play as this character, and it's my experience that whether you intend to or not you will gradually inhabit this character, thinking hard about making the decisions that Geralt would make. Because the greatest strength of the series - and they have a galaxy of strengths - is the moral ambiguity of the world. Decisions are hard. There are no clear blacks and whites. There are uncertainties. It is a world in which you - you playing as Geralt - must do the very best you can, knowing that whatever you do you may not be able to prevent bad outcomes.

The death of Anna Henrietta is a case in point. As a child, her sister, Silvia Anna, was believed to be cursed, having been born during a solar eclipse. As such she was considered to be evil, and blamed for everything that went wrong. Sometime in her late childhood or very early adolescence, her parents had ordered a group of knights to take her deep into the wilderness in winter, and abandon her there. There is an implication that the knights raped Sylvia Anna before they abandoned her.

Many years later, Sylvia Anna has returned. She has, by a process of blackmail and deception, had the knights who took her out to be abandoned hideously murdered. If you follow the path through the plot that I followed, you have foiled her further plot and have captured her; you know for certain that she's manipulative and cunning, and, crucially, you know that she had intended to kill her sister.

Is Sylvia Anna evil because she was born during a solar eclipse? Or is she angry and vindictive because of how she was treated as a child?

On the other side, Anna Henrietta is an absolute ruler, spoiled, arbitrary, passionate, given to management by tantrum; when her sister accuses her of a lack of compassion it's hard to disagree with that charge. Anna Henrietta, as the younger sister, was a child when Sylvia Anna was abandoned, and didn't become ruler until some twenty five years later. Nevertheless, it's true that since she became ruler she hasn't done anything to find out whether her sister really did die, certainly hasn't sought her out.

However, in a world where war, genocide and pogroms are widespread, Anna Henrietta's quasi-independent duchy is relatively speaking extremely well ruled. There is no war. There is no starvation, although there are a few beggars. There is order and a certain degree of justice. Anna Henrietta is, then, no paragon; but, within the context of her world, she's a better ruler than most. There is also no obvious succession, so the potential consequences of Anna Henrietta's assassination are all the more dire.

In this situation, should I let an attempted reconciliation between the sisters go ahead?

I did. I encouraged it.

I believe that is what Geralt would do. More, I believe it is what Geralt should do. More yet, it is what I, playing as Geralt, would do again.

Because it is right that the spoiled, fortunate, successful sister, having chosen against character to show love and compassion, should have an opportunity to do so. And it is right that the despised, outcast, sinned-against sister should have the chance to repent her own sins and find redemption.

It was, I say again, the right decision for Geralt to make, and I, playing as him, made it. And he, and me playing as him, are responsible for the consequences.

So, one decision. One hard decision, on the outcome of which two women die who did not need to die, and a peaceful duchy is brought to the brink of civil war. A hard decision which you take with careful seriousness, and which afterwards you rethink and rethink and rethink - how could I have played this differently? A real moral dilemma, a genuinely engaging piece of action. Is this what makes The Witcher as a game?

Yes, a thousand times. Because over the course of the series there are certainly hundreds, probably thousands of decisions of equal weight. Story telling, character, and the agency of the player to act within the story and by so doing change its outcome of the story. Moral ambiguity, hard decisions, are, as I said, the greatest of the many great strengths of this series of games.

What are the others?

Toussaint, the duchy over which Henrietta Anna rules and in which the tragedy of the two sisters plays out, forms an epilogue to the plot of of  The Witcher III: The Wild Hunt. It is a sort of idealised Languedoc, strikingly reminiscent of Guy Gavriel Kay's Arbonne; it's stunningly beautiful, a limestone landscape of bright sunlit days and lambent nights, among vineyards, olive groves, sunflower fields, forests and open maquis, full of castles, comfortable homes and ancient ruins, and centred round the beautiful - and beautifully realised - city of Beauclair. Simply riding through the land of Toussaint is sometimes startlingly reminiscent of watching the Tour de France - the landscape is that well realised.

And it's peopled with wonderfully rich characters. Foppish knights, philosophical vampires, a most engaging boot-black.
Beauclair
But this richly beautiful environment isn't the world of The Witcher 3; it's an afterthought, an indulgent bit tacked on at the end. The majority of the action of the story ranges across the war-ravaged landscape of the northern realms, as competing minor kingdoms, faced with determined invasion by a much more powerful southern empire, instead of uniting fall into internecine chaos.

Across this scarred and blighted landscape Geralt's adoptive daughter is hunted by powerful magical enemies. The action of the main plot is to track her down, to gather allies who can together overcome these enemies, and finally to confront and defeat them. Not then, in itself a hugely compelling plot; but as this main plot drags you across the world it throws you into a series of other plots, stories and dilemmas.

What hits you about any of The Witcher games is the extraordinary beauty and conviction of the game world. Everything is believable; the world has very few artefacts which break the willing suspension of disbelief. For example, signposts are used in this third game as fast-travel points, which is convenient but unnatural, but they look just like one would expect medieval signposts to look. In fact, I very quickly stopped using fast travel; the world is so beautifully realised that it was an actual pleasure to ride across it, enjoying the scenery and happening upon new adventures organically.

The world is a reimagining of thirteenth century Europe in exactly the same way that Arbonne, or Lois McMaster Bujold's Chalion are. But it is very specifically a Polish reimagining, and in that reimagining are remembered the brutal crusades of the Teutonic Knights, the history of pogroms, the savageries of the thirty years war and of the Nazi holocaust. All these and more are distilled with the grimmest of fairy tales into this landscape - a landscape of abandoned battlefields, of heaps of corpses, of roving bands of deserters and bandits, of terrified refugees, of feral orphaned children, of carrion-eaters, smugglers, spies, guerrillas, warlords. But it's also a landscape of orchards, forests, swamps, rivers, farmlands, villages and cities.

To say this world is of extraordinary beauty is not to say it's a world of sweetness and light; on the contrary it's a world of war, massacre, genocide, terrorism, despotism, fundamentalism - and a world filled with every monster and supernatural being from a broad sweep of European folklore. This is strictly adult art, and not because it includes sex scenes (although, yes, it does). It's adult because it includes scenes of extraordinary and visceral brutality. For example, the scene which plays when the player first enters the main square in the free city of Novigrad is a real, bloody horror.

Amidst all this is a great deal of satire and wit. I greatly enjoyed my visits to the university town of Oxenfurt, although even there the academy is closed because the local ruler wanted the young men for his war effort, and because the fundamentalist sect he encouraged wanted the books burned.

There are few bugs. Your horse, Roach, will very occasionally get stuck somewhere improbable, or will put his head through an apparently solid wall. I once saw a monster - a harpy - stuck in a wall. In over one hundred hours of playing the game has crashed only once.

Sailing boats always seem to have the wind behind them, even if you sail in circles.

There are also usual issues I complain about in all games of this genre. As characters have become increasingly voice acted - in common with many modern games, this one is entirely voice acted - so the richness of interaction has declined, because it is much more complex and time consuming to voice-act deep dialogue trees than simply to script them. So the vast majority of non-player characters you encounter have no conversation at all.

Partly in consequence of this, there are too many situations where the only way to deal with an opposing character is to kill them - and it would be very difficult to get through the game without killing many people, who are often little more than petty criminals or soldiers of a tyrannical king. It would, for me, have been improved either by having better ways of negotiating a way through potential conflict situations, or of using stealth to work round them.

There's another downside to voice acting. It seemed to me - and I may be wrong - that Shani, a character I'll come back to later, was voiced by a different voice actor in the third game. This obviously is a minor point; but together with a subtly updated character model (which actually isn't unreasonable - Shani would be ten years older, although she still seems very young) it made a character whom I felt I knew well and very much liked suddenly unfamiliar, and, as such was jarring.

A final issue before I stop carping on about voice acting. It's clear that lip-synch for the game is not to the English text (I imagine it's to the Polish text, and it's quite reasonable that it should be). In many conversations, characters go on apparently speaking silently for significant periods after the English language speech has come to an end. So I had an uncomfortable feeling that there were probably subtleties and nuances in the original Polish script that were quite literally lost in translation.

There's a more serious issue, for me, with the characterisation of Geralt's potential love interests. Partly this goes back to Sapkowski's books. Geralt's primary lover, and most of his incidental lovers, are sorceresses; this is taken from the books. Also taken from the books is the fact that the sorceresses, as a class, are manipulative, devious, ambitious, vengeful and deeply engaged in the internecine politics of the northern kingdoms.

Again, from canon, Geralt is bonded to Yennefer by a magic bond which he himself chose to make. He cannot help but love her (and she him), but this is because of a wish which Geralt himself made to resolve a serious problem with a djinn. He had to make a wish, but he did not have to make that specific wish. So Geralt is bonded to Yennefer, but because he has chosen to be.

The problem for me is that Yennefer as realised in the game is not a particularly likeable person. She's certainly very beautiful, but she's also certainly manipulative. She's on balance good, and she does help out when the going gets tough, but she also certainly uses Geralt. In the course of the game, Yennefer undoes the magic bond, so that she and Geralt are no longer magically constrained to love one another. And really, when you don't have to, I don't see why you would.

This is, as I've said before, not really a problem with the game. The game does realise the character of Yennefer very much as she is drawn in the novels. It's just that the game doesn't show you - or at least, didn't show me - why Geralt would choose her.

This issue is for me conflated because the alternative love interest in the main plot is Triss Merigold. Again, she's a sorceress. Again, she's a character taken from the novels, with her own canonical past. From the novels we already know that she and Yennefer are friends. But, in the sequence of games (which if you're playing this third game, are also sort-of canon), in the first game, in which Geralt was suffering from amnesia, she was also a main plot love interest. In character she's remarkably similar to Yennefer - she's arrogant, manipulative, and (in both the first and third games) uses sex with Geralt essentially transactionally to get him to do things that she wants done.

In this third game - at least, following the path I followed - Triss seemed to be drawn as a slightly warmer, slightly more sympathetic character than Yennefer. It has to be said that in my game I chose Yennefer, not Triss; if I'd made the other choice perhaps I'd have a slightly different view (and I do intend to play through again in order to find out).

But the fact is, for me, these characters are very similar. If you wouldn't choose one, why choose the other? There are many female characters in the plot who are at least equally attractive and who seem just much better people. I'd mention two in particular: Cerys an Craite, one of the candidates for the vacant kingship of the isles of Skellige, who I thought a genuinely serious, thoughtful, thoroughly likeable person (I supported her candidacy, and saw her elected); and Shani, the other main-quest love interest from the first game (in the books, Shani is never a lover of Geralt's, but does have an affair with his even more promiscuous friend and amanuensis Dandelion).

Shani is a sort of thirteenth century Medecins sans Frontiers; she's a dedicated doctor who practices her trade in plague hospitals and on battlefields. She is again presented as a serious, thoughtful, warm, generous person, and is in my opinion definitely the better of the two choices of love interest in the first game. In the third game, however, she appears only in an epilogue, and, in that epilogue, although there is a path for Geralt to have a casual liaison with her, there does not seem to be (or I did not find) a way to build that into a more settled relationship.

My 'big' computer is, even by today's standards, quite powerful (i7, eight core, 3.2 GHz, 16Gb RAM), and has a fairly good graphics card. I was able to play through the early part of the plot on very high graphics settings, and, on those very high settings, the visual beauty is remarkable. However in the crowded, incident filled streets of Novigrad the graphics performance started to struggle, and I had to turn the settings down a bit. I never turned them up again, because actually on medium settings it's still extraordinarily beautiful and runs without stuttering. Nevertheless it would be interesting to play it with a really top-end modern graphics card to see how much difference it made!

So, minor flaws. Very minor.

But how does one sum this up?

It's an astonishing achievement. A work of art bigger in scope than a dozen feature films, than a handful of novels; as big in scope as one of the modern blockbuster TV series such as Game of Thrones. But, in contrast to any of those things, this is not a linear narrative. Instead, the consumer - the player - is deeply, personally involved in the plot, making thousands of decisions which will affect the fates of characters and of nations. And amidst all that complexity and variability, the story not only must play out to a satisfactory conclusion: it does do so.

I never noticed a building model which had been reused (although the world contains, certainly, tens of thousands of buildings); if plant models were reused (and I'd assume they were) again, I didn't notice it. A few character models are reused, but mostly these are uniformed guardsmen (for example) who would look alike. The only voice character model I noticed being reused was one merchant. The depth and richness of the art needs to be experienced to be believed.

I've described the very broad outline of the plot, and story-telling. I've described a few of the hundreds of characters. I've sketched a few elements of the scenery. I haven't begun to describe the wonderfully realised and varied architecture, the glorious sound track, the superb animation.

I took a fairly direct route through the main plot, and then played both the Heart of Stone and Blood and Wine extensions. There are many subplots and sidequests I haven't yet explored, and, of course, there are combinatorially many hundreds of thousands of alternative paths I could have taken through the main plot (although there will be at most only a few tens of these which are very substantially different).

The score system says that, in over 100 hours of playing, I've explored only 36% of the world, and I'll believe that. Thus, compared to something like, for example, all the box sets of the Game of Thrones television series watched end to end, this is substantially bigger. Size, of course, is not quality; but the combination of the quality - which I hope I've conveyed - and the scope make this an epic, a monumental, cultural achievement.

If you're at all interested in story telling, in fairy tales, in European history, in modern literature, I urge you very strongly to experience this game.

Tuesday, 26 July 2016

More maps of Scotland


I've posted about maps of Scotland before; if you follow the different aspects of this blog you'll know I'm rather interested in maps. In June I posted the EU referendum results map. It sharply delineates Scotland. So too did maps of opinion on Europe prior to the vote.



Professor Jim Gallagher opines in the Herald today that this clear difference of opinion does not indicate that Scotland is any different from England. I'd disagree, but let's look at some other maps.

Here's another - apparently unrelated - map: where people petitioning for Tony Blair to be arraigned before Parliament for the war on Iraq come from:

And of course there are more. Here's a quick selection:


Of course you may reasonably claim that (apart from the EU referendum, which we've seen before) since the first shows the General Election outcome (SNP landslide in Scotland), while the remaining two show the consequences of that outcome in key parliamentary votes. Nonetheless, they're stark.

Here's another. Once again, the border between England and Scotland is sharp and clear - and the border between England and Wales completely invisible. Can you guess what this is?



That's a map of the proportion of UKIP voters.

Summary: Scots are significantly more pacifist (oppose Trident, seek accountability for war crimes), less anti-immigration (low UKIP vote), more internationalist (support EU membership), and all these things are equally true across the whole of Scotland - even the Conservative-voting areas - while being sharply different from the overwhelming opinion across England.

In summary, the learned professor is just plain wrong: Scotland is markedly and systematically different from England.

Thursday, 7 July 2016

The end of a work-horse

My cross bike is dying. The bottom bracket bearing, a twelve year old Campagnolo Centaur square taper, is failing noisily. But, as a steel bearing in an aluminium frame which has survived being ridden on the salted roads of twelve winters, it is completely seized and is unlikely ever to be successfully removed.

After a race, Carstramon
My cross bike is my real work-horse. I’ve ridden it in Scottish Championship cyclo-cross races, but that hasn’t been its main role. It's the bike with which I tow my trailer, and consequently the only bike which can effectively replace my car. I need it to fetch groceries, and to take my recycling to the coup. I use it to go camping and touring. I have used it, over the past three years, to commute to work through the streets of Glasgow. It's the bike I really cannot do without. It's also (obviously) an old friend, and much loved. We've been a lot of places together.

But now it needs to be replaced. Bicycle technology has, needless to say, moved on in twelve years, and so there are choices.

The simplest possible thing to do is just buy a replacement frame and bottom bracket (and probably crankset as well). An equivalent aluminium frame, from Dolan, would cost £250; adding the other parts I need to replace would bring the cost up to around £400.

A quiet afternoon ride along the clifftop
However, this would produce a bicycle essentially identical to my current one; it would take no account of improved technologies. And many of the parts I'd be carrying over are already suffering from years of hard treatment.

The next step up is to choose a carbon frame. A carbon cross frameset from Dolan would cost £700; but that frameset is designed for disk brakes. I would really like hydraulically operated disk brakes, they're a huge improvement on cable rim brakes (and the brakes on my current bike can be extremely sketchy in heavy rain). But disk brakes means not only new brakes but new wheels. I currently have two wheelsets for my cross bike, one for road and one for off-road, although of course I could get by with just one. So the price of buying a carbon frameset realistically goes up to at least £1,000.

However, my existing Campagnolo levers won't drive hydraulic brakes, but only cable operated brakes, and cable operated disks are not a big improvement over cable operated rim brakes. So in practice I'd need a whole new groupset, costing £500 or (probably) more.  Of course Campag haven't yet released a hydraulic disk brake; I could use cable operated disks with my current levers, and plan to upgrade in a year or two when (if) Campagnolo do get round to it; or else go for the Rotor Uno group, which looks really interesting but also very expensive.
Camping

In the long run, derailleur gears are probably not the best choice for a high-reliability workhorse - although they're not a terrible choice. Epicyclic gears would probably be better. Edinburgh Bicycle co-op would sell me a Marin bike with 8 speed epicyclic gears, belt drive, and hydraulic brakes for only £900, but that bike has flat bars, which I really couldn't live with, Shimano components which I'm a bit snobbish about, and an aluminium frame. Adapting it to drop bars would cost quite a lot and may even not be possible. Also it has an aluminium front fork, which is going to be harsh off road, and it probably cannot pull my trailer.

Looking at better bikes, Shand Cycles would build me a cross bike with belt driven Rohloff 14 speed epicyclic gears and hydraulic disk brakes. It would be hand made for me here in Scotland, and would be an absolute dream bike - by far the most practical, most durable and most reliable bicycle I could buy. But, it would cost at least £3,600, which is, for me at present, an awful lot of money.

Getting cross in winter
And then there's Cannondale, my other favourite bicycle maker. They're currently building a cross bike with a short travel monoblade suspension fork, which looks extremely interesting. It's available either with Shimano components - about which, again, I'm snobbish - or with SRAM; but the SRAM option costs £3,000, which is still an awful lot of money.

Furthermore, the Cannondale definitely can't take a hub dynamo (which is not necessarily important in these days of much better battery lights), and, since it comes with a through-axle on the rear wheel, can't by default pull my trailer. Whether it can be adapted to pull my trailer is something I don't know, and must find out. It would also be substantially less durable and reliable than the Shand, although it would probably be a lot more comfortable off road.

Dolan would sell me their carbon frame built up as a complete bike for £1200, but with cable
Three wheels on my wagon
operated brakes; I don't have a price for hydraulic, but probably £200 more. That's cheaper than buying a frame, wheels, and groupset separately, and building it myself. It's probably the best option. But I need to think about this.

Sunday, 26 June 2016

Will Scotland veto #Brexit?

Map of EU referendum voting results, by area; blue represents 'Leave'.
A Romanian friend, living and working in London, asked me today, 'is the Scottish Parliament going to veto ‪Brexit‬?' This post is my answer.

Yes and no.

Under the Scotland Act, which is the legislation which frames the powers of the Scottish Parliament, the Westminster Parliament cannot pass any act which affects the governance of Scotland without the agreement of the Scottish Parliament.

So in legal theory, yes, the Scottish Parliament does have the power to veto Brexit - and ALL the parties in the Scottish Parliament (even the Scottish Conservatives) campaigned against Brexit, so if it comes to a vote there will definitely be a majority.

The problem with this legal theory is that because the United Kingdom doesn't have a written constitution, there's nothing to stop the Westminster Parliament overturning the Scotland Act. There's just an agreement that they won't.

If the Scottish Parliament did veto Brexit, the Westminster Parliament would then probably repeal the Scotland Act. At which point we're really in uncharted territory.

Back in the 1970s, when it looked completely impossible for the SNP to get a majority of the Scottish MPs, it was widely agreed by people on both sides that if the SNP ever did get a majority of Scottish MPs that would be enough to declare independence. Now, of course, they do have.

So Scotland could now just make a Unilateral Declaration of Independence, and if Westminster tried to repeal the Scotland Act I think we probably would. But that, too, would be a really messy situation. It could get as bad as civil war.

I think the threat to veto Brexit is a hardball negotiating tactic. It really depends on whether the Westminster parliament wants Brexit or not. The SNP government in Scotland does not intend to allow Scotland to be taken out of the EU and is prepared to play hardball.

There are three possibilities:

1: Westminster could agree to support Scottish independence if we don't veto Brexit; Scotland becomes independent and stays in the EU, while the rest of the UK leaves (and maybe Northern Ireland rejoins Ireland, but that's another potentially bloody mess). This is a good outcome for Scotland and for the pro-Brexit faction in England, but as I say could get REALLY nasty in Ireland.

2: Westminster actually doesn't want Brexit and will use the excuse 'Oh, we couldn't start Article 50 because the nasty Scots wouldn't let us' (I actually think this is quite likely because there isn't a majority for Brexit at Westminster either). Scotland doesn't become independent and the whole of the UK remains in the EU. That sounds like the best outcome but it probably isn't because it would lead to violent anti-Scottish feeling in parts of England, and I fear that would get very nasty.

3. Westminster seeks to repeal the power of the Scottish Parliament to veto #Brexit, and Scotland declares independence. Again, there's a serious risk of trouble in Northern Ireland and I think there would probably be a lot of anti-Scottish rioting and violence in places in England. As I said before I think there could even be civil war.

If there were a big majority for Brexit in England the sensible thing all round would be a friendly separation, England and Wales leave the EU and gradually diminish into a bankrupt and irrelevant basket case of a country, while Scotland remains in an EU which will probably not have a very bright future itself (because as well as destabilising Britain, Brexit has destabilised Europe).

But the truth is that while Scotland had a convincing majority for Remain, England did not have a convincing majority for Leave. It was, across the whole country, a matter of around 2%. So after people have had a month or two to calm down, England as a whole might actually be grateful for Scotland vetoing Brexit.

Even that isn't a great situation, because the rest of the EU is going to be utterly and rightly pissed off with the UK for creating this mess. But it might mean the UK would, for the time being, stay together and stay in the EU.

Friday, 24 June 2016

And so we begin again

The last - very negative - referendum is over, and it ended in the triumph of Hate over Fear. It was a referendum fought between neoliberals and xenophobes, a contest which pitted blatant racism against doomsaying. A campaign - on both sides - of the most extreme dishonesty and bad faith we have seen in my lifetime.

But from its ashes arises a new referendum.

Let's make this one positive. Let's make it about welcoming, about looking outwards to the world and talking about how Scotland can contribute to making it a better place.

The future is uncertain - that's true. It's uncertain whatever choice we make. But let's build a campaign that's positive. That's about what we can do, not what we can't. That's about how much Scotland has to give, not what's in it for us.

Let's say something positive.

Friday, 3 June 2016

On a Difference of Opinion

One of the things the Better Together campaign tried to convince us of during the independence referendum campaign was that there was no significant political difference between Scotland and the rest of the UK in general, and England in particular. That always struck me as a tendentious proposition, but it's only in the last couple of weeks that I've run the numbers and discovered quite how false it was.

YouGov's startling remain/leave map is one of the pieces of information which started me investigating; the other was the claim by a Twitter user (I've forgotten whom) that Scotland wasn't really any more left wing than England.

Now, of course, what counts as 'left wing' depends on your standpoint; the particular Twitter user with whom I discussed this believed that Labour were left wing, and that the SNP were not. The Political Compass disagrees on both points, and I'd tend to trust the Political Compass as a fairly neutral observer on this. In any case, the question is not whether one party is or is not 'left wing' in an absolute sense, but whether one position is more (or less) left wing than another.

For the purpose of this exercise I am counting as relatively left:
  • Class War
  • Green Party
  • Labour
  • Respect
  • RISE
  • Scottish Green Party
  • Scottish National Party
  • Solidarity
and as relatively right:
  • British National Party
  • Christian Peoples' Alliance
  • Conservative Party
  • National Front
  • Scottish Christian Party
  • UKIP
Other parties, for example the Liberal Democrats and the Womens' Equality Party, are treated as centre. That is not a rhetorical ploy. If you assigned the Liberal Democrats as right, for example, it would change the absolute numbers but it wouldn't alter the fact that the Scottish and English polities are systematically different.

On the basis of the classification above, in the 2015 General Election a startling 75% of Scots voters voted for parties of the left; only 16.59% (11.78% of electorate) voted for parties of the right. Even taking non-voters into account, 53.75% of the whole Scottish electorate voted for parties of the left.

In that same election, only 35.9% of English voters voted for parties of the left - only just over a third. By contrast, 55% of English voters voted for parties of the right - amounting to 36.34% of the electorate.

There were substantially more non-voters in England than Conservative voters - thirteen million to ten million. If, as I suspect, many of those non-voters are essentially left-leaning but feel unrepresented by the existing parties, then England is more left wing than the election suggests. But even so, only if all the non-voters in England are left-leaning and all the non-voters in Scotland right leaning would Scotland and England be politically similar.

We're not. We started from different places and have evolved in different ways under different influences. So let's put this 'all one nation really' nonsense to bed once and for all.


Monday, 11 April 2016

In defence of John Whittingdale

Life imitates art, but when it does so it's unsettling. I'm in the process of writing a novel in which the protagonist publicly defends the practice of BDSM. That provides a degree of safe distancing; I am not my protagonist and, in any case, hardly anyone reads my novels so it wouldn't be a great deal of exposure.

I don't normally write publicly about my sexuality, and I am also not someone who's entirely comfortable defending Tories. However, let's start.

A couple of weeks ago in a press interview, Kezia Dugdale said, in simple, dignified terms, that she had a female lover, and this was published without sensation. The press had known the fact, apparently, for years, but no-one had thought it appropriate to 'out' her. Her privacy was respected, as it should have been. In the days after the interview was printed, the Scottish press and the Scottish chattering classes congratulated ourselves at how much we'd grown up as a nation, that we no longer saw someone's sexuality as a matter for public discussion.

John Whittingdale is a Conservative Westminster politician, not a Holyrood Labour one. Like Kez Dugdale, he isn't married to anyone else. Like Kez Dugdale, he has (allegedly) a single lover with whom he has had a moderately long term intimate relationship. Like Kez Dugdale, the press has known of this for some years. And, as in Kez Dugdale's case, the press have, with simple dignity, respected his privacy as they should.

One single journalist, James Cusick, no longer employed by any paper, has decided to break ranks and spread what amounts to salacious gossip.

John Whittingdale's lover is, according to Cusick, a young woman called Olivia King. She is, allegedly, a dominatrix by profession; from her pictures she reminds me very much of a dominatrix friend of mine of whom I think highly. The implication Cusick wants us to draw is that Whittindale is a masochist. There is actually no reason to draw this implication; many people who work professionally as dominatrices do not 'bring their work home', and may have completely different relationship dynamics in their private life.

In any case, it's precisely none of our business whether or not John Whittingdale is a masochist. What consenting adults choose to do consensually in the privacy of their own homes is their own business and no-one else's. Not ours, and not journalists' either. Most especially, it's none of James Cusick's business.

If Olivia King were transgendered, this would not be a legitimate story. If she were male, this would not be a legitimate story. If she were black, this would not be a legitimate story. If she were blind, this would not be a legitimate story. If she were a ballet dancer, this would not be a legitimate story. This is, in fact, not a legitimate story. One person choosing to make what on the evidence presented appears to be a warm, settled, moderately long term relationship with another is not a story. If an MP chooses to take his partner to the House of Commons New Years Eve party, there's absolutely no reason why he shouldn't. Everyone has the right to make the consensual relationships which suit them.

When I was a young man in Scotland, homosexuality was illegal; I knew people who were sent to prison for their sexuality. Now that I am old, the majority of the leaders of Scotland's political parties are - openly - gay, and no-one thinks anything of it. Only one form of consensual sexual expression between adults is still illegal. It's still illegal to hit another person, who invites it, for mutual pleasure. The BDSM community is the last minority whose sexuality could still - in theory at least - lead to prison. And it shouldn't be.

Human sexuality is extremely complex. It's extremely deep. It is fundamental to our beings, to our identity, to who we are as people.  To prevent someone expressing their sexuality consensually with a partner of their choice is to cripple them. We should not do it.

John Whittingdale may be a Tory. He may be a member of a government which I do not hesitate to call evil. He may be guilty of all sorts of things which are of legitimate interest to investigative journalists. But his sexuality is not one of them.

We're grown-ups now, not adolescents sniggering behind the bike sheds.

Sunday, 3 April 2016

Draft letter to Nicola Sturgeon on #BothVotesSNP

Dear Nicola Sturgeon

You know as well as we do that the Scottish National Party is - deservedly - well on the way to an epic victory in the coming election. You know that the SNP will win all - or almost all - of the constituency seats - and will deserve to. But you also know as well as we do that victory in this election - that forming the next administration - is not an end for the SNP: it is only a means to an end.

The end is to create a better Scotland, and you believe - as we do - that to achieve that requires the powers which will come with independence.

In the recent referendum, our side nearly won. We nearly achieved independence. But if you are honest you will agree that the Scottish National Party did not nearly win alone, and that, alone, it would not have nearly won. Rather, a broad movement in which many non-party actors, Women for Independence, the National Collective and the Radical Independence Campaign not least among them, and many other party actors including the Green Party and the Scottish Socialist Party, put their shoulders to the wheel together.

To achieve independence we need to motivate a broad coalition across Scotland. That's why the party you lead - the Scottish National Party - is necessarily a broad church, why for those of us on the left your policies on land reform, on local and central taxation, on fracking inevitably seem timid and unadventurous. We understand that it is necessary for you to be unadventurous in order to not startle the horses on the right of your party, to keep your broad church together.

We greatly respect the competence, focus, hard work and dedication of your government over the past eight years. You, personally and collectively, have done very well and richly deserve the nation's backing.

But competence won't win us independence. Timidity won't inspire people to vote for a big change. The very strategy which is necessary to hold the party together is a strategy which will prevent it winning independence, alone.

It does not have to stand alone. It has natural allies, whom it could choose to foster. The Green Party, RISE and the Womens' Equality Party are all forces which could provide a Holyrood chamber much more supportive of and conducive to the policies you want to advance than the present chamber.

We're sure your recognise in Cat Boyd of RISE, for example, someone far closer to you across a wide range of policy issues than some members of your own cabinet. We're sure that you'd agree that however awkward Andy Wightman would be for any administration as a Green MSP, both the parliament and Scotland's rural policy would be the richer for his presence.

So we're puzzled and disturbed by your support for the 'Both Votes SNP' tag. You must know that tribal politics have been a damaging force in Scotland for generations. But more than this you do know that under the de Hondt system, because the SNP will win the preponderance of the constituency seats, it will win very few of the list seats.

To illustrate this, if everyone votes as current polling suggests they will, we would have seventy nine pro-independence MSPs - sixty nine SNP and ten Green - facing fifty unionists. But if everyone who plans to vote SNP on their first vote also votes SNP on their second, the number of pro-independence MSPs falls to only seventy four, and your allies the Greens are wiped out. Unionists would benefit, and the party which would benefit most from 'Both Votes SNP' is UKIP, up from zero seats to eight.

If, however, everyone who votes SNP on their first vote were to vote, for example, Green on their second vote, we'd have one hundred and eleven pro-independence seats, and only eleven unionists.

Both Votes SNP is a policy which wins the SNP votes at the expense of its pro-independence allies. Worse, it's a policy which actually loses thirty-seven potential pro-independence seats. But worse still, it's a policy which costs any future Yes movement a great deal of money and a lot of full time research and support staff, because as you know, behind every MSP there are two or three staff supporting them.

Both Votes SNP not only removes thirty-seven pro-independence votes from the parliament, it also removes not thirty-seven but about one hundred and twenty nine full time workers from the next Yes movement - and it gifts one hundred and twenty nine full time salaries to the next No campaign.

We're sure that you're confident that, should England vote for Brexit, you can get a motion through Parliament for a new independence referendum. But to win that referendum you will need allies. Now is not the time to be stabbing those allies in the back, but to be embracing them and leading them forward. Now is the time to create a Yes alliance, to agree with Greens and Rise who will stand for Yes on each of the regional lists, to withdraw the SNP's list candidates, and to encourage your supporters not to vote 'Both Votes SNP' but instead to vote 'Both Votes Yes'.

You know as well as we do that Scotland needs this. You know as well as we do that we will not achieve independence without it.

Yours sincerely

Wednesday, 17 February 2016

#BothVotesSNP? That only helps Unionists

The SNP - including the normally-sensible Nicola Sturgeon - have been banging on incessantly for weeks for everyone to vote #BothVotesSNP. This is utter madness, if what you care about is Scotland and our future as a nation. On the current polling, we get the following:


That is to say, pro-independence parties - SNP and Greens - would have a total of only 79 seats at Holyrood, against 50 pro-union seats. That is a majority, but it isn't overwhelming. The unionists will still get plenty of air-time, plenty of coverage, and, most importantly of all, plenty of tax-payers money in the form or salaries for MSPs, researchers and associated staff. With that money they'll be able to campaign.

And notice that seven of those pro-union MSPs are UKIP.

If everyone planning to vote SNP on their first vote also votes SNP on their second (the pure #BothVotesSNP which the party are currently so keen to promote), we get this:

No Greens at all, only 74 pro-independence MSPs (all SNP), and now we're up to 55 pro-union MSPs including now 8 UKIP. The Tories also gain one, and Labour gain three.

By contrast, if all SNP voters give their second vote to the Greens, we get a very different pattern:

This time there are one hundred and eleven pro-independence MSPs, and only eighteen unionists. And all I've done is move SNP second votes to the Greens.

So the clear outcome of this analysis is this: every list vote the SNP gets robs us of pro-independence MSPs, and sets the cause of independence back - badly. #BothVotesSNP is, quite simply, stupid, partisan, tribal politics, psephologically illiterate. It's a vote for the union.

Wednesday, 27 January 2016

Let's hear it for Mugabe-style land-grabs

Those opposed to a substantive redistribution of land in Scotland accuse those of us in favour of substantive land redistribution of 'Mugabe-style land grabs'. The white people of Zimbabwe, we're told, 'own' lots of land on which they have productive farms. The elected president of Zimbabwe, Robert Mugabe, is, we're told, a bad man because he wants to seize this land off the nice white people and give it to his supporters (who are black).

Let's just recall a little history. Between 1810 and 1831, the Marquis of Stafford drove the people of Sutherland off the good land they had customarily farmed onto poor and marginal land, and replaced them with imported farmers. The common folk of Sutherland did not consent to this; no legislative assembly in which they were represented gave authority for it.

Between 1881 and 1900, the Canadian Pacific Railroad drove the Dakota and Métis people of Saskatchewan off the good land on which they had customarily lived, and replaced them with imported farmers (including my grandfather - this is not ancient history). The common folk of the Dakota and Métis did not consent to this (and actually, neither did any representatives of theirs). Instead, they revolted, but it didn't help them, because the railroad company had the guns and they didn't. No legislative assembly in which they were represented gave authority for it.

At exactly the same time, Cecil Rhodes (with help from the British South Africa Police) drove the Matabele and Shona people of Zimbabwe off the good land which they had customarily farmed, and replaced them with imported farmers. The common folk of the Matabele and Shona didn't consent to this. No legislative assembly in which they were represented gave authority for it.

Rhodes' apologists claim he had an agreement - the Rudd Concession - signed by King Lobengula of the Matabele. But what neither side appears to dispute was that the verbal agreement which the king made was for 'at most ten' white men to come, and it gave them rights only to dig for minerals, but that the English written document which he was persuaded to sign made no mention of any limits. Rhodes' apologists are even rather proud of this sleight of hand; it's evidence, apparently, of hard-headed business acumen.

I digress.

What the British Empire was doing, just as much in Sutherland as in Saskatchewan and Matabeleland, was imposing an entirely new concept of land ownership which had never existed before. It gave to members of the new (British) elite exclusive right to determine the management of extensive tracts of land, and to determine who could live on and work that land. And - in Sutherland just as much as in Saskatchewan or Matabeleland - it imposed that new concept, against popular resistance, by force.

You can take a range of views of the relationships of pre-modern peoples with their elites. At best, common folk paid their local elites in return for services of protection from raiders and administration of justice. At worst, local elites ran protection rackets, parasitising off the economic activity of common folk. In almost all cases, the truth was somewhere between these two extremes. But I know of no pre-modern society where elites had a right to throw the commons off the land. Rather the contrary; the elites needed the labour of the commons to extract value from the land, and consequently, in many parts of medieval Europe, common folk - serfs - were actually forbidden to leave the land.

In any case, a legal system constructed by the elite in assemblies of the elite for the benefit of the elite cannot be legitimate. It isn't acceptable to say 'yes, this was unjust; but it happened in the past and we cannot change it now'. On the contrary, from the unaddressed injustices of the past spring the wars of the future. We can and we must rebalance the scales.

Rhodes took the best land off the common folk of Matabeleland and gave it to white farmers. The Marquis of Stafford took the straths off the MacKays and Gunns and MacLeods, and gave it to 'Cheviot shepherds'. The Canadian Pacific Railway took the flatlands of Saskatchewan off the Dakota and the Métis and gave them to the scaff and raff of Europe, including, inter alia, my Grandfather. The Ndebele and the MacKays and the Métis and the Gunns and the Dakota and the Shona and the MacLeods received no compensation when their land was annexed. If what Robert Mugabe is accused of is taking the land back off the white farmers and redistributing it to the common folk of the Ndebele, then, surely, no-one has any gounds for complaint.



(Of course, what Mugabe is actually accused of is giving the land to his cronies, or keeping it for himself. But I don't think anyone seriously supposes that Nicola Sturgeon intends to extend her back garden by annexing Perthshire.)

Saturday, 2 January 2016

The Irresolution: on software, quality, and why one works

Meters, object oriented, with proper multiple inheritance.
Doesn't look very impressive? Well, this is Interlisp-D. In 1983.
I don't make new year resolutions; I never have. This year I almost did...

Some weeks ago, working on a project which has gone horribly badly wrong, I tripped on one of those nasty ugly non-orthogonalities which litter Microsoft software. In frustration, I wrote a very sarcastic comment in my code. In code review, a colleague whom I very much respect chided me: a bad workman blames his tools.

Yes, I thought but did not say, but a good craftsman chooses his tools. And I decided then that by the end of 2016 I would be working only in pure functional languages and only on competently-written platforms. That was going to be my first ever new years resolution.

I'm sixty, dammit. People are not going to pay me to cut code for very many more years. I started my career, thirty years ago, working on Interlisp-D, a development environment technically streets ahead of anything commercially available now. A thing of real beauty and a joy to work with.

The general idea of 'progress' is that things get better over time, not worse. I'm damned if I'm going to end my career writing on Microsoft's fit-of-pique clone of an ALGOL-derived language which Sun consciously and deliberately crippled because it was intended as a special purpose tool to develop programs for small-footprint embedded systems with very limited memory.

A meter I wrote this year, in SVG and Angular. No multiple
inheritance, so much less reusable code.
It's crap. Writing software is about solving problems, about finding elegant ways to solve problems. But it isn't and shouldn't be about finding elegant ways to solve the problems caused by the shoddy workmanship and poor technical design of platform you're working on. If the platform you're working on is shoddy, don't bloody work on it.

That was a good resolution. A wise resolution. A resolution it would have been sensible to adopt.

Just after Christmas it was tested: my attention was drawn to a job advert a friend of mine has posted: Clojure, my preferred language, on UNIX, my preferred platform, in Glasgow. I know the office, I've done coding dojos there. It's very slick, very comfortable, with standing desks I much admire; I know several of the team, and I like them. It should be a dream job.

And I'm not going to apply.

Why not?

Cowardice? Possibly.

An old man's reluctance to move? Well, certainly that. I find settling into new places and building new networks of relationships stressful and difficult, so that is a real consideration.

Engagement in the work I'm doing? Well, I do believe in what we're doing. I do believe that what we do, as a company, makes the world a better place. And I do suspect that the company is quite likely to make it very big indeed, and I'd be quite interested to watch that happen - even if this time I'm just an employee.

But what it really boils down to is loyalty. Loyalty to a key group of the people I'm working with; a desire not to let them down. Not that I imagine I'm irreplaceable; I'm nothing like as good as I used to be, and I'm much less good working with tools I dislike than I could be.

I know this is a bad decision. I know that some months down the track I'm going to find myself falling into another sinkhole of Microsoft shite and I'm going to regret this decision bitterly.

But this is my decision, and I've made it.

Afterword: on why tools and their quality matter

Yes, I know all computer systems of any significant size contain elements which seemed like a good idea at the time and which later turned out not to be. Interlisp is a LISP-2 - it has separate value and function pointers on every symbol. It also has subtly different binding mechanisms between interpreted and compiled code, which means that the scope of variables is different leading to semantic difference - which was an uncommon but horrible pitfall when your code worked when interpreted but broke when compiled. It has an awkward inorthogonality between older functions which have abbreviated names in ALL UPPER CASE and newer ones which have LongerNamesInCamelCase. Oh, and there was the curious CLISP feature which you could either see as magical or a well of despair, depending on how you used it (I didn't). 

Finally, in Medley, it had Common Lisp bodged onto the side. Common Lisp is a bit of a mess anyway, but the attempt to make one system interoperate functions written in two different syntaxes must have made for interesting debugging. But I had moved onto Prolog before Medley was released, so I never really had to deal with that.

Similarly, Clojure is partially crippled by the JVM's limited, fixed size stack (back to that notional 32 bit minimal-memory set-top box Java was designed for). And there have been some bizarre decisions in the language design:
  • the default arithmetic operators do not gracefully switch to bignums on arithmetic overflow (although there are alternative operators which sensibly do, if you know about them);
  • nil is not the empty list (both (nil? '()) and (empty? nil) return false) and is also not false ((false? nil) returns false); also, bizarrely, the car of the empty list is nil ((first '()) returns nil) but the cdr is the empty list ((rest '()) returns ());
  • the decision to remove a layer of brackets from cond and case  means that pretty-printing does not give a rational code layout (and also makes translation of code from other Lisps that bit harder);
  • the decision to notate arg-lists and let binding lists as vectors is also bizarre and again introduces needless inorthogonality (yes, I know that as compiled for the JVM they're implemented as vectors, but that's an implementation detail)...
And so on. There is no perfect computer language.

But anyone who has looked at a fern-moss, or a frond of bracken, or a waterfall, or a birch tree, or a cloud, or a prawn, or the development of a human embryo, has to acknowledge that if God does not write Lisp, God writes some language so similar to Lisp as to make no difference. The physical world is built in all its aspects and at all scales of simple functions recursively applied. It physically hurts me to work on systems whose underlying architecture is a bag of hacks kluged together.

A good workman chooses his tools.


Sunday, 6 December 2015

Inquisition: frustratingly close to good.

Cassandra Pentaghast
It's about time I wrote my first review of Dragon Age Inquisition. Not because I've finished it; I haven't. Not because I've explored all possible paths - I certainly haven't, almost certainly won't, and probably couldn't: this is a deep and rich game. But because I've now explored it enough to uunderstand its strengths and weaknesses to a considerable extent, and it's time to reflect on how the experience affects my own ideas about game design.

I've played, so far, about ninety hours. That's equivalent to about two and a half working weeks, which is a very hefty investment of time; I imagine that in that time one could have read War and Peace through at least twice. And I'm not by any means finished. I'm still clearly in the second act, although I think I must be in the second half of the second act. If I do
finish I imagine the total time - for a single path - will be between one hundred and twenty and one hundred and fifty hours. But Inquisition is not a creative product of the same class as War and Peace. Does it merit that sort of investment?

To look at it a different way, a fan of Coronation Street invests over one hundred and fifty hours a year, and Inquisition is certainly a more interesting cultural product than Coronation Street. Inquisition, like any other immersive single-player computer game, is a solipsistic, solitary, and antisocial use of time, but it's also in some ways challenging, intriguing and occasionally delightful.

There have been two points at which I've very nearly given up and decided not to play any further, which I'll come to and explain.

So let's get the core criticisms out of the way first.

The initial load time is quite extraordinary - it takes about 40 minutes between switching my 8 core, 3.2GHz, 16Gb RAM machine on and having a loaded game ready to play. Given that if you do other things on the machine when the game is loading you risk crashing the graphics card, this is in itself a serious disincentive to playing. Inquisition is also not an open world game, although, to be fair, the area to area load times are only long the first time in a given session you visit each area. But that first load time is long - and I imagine on a machine with less RAM than mine, which could consequently cache less of the game in RAM, it would be longer.

This is a BioWare game, and it suffers all the core faults of BioWare games. Despite the fact that the areas are now fairly large, they're cluttered with unclimbable barriers which seem to be there just to force you to run around further. By contrast to CD Projekt Red games, the moral decisions are clear and bland. You can play as a goodie or you can play as a baddie, but there it's never difficult to decide what to do; this is not a murky, ambiguous world. The character progression system is extremely complex and not at all immersive. And the inventory system is bizarrely wrong: a finger ring occupies just as much space or weight in your baggage as a suit of armour.

It also suffers from new faults that older BioWare games didn't have. For example, the user interface to the inventory system has been oversimplified to the extent that there is not (or if there is, I haven't found it) any means to dump crafting materials from your inventory. Once you've picked them up, you have no choice to carry them until you find something to use them on. And, of course, a single sample of a herb takes up as much room in your baggage as fifty bear pelts. You can only carry on conversations with your companions when you're in 'base camp'; out in the field they won't respond to you. And so on.

But the core fault - the one that almost breaks the game - is one I've blogged about before in relation to other games: Voice Acting Considered Harmful. Every line spoken by any character in the game is voice acted, and consequently, because good voice acting is expensive, most characters have no conversation at all and the majority of those that do have very little. This shows up worst in the plot line 'Wicked Eyes and Wicked Hearts', which takes place in a palace in Val Royeaux clearly modelled on the French court. There are literally hundreds of characters present - and virtually none of them can speak. Consequently, the plot line resolves to a puzzle game with too few clues, and one, furthermore, which it appears you actually can't complete unless you do something non-obvious right at the very beginning, which you cannot go back to later. That nearly broke the game for me.

I have started playing again, but for the present I've abandoned that plotline. I suspect I'm going to have to do it before I can procede to act three, but if I do I'll do it with an open crib sheet in front of me, which isn't a lot of fun.

But the other - and more significant - fault of the fact that most characters cannot speak is the fact that most encounters in the game can only be resolved by violence. To progress, you have to kill a lot of people, as well as monsters. There are very few opponents who can be reasoned with, persuaded, brought on-side. Most are just immediately and implacably hostile. That does not make - for me - for an engaging game.

For the rest, the scenery is pleasant but - with the exception of the Skyhold Castle set - not special; again, the CD Projekt Red art team leave BioWare in the dust here. The monsters are monsters - yes, of course there are dragons and you can fight them. There is a lot of varied loot, if that's what interests you; there is a potentially interesting crafting system, if that's your bag. There are lots of different costumes, and you can customise them. I haven't really explored what the modding community has to offer, yet, but it's nowhere near as rich as the Skyrim or Witcher modding communities.

So why am I still playing? Well, frankly, story. And I realise I'm frustrated by how sparsely it's doled out, how much graft I'm being made to do to earn the next snippet.

The bit of the story that's caught my interest?

No, it isn't closing rifts in the sky or defeating an immortal talking monster; that story is cod. The real world has neither personified good nor personified evil, and stories built on them are peurile and not worth anyone's time. The real world is like the Witcher's world, a grey world, a world of least-worst choices, not like BioWare's harsh black and white.

The first time I almost stopped playing was about that. The main plot story - your own character's story arc - is that you have mysteriously acquired a unique and non-transferable magical gift, which is the only thing that can save the world from its new embodiment of evil. And the introduction to the game is entirely linear: go here, do this, go there, do that, with little opportunity for either interaction or choice. Yes, I do understand that the introduction of a game has to lead the player through the game mechanics, but that excessive focus on mechanics often leads to poor writing, and it does here, I think.

So why, actually, am I still playing?

Cassandra.

The character Cassandra - in this game, anyway - is an angry, aggressive, clearly damaged female warrior (no pretty young girl), distrustful, private, emotionally closed; but clearly of strong moral principles and capable of strong loyalty. She's very well written and well voice-acted, with an accent which is at once foreign and unplacable.

There's also a great deal of well written, amusing and character driven interaction between Cassandra and another non-player character, Varric. Varric is a dwarf merchant and part time writer of fiction, including romances which it is heavily implied are extremely steamy. In back-story - actually in Dragon Age 2, a game I haven't played - Cassandra had interrogated Varric with at least an implication that a degree of torture was used. Consequently, at the start of the game there is considerable dislike and distrust between the characters, which gradually thaws during the game in interesting ways.

In brief, both of these were well-drawn characters I quickly came to appreciate. I believe that some of the other companion characters are probably equally well drawn, but they haven't interested me so much so I haven't interacted much with them.

At the point I was seriously considering abandoning the game because I was utterly frustrated by 'Wicked Eyes and Wicked Hearts', I browsed the Dragon Age wiki (moderated by my old friend and companion in crime Carrol Dufault) to check on a few things which might help me to decide whether to continue.

I discovered that Cassandra was 'romanceable'.

There have been romanceable characters in a number of BioWare games, and I'd assumed there would be in this one without a great deal of interest. Romanceable essentially means that there's a plot variant to be discovered which allows the protagonist (that's essentially you) to have a romance with the character.

For Cassandra to be romanceable has to give her a very interesting story arc, to develop in unexpected ways; and that thought is keeping me playing. I also do want to see the further development of her odd freindship with Varric.

In summary, this game isn't the equal in plot or setting or art or dialogue or even character to any of the Witcher games (although it is considerably easier to get into than either Assasins of Kings or Wild Hunt), and it isn't nearly as ambitious as Skyrim, but may have better character and plot. But it's interesting, intriguing, and a lot of the story is well written. Yes, it has been worth the ninety hours I've spent so far. I shall almost certainly complete Cassandra's story arc, because I want to know what happens; whether I'll play on to the end... well, we'll see.

Creative Commons Licence
The fool on the hill by Simon Brooke is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License