Work related posts have been moved.

9 November, 2010

My work and computing related posts are now at

If you have come here from a work-related perspective (computing, semweb, bioinformatics, math). Perhaps you could go there right now and not read the gory personal stuff here.

Use the wordpress rss mechanism to follow categories:

Follow Paul Murray on Quora


Rebirth

29 September, 2019

I don’t know how long I was chained to a wall in hell.

All I know is that at some point I swam back to conciousness, my mind drowning under a lake of indistinct memories and urges, with one last gasp of air frantically making for the surface and then I breached it and I was fully awake.

Where had I been? The red waste? We – my companions, my company – we were travelling west to Axis. There was a promise, an obligation, a duty … the image of a dwarf came to me. And a name. Mal. Mal Shieldglider. I remembered – I had promised to take him to his father’s funeral, debts of shed blood and friendship. Other things twined around that purpose like vines strengthening the tie: the war, the rift between Dwarves and Men, the Empire – how could I forget the Empire? My family, grandfather Lancet. The names and faces of my company came to me: Tarry, Nacelle, Baisek. Odd that I should remember the halfling first. Newer faces too, but still indisinct to my recall. The God of Song … no, he was dead, or gone. There was another in his place now. A necromancer? A sorceress who had gone her own way.

I numbered my obligations, their weight settling onto me like a comfortable and familiar cloak – my cloak! Gone. My wand, my books, all gone, all but one – The Book of the Stars, which the demons would not touch. I was chained to a wall in hell in prisoner’s rags, even my secret pouch was gone. All I had was the necromancer’s stone in my empty eyesocket, its power giving me sight in this lightless place.

The necromancer, Aeg, Edmund the Marked, the council of four. I wonder who the other two might be? I recalled Edmund’s betrayal, and the preposterous excuse he gave for it. The nodes had been taken down, the Empire stood defended by nothing but steel. Which would not be enough. My own foolish hubris was to blame.

For a time I indulged, my psyche reassembling the layers of itself. Of myself. Then I shook out of reverie. Time to act. First, the manacles. I touched my mana. The forms of the spells I had last prepared mercifully were still there. The manacles did not yield to a Knock, but I wondered: perhaps starlight? The power of the overworld? I cast Nova and gathered its power for a minute or more: no sense hurrying. Then I used a simple cantrip as a conduit. The manacles cracked along the weld. I pulled myself off the red, fleshy wall – losing a little skin in the process. The wall I had been chained to seemed to be absorbing me, consuming me, but very slowly. It mattered not. I was free.

For the moment, at least. From one direction, I heard a chanting, an infernal chorus of dozens or hundreds. My common sense had not deserted me – I went the other way.

The passage seemed deserted. The path I travelled was perhaps not entirely real, some amalgam of reality and nightmare, a place on the border, a membrane separating the two. Perhaps this was justice. Perhaps I travelled now the route that I had carelessly sent those imps and pixies to carry my little messages. Perhaps now I too trod the Low Way.

Perhaps.

Before long I came to a set of alcoves set into the walls. Two of my companions! I attempted to free them, but as I reached to them they slipped away, further back into … somewhere. I could do nothing. I prayed that they be only illusions, or figments of my own memories.

Further along, I was overjoyed to meet Tarry! Lost also in this place. He could guide me out to the surface, he said, but he would need my book. I gave him the book, and he changed – grew fangs and claws, and ate the book, shredding it. He left, I think. I was alone.

Game was two weeks ago. I kinda forget the precise sequence of events, but you know, I think that contributes to the dreamlike atmosphere of this piece.

After … some time … I spied another being in the distance. He – he was a knight! Of the golden order, no less. And he seemed real, realer than the other things I had encountered down here. He questioned me, I answered. My rank meant nothing to him, of course, but he was rescuing people trapped in this place. We headed towards the surface.

But this place had its dangers. We fled from a … some sort of abominable hybrid of Chuul and Demon. I used Dispel Magic in an attempt to sever or disrupt the bond between the two halves of its nature. It was surprisingly sucessful, and seemed to stagger the thing. We fled though a door, or perhaps sphincter, and I used Hold Portal to secure it – burning through what magic I had. But there’s no point not using your magic if you are about to be killed. My psyche was still not whole, but it seems I am a pragmatic sort.

The hellhole lay ahead, but it was the scene of a battle between the Knights of the Golden order and demons. The dead knights lay in windrows – I began to understand that the legend of the Great Gold Wyrm, how the Wyrm himself keeps the demons at bay, may be something of a metaphor for the reality. I gave what help I could, with my little Colour Spray, but really there was little I could do to turn the tide. Three of the knights took it as their mission to complete my rescue. In the end, it came down to a simple rope climb.

Two of them made it out, and then it was my turn. The climb was too much for me, so I made recourse to a Levitate spell.

