Arrow of time
Arrow of time

My little niece

Share Tweet Share

My "little" sister gave birth to a brand new baby girl about two months ago, and is now going through …

My "little" sister gave birth to a brand new baby girl about two months ago, and is now going through the usual baby-raising process, invloving a lot of crying, pooping and not much sleeping. The baby is - cute, like all babies are. I'm much drawn to the process where the baby is "Awakening" (yes, with a capital A - you know what I mean). It still has a long way to go but it already seems to have some pattern matching going on, though usually nonsensical. I usually visit my sister every few months so I am very interested in observing this process.


In honour of that, I hereby give you - Orphanogenesis - or at least the most interesting part of it, an excerpt from the book Diaspora by Greg Egan. It is a beautiful and fascinating text describing the creation and bootstrapping of an AI - and the thing that makes it fascinating is that it looks so possible, if only we could figure out how to do a couple of important modules...

Anyway, here's Orphanogenesis...

The conceptory placed the new orphan seed in the middle of the womb’s memory, a single strand of information suspended in a vacuum of zeroes. The seed meant nothing to itself; alone, it might as well have been the last stream of Morse, fleeing through the void past a distant star. But the womb was a virtual machine designed to execute the seed’s instructions, and a dozen more layers of software led down to the polis itself, a lattice of flickering molecular switches. A sequence of bits, a string of passive data, could do nothing, change nothing — but in the womb, the seed’s meaning fell into perfect alignment with all the immutable rules of all the levels beneath it. Like a punched card fed into a Jacquard loom, it ceased to be an abstract message and became a part of the machine.

When the womb read the seed, the seed’s first shaper caused the space around it to be filled with a simple pattern of data: a single, frozen numerical wave train, sculpted across the emptiness like a billion perfect ranks of sand dunes. This distinguished each point from its immediate neighbors further up or down the same slope — but each crest was still identical to every other crest, each trough the same as every other trough. The womb’s memory was arranged as a space with three dimensions, and the numbers stored at each point implied a fourth. So these dunes were four-dimensional.

A second wave was added — running askew to the first, modulated with a slow steady rise — carving each ridge into a series of ascending mounds. Then a third, and a fourth, each successive wave enriching the pattern, complicating and fracturing its symmetries: defining directions, building up gradients, establishing a hierarchy of scales.

The fortieth wave plowed through an abstract topography bearing no trace of the crystalline regularity of its origins, with ridges and furrows as convoluted as the whorls of a fingerprint. Not every point had been rendered unique — but enough structure had been created to act as the framework for everything to come. So the seed gave instructions for a hundred copies of itself to be scattered across the freshly calibrated landscape.

In the second iteration, the womb read all of the replicated seeds — and at first, the instructions they issued were the same, everywhere. Then, one instruction called for the point where each seed was being read to jump forward along the bit string to the next field adjacent to a certain pattern in the surrounding data: a sequence of ridges with a certain shape, distinctive but not unique. Since each seed was embedded in different terrain, each local version of this landmark was situated differently, and the womb began reading instructions from a different part of every seed. The seeds themselves were all still identical, but each one could now unleash a different set of shapers on the space around it, preparing the foundations for a different specialized region of the psychoblast, the embryonic mind.

The technique was an ancient one: a budding flower’s nondescript stem cells followed a self-laid pattern of chemical cues to differentiate into sepals or petals, stamens or carpels; an insect pupa doused itself with a protein gradient which triggered, at different doses, the different cascades of gene activity needed to sculpt abdomen, thorax, or head. Konishi’s digital version skimmed off the essence of the process: divide up space by marking it distinctively, then let the local markings inflect the unwinding of all further instructions, switching specialized subprograms on and off — subprograms which in turn would repeat the whole cycle on ever finer scales, gradually transforming the first rough-hewn structures into miracles of filigreed precision.

By the eighth iteration, the womb’s memory contained a hundred trillion copies of the mind seed; no more would be required. Most continued to carve new detail into the landscape around them — but some gave up on shapers altogether, and started running shriekers: brief loops of instructions which fed streams of pulses into the primitive networks which had grown up between the seeds. The tracks of these networks were just the highest ridges the shapers had built, and the pulses were tiny arrowheads, one and two steps higher. The shapers had worked in four dimensions, so the networks themselves were three-dimensional. The womb breathed life into these conventions, making the pulses race along the tracks like a quadrillion cars shuttling between the trillion junctions of a ten-thousand-tiered monorail.

