Archive for June, 2001
Let’s start with children’s stories. Long before there was Harry Potter, there was Sparrowhawk, Archmage of the land of Earthsea. Ursula LeGuin’s four beautiful books are about the magic of names. Her wizards work their wonders by knowing and speaking the names of things—their true names—the names they have in the old tongue, the language dragons speak, the language of the Making by which all things were made.
To know the true name of something is to have power over it. Power and responsibility. Change the name and you change the thing. The art of LeGuin’s wizards is not in knowing magic spells, or having the right equipment, but knowing the true name of a thing. Not just broadly but in detail: not just Tree but oak, not just oak but oak in early summer, oak on this hillside. Not just Ocean but every cove and inlet and beach and wave.
In Earthsea people don’t go by their true name—they dare not. The true name is guarded and kept secret and only given to another—with your whole being—in love or death. But to speak your true name in love is to defeat magic and reveal the essence of who you were made to be.
I’m told my name would have been Pamela Jane if I had been a girl. No deep reasons there … just that my mother liked the sound of them. But, instead, I’m Robert Richard—named after my two grandfathers. There are Richards on my father’s side as far back as we can remember. Though, as a kid, my granddad Marsh always insisted his real name was Aloysius and I never did know whether he was having me on or being serious. The name “Robert” claims my kinship with my maternal grandfather though I only met him a couple of times. It was a controversial choice since my mother’s mother and he were separated. There’s a story there too, but too long for now.
As reasons for names go, all that grandfather stuff is convincing enough but there are other reasons that don’t get spoken—it can be just as important to know what your name is not. You see, I should have had an older brother. My mother gave birth to a little boy some years before me. And there was no doubt about the what and why of his name. “His name is Alan.” Alan was the name of my mother’s older brother. By all accounts he was a perfect brother and, though my mother never talked much about him, I get the impression she idolised him. But Alan died aged around 19 or so from stomach cancer—the story was, medical likelihood aside, that it was the result of a soccer injury.
So my mother had no doubt about the name of her first boy. Alan. But baby Alan’s birth wasn’t easy … there were complications and Alan was born with cerebral palsy and lived only a few days.
I look back and I wonder how my life has been changed by Alan’s own short existence and what it would have been like if he had lived. I was one of those kids that were cared for too much. My parents were determined that I, at least, was going to be safe. So I was stuffed full of vitamins and kept away from germs and plied with cod liver oil and still I caught every childhood disease that was going.
And, instead of being the second child, I grew into all the hang-ups eldest children have—hands up all you eldest children … you know what I mean—well-behaved, over-responsible, achieving. So my name is Robert Richard but there is a silent echo: Alan, Alan. … I wonder what God calls me.
You may have seen in the news a sad story from Britain. A decade ago two ten year olds took a little child and tortured him and killed him. His name was Jamie Bolger—their names we don’t know. Their true names were hidden for their protection and their families’. Now ten years later the young men are about to be released on probation rather than being funnelled into the adult penal system. But how do you go free with such a history, with people lining up to take revenge? Deserve it or not—that’s the battle in the press—deserve it or not they are being given new identities, new names, a second chance, a fresh start.
Sometimes—deserve it or not—each of us needs a second chance, a fresh start, a new name. Or needs to learn again the true name God calls us. We might call ourselves “Forgotten,” when God’s name for us is “Hope.” Others might whisper, “Failure,” while God is proud to call us “Friend.”
“His name is John,” says Elizabeth. A new name, not a father or grandfather. John: “God has shown us favour,” it means. John is meant for something new: a new hope, a new dawn, a new salvation. “God has blessed us.” John is not born to the family trade to be a priest like his father. The name God calls him frees him. He grows up a prophet. A fearless, wild voice to confront kings and inspire his kin. Jesus, himself, was lured from hearth and home by this strange, free, wild cousin of his standing waist deep in Jordan’s water. … Where would we be if John had become Zechariah Junior?
We gather all sorts of names along the way yet God never fails to speak our true name to us, our identity in God’s eyes. And that name might make all the difference. Do you know you true name, the one God calls you? Can you hear God whisper it to you now? Listen! “Your name is …”
June 24th, 2001
Borland’s Delphi© makes the construction of Windows applications easier than ever. In particular, the Borland Database Engine (BDE) offers enormous power with great ease. Sometimes, however, the full might of the BDE is overkill. Wouldn’t it be better for your simple projects to use a simple tool, one that could be distributed inside your EXE and didn’t require enormous DLLs to function?
The QDB components for Delphi offer fast, indexed access to a flat-file database of variable-sized items. QDB is quick, easy to use, and comes with full installable help. It’s also free! Caveat! It is some years since these components were developed and they probably won’t function beyond D5 without a lot of tweaking. They are–regrettably–also unsupported. Nevertheless I hope you find them useful in some way.
Also available are the usual demonstration applications written to show the power and ease of QDB. There is a simple address book, a rewrite of Borland’s Animals demo, and a rudimentary knowledge-base system. They each come with full source code.
June 18th, 2001
Writing programs that work at all is difficult enough without having to track down memory leaks and strange problems with overwritten memory. Snoop and Snoop Monitor make it easy to snoop out those bugs — and they’re free. Caveat! It is some years since these components were developed and they won’t function beyond D5. They are–regrettably–also unsupported. Nevertheless I hope you find them useful in some way.
Snoop v2.0 has been completely rewritten and has a bunch of new features. It works correctly with DLL files and with multi-threaded programs and now comes with a Delphi expert to display its memory-leak reports and jump to the offending line in your source code. (more…)
June 18th, 2001
OLE Structured Storage (or Compound Documents or DocFiles … the names change regularly!) provide a clever way to have a whole file-system within a single file with nested ‘directories’ (storages) and ‘files’ (streams). There’s also the ability to do transaction processing: keeping modifications in limbo until ‘committed’ or rolled-back. The only catch has been that the necessary APIs are complex, most un-Delphi-like, and in places self-contradictory. Indeed, the DCU supplied with Delphi 1 is error-ridden. There’s also the matter of the small print and the arcane error codes! With these complexities it’s no wonder that most Delphi developers have avoided Compound Documents.
The CompDocs components available here encapsulate OLE structured storage in a straightforward and Delphi-like way. They protect you from most of the hidden problems with using the API directly and work with all versions of Delphi. As usual these components are available for free. Caveat! It is some years since these components were developed and they probably won’t function beyond D5 without a lot of tweaking. They are–regrettably–also unsupported. Nevertheless I hope you find them useful in some way.
TRootStorage models a physical file on disk while TStorage and TStorageStream model substorages and streams. Storages can be nested and can be opened in transacted mode. Creating temporary storages and streams is made easy. The TStorageStream is fully compatible with other Delphi stream types.
I have provided a simple example program, Viewer, which browses the contents of a compound file, showing the names of storages and streams. You’ll be surprised to discover the complexity of many files. (more…)
June 18th, 2001
Another title-bar button? Yes, but one that works simply and cleanly to provide buttons which mimic the look and feel of Windows’ own frame controls by using Windows’ own drawing technique.
Each Widget contains a single glyph from a truetype font. Windows uses the “Marlett” font for its own glyphs but you can use any and choose a colour and weight too. Widgets have their own Hint property and are even visible at design-time. A component editor is included to make Widgets very easy to use. Caveat! It is some years since these components were developed and they probably won’t function beyond D5 without a lot of tweaking. They are–regrettably–also unsupported. Nevertheless I hope you find them useful in some way.
June 18th, 2001
The Maps Library offers nine genuine generic container classes. Just as TStringList lets you keep lists of objects indexed by a string value, Maps let you keep lists of just about any type, object or atomic, indexed by whatever type you like.
The nine different kinds of map have different performance characteristics allowing you to choose the perfect container for your application, whether you need fast insertion, super-fast searching, random-access, or whatever.
The library is quite compact and surprisingly efficient given its generic nature. A simple demo is also available. Caveat! It is some years since these components were developed and they probably won’t function beyond D5 without a lot of tweaking. They are–regrettably–also unsupported. Nevertheless I hope you find them useful in some way.
June 18th, 2001
Every so often the Delphi IDE (from D2 until at least D7) seems to get confused about its line numbers: errors are reported in places there is no code; the debugger jumps about with no apparent relation to the code that is being executed. The Delphi newsgroups propose many diagnoses but, in my experience, the culprit has always been code pasted into the IDE from another source. The Delphi IDE flags line breaks with the characters $D$A but some other editors use $A$D or even just $A or $D. The IDE understands such markers enough to format the code correctly but not enough to mark errors properly. The solution is straightforward but awkward: filter out any improper codes. FirstAid does the job for you.
June 18th, 2001
Did you ever see a triptych, one of those altar pieces or icons with three panels? Well I’ve got three images to look at today. One is a photograph of the first moon landing. Second is a painting. It’s a naked man with an IV in his chest and purple lesions over his body. The title is “Christ with AIDS.” The third image is a kind of composite, I guess, a video monitor showing clips from a bunch of films—there’s Pearl Harbour, there’s Shrek, there’s Moulin Rouge. I’m not sure quite what happens when you put these three images side-by-side but let’s see.
The films first. Nothing more obsesses us as a culture than love. You can’t sing a song or make a film without romance. But no one ever sings songs or makes films where love is straightforward. There must be obstacles. The course of true love must run awry. There must be a fly in the ointment. Every Ben Affleck has his Josh Harnett. Every Shrek has his Lord Farquadd. And though Ewan McGregor sings his silly love songs to Nicole Kidman there has to be an evil Duke to ruin the day. Our perfect image of perfect love is one-on-one. Two’s company and three’s a crowd. The dreaded love triangle! Somehow we have to get rid of the third side. Find a dragon to swallow it whole. A war to heal it or a death for its dissipation. Is it any wonder, then, we have trouble with Trinity? As love goes, one-on-one won’t do for God. There has to be a third. What we view as a fascinating evil, God sees as essential.
Second panel. 20 years ago this week the plague came upon us in confusion and horror and fear. And, while tens, then hundreds, then thousands of young men were dying and a new public horror of blood was being born, an ancient vision of God was being roused. How do you name God when the plague is raging? Enemy or friend? Consoler or nemesis? For some it was clear: God is God of the pure. Everett Koop, who was Surgeon General, couldn’t even talk about AIDS at the White House because the Christian Right saw it as God’s punishment for being queer. It is an ancient idea. Bad things never happen without a reason. You must have deserved it. It’s your own fault.
Which is just the same thing they said about crucifixion 2000 years ago. It’s your fault. God has cursed you. No one mocks God. But, cross or sickbed, you can only keep that up if you can keep your distance, can keep compassion at bay, if you do not know. You can only name God destroyer if you can keep God distant, at bay, unknown.
But Jesus could never keep God at bay. He knew the name of God, knows where he belongs. God has AIDS.
Paul Monette, in his AIDS memoir “Borrowed Time,” calls his experience of coping with his lover’s diagnosis as “living on the moon.” Lonely, distant, cold and hostile. That’s my third image, that epic photograph from the moon with the flag that pretends to fly even though there’s no wind, the everlasting footprints in the dust, and the man sealed in a spacesuit to keep him from the hostile, airless, cold grasp of nature. That picture is such a scene of triumph and wonder but it’s also a perfect parable of what we’ve done to ourselves as we’ve conquered the world.
There’s a kind of knowing which has to step back to get a good view, best of all to be outside whatever it is we wish to know. It is a kind of knowing that is fair, and honest, and in most ways accurate. Impartial. Just. Unbiased. It’s a way of knowing that pretends that it is possible to withdraw yourself, the one who knows, out of the picture entirely. Science knows that way. Schools tell us it’s the only way to know. But it is a fraud. Imagine you want to know about the whole of creation. Where do you stand to get the perfect view? How can you stand outside everything … without being nothing yourself? That’s what this kind of knowing has to do—pretend that human beings like you and me are nothing. Or imagine again you want to know about human beings, about a wife, or a lover, or a child, or a friend with AIDS. How far away do you have to get to see them properly? And when you get that far can you see them at all?
What is essential is invisible to the eye. But it is real. What is real about a wife, a lover, a child, a friend is the fact that we are part of them, tangled up with them in relationship, in love, in nets of feeling. And that’s a kind of knowing too, a kind of knowing from inside, from up close—a very partial, unjust, involved way of knowing. We call it wisdom. You cannot love without getting involved. You cannot know from a distance. There is no safe viewpoint.
Same with God. God knows this world but not because God has stayed safely outside. If that were true God could not care, could not even see what is essential, that we are alive. God knows you and knows me with wisdom not science. God knows the world from the cross. God has AIDS. God has the best seat in the house and this is the kind of theatre where the audience participates. This is liturgy. God is tangled up with us. And we call that entanglement the Spirit.
Our so called love triangles aren’t triangles at all just angles. There isn’t really a third side. But what makes God God is that the love between Parent and Child is so complete, the knowledge they have of each other is so intimate, their entanglement so profound that it is as real as they are. So real and so entangled that three cannot describe God at all. God is one. But one won’t do either because right in the heart of God there is love, there is self-revelation, there is community, there is entanglement.
Is the Holy Spirit here this morning? Where is she? Not in any of us. The spirit is here between us, in the gaps. The spirit is our entanglement. In so far as we love one another, know one another, suffer with one another, then the Spirit is here. And we, in that same measure, are not many but one. And, in that same measure, we are God.
I think that’s what we celebrate today.
June 10th, 2001