For those who have been counting, that’s three utility spells out of two that James can cast out of his utility spell slot (Knock, Hold Portal, Levitate). Ooops. But, rule of cool, I suppose.

As the demons below overwhelmed the knights, the knight on the rope faltered. I assumed command voice and ordered him up. It seemed to do the trick.

We were up out of the hell hole. I and three knights. Somewhere in the red waste. We had escaped.


In the distance lay a city of brass. But the knights would not go there. I supposed that the city was a mirage, or inhabited by demons, but that was not the reason. I later found out why. Instead, we spied a caravan in the distance and made for it.

The caravanner proved to be hospitable. I traded news of the war to the north for passage, and the knights guard duty. The caravanners gave me desert sheets and a turban for my prison rags, instructing me on how to secure them. They gave us food and water. We journeyed northwest to Santa Cora under the bright, bright desert stars and made camp as dawn broke. It seemed, for a moment, that even after I closed my eyes the stars were still there – the constellations plain to me. But within seconds I was sleeping the dreamless sleep of the truly exhausted.

The journey was uneventful. I learned a thing or two about desert travel and campcraft that would have come in handy on our ill-fated trek west. We made Santa Cora in good time, and the caravanners became a little less hospitable, a little less communicative. These free folk did not highly regard the empire, it seemed, and I kept my opinions to myself. I made my farewells and we four headed into the city.

I decided that the thing to do would be to call on the Count and Countess Lorraine, who had received me kindly last we met and who at least knew me. But their townhouse was deserted. I forced entry with a Knock. Inside was a little dust, the stench of death, and a curious handbill. The bill proved to be a call to arms by none other than Nacelle! The Great Gold Wyrm, it seems, was recruiting. I recalled the battle at the base of the hellhole. And just outside the window, a parade of marching paladins of the order. The knights with me drew away from the window, explaining to me that they were now deserters. This made little sense to me, but I had other things to do. I found the source of the stench of death – a slaughtered and uncooked pig in the kitchen. When I returned to the reception room, the knights were gone.

So what now? Well, I should report. I began to make my way to the barracks, but on the way met a stranger who spoke to me in elliptical non-answers and suggested I follow him to a library. After a minute or two of frustrating evasions, I realised that I was talking to Aeg Ilsa, the necromancer – the frustrating evasions and non-answers being a bit of a giveaway. I was not at all happy to be so soon again enmeshed in the toils of these wizard’s intrigues. I thanked him for my replacement eye, and told him that I was duty-bound to report to the nearest commander, and the library could wait.

Aeg ground his teeth in frustration, which I confess cheered my mood by a considerable margin, and we proceeded to the barracks. The commander was the same as I remembered from our defence of the city, but he was distracted. The town was overrun by Golden Order recruiters, who do not answer to the Emperor except at their convenience. He gave me no orders, and I sensed that there was no place for me here.

Aeg took me to his own tower, leading me forward with the promise of a library. We proceeded through a catacombs (of course), to a low arch. He then attempted to get me to promise to hunt down and slay Edmund, but I’ll be dammned if I do anything these people say. Happily, an officer of the Empire has prior loyalties to appeal to. I told him that I intended to capture Edmund if possible and bring him to court to answer for his crimes, from whence he would duly and legally be hanged.

Aeg again ground his teeth, clenched his fists, and I must confess I felt a little fear – there is no question about his power. At last he agreed, “Fine!”, and bid me place my hands against the span of the arch, which I did.

Magic built and swirled, and I saw a vision of my home – the Chateu du Mallard. But it was a ruin! Burned and broken by siege. Before I could order my thoughts to ask, it was a vision no more. I was here. I was home.


The Chateu is a ruin. Inside are a few unidentifiable bodies, I pray that my family are not among them, but I fear they may be. I ceased my search – there would be nothing to find, although I did find a mostly whole fragment of a letter sent by Nacelle, it seemed, informing my family of my probable death.

Not quite exactly how it went down, there was something involving the Black Oak at the heart of the swamp. Lake, dammit, lake!

Instead, I made for the tower. The tower is old, and defensible, but here too the marks of siege and spell are unmistakable. I descended down the stairs, marking the damage to the old, familar mosaics. And then realised. A tower. Mosaics. Blackwatch. The astronomer’s tower in Santa Cora. This place is a node – it was always a node. Has been for centuries.

Now it was easy to see, obvious to my senses. A node, very old, almost natural – resonating with magics of wood and water. A faint tickle of memory – didn’t SIr Geoffrey have dealings with the Elf Queen?

I wrote this four years ago. Holy shit. Four years.

Regardless, I left the node alone. No more careless hubris from me. There’s no telling how deeply Edmund might have worked his way into the magics.

Instead, I noted something on the floor, now uncovered by the damage. A handle. I shrugged and turned it. A secret room. And inside … scrolls. Hundreds. Maybe just tax records. Maybe secret and ancient magics of my ancestor, the witch Elise. There’s no telling.