Some shriekers sent out metronomic bit-streams; others produced pseudorandom stutters. The pulses flowed through the mazes of construction where the networks were still being formed — where almost every track was still connected to every other, because no decision to prune had yet been made. Woken by the traffic, new shapers started up and began to disassemble the excess junctions, preserving only those where a sufficient number of pulses was arriving simultaneously — choosing, out of all the countless alternatives, pathways which could operate in synchrony. There were dead ends in the networks-in-progress, too — but if they were traveled often enough, other shapers noticed, and constructed extensions. It didn’t matter that these first streams of data were meaningless; any kind of signal was enough to help whittle the lowest-level machinery of thought into existence.

In many polises, new citizens weren’t grown at all; they were assembled directly from generic subsystems. But the Konishi method provided a certain quasi-biological robustness, a certain seamlessness. Systems grown together, interacting even as they were being formed, resolved most kinds of potential mismatch themselves, with no need for an external mind-builder to fine-tune all the finished components to ensure that they didn’t clash.

Amidst all this organic plasticity and compromise, though, the infrastructure fields could still stake out territory for a few standardized subsystems, identical from citizen to citizen. Two of these were channels for incoming data — one for gestalt, and one for linear, the two primary modalities of all Konishi citizens, distant descendants of vision and hearing. By the orphan’s two-hundredth iteration, the channels themselves were fully formed, but the inner structures to which they fed their data, the networks for classifying and making sense of it, were still undeveloped, still unrehearsed.

Konishi polis itself was buried two hundred meters beneath the Siberian tundra, but via fiber and satellite links the input channels could bring in data from any forum in the Coalition of Polises, from probes orbiting every planet and moon in the solar system, from drones wandering the forests and oceans of Earth, from ten million kinds of scape or abstract sensorium. The first problem of perception was learning how to choose from this superabundance.

In the orphan psychoblast, the half-formed navigator wired to the controls of the input channels began issuing a stream of requests for information. The first few thousand requests yielded nothing but a monotonous stream of error codes; they were incorrectly formed, or referred to non-existent sources of data. But every psychoblast was innately biased toward finding the polis library (if not, it would have taken millennia) and the navigator kept trying until it hit on a valid address, and data flooded through the channels: a gestalt image of a lion, accompanied by the linear word for the animal.

The navigator instantly abandoned trial and error and went into a spasm of repetition, summoning the same frozen image ot the lion again and again. This continued until even the crudest of its embryonic change-discriminators finally stopped firing, and it drifted back toward experimentation.

Gradually, a half-sensible compromise evolved between the orphan’s two kinds of proto-curiosity: the drive to seek out novelty, and the drive to seek out recurring patterns. It browsed the library, learning how to bring in streams of connected information — sequential images of recorded motion, and then more abstract chains of cross-references — understanding nothing, but wired to reinforce its own behavior when it struck the right balance between coherence and change.

Images and sounds, symbols and equations, flooded through the orphan’s classifying networks, leaving behind, not the fine details — not the spacesuited figure standing on gray-and-white rock against a pitch black sky; not the calm, naked figure disintegrating beneath a gray swarm of nanomachines — but an imprint of the simplest regularities, the most common associations. The networks discovered the circle/sphere: in images of the sun and planets, in iris and pupil, in fallen fruit, in a thousand different artworks, artifacts, and mathematical diagrams. They discovered the linear word for “person,” and bound it tentatively both to the regularities which defined the gestalt icon for “citizen,” and to the features they found in common among the many images of fleshers and gleisner robots.

By the five-hundredth iteration, the categories extracted from the library’s data had given rise to a horde of tiny sub-systems in the input-classifying networks: ten thousand word-traps and image-traps, all poised and waiting to be sptung; ten thousand pattern-recognizing monomaniacs staring into the information stream, constantly alert for their own special targets.

These traps began to form connections with each other, using them at first just to share their judgments, to sway each other’s decisions. If the trap for the image of a lion was triggered, then the traps for its linear name, for the kind of sounds other lions had been heard to make, for common features seen in their behavior (licking cubs, pursuing antelope) all became hypersensitive. Sometimes the incoming data triggered a whole cluster of linked traps all at once, strengthening their mutual connections, but sometimes there was time for over-eager associate traps to start firing prematurely. The lion shape has been recognized — and though the word “lion” has not yet been detected, the “lion” word-trap is tentatively firing ... and so are the traps for cub-licking and antelope-chasing.

