There’s a new article by me on InfoQ: Nobody Needs Reliable Messaging
There’s a new article by me on InfoQ: Nobody Needs Reliable Messaging
Larry Masinter believes there is a risk in making ‘the “meaning” of [a] language depend on operational behavior‘.
In discussions like this there should be a sharp distinction between natural and computer languages. Larry says meaning ‘depends on what the speaker intends and how the listener will interpret the utterance’ – that’s a valid viewpoint for natural languages, but for markup (html, xml etc.) or programming languages it’s really stretching definitions. There is no speaker, and no direct intentions – unless software has intentions. For markup document instances, there are usually three indirect intentions: those of the language designer, the software builder and the end-user producing the instance. I’m not sure an approach based on intentions is workable for computer languages at all – whose intention does the document reflect? How do we know the intentions of end-user, software builder and language designer do not conflict? How do we know their intentions at all?
Besides, semantics in this way can be described in prose or first order logic. I don’t think first order logic is appropriate for most language design (it’s not human readable, only logician-readable), and prose may be fine but is often inexact. I spoke at length at Balisage 2008 on this issue, and discussed it with David Orchard and others, and I believe an operational approach is often appropriate for computer languages. Why? It certainly is problematic for natural language semantics. There may be an utterance, and a meaning, without any behavior – I can say ‘North Korea tested an A-bomb’, and that has a meaning, even if no-one exhibits any behavior whatsoever after my words. For computer languages, it’s different. It’s possible to describe operational behavior as testable conditions – if I send a system test message A, it should do X. And that makes operational semantics a nearly perfect fit for computer languages – the semantics can be tested with a test suite. That’s enough. No need for real-time behavior after receiving each message.
Larry writes: ‘…standards organizations are in the business of defining languages … and not in … telling organizations and participants … how they are supposed to behave’. That’s far too lenient. If I render text marked <b> as italic, and <i> as bold, I’m not following your spec. Period. If I implement a language specification, and claim conformance, I’m not free to do as I choose. This is even more true in other contexts – business, healthcare, insurance. There organizations exchanging documents sign contracts, and are legally bound to do certain things upon receiving documents – paying after ordering, for instance. Larry’s free-for-all approach to language definitions does not apply to the real world. It’s only true that behavior should not be constrained any further than necessary – but without behavioral consequences, document exchange is meaningless indeed.
So how does forgiveness come about? Paul van Tongeren mentions the conditions of ‘confession, remorse, atonement’. Which he then dismisses, since forgiveness is not conditional, but unconditional: we do not forgive on the condition of some act or atonement by the other, and revoke forgiving if the condition is not met: that is bargaining, not forgiving. Paul van Tongeren rightly noted in his talk that just saying: ‘Yes, I did that terrible thing, I don’t understand why, I’m different now’ cannot bring about forgiveness.
Avishai Margalit, whose views I’ve covered in a previous post, quotes Wittgenstein on the Temple Ritual of the Day of Atonement (Yom Kippur), where a goat was sent into the desert to atone for the sins of all. Here atonement is presented as a kind of magic, where our sins are removed by a simple trick. Margalit notes: ‘…the problem is not the actual use of magic, provided the magic … is conceived only as the expression of a wish to be cleansed of sin … but (when the action) is seen as causing purification, it becomes a superstition’ [EM, p. 187]. A codification of sin-cleansing, for the ritual contemplation of sin, is perfectly OK; the same ritual as actual sin-cleansing is not. Forgiveness is not that easily earned. From my own background: saying three Hail Marys and giving a token fee to the church parish cannot, on its own, be considered a true cleansing of sin. Margalit goes on to say ‘remorse offers us a nonmagical way to undo the past’ [EM, p. 199]. Through remorse a sinner does not deny the deed, but shows regret over it, creates a distance between deed and sinner, and this distance makes forgiving possible. Forgiveness is not an entitlement after expressing remorse, but remorse is a precondition for forgiveness, a human precondition, without magic.
I think Margalit misses a point here. Remorse is only a precondition for forgiveness if it is sincere remorse. If I’ve hurt somebody, and just say ‘Yup, I did that, oops, sorry, regret that now, please forgive’, I’m not likely to be forgiven. Remorse must be sincere; to be sincere it must be felt. Remorse must hurt the offender. If I’ve hurt someone, and I realize the pain I’ve done, and feel pain myself because of it, that is sincere remorse. And this reciprocal pain is in fact a form of atonement. Atonement in itself is a reparation of a wrong, maybe a compensation in money for a damage inflicted; or a payment in suffering, as in Ian McEwan’s famous novel, where Briony spends a lifetime trying to atone for a crime committed at thirteen. The second form of atonement, where the perpetrator feels pain, and suffers, is the form of atonement that in inherent in true remorse. So atonement and remorse are no opposites, no ‘magical’ versus ‘nonmagical’ undoing, but atonement is a necessary component of true remorse.
What about the first form of atonement? The payback, the scapegoat. The meaning of forgiveness is overcoming vengeance. And vengeance is certainly one of mankinds curses. Wars, vendetta’s, feuds, relational fights: the ‘I’ll get even’ mechanism can be responsible for perpetual conflict. Atonement as a payback is a codified form of remorse: I’ll pay reparations, I’ll sacrifice a goat: it shows I’m willing to suffer in response to a wrong I’ve done. If the payment is substantial, if it hurts me to give this sum or object, I’m showing that I am willing to suffer in response to the suffering inflicted. This codification of remorse makes it possible to atone, and overcome vengeance, in situations where remorse may not do: the other party is to far removed for remorse to matter. In societies without a well-established penal system, such codifications of remorse are the oil that keeps the machinery of society going, instead of stalling through perpetual reciprocal vengeance.
Immaterial atonement – grief – is a component of remorse, material atonement – sacrifice – is codified remorse. True remorse with emotional atonement is fitting between those close to us: friends, lover, relatives. Atonement as codified remorse is fitting for God, or the villagers on the next hilltop.
[EM] The Ethics of Memory, Avishai Margalit, Harvard University Press, Cambridge 2002
Recently I’ve been exploring the notion of ‘forgiveness’. Avishai Margalit has devoted a chapter to it in his book ‘The Ethics of Memory‘. The chapter is titled ‘Forgiving and Forgetting’. In it, Margalit makes a distinction between forgiving as ‘deleting’ (text, as in a text editor) and forgiving as ‘crossing out’ (which leaves the original text visible). Forgiving as deleting means totally forgetting the original misdeed: it restores the original relationship between offender and victim, as if the misdeed had never happened. Forgiving as crossing out leaves the memory of the deed intact. Forgiving here is the intention of the victim not to act out of vengeance, i.e. the offense will be remembered, but the offended person will act as if it had not been committed.
Margalit notes aptly that forgiving as deleting is contradictory. It means forgetting the misdeed; and forgetting is something we cannot do intentionally. Margalit compares this to voluntary muscles, such as those in legs and arms, which we can exercise at will, and involuntary muscles such as the heart muscle, which we cannot stop and start at will. Like voluntary and involuntary muscles, there are voluntary and involuntary mental acts, and forgetting is not voluntary. We can strive towards it, try not to think of something, and in due time we may indeed forget it, but we cannot decide to forget. (I skip the remarks Margalit makes on religion and forgiveness, and the special role of God in religious views on forgiveness – for this I heartily recommend his book.) Like Paul van Tongeren, Margalit notes that forgiving actually entails not forgetting: ‘…forgiveness, which is voluntary, should not be tied to forgetting, which is involuntary’ [EM, p. 203].
Margalit further distinguishes between forgiving as a decision, a policy adopted by us not to act out of vengeance, and forgiveness, as the mental state of having overcome resentment and anger: ‘…forgiveness denotes both a process and an achievement, just as the word work denotes both the process of working and the work that is accomplished’ [EM. p. 205]. This conception of forgiveness as a state of non-resentful inner calm and peace is why we forgive on behalf of ourselves as well as the other, as Margalit concludes.
Next, I’ll explore Margalit’s views on atonement and remorse.
[EM] The Ethics of Memory, Avishai Margalit, Harvard University Press, Cambridge 2002
In the previous post on Paul van Tongeren‘s lecture at the ‘Nacht van de Filosofie‘ (Night of Philosophy) in Amsterdam I noted that it is prefectly sensible to say that a smart person has done a dumb thing. Likewise, doing an evil act does not entail being an intrinsically evil person. This merits some more research.
First it is important to distinguish between necessary properties (which could not have been otherwise) and non-necessary, or contingent properties (which could have been otherwise). Saul Kripke noted about a wooden lectern (the one he was standing behind) that it does not make sense to say that this lectern could have been made out of ice. Not, at least, if it was in fact made of wood. His argument runs as follows: we could of course discover that the lectern was in fact made of ice, and through some cunning preparation had been made to look as if it was wood. But, if it is in fact made of wood, it makes no sense to say ‘this lectern could have been made of ice’, since it would have been a different lectern. Of course, another – ice – lectern could have stood in place of the current wooden one, but it would not have been this – wooden – lectern. If the lectern is made of wood, it is necessarily made of wood. Being made of wood is an essential property of the lectern. Standing in this room is not essential – of course this lectern could have stood in another room.
Similarly, Kripke holds that Obama (Nixon in his examples) could not have become the 44th President of the United States (which is perfectly intuitive), but that he could not have had different parents – if someone had, that would have been a different person. As in the case of the lectern, we could of course discover that Obama does in fact have different parents from the ones we believe to be his parents – but assuming that the people we believe to be his parents are indeed his parents, it makes no sense to say ‘Obama could have had different parents’ – that ‘Obama’ would have been a different man, not the man we call Obama. Being born of some parents is essential. Becoming the 44th President of the United States is not. [NN, pp. 312-314] The notion of essential properties is not unproblematic in its own right – but it is clear that there are non-essential properties. ‘Standing in this room’ is not essential for a lectern, being ‘the 44th President of the United States’ is not essential for Obama. Since ‘non-essential’ is all I need for my argument, we can disregard the complexities of essential properties. Suffice it to say that some properties at least are clearly non-essential.
Where does that leave us with being evil? It seems clear that being evil is not essential – even in the case of the exemplar of evilness, Adolf Hitler, it makes perfect sense to say ‘Hitler could have died in World War I’ or ‘Hitler could have stayed a smalltime painter in Vienna’. In both cases he would have been an unremarkable man, long forgotten, and maybe not a nice person, but neither a very evil one. So being evil is not essential. And it is not essential because it makes perfect sense to assume an evil person could not have performed the acts which made him evil, and thus would not have been evil. So even the complete collection of all evil acts performed by a true villain, does not make that person necessarily evil.
If we look at lesser examples, it becomes even clearer. If my former boss, or a former love, or a trusted friend, has done me wrong, it does not make them evil. It does not make them evil, because it makes perfect sense to assume they could have avoided this evil deed. And even assuming they did do it, it is one deed amongst many. As I have shown, even if all deeds by a person had been evil, being evil would not have been an essential property of this person – we still could dissociate the person from the evil deeds. Even more so in the case of a person who has just done one, or a few, bad deeds, it is perfectly possible to dissociate the person from the deed(s).
Evil is not an essential property in the worst of cases. It certainly isn’t in the everyday variety. If someone has done me wrong, it is perfectly possible to separate the deed from the person, to know this deed has been done by the other, to still condemn the deed, but to forgive the other.
For Kripke’s views, see: ‘Naming and Necessity’, Saul Kripke, in: Semantics of Natural Language, eds. D. Davidson and G. Harman, 1972, and ‘Identity and Necessity, Saul Kripke, in: Identity and Individuation, ed. Milton K. Munitz, 1971
The theme of this year’s ‘Nacht van de Filosofie‘ (Night of Philosophy) in Amsterdam was ‘Reconciliation’ (the Dutch word, ‘Verzoening’, doesn’t translate well to English – from it is derived ‘zoen’ which is Dutch for ‘kiss’ for which we also have the more common synonym ‘kus’ – the sweet overtones are unfortunately completely lost in translation). One recurring side-theme was ‘forgiveness’, which notion I am going to explore in some posts.
Paul van Tongeren argued at the ‘Night of Philosophy’ that true forgiveness is not possible. His argument runs thus: Forgiving is not forgetting. On the contrary, forgiving presupposes remembering. So we remember an evil act done against us, but do not consider the actor as evil anymore. Thus seems only possible if the actor radically dissociates himself from the act, without denying doing the act. The actor says: ‘Yes, I did do that, it is completely wrong, I should not have done that, I would never do that anymore now’. But if the actor dissociates himself from the act so completely, forgiving becomes impossible, for the actor is not the person who committed the act anymore – he has become a different person. If this dissociation does not take place, and we still consider the act evil, and remember who did the evil act against us, how can we not still see the actor as evil? In ‘Impossible Forgiveness’, van Tongeren states: ‘… the perpretator is being remembered as linked to his evil act and thus as evil and blameworthy himself’ [IF p. 372].
Two things are wrong with van Tongeren’s exploration. First, the link between an evil act and its evil perpretator is way too strong. There is nothing contradictionary in saying ‘Joe is a smart person, but now he’s done a dumb thing’. Being smart does not preclude one from doing dumb things. Nor does doing something dumb entail being intrinsically dumb. Likewise, doing an evil act does not entail being an intrinsically evil person. In forgiving, this distinction is of the utmost importance: if we see the perpretator as intrinsically evil, forgiving seems impossible indeed. But if we regard the act as evil, but do not regard the perpretator as intrinsically evil, we have the necessary leeway for forgiveness. So we can, sometimes, forgive, because we are able to see the wrongdoer as a more complete person than just the perpretator of this single evil act: the prepretator has other sides, some maybe bad, but some good as well. It is the complete person we forgive, not the one-dimensional perpretrator of the evil act.
The second oversight is the nature of forgiving, and especially the things leading up to forgiveness. Van Tongeren rightly mentions ‘confession, remorse and atonement’ [IF p. 370] as the preconditions of forgiveness. Unfortunately, he does not give the notions much further thought, but dismisses them: since forgiving is not conditional (I cannot forgive only if some conditions are met: I either forgive or I do not), the three acts cannot be the conditions for forgiveness.
But the nature of confession, remorse and atonement is much more profound. If someone has sincere remorse, and is pained and grieved by their wrongdoing, and we perceive the sincere pain and grief they feel, forgiving becomes possible. If someone dear to me has badly hurt me through inconsiderate actions, I will probably feel anger and vengeance. If this person apologizes, and I see a sincere pain, a hurt they feel for doing me pain, and I do not see this person as intrinsically evil, forgiveness may be easy: seeing the other suffer, maybe even as much as I have, makes me feel pity towards the other, the perpretator, and may lead me too think that this pain is not deserved. So true remorse can lead to forgiving, not in a causal way, but as a precondition, leading to my decision whether to forgive or not. Sincere remorse is a precondition: without it, forgiveness seems hardly possible. With it, forgiveness is not an entitlement, but it certainly becomes a possibility. My free act of forgiving becomes possible through the sincere remorse shown by the other.
[IF] ‘Impossible forgiveness’, Paul van Tongeren, in: Ethical Perspectives 15, no. 3, Leuven 2008
HL7v3 is a framework for developing messages in healthcare. Unlike its predecessor, v2, HL7v3 has at its core an information model, the RIM (Reference Information Model). The RIM contains classes and relations. From the RIM actual healthcare messages are derived, usually as XML instances. This is what HL7v3 does in a nutshell, and its focus is clearly on messaging, nothing else.
Recently a new school of thought is gaining ground: RIMBAA (RIM-Based Application Architectures). RIMBAA seeks to use the RIM not solely as the basis for messages, but to use it as the basis for an entire EHR (Electronic Health Record) system. The RIM, after all, is quite rich, and if it is rich enough to describe messages which care providers exchange between them, why not use it to describe the data contained in an EHR itself? This also makes deriving messages from my EHR a piece of cake.
Here’s why not.
Suppose I build an EHR from a certain HL7v3 version X (there are plenty of versions, called “ballots”, to choose from) and I also exchange messages with my colleagues using version X. If we now decide to upgrade the messages to version Y, I’m forced to do a double update: I have to upgrade not only my messaging framework to version Y, I also have to upgrade my entire EHR to version Y.
RIMBAA thus leads to tightly coupled systems. In a loosely coupled architecture, systems are black boxes: each system just has to know the interface (messages) of another system to communicate. In loosely coupled systems, each system can be upgraded or changed independent of other systems, as long as the interfaces remain unchanged. Loose coupling is a core design principle of Internet-scale messaging, and RIMBAA violates it.
Moreover, if RIMBAA gains wide acceptance, a majority of EHR’s would become RIM-based, and thus EHR’s would be very alike. Good, not? Since they’re so alike, won’t it be easy to communicate? Nope. If all, or many, EHR’s follow the RIM, there will be less competition, which will stifle innovation. Having EHR’s which are not based on the RIM enables healthcare developers to adopt any wild, new, unthought-of innovation they wish, as long as they keep supporting the common messages. This difference allows the full creativity of healthcare providers to be expressed in their systems, and is good for innovation and competition, major drivers of human progress.
With RIMBAA, it’s either taking what the RIM offers, or leaving RIMBAA. The latter is probably the best choice: take some inspiration from the RIM where useful, develop your EHR, and forget there ever was a link. I’ve seen a lot of efforts to harmonize data models, and it seldom works on a large scale, not even in a single large company. Different needs are simply too different. For messaging, a common data model is a necessity. For application architectures, it is a commodity at best and a nuisance at worst.
RIMBAA (and similar initiatives), in short, will lead to systems which are hard to upgrade, will stifle innovation and will hinder progress. It is much better to follow HL7v3’s original course and keep standards for messaging separate from standards for EHR’s. RIMBAA violates the fundamental design pattern of loose coupling and is a mistake.
Friday (April 17, 2009) I attended Avishai Margalit‘s lecture ‘Comprise and Rotten Compromise’ at the Amsterdam ‘Nacht van de Filosofie‘ (Night of Philosphy). Margalit, as far as I’m concerned, is one of the most interesting living philosophers, so this lecture was a must-see.
Margalit argues that compromise in politics in general is a good thing – even, in his own words, ‘shabby, sodden compromises’ can be good because they avoid a worse outcome. Yet not all compromises are good – the exemplar of course is the Munich agreement, in which Chamberlain’s Britain, France and Italy allowed Hitler to annex the Czechoslovakian Sudetenland, in return for promises for peace. Why, Margalit asks, are some compromises never good – or, rotten. His answer lies in the nature of the other party. Hitler was evil, and therefore any compromise with him would be a rotten compromise. Hitler in 1938 was not the Hitler of 1945, but still, the nature of Hitler’s Third Reich was clear. If the other party’s regime is inhuman, a compromise with the other party will be rotten. Rotten compromises, according to Margalit, should not be agreed to, ‘come what may’.
If we look at the Munich agreement, of course the dictum ‘rotten compromises must be rejected, come what may’ easily holds. If Britain had rejected the Munich agreement, the Second World War would have started earlier, and since the military build-up of the Third Reich had not been completed at the time, the Second World War probably would have ended sooner, with less casualties and suffering. And even if not, the War would have come anyway. But what if we look at the Yalta agreement, where the Allied powers split up Europe in a Western and Eastern sphere of influence? Stalin, the other party in this compromise, was clearly running an inhuman regime – an evil one. So this must have constituted a rotten compromise. But what was the alternative to the Western powers? Should they have rejected the compromise, and marched on to Moscow and Stalingrad in 1945, unleashing another devastating war on already war-torn Eastern Europe? To phrase it differently, doesn’t the rejection of any compromise, rotten or not, presuppose a reasonable alternative?
I posed this question to Margalit after his lecture. Margalit qualified it ‘a very good question’ and noted he took three chapters in his upcoming book to answer this very question. So, he said, he wouldn’t be able to fully answer it in this session, without summarizing his entire book. Yet he did provide ‘a short answer’. There he used the acute metaphor of a cockroach in the soup – if there is one, we do not take it out and say ‘the cockroach was bad, but the soup is still good’. If, on the other hand, there is a fly in the ointment, we can take out the fly and say ‘the ointment is still good’. At Yalta, according to Margalit, there was ‘a very big cockroach in the soup’.
Still, though this may settle Yalta, I’m looking forward to the larger answer in his book to the general question: doesn’t the rejection of any compromise presuppose a reasonable alternative? Generalizing from compromises, this boils down to question whether politics should take a pragmatic or idealistic stance. Margalit’s outright denunciation of rotten compromises is an idealistic component in a pragmatic political framework. I’m curious whether his book will answer whether this is still tenable when a reasonable alternative is not on the horizon.
Update: Margalit’s lecture is online now. My question is at the end of the interview with him.
I’ve uploaded my Dutch article ‘Wat is er mis met XML?‘ on the many well-known shortcomings of XML – namespaces, DOM, canonicalization, XML Schema, in general: complexity and counter-intuitivity. Entertaining, and necessary since I’m more and more often being accused of being an XML evangelizer – at best it sometimes is the least evil of possible alternatives.