And here I stand. I feel the weight and folds of the invisible cloak of my duties and obligations, which seems to grow heavier every day.

In no particular order:

  • I must find food and lodging.
  • I must see if their are survivors of the villages of the county. I am possibly the last Mallard.
  • If there are enemies of the empire and my people still on these lands, I must deal with them. However, running alone into battle is probably not the best approach.
  • I must make contact with someone able to find my family, if they live. My pouch would have been ideal, but it is lost.
  • I must inform grandfather Lancet about the pouch.
  • I must investigate and secure this library. Even if they are just tax records, they are still precious.
  • I must secure this node away from Edmund’s tampering. The sensible thing to do might be to simply bury it.
  • I must do what I can to redress the damage I have done to the Empire’s defences, if possible. It is probably beyond my power or skill. This node is oe of the few not destroyed, and may be pivotal, so I probably oughtn’t bury it then.
  • I must drag Edmund before a magistrate. Not that it will be anything like that simple. I dislike it, but Aeg is probably right.
  • I must fulfil my promise to Mal. There are complexities there, as he is a sworn bodyguard of the dwarf King. Perhaps the right between the emperor and the king might be mended.
  • I need to find what remains of Griffinsheart’s merry heroes. I simply don’t trust anyone else.

And I must see to the bodies of the dead.

There is nothing much here. The next step is to lock up and make for the village and see what remains, if anything. I’ll skim though this library first. Perhaps there will be something useful.


The Chateau du Mallard

21 August, 2019

Pierce’s Guide to the Great Estates

The Chateau du Mallard

For the keen traveller and history buff, the Estate du Mallard is a must-visit.

The estate is located on Whitewater, a tributary of the Bronze River, north of the Dire Wood, about 100miles SSE of Axis. Roads are excellent and well traveled, and your journey should be about four days without incident.

But it was not always so. Ages ago, the lands west of the tributary were home to tribes of orcs and savage monsters. To the south. the river descends from rough hills and is mostly uncrossable. To the north lay miles of boggy wetlands, the Marais du Mallard, although these days it is “Lac” rather than “Marais”. For a few miles the river was fordable, and so Geoffrey – the first Baron Mallard – built a tower and defences, from which knights of the fledgling Dragon Empire might sally forth in defence of civilisation.

The site is no longer frontier, the barony long since extinguished, and the river bridged. But the original tower and some fortifications still stand, a testament to centuries of careful stewardship by the Mallards.

The estate now comprises most of county Whitewater, about one hundred and fifty square miles of farming district. The wines are excellent, and every inn will supply the local delicacies – sweetreed, which grows only in the boggy wetlands, turtle soup, and – of course – the duck. The adventurous might also care to sample the liquor distilled from the reed, but be warned! A little goes a long way.

Visitors will likely stay in any of the excellent inns in one of the surrounding villages. During the growing season the manor house is open to the public at the usual times. You will want to see the museum with its reconstruction of the ancient battlefields and its archaeological finds, and read the charming tale of Baron Geoffrey and the swamp-witch Elise, founders of their line. One can also take a tour of the old tower, but booking is essential – address your enquiry to the head groundskeeper, Chateau du Mallard. Parties may also wish to apply for license to hunt duck and other waterfowl. Bag limits are strictly enforced.


What Pierce does not mention is that the bridges are built to collapse, and the tower and its defences are still an entirely serviceable military emplacement. There are illusions placed on it to make it look just a little more ruined than it actually is. Tours are conducted, but very much circumscribed – the Mallards cite fears of falling masonry. Pierce also does not mention the tunnels connecting the manor to the tower, although anyone would be able to guess that they are there. They are kept in good repair and are patrolled. They are not terribly deep and are prone to being damp.

Although it’s all pretty civilised, we are in a fantasy setting, here. The black swamp oaks still grow in the further reaches of the “lake”, and they are not entirely friendly. Still the occasional thing coming down from the hills, too – bears, sometimes some old orc skeletons. The small imperial garrison earns its pay.

Might be worth noting that 40 or so years ago, the Mallards and the estate weren’t doing so well. Things have been brought back up to code mainly thanks to Ducalis, who is an amazing guy. Quite a bit of the manor is actually pretty new, although the relics and whatnot are genuine.


It’s a bad idea to shoot terrorists

13 November, 2018

You know, people who are afraid will do pretty much anything. Morality goes out the window. It’s kinda the nature of fear – it shuts off all those higher brain functions that make us civilised. That’s how torture works, you know. It’s not the pain: it’s the fear. That’s what causes wartime atrocities. That, and the predator/prey circuitry in the brain, which is simply the flip side of fear. Every demagogue knows it. It’s a permanent truth of human affairs. The only thing more effective is hunger. Or being smothered.