The orphan had begun to anticipate, to hold expectations.

By the thousandth iteration, the connections between the traps had developed into an elaborate network in its own right, and new structures had arisen in this network — symbols — which could be triggered by each other as easily as by any data from the input channels. The lion image-trap, on its own, had merely been a template held up to the world to be declared a match or a mismatch — a verdict without implications. The Hon symbol could encode an unlimited web of implications — and that web could be tapped at any time, whether or not a lion was visible.

Mere recognition was giving way to the first faint hints of meaning.

The infrastructure fields had built the orphan standard output channels for linear and gestalt, but as yet the matching navigator, needed to address outgoing data to some specific destination in Konishi or beyond, remained inactive. By the two-thousandth iteration, symbols began to jostle for access to the output channels, regardless. They used their traps’ templates to parrot the sound or image which each had learned to recognize — and it didn’t matter if they uttered the linear words “lion,” “cub,” “antelope” into a void, because the input and output channels were wired together, on the inside.

The orphan began to hear itself think.

Not the whole pandemonium; it couldn’t give voice — or even gestalt — to everything at once. Out of the myriad associations every scene from the library evoked, only a few symbols at a time could gain control of the nascent language production networks. And though birds were wheeling in the sky, and the grass was waving, and a cloud of dust and insects was rising up in the animals’ wake — and more, much more ... the symbols which won out before the whole scene vanished were:

“Lion chasing antelope.”

Startled, the navigator cut off the flood of external data. The linear words cycled from channel to channel, distinct against the silence; the gestalt images summoned up the essence of the chase again and again, an idealized reconstruction shorn of all forgotten details.

Then the memory faded to black, and the navigator reached out to the library again.

The orphan’s thoughts themselves never shrank to a single orderly progression — rather, symbols fired in ever richer and more elaborate cascades — but positive feedback sharpened the focus, and the mind resonated with its own strongest ideas. The orphan had learned to single out one or two threads from the symbols’ endless thousand-strand argument. It had learned to narrate its own experience.

The orphan was almost half a megatau old, now. It had a vocabulary of ten thousand words, a short-term memory, expectations stretching several tau into the future, and a simple stream of consciousness. But it still had no idea that there was such a thing in the world as itself.

* * *

The conceptory mapped the developing mind after every iteration, scrupulously tracing the effects of the randomized indeterminate fields. A sentient observer of the same information might have visualized a thousand delicate interlocking fractals, like tangled, feathery, zero-gee crystals, sending out ever-finer branches to crisscross the womb as the fields were read and acted upon, and their influence diffused from network to network. The conceptory didn’t visualize anything; it just processed the data, and reached its conclusions.

So far, the mutations appeared to have caused no harm. Every individual structure in the orphan’s mind was functioning broadly as expected, and the traffic with the library, and other sampled data streams, showed no signs of incipient global pathologies.

If a psychoblast was found to be damaged, there was nothing in principle to stop the conceptory from reaching into the womb and repairing every last malformed structure, but the consequences could be as unpredictable as the consequences of growing the seed in the first place. Localized “surgery” sometimes introduced incompatibilities with the rest of the psychoblast, while alterations widespread and thorough enough to guarantee success could be self-defeating, effectively obliterating the original psychoblast and replacing it with an assembly of parts cloned from past healthy ones.

But there were risks, too, in doing nothing. Once a psychoblast became self-aware, it was granted citizenship, and intervention without consent became impossible. This was not a matter of mere custom or law; the principle was built into the deepest level of the polis. A citizen who spiraled down into insanity could spend teratau in a state of confusion and pain, with a mind too damaged to authorize help, or even to choose extinction. That was the price of autonomy: an inalienable right to madness and suffering, inseparable from the right to solitude and peace.

So the citizens of Konishi had programmed the conceptory to err on the side of caution. It continued to observe the orphan closely, ready to terminate psychogenesis at the first sign of dysfunction.

 