I have an insight into Islamic extremists that most Australians simply don’t have. I was once sincerely religious. I believed in a literal, actual Hell where God would send people to be burned alive forever. I truly did, I thought it was a real thing.

The fear of that place is the bedrock of religious faith. When everything else is stripped away, all the clever arguments, all the chop-logic, it’s that terrifying thought “but what if it’s all true?” that brings the believer back. When you truly, deeply believe in the reality of hell, the one thing you want more than anything else is simply to not be condemned to go there. It’s a background, an undertone to your whole life. Subliminal. It conditions all your choices. Nothing else really matters, in comparison.

Christianity is a bit different from Islam in a couple of respects. In Christianity, everyone deserves to go to hell. Everyone. Deserves. Because Adam ate the apple. Everyone should go to hell, forever. The situation is so absolute that God had to pull some legal sleight-of-hand to make it possible for people to not go there.

But in Islam, Allah works on sort of a points system. Allah is merciful, Allah is forgiving. You can skip a few prayers and make it up later, no problem. All Allah wants is that you be Islamic enough. The problem being, of course, that you can never really know, never really be sure if you have been Islamic enough for Allah.

So you have these young men, and they have lived a western life – not taking the faith all that seriously, drinking occasionally, not being careful to eat hallal, maybe having sex with western whores, it’s no problem: they’ll make it up later.

And then one day they have a crisis of conscience. Maybe they hear a sermon. Maybe they read the Koran. And it all comes crashing back. Oh shit: I’m going to go to hell.

Happily, there’s one thing that makes up for any amount of sin: being killed while committing jihad.

Those terrorists, they want to die. It’s the whole point of the exercise. They want to get shot by the cops. And they are not doing it to spread Islam, they are not really doing it for ISIS, they are not doing it because it’s right, or holy. They are doing it purely and entirely to get their personal ticket to heaven, to avoid the other place. It’s a deeply selfish act, but that’s the nature of fear. Real, bone-deep, religious fear. They don’t care about anything but avoiding the other place.

Killing them is a bad idea. Because it will not deter the next one: it will encourage them. Nonreligious, or conventionally religious people just don’t get it.

Shoot ’em in the leg. Tase ’em. Tackle ’em. Absolutely do not kill them. No matter how much they deserve it. Lock ’em up for life, and never belive a word they say about promising not to do it again. The only thing that will deter these private acts of jihad will be if jihad doesn’t work.


Some thoughts about Saudi Arabia

23 October, 2018

So, why does the USA cuddle up to Saudi Arabia, a nation whose state religion is a form of Islam that requires the death or forced conversion of everyone who isn’t a Muslim? How come eleven (?) Saudis, organised by a the son of a Saudi millionaire, fly a plane into the WTC and damn near manage to fly planes into the Pentagon and the White House, and Bush sends the army to attack – wait for it – Iraq? Why did Obama have to go to Saudi Arabia and kiss ass?

It’s about the oil, dummy. It always was. It really is that simple.

The oil under the sands of the Arabian Peninsula is the greatest material prize in human history. If we discover Lasseter’s Reef, all that will happen is that the price of gold will nosedive. Gold isn’t all that useful. But oil – oil is another story. Never mind the energy – where do you think plastics come from? Fertilizer? You think we want to go back to making things out of wood and sheetmetal? You think we want to return to an age when almost everyone was engaged in simply growing the food?

Back in the 1950’s, the USA purchased it. Made a trade for it. The oil. All the oil. Oh sure, they didn’t take delivery right away, but what they bought was a right to unlimited amounts of the stuff. The deal was: the Sauds would sell their oil only in US dollars (which the reserve bank of the USA prints out of thin air for nothing), and would invest their profits only in US treasuries (a debt that you never have to make good is no debt at all, and in any case US treasuries have been paying 0% for over a decade).

In return, the USA would provide the House of Saud with “security”. That’s the USA’s main export, you know. “Security”. The wars are trade shows. The military bases are shop-fronts. All selling “security”. And what might “security” be? It’s when someone agrees to kill your enemies for you. Oh, and also to not kill you. Call it “protection”, if you like.

That’s why “gas” in the USA is so cheap – they are always shocked at the price of petrol when they come overseas.

This isn’t some conspiracy theory, by the way. It’s well-established history. The US/Saudi agreement established the “petrodollar”, on which the whole economy of the late 20th century was based. You have heard the term, right? It is totally a thing.

But, there’s a couple of things going down at present. First, Saudi Arabia will run out of the stuff – God isn’t making any more at present. Oh, there’s still plenty left, but we can see the horizon. The day will come – maybe in our lifetimes – when SA can no longer uphold its end of the deal.