Not long after the five-thousandth iteration, the orphan’s output navigator began to fire — and a tug-of-war began. The output navigator was wired to seek feedback, to address itself to someone or something that showed a response. But the input navigator had long since grown accustomed to confining itself to the polis library, a habit which had been powerfully rewarded. Both navigators were wired with a drive to bring each other into alignment, to connect to the same address, enabling the citizen to listen and speak in the same place — a useful conversational skill. But it meant that the orphan’s chatter of speech and icons flowed straight back to the library, which completely ignored it.

Faced with this absolute indifference, the output navigator sent repressor signals into the change-discriminator networks, undermining the attraction of the library’s mesmerizing show, bullying the input navigator out of its rut. Dancing a weird chaotic lockstep, the two navigators began hopping from scape to scape, polis to polis, planet to planet. Looking for someone to talk to.

They caught a thousand random glimpses of the physical world along the way: a radar image of a dust storm sweeping across the sea of dunes ringing the north polar ice cap of Mars; the faint infrared plume of a small comet disintegrating in the atmosphere of Uranus — an event that had taken place decades before, but lingered in the satellite’s discriminating memory. They even chanced upon a real-time feed from a drone weaving its way across the East African savanna toward a pride of lions, but unlike the library’s flowing images this vision seemed intractably frozen, and after a few tau they moved on.

When the orphan stumbled on the address for a Konishi forum, it saw a square paved with smooth rhombuses of mineral blues and grays, arranged in a pattern dense with elusive regularities but never quite repeating itself. A fountain sprayed liquid silver toward a cloud-streaked, burnt-orange sky; as each stream broke apart into mirrored droplets halfway up its arc, the shiny globules deformed into tiny winged piglets which flew around the fountain, braiding each others’ flight paths and grunting cheerfully before diving back into the pool. Stone cloisters ringed the square, the inner side of the walkway a series of broad arches and elaborately decorated colonnades. Some of the arches had been given unusual twists — Eschered or Kleined, skewed through invisible extra dimensions.

The orphan had seen similar structures in the library, and knew the linear words for most of them; the scape itself was so unremarkable that the orphan said nothing about it at all. And the orphan had viewed thousands of scenes of moving, talking citizens, but it was acutely aware of a difference here, though it could not yet grasp clearly what it was. The gestalt images themselves mostly reminded it of icons it had seen before, or the stylized fleshers it had seen in representational art: far more diverse, and far more mercurial, than real fleshers could ever be. Their form was constrained not by physiology or physics, but only by the conventions of gestalt — the need to proclaim, beneath all inflections and subtleties, one primary meaning: I am a citizen. The orphan addressed the forum: “People.”

The linear conversations between the citizens were public, but muted — degraded in proportion to distance in the scape — and the orphan heard only an unchanging murmur.

It tried again. “People!”

The icon of the nearest citizen — a dazzling multihued form like a stained-glass statue, about two delta high — turned to face the orphan. An innate structure in the input navigator rotated the orphan’s angle of view straight toward the icon. The output navigator, driven to follow it, made the orphan’s own icon — now a crude, unconscious parody of the citizen’s — turn the same way.

The citizen glinted blue and gold. Vis translucent face smiled, and ve said, “Hello, orphan.”

A response, at last! The output navigator’s feedback detector shut off its scream of boredom, damping down the restlessness which had powered the search. It flooded the mind with signals to repress any system which might intervene and drag it away from this precious find.

The orphan parroted: “Hello, orphan.”

The citizen smiled again — “Yes, hello” — then turned back to vis friends.

“People! Hello!” Nothing happened. “Citizens! People!”

The group ignored the orphan. The feedback detector backtracked on its satisfaction rating, making the navigators restless again. Not restless enough to abandon the forum, but enough to move within it.

The orphan darted from place to place, crying out: “People! Hello!” It moved without momentum or inertia, gravity or friction, merely tweaking the least significant bits of the input navigator’s requests for data, which the scape interpreted as the position and angle of the orphan’s point-of-view. The matching bits from the output navigator determined where and how the orphan’s speech and icon were merged into the scape.

The navigators learned to move close enough to the citizens to be easily heard. Some responded — “Hello, orphan” — before turning away. The orphan echoed their icons back at them: simplified or intricate, rococco or spartan, mock-biological, mock-artifactual, forms outlined with helices of luminous smoke, or filled with vivid hissing serpents, decorated with blazing fractal encrustations, or draped in textureless black — but always the same biped, the same ape-shape, as constant beneath the riot of variation as the letter A in a hundred mad monks’ illuminated manuscripts.

Gradually, the orphan’s input-classifying networks began to grasp the difference between the citizens in the forum and all the icons it had seen in the library. As well as the image, each icon here exuded a non-visual gestalt tag — a quality like a distinctive odor for a flesher, though more localized, and much richer in possibilities. The orphan could make no sense of this new form of data, but now its infotrope — a late-developing structure which had grown as a second level over the simpler novelty and pattern detectors — began to respond to the deficit in understanding. It picked up the tenuous hint of a regularity — every citizen’s icon, here, comes with a unique and unvarying tag — and expressed its dissatisfaction. The orphan hadn’t previously bothered echoing the tag, but now, spurred on by the infotrope, it approached a group of three citizens and began to mimic one of them, tag and all. The reward was immediate.

The citizen exclaimed angrily, “Don’t do that, idiot!”

“Hello!”

“No one will believe you if you claim to be me — least of all me. Understand? Now go away!” This citizen had metallic, pewter-gray skin. Ve flashed vis tag on and off for emphasis; the orphan did the same.

“No!” The citizen was now sending out a second tag, alongside the original. “See? I challenge you — and you can’t respond. So why bother lying?”

“Hello!”

“Go away!”

The orphan was riveted; this was the most attention it had ever received.

“Hello, citizen!”

The pewter face sagged, almost melting with exaggerated weariness. “Don’t you know who you are? Don’t you know your own signature?”

Another citizen said calmly, “It must be the new orphan — still in the womb. Your newest co-politan, Inoshiro. You ought to welcome it.”

This citizen was covered in short, golden-brown fur. The orphan said, “Lion.” It tried mimicking the new citizen — and suddenly all three of them were laughing.

The third citizen said, “It wants to be you now, Gabriel.”

The first, pewter-skinned citizen said, “If it doesn’t know its own name, we should call it ‘idiot.’”

“Don’t be cruel. I could show you memories, little part-sibling.” The third citizen’s icon was a featureless black silhouette.

“Now it wants to be Blanca.”

The orphan started mimicking each citizen in turn. The three responded by chanting strange linear sounds which meant nothing — “Inoshiro! Gabriel! Blanca! Inoshiro! Gabriel! Blanca!” — just as the orphan sent out the gestalt images and tags.

Short-term pattern recognizers seized on the connection, and the orphan joined in the linear chant — and continued it for a while, when the others fell silent. But after a few repetitions the pattern grew stale.

The pewter-skinned citizen clasped vis hand to vis chest and said, “I’m Inoshiro.”

The golden-furred citizen clasped vis hand to vis chest and said, “I’m Gabriel.”

The black-silhouetted citizen gave vis hand a thin white outline to keep it from vanishing as ve moved it in front of vis trunk, and said, “I’m Blanca.”

The orphan mimicked each citizen once, speaking the linear word they’d spoken, aping their hand gesture. Symbols had formed for all three of them, binding their icons, complete with tags, and the linear words together — even though the tags and the linear words still connected to nothing else.

The citizen whose icon had made them all chant “Inoshiro” said, “So far so good. But how does it get a name of its own?”

The one with its tag bound to “Blanca” said, “Orphans name themselves.”

The orphan echoed, “Orphans name themselves.”

The citizen bound to “Gabriel” pointed to the one bound to “Inoshiro,” and said, “Ve is —?” The citizen bound to “Blanca” said “Inoshiro.”

Then the citizen bound to “Inoshiro” pointed back at ver and said “Ve is —?” This time, the citizen bound to “Blanca” replied, “Blanca.” The orphan joined in, pointing where the others pointed, guided by innate systems which helped make sense of the scape’s geometry, and completing the pattern easily even when no one else did.

Then the golden-furred citizen pointed at the orphan, and said: “Ve is —?”

The input navigator spun the orphan’s angle ot view, trying to see what the citizen was pointing at. When it found nothing behind the orphan, it moved its point of view backward, closer to the golden-furred citizen — momentarily breaking step with the output navigator.

Suddenly, the orphan saw the icon it was projecting itself — a crude amalgam of the three citizens’ icons, all black fur and yellow metal — not just as the usual faint mental image from the cross-connected channels, but as a vivid scape-object beside the other three.