Second, the USA has been busy losing wars for several decades, now. Turns out that you can’t actually defeat a modern nation by anything short of genocide. The days are long gone when defeating a nation was a matter of forcing its king to bend the knee and job done. Genocide, you know, is an expensive affair when the people you are trying to genocide shoot back and plant IEDs (unlike German Jews, or Tasmanian Aboriginies). That is: it’s starting to look like the USA can’t hold up its end of the deal either. Gays and women in the military (something abhorrent to Islam), and Central Americans streaming over the undefended US border. It’s not a good look, you know?

Machiavelli said that the primary concern of the Prince is war. If you can’t warfight (as they put it these days), then you don’t have a principate. Or an empire, as the case may be.

The USA has unrivalled control of airspace. How much gas, do you think, does a fighter jet or a bomber consume? How much diesel does an aircraft carrier – let alone a carrier group – chew through every minute? How much does a tank, an APC, a chopper need? And how much do you need to run the generators that power the electronic frippery that no modern infantryman can fight without?

Oh sure, if the price of oil rose dramatically, the USA and the west could still afford to field an army and blow the shit out of places that choose to diss us. Or can we? Can we really? Money, money, money – it’s seriously a thing. “Gold is the sinews of war”. Machiavelli disagreed, but he may have been wrong about that one.

So Trump can pound the table about whathisface the journalist, but the USA cannot break its symbiosis with Saudi Arabia. Not without doing it the hard way (or inventing Mr Fusion – the power source of the future).

But neither can King Whatshisname turn off the spigot, or raise the price to $400 a barrel (same thing, really) as he has threatened to do. Because the West must have its oil, the military must have its oil, and if the Saudis attempt to withhold it in any serious way, we will just fucking come and take it. If the deal is off, then that means the deal is off, doesn’t it? Kinda important, when one of the terms of the deal is “protection” and you yourself are a family man.

Oh sure, these days it wouldn’t be as overt as that. There’ll be a “Color Revolution” or some shit. But that’s how it is, and everyone who pays attention knows it. Remember Saddam Hussein, who decided to try to sell his oil to the Europeans in Euros? Yeah. That.

This will all simmer down and be forgotten. So what if the Saudis decided to off some dissident, and a whole bunch of people are upset about it? Neither side can actually do anything about it, public outrage notwithstanding. Happily, people are fickle, stupid, and have short memories. It will go the way of all the other crises.

The world will just keep rolling on exactly like it is until the oil runs out, or the USA cannot field an effective fighting force, or someone actually does invent Mr Fusion.

Everyone who pays attention knows it.


The Honeybadger

6 October, 2018

So, The Bachelor. Why do I care? Because I don’t dare browse my usual internet content at my new job, I limit myself to news.com.au because there’s a link to it in the SOE setup, and news.com.au is loaded with crap about The Bachelor.

Seems The Honeybadger knocked back all the ladies. What a bastard! So many to pick from – he owed it to Australia to marry one of ’em!

Here’s what I think.

We can all agree, I’m sure, that it would be unreasonable to pick a girl and tell a dude he has to marry her. I’d say it would also be unreasonable to pick a dozen mostly identical girls and tell a dude to pick one. And all those bachelorette hopefuls were mostly identical.

“Identical?” you exclaim? “Identical? Why – some were blonde, and some weren’t!”

Were any of ’em – for instance – short? Maybe Mr Badge deep down yearns for a little pocket rocket to make his life complete. Were any of ’em – say – thicc? A little cushion for the pushin? Or: did any of ’em have truly big tits?

Nope, nope, and nope. They were all tall-ish, skinny models.

Were any of ’em asian? Maybe Mr Cummins has yellow fever. Maybe he has a thing for dusky temptresses from the subcontinent, so: were any of ’em Indian? How about black? Or – going the other way – were any one of these bachelorettes a milky-translucent-skinned green-eyed ranga? Molly Ringwald had her fans, you know.

But let’s get away from the merely physical.

Were any of ’em shy? Or demure? Or were all of them perfectly comfortable in a dress with a “neckline” plunging all the way to the navel?

Were any of ’em – oooh, I dunno – a fiery Mediterranean type? Maybe Mr Cummins has a thing for women who yell in Spanish or Italian, or Maltese women who truly believe in revenge.

Were any of ’em sincerely religious?

Naaah. There very format of the show makes it impossible. They were all models looking to get their faces and bodies on TV.

Were any of them really financially smart, a self-made millionairess from her own investments? Was any of them a waify, distracted art-girl? A nose-ringed anarchist? Or how about a country girl that can butcher a whole pig, no worries?

I’m sure at least some of them wanted children. So: how many of them could cook a family meal? Do a roast like it’s not really a big deal, it’s just what we usually have on a Sunday?

See what I’m saying? Don’t get me wrong: don’t accuse me of saying that a girl must be all of these things. Being one of them, or one of the millions of other types of individual is perfectly fine. There’s nothing in the least wrong with being a skinny cookie-cutter model with a white girl ass and no hips and I’m sure all of these women have their admirers. But insisting that Nick is obliged to marry a girl like that? When that’s just not what he happens to be into?

Hell no.

At least he takes marriage somewhat seriously. Seriously enough, at least, to not commit to someone because a TV producer tells him that Australia expects it.

It’s a stupid TV show. Its premise is bonkers. And it’s mainly some of the worst kinds of people who would want to be on it. They’ll never put an honest man on the show again – they’ve learned their lesson. From now on, every bloke playing the season’s bachelor will be an impossibly handsome gay guy with a wholly invented and scripted back story.


Living Green

8 September, 2018

A while ago, Make Hack Void was contacted by a certain Tracey B, who was interested in a collaborative art project thingy involving, hopefully, some LED lights evoking waves on a sea shore. I had been fooling about with Arduinos and NeoPixels, and I mostly approve of art in general, so I stuck my hand up. The result was – well, not as grand as I might have hoped. But it did work, at least.

Anyway. It seems someone in Norway wants to try something similar, on a slightly bigger scale, so I’ll write down here some stuff which hopefully might be useful to her. I belive she already works with breadboards and arduinos, so this will not be a detailed how-to.

Initial Impressions

Tracey had already sourced a couple of strings of individually addressable LEDs off the internets, which she brought to our initial meeting. But, had no idea how to go about making them light up, much less do some kind of seascape-y thing. With the aid of a magifying glass app, I examined them and determined that each led was powered by a WS2811 driver chip and that the string had three conductors: power, ground, and data. So, my initial reaction was “yep, I think I can make these things go”. I took one of the two strings home with me to see if I could make them at least light up.

This proved to be no problem.

There were other possibilities that might have made the project different. For instance, there are RGB strings of LEDS with four conductors: ground, R, G and B. Another possibility is common-anode. Instead of ground, there’s a +5v. This works well with a ULN2003A. You use a PWM arduino output to switch the ULN2003A, which supplies the power that the lights need. The disadvantage is that you only get one colour for the whole string, which limits what you can do. The advantage is that some of these strings are 12v and quite a bit brighter than what we had.

In any event, I found that the neopixel library that adafruit makes for the arduino worked perfectly fine, except that this particular string did not have the standard RGB arrangement. That also is perfectly fine: the library comes with 6 constants for the 6 possible permutations of RGB. It meant that mixing these particular lights with a string of the more standard variant would be awkward … but we weren’t planning to do that.

Making them light up

So, with the aid of a loupe I worked out which end of the string was in and which was out. Or maybe I just tried it both ways and found which one worked 🙂 . Ground and power off the arduino board itself into red and black and one of the standard adafruit demo sketches into pin 6 and from there into the white conductor on the string, and the thing lit up just fine. I discovered the RGB/BGR thing about this particular strand at that time, but this was no problem.

The code

The code – legal arrangement

When doing Arduino projects, I do so with the agreement that the code will be released into the public domain and published on github.

Even for paid projects, the code is released publicly. My position is that you are not paying for proprietary code, you are paying for getting me to write the code that you want. No contracts, no legal nonsense. When I accept jobs on the ‘gigs and collaborations’ board, I just ask that the fee be remitted to my PayPal if the code works for my client and they are happy with it. I think I have been done out of my fee only once.

For a weekend job, I typically charge $50 AUD. It’s my hobby, I do it for fun. I think I did Tracey’s job for free (pretty sure), and just asked her to cover the cost of parts. I do confidential, proprietary code at my real actual job. Any sort of confidentially requirements mean that you have to pay me real actual money, which for me is $100/hr.

Tracey was perfectly happy with the Living Green code being released to the public domain, which is what I expected, and we could proceed.

The code – design of the effect

The code is here.
.

The only design spec I was working with was “something something waves on the sea shore, it can be pretty abstract”. I didn’t know at the time how the strings were going to be mounted or arranged. The string itself was 50 lights long, and Tracey had two of them. I wrote a sketch that would power 100 lights.

Neopixels work by chaining the data. Data is sent to the lights in a stream, and each light removes the head of the stream and sends the rest of the data down to the next light in the chain. If the data falls off the end of the chain – this is no problem. That meant that I didn’t need to worry about the exact number of lights we would be working with.

So, I set up a system of sine waves that would be added together. It’s hideously over-engineered, of course, because that’s just how I roll.

The heart of the system is a C++ class named ‘Sine’. Sine has a wavelength and a frequency (fixed values), and a current theta position. Frequency is rotations per second, wavelenght is how many pixels long the wave is. When advanceMicros() is called, theta is updated. The v() method gets the current value of the sine wave at a given position along the strand, adjusted to a 0-1 range. v_for_mul gives a value of -1 to +1, which I decided to include when I wanted to multiply sine waves together.