This was what the golden-furred citizen bound to “Gabriel” was pointing at.

The infotrope went wild. It couldn’t complete the unfinished regularity — it couldn’t answer the game’s question for this strange fourth citizen — but the hole in the pattern needed to be filled.

The orphan watched the fourth citizen change shape and color, out there in the scape ... changes perfectly mirroring its own random fidgeting: sometimes mimicking one of the other three citizens, sometimes simply playing with the possibilities of gestalt. This mesmerized the regularity detectors tor a while, but it only made the infotrope more restless.

The infotrope combined and recombined all the factors at hand, and set a short-term goal: making the pewter-skinned “Inoshiro” icon change, the way the fourth citizen’s icon was changing. This triggered a faint anticipatory firing of the relevant symbols, a mental image of the desired event. But though the image of a wiggling, pulsating citizen-icon easily won control of the gestalt output channel, it wasn’t the “Inoshiro” icon that changed — just the fourth citizen’s icon, as before.

The input navigator drifted of its own accord back into the same location as the output navigator, and the fourth citizen abruptly vanished. The infotrope pushed the navigators apart again; the fourth citizen reappeared.

The “Inoshiro” citizen said, “What’s it doing?”

The “Blanca” citizen replied, “Just watch, and be patient. You might learn something.”

A new symbol was already forming, a representation of the strange fourth citizen — the only one whose icon seemed bound by a mutual attraction to the orphan’s viewpoint in the scape, and the only one whose actions the orphan could anticipate and control with such ease. So were all four citizens the same kind of thing — like all lions, all antelope, all circles ... or not? The connections between the symbols remained tentative.

The “Inoshiro” citizen said, “I’m bored! Let someone else baby-sit it!” Ve danced around the group — taking turns imitating the “Blanca” and “Gabriel” icons, and reverting to vis original form. “What’s my name? I don’t know! What’s my signature? I don’t have one! I’m an orphan! I’m an orphan! I don’t even know how I look!”

When the orphan perceived the “Inoshiro” citizen taking on the icons of the other two, it almost abandoned its whole classification scheme in confusion. The “Inoshiro” citizen was behaving more like the fourth citizen, now — though vis actions still didn’t coincide with the orphan’s intentions.

The orphan’s symbol for the fourth citizen kept track of that citizen’s appearance and location in the scape, but it was also beginning to distill the essence of the orphan’s own mental images and short-term goals, creating a summary of all the aspects of the orphan’s state of mind which seemed to have some connection to the fourth citizen’s behavior. Few symbols possessed sharply defined boundaries, though; most were as permeable and promiscuous as plasmid-swapping bacteria. The symbol for the “Inoshiro” citizen copied some of the state-of-mind structures from the symbol for the fourth citizen, and began trying them out for itself.

At first, the ability to represent highly summarized “mental images” and “goals” was no help at all — because it was still linked to the orphan’s state of mind. The “Inoshiro” symbol’s blindly cloned machinery kept predicting that the “Inoshiro” citizen would behave according to the orphan’s own plans ... and that never happened. In the face of this repeated failure, the links soon withered — and the tiny, crude model-of-a-mind left inside the “Inoshiro” symbol was set free to find the “Inoshiro” state-of-mind that best matched the citizen’s actual behavior.

The symbol tried out different connections, different theories, hunting for the one that made most sense ... and the orphan suddenly grasped the fact that the “Inoshiro” citizen had been imitating the fourth citizen.

The infotrope seized on this revelation — and tried to make the fourth citizen mimic the “Inoshiro” citizen back.

The fourth citizen proclaimed, “I’m an orphan! I’m an orphan! I don’t even know how I look!”

The “Gabriel” citizen pointed at the fourth citizen and said, “Ve is an orphan!”

The “Inoshiro” citizen agreed wearily, “Ve is an orphan. But why does ve have to be this slow!”

Inspired — driven by the infotrope — the orphan tried playing the “Ve is —?” game again, this time using the response “an orphan” for the fourth citizen. The others confirmed the choice, and soon the words were bound to the symbol for the fourth citizen.


-- Greg Egan, Diaspora

 

What happens next... you will have to read in the book.

(and yes, I now cringe every time a project or a product calls itself "Diaspora" but has nothing to do with AI).

 


comments powered by Disqus