There is additional code in there to permit the creation of a static ‘advanceAllMicros’ method. When the Sine objects are instantiated, they automagically add themselves to a static linked list of Sine objects. This means that if you simply create a Sine object and the code periodically invokes advanceAllMicros, that Sine object will move with correct timing without you having to do anything further.

With that class written, it was a matter of coming up with a pleasing effect.

I created a sine wave that moved in one direction (waveIn), and another that moved in the opposite direction (waveOut). I gave these a slightly different wavelenght and speed so that it wouldn’t look too regular. I decided that one of them would be green-ish, and the other kinda cyan. The rgb value of each pixel becomes an average of these two values.

I then decided that it would be nice if these two effects sort of took turns – the wave would move one way and then the other. So I created another sine wave, waveInOut, which moves a bit slower. Rather than taking an average of waveIn and waveOut, I took a weighted average, the weight being taken from waveInOut. This weight doesn’t vary by position along the string – I just use waveInOut.v(0). I could have used position along the string, but you want the effect to be ordered enough that a viewer can see a pattern, but no so ordered that it’s predictable. Another issue is that people aren’t going to be looking at it for very long, so it’s can’t be too visually chaotic.

Finally, I decided that it would be nice to have some sparkly highlights simulating ripples. So I made rippleBase and rippleMul. These run fairly quickly, and the effect is difficult to describe. But I was happy with it. I add this as a pure blue component to the final result, just to mix it up a little.

Finally, I felt that maybe a high-tide/low-tide component would be nice, so I added a tide Sine object with a frequency of ‘once every half hour’, which would adjust the overall effect of the main wave components.

The point of all this being: once you have defined an object that does something definite and simple, playing about with it is reasonably easy. With the Sine object defined, fooling about with different frequencies, different intensities, different combinations of waves is simpler.

What I would do differently

I’m pretty happy with the effect I eventually got. The main issue was the ‘tide’ thing. Having a half-hour cycle is kinda cool, but no-one is standing there looking at them for that long, so it was a bit pointless. The lights were not bright enough for the site, and having them slowly go dim over time didn’t work well on the day. My clients addressed this by rebooting the whole thing periodically, which isn’t ideal.

The code – overall control

Well, with all those parameters to play with, you’d like your client to be able to play with them. I built a mounting box for the project out of a small plastic food container and put a potentiometer and a couple of buttons in it. This allows you to get numbers into the sketch.

Ultimately, I rigged it up so that you could control the overall speed of the effect and the hightide/lowtide brighness. As I mentioned, the whole ‘tide’ thing was a bad idea, so ultimately this control box was pretty useless. I stuck the Arduino itself into it, but that’s all it turned out to be good for.

What I would do differently

These days, I’d provide a web interface. Several ways to do this.

Alternative ways to do sketch control

Don’t bother.

Why bother? It’s some background lights for the real show, which is the art stuff and art words. Relax! Just because I’m doing up some blinkenlights, doesn’t mean it’s the most important thing in the world. Get it right and put that in the code. Of course: this means that you really need to see the final result installed so that you can perform final code tweaks.

Arduino serves up web pages

This is not ideal if you want the general public to be able to fool with the settings, because network interaction will interfere with the display. It will freeze or get choppy while pages are being served.

There’s issues with storage, too. Web pages are bulky, especially if you want images. So we are talking SD cards. It’s really not worth it.

Arduino communicates via HTTP/JSON

Put the webpage elsewhere, have the arduino accept JSON packets from the HTML forms. I have had some sucess using AngularJS for this. The NodeMCU connects to the household web router, with the SSID and password being given to the arduino over a serial connection and stored in EEPROM. Most of the web page content is on wordpress or something.

For the ‘art installation in a shipping container’ situation … perhaps you’d want to set up a router.

Arduino communicates via serial

That is, you have a computer hidden behind a cushion somewhere and an app running on it talking to the arduino over USB. I’m tending to think this would be the best option if you want to let the system communicate with the general public, simply because it allows you to use a domain name. Have the domain name point at a server on that computer, and have it connected via serial to the microprocessor. To keep people from fooling with the exhibit remotely, have a password that changes periodically.

In general

In general, it helps if you have a fairly definite idea of what you want a system to do. “It should have public interaction” needs to be narrowed down a bit.

Any system that involves serving up web pages is going to need something better than a microprocessor to actually serve them up. A microprocessor can do it, but not well.

I would not be inclined to attempt this remotely, communicating via skype or email.

Physical installation

So, the big day came. We were going to actually mount these lights into Tracey’s art thing.

The art thing turned out to be a fabric covering over some seashell forms made of bubble-wrap. (Which doesn’t do the art side of things justice, of course. Is the Mona Lisa just some pigment on a board? If your job is maintaining the Lourve climate control, then yes.)

The lights themselves – I should mention – were more like christmas lights than like the neopixel strips available from adafruit. Attached to the forms, they did not lay down in neat rows, which was good.

We decided to lay the lights on top of the forms under the fabric. We tried laying them under the bubblewrap, but the light was a bit too diffuse and dim. In the end, we simply stuck them down with tape.

Strings of neopixels can be cut. To operate, all that needs to happen is that they need to be supplied with 5v power, and a data line needs to come out of the out of the last pixel on one string and into the in side of the other. I was concerned that chopping the strings up into fragments might ruin the effect, but this turned out to be not the case. For the ‘nautilus’ shell, we attached a string in a spiral. For the scallop, we cut a length of string into five strips, lad them next to each other, and connected them. The ‘wave’ effect was still evident, or evident enough. Enough that you could say ‘yep, that is totally meant to be the sea’, which is all you need really.

Connections were done from the arduino to the pieces and between each piece using brown automotive wire and automotive ‘bullet’ connectors. This was very horrible, bulky, and ugly. I have since looked at using modular phone handset connectors for the same job, but these are also pretty horrible and the socket for a modular phone connector is bulky.

In retrospect, a three-conductor stereo audio cable with 1/4″ jacks might have been better. An issue might be capacitance, which would limit the length of the the data line.

You cannot power lights like this off the microprocessor pin. We used a separate power supply. The arduino and the neopixels both use 5v USB power, so any USB power-pack is suitable and proved adequate. Power was taken out of this for both the lights and the microprocessor.

Speaking of which, originally I had a UNO-3 set up for all this, but during installation I decided it was a little bulky. I had a leostick clone in my parts box, and soldered connections onto that. Much smaller.

So, how did it go?

It was just not bright enough. Originally, the exhibit was outdoors. Outdoors on an Australian spring day. It’s just not feasible to do any sort of light show it a situation like that. The Australian sun is not just bright, it’s full of UV which physiologically makes it even brighter. Fireworks are not bright enough on an Aussie spring day. 5v LEDs? They never had a chance.

The exhibitors managed to get it moved inside, which at least made the display visible. As I mentioned, the tidal stuff was a mistake, making the lights dim in comparison to ambient.

But, it was rather pretty overall. The power supply worked just fine, and the thing was nicely in context. A couple of people stopped and looked for a moment, which is mostly all you can hope for. Unappreciated art is almost proverbial.

I’m thinking of doing something like this, but in a shipping container. Do you have any advice?

Jeez. Shipping container eh?

I’m pretty sure a string of 50 5v LEDs isn’t going to cut it there, either. Not if it’s a major part of the installation. Here’s some 12v neopixels. Here’s some more. On the plus side, they’re 12v and bright as. On the minus side, it’s $50-$60 for 20 of them. You are not going to get away with much change from a thousand bucks if you want to have an effect encompassing the whole container, no matter how you do it.

You’ll want to inject power into them at intervals – don’t just try powering them from one end. The current will set fire to something. Power each strand of 12 individually. Data is less of a concern. You can daisy-chain everything you have, or run separate logical strands. Adafruit will happily sell you a power supply, but if you’re in Norway then you’d be better off just going to an electronics shop. The nice thing about 12v is: car battery.

I’d get online and search “outdoor stage lighting”, or “DMX”, or I’d head over to “Capital Sound and Lighting” (or the equivalent wherever you happen to be) and talk to those guys. Rent something. I’d explain the them that gosh darn it I’m an actual computer programmer and I can make DMX-driven lights dance, which means actually getting one or two from somewhere and playing with them beforehand so you can justifiably claim that.

An arduino will talk to DMX lights. But there might be better options. Although it’s unlikely that there’s be an off-the-shelf effect box that does what you want, quite possibly there’s a way to get some python code or something talking to an attached peripheral.

In summary

  • The best is the enemy of the good.
  • Some lighting won’t amaze anyone, not in this day and age. Remember that it’s only a support for the actual content of the exhibit.
  • What you are thinking of is probably do-able. It’s going to cost some money.
  • Someone like me needs something concrete to work with first. Art usually happens within the constraints of some medium. The key moment was when Tracey handed me the strand of lights that she wanted me to work with.
  • Nothing is ever quite as good or quite as bad as it first appears to be.

Faust

28 March, 2018

A Faustian bargain. A deal with the devil.

What is it, precisely, that makes a Fasustian bargain Fasustian? Any bargain involves exchanging X for Y, and that’s cool. But a Faustian bargain is more than simply an unfair or ill-considered bargain. It’s more than simply that X was actually worth more than Y. It’s that X was the thing that gave Y its value. That when you surrender X to get Y, Y becomes worthless because you have surrendered X.

Wilde (I think) does this in “The Gift”. The classic is the exchange of your soul for power. Once you have surrendered your soul, any power you might wield you only wield at the command of the one to whom your soul now belongs.

Awesome as Y might be, if you surrender the entire point of having Y in order to get it, then you have made a bad bargain.