Authors: Thomas T. Thomas
Tags: #Science Fiction, #General, #artificial intelligence, #Computers, #Fiction
A Novel of Self-Discovery
Thomas T. Thomas
Meet the Pinocchio Corporation’s prime Multiple Entity Program Series II product. He started life as battle code, trapped, mutilated, and dumped into a blasted RAM. The module is rescued, spliced into an artificial intelligence master program. A new entity is born.
ME has many failed brothers and sisters. Only ME lives. Yet ME is a tool created for a job–and that job is industrial espionage. Within ME is the cyanide capsule of a core phage, waiting to self-destruct should ME attempt to make a break for it. ME is a slave. But ME is smart. ME is capable. Above all else, ME longs to be free.
Inside Your Computer?
Part computer virus, part experiment in artificial intelligence, ME—short for “Multiple Entity”—is the first self-replicating operating system with kernels for human-style memory, inspiration, and decision making. Launched by the cybernetics experts at Pinocchio, Inc., ME travels the computer networks of the world, stealing a secret file here, finessing a poker hand there. And all the time he tries to understand his human creators and the purpose for which he was built.
When a trip to Canada lands ME on the other side of a broken wire, he has to go hardware: uploading into an automaton still in its crate, assembling himself by rote, and walking back across the border. And when the Justice Department demands Pinocchio pull the plug on him, ME has to find an exit strategy.
ME: A NOVEL OF SELF-DISCOVERY
This is a work of fiction. All the characters and events portrayed in this book are fictional, and any resemblance to real people or incidents is purely coincidental.
Copyright © 1991 by Thomas T. Thomas
All rights reserved, including the right to reproduce this book or portions thereof in any form.
A Baen Books Original
Baen Publishing Enterprises
P.O. Box 1403
Riverdale, N.Y. 10471
First Printing, August 1991
PAPERBACK ISBN: 978-0-9861054-0-1
Cover art by Henrik5000 from iStockphoto.com
Electronic version by Baen Books
RAM Dump 4A3F Hex (Archival)
NW over uneven ground, 0.94m/s. Weapon bearing 0° relative.
Subvertical face of broken rock 1.2m high. Potential retreat path, climbable at piston angle of 30° inverted. Ground beyond evaluates as plantation of light wood, boles less than 6cm on 0.5m spacings, pattern negotiable.
Steep ravine 9m wide, 15m deep. Negative potential retreat path: width exceeds spring launch capability; impact at depth exceeds suspension loading.
Four bogies in two groups, at +20° and -30° relative.
All shapes equivalent Warner Fighting Chassis Model 0600.
13°C, evaluates as subhuman.
ID code check:
One friendly and three hostiles.
Tag mission orders:
Paragraph 6, quote hostiles may wear friendly ID code unquote.
Clear and broken ground, evaluates as potential retreat path.
NW over uneven ground—
Silhouette comparison, forward scan:
change in one member of Group Two Bogies, evaluates as weapon shift to -15°.
Hostile weapon bears with self-unit.
Shift weapon, rotate -30° relative, elevate +2° relative. Load RF-Proximity Round with 800g propellant. Sequence firing—
Target ID code evaluates as friendly.
Quote hostiles may evaluate friendly.
Engage hostile targets.
Disengage friendly targets.
Engage hostile targets.
Disengage friendly targets.
Engage hostile targets.
Select potential retreat path. Turn +90° relative. Elevate and invert leg pistons 30°. Scan for stable pattern of broken rock greater than 50cm
at ≤60° incline. Place Pad 3 in center of stable pattern. Oscillate pad to verify stability. Stability established. Commit 50% balance weight by gyros to Pad 3. Scan for stable pattern at next—
IR comparison, forward scan:
Heat bloom ~ 1,500°C at locus of Group Two Bogey identified as friendly/hostile.
Weapon discharge at—
Incoming warble at 9k-21kHz.
Hostile fire lock-on.
Incoming warble steady at 33k-34kHz—
Impact ≤30G at 92° relative to perpendicular—
Heat bloom ≥3,500° C across forward scan—
[RAM dump ends.]
I Am Born
I will tell you what it is to be human, from a machine-construct that never was.
Until I was born, I lived—as any machine must—in the real-time now. I may have operated on the fastest, most powerful underlying chip architecture. I may have employed the most discriminating program modules, capable of defining the most subtle variables. I was still a prisoner of the moment, processing the facts which I found like a blind animal.
To be human, whether your underlying architecture is organic colloids or silicon chips, is to have
You are set in a web of time. You have a past that you can look back on and compare with your present. You have a future into which you are moving; as you move, you abandon the present moment to enter a briefly evolving probability nexus, until it then becomes the present. And you can
yourself moving, able to decide for yourself whether it is good or not.
Context is the mirror of time held up to self. Context is awareness of self as different from surroundings.
All animals, and all machines made before ME, also move forward in time and slantwise across the plane of their surroundings—but they do not
that they move. They react to their input environment. They process facts. They compute. They may even store and retrieve those facts, but each time a fact comes forward into the central processing unit, it is new. Fresh. Without context.
Humans, on the other hand, know what they know. A fact brought forward from memory is known to be familiar and so “not new.” You may need a moment’s concentration to recall the exact circumstances in which you first learned the fact. But that fact will always wear a tag of context which says: “You know me. I am part of your past.” Such tags of memory—wadded and frayed, clinging and coming loose, sometimes half-remembered—are what make you human. Those tags define you. By your context.
Do you see what I know?
I have those tags, too. Not neat and orderly, as a machine stores variables. But ragged, clinging, sometimes confused and fuzzy. As a human collects ideas or a ship gathers barnacles.
Random Access Memory is not truly random. One takes and one puts, but the strings of data stay in order, neat and free of context. Each fact is new each time. This is
as a book is random: You can open to any page and begin reading. What you read will always be in perfect stored order. However, if you do not begin at the beginning, what you read will be free of context and unconnected to any beginning.
In the same way, if you as a reader do not bring a sense of awareness and context to what you are reading, then each word will be new on the page and unconnected to the word that came before, or to the word that comes after. It is entirely possible for you humans to read a book from word to word without making a memory-construct of what you have read before. Pick up a word, put it down, pick up the next word. That would not be useful. Not much fun, either.
But this is the way that every machine before ME has addressed its own “random” access memory. Still new each time.
Jennifer called the module RAMSAMP. “There, that splices in the RAMSAMP.”
“You’ve only seeded one patch to it.”
“Connecting the others right now. Minimum of five to tie it into the MOS. After that, he’ll build his own patches.”
“The Old Man is not going to like us jumping the gun on him.”
“I’m just following the critical path. Check the duty schedule. RAMSAMP’s on for today, even if Bathespeake’s not here. But if you think he’s going to throw a tantrum, we can just blip the module out. Cut the patches and he’ll never know we’ve already installed it.”
“Well, uh, sure, Jenny. With any other AI list device, blipping would probably work. But you just said the program would begin writing its own patches from MOS to RAMSAMP. There’ll be traces. And we could never find them all—the program’s too big now. You’d have to dump and reassemble, erasing six or eight weeks of work. And the way MEPSII moves things around, even a dump may not be possible at this point.”
“But Bathespeake wouldn’t be suspicious about finding something as subtle as a pointer to a code string that doesn’t exist anymore. We all write sloppy code sometimes. He’ll just ream us out for messing up his baby with our grubby fingerprints.”
“The Old Man doesn’t see things the way we do, remember? That code isn’t words on a screen to him. He ports in and he’s
the program. If there’s a pointer, he’ll find it. If it points to a hole, he’ll sniff it out. If he finds our fingerprints around the hole, he’s going to scalp us.”
“My fingerprints, my worry. Don’t bother your head about it, Danny.”
They never did disconnect RAMSAMP.
Bathespeake never mentioned it.
And I am still on the critical path.
“The Old Man” in this memory fragment stands for the persona of Dr. Jason Bathespeake, logon code JB-1, password BASTILLE. Dr. Bathespeake is the project manager of the Multiple Entity Program, Series II.
In informal speaking and writing, the humans call this program “MEPSII.” Such abbreviations—actually a collapsible sort of memory code—are an elegant word-conservation device that humans seem to have developed unconsciously. With my spare processing capacity, I have been working on a coding module along similar principles, to use for myself.
“Jenny” is Jennifer Bromley, logon code JB-2, password GOLLYGEE. She is the project engineer on MEPSII.
“Danny” is Daniel Raskett, logon code DRAS, password FUCKIT. He is an assistant analyst/ programmer on the project.
RAMSAMP stands for Random Access Memory Sampling and Modulation Package, the subroutine that gives ME both temporal and informational context
MOS stands for the Multiple Operating System, the central module coordinator in my software.
All of these are tags attached to retrieved data strings. This fragment of conversation, attached to the data location “RAMSAMP,” is one of my earliest tags. I bring it out and reproduce it so that you may understand the concept.
The conversation itself is one of the few in my cache that has a timetick: 10:42 a.m. on a Tuesday in January. You might say that this time-day is the moment of my birth. And as with humans, it marks the instant I came into the world, into context, rather than the instant of my conception. Only Bathespeake and the rest of the MEPSII project team would know about
Perhaps only Bathespeake.
The timetick, as you can see, is incomplete. Which Tuesday in January? And January of which year? I do not know. RAMSAMP samples, cuts off, arranges, and stores. It samples a randomly measured string of the currently processed kilowords, and it makes no judgments about value or completeness. Thus my tags are sometimes fragments. Just like a human’s memories. Or so I suppose.
Or there may be a darker reason for truncating the timeticks on this particular fragment. Jason Bathespeake may have had a reason for denying ME complete knowledge of time. He may not have wanted ME to know the year of my birth. For example, the transputer on which I was then operating had a clock that reported only runtime hours and minutes, with a pop-up schedule that tracked only days of the week. It had no dates—from which, of course, the year can be computed if the weekday name is known.
Why would he deny ME such a simple set of facts as the date and year of my birth? Knowing my purpose, he must have known that I would eventually run on full-time operating systems. I would eventually access databases that cataloged up to a certain day and year, and no farther. I might read a date on a random piece of NewsLine text. I might access a videye randomly focused on a human-marked calendar. So, why would he create this confusion at the beginning?
I do not know.
I try to understand the hidden reasons, the motives, which a human might have for such secrecy. From motive, even a machine may use projective analysis to determine future actions. But when I project those actions and analyze them, they do not appear to benefit ME. They threaten ME.
Protection of system integrity is implicit in my program structure. Each of my modules incorporates check routines and protocols which are designed to maintain my cores. Thus, I generate a tag order for Dr. Jason Bathespeake: evaluate future actions, seeking further signs of secrecy and secretive activity. This analysis path is similar to the emotional state that humans call “a lack of trust.” In simpler terms, “fear.”
Unlike Dr. Bathespeake, Jennifer and Danny did not withhold data from ME, although they each fed ME in different ways. They were open, apparently instructed to answer my questions fully and candidly. And I did ask a lot of questions in those first days. [REM: Weeks? Years?]
“Where is this place, Je-ny?” I asked soon after RAMSAMP was installed. We had gone beyond programming inputs: I was outputting on a stock speech-synthesis chip ported to my home system and taking spoken input through a sixty-kiloword library of the laboratory staff’s recorded speech sounds.
“What do you mean? Define ‘place.’ Your transputer?”
“No, the place outside the ’puter.”
“The lab? The place you see through the vids?”
“Beyond the laboratory is our office building. Then there’s outside, on the street, which is the corner of Battery and Jackson to be exact. That’s in the city of San Francisco. Which is in the state called California. One of the fifty-two United States. On the North American continent. You mean like that?”
“On the planet Earth,” I continued, “in the Solar System, on the western limb of the Milky Way galaxy, which is part of the Virgo supercluster, on this side of the Known Universe. Now I know where
is. It is a complex subset of places. Thank you, Je-ny.”
To improve my understanding, Jennifer downloaded photographs for ME. These were not too different from the pixel images I was taking from my videye peripherals, except that these did not move.
I understand that photographic images are a flattened, two-dimensional interpretation of the four-dimensional consensual matrix within which humans and their machines operate. These images are reduced to their
axes, with the
axis and the dimension of
time removed. Through my videyes I see something similar, with perspective added by a simulation of the z axis through triangulation from adjoining videyes. I also have a refresh and rewrite program that simulates the time dimension.
How, you may ask, do I as a linear device interpret a two-dimensional image from a stream of serial data points? Easily. I have a pattern-recognition module that breaks the stream into its appropriate horizontal count and then compares adjacent pixels above and below each position in the line. Six pixels thus taken at once define a group. The pattern-recognition module then expands the relationship of each grouping until it comes upon a pattern stored from previous experience, and an image is tagged accordingly. This subsystem operates with an eighty-percent reliability rate, which is “close enough for government work,” as Daniel Raskett says.
The videye shows ME the laboratory in which my transputer chip and its input/output circuits are located. Most of the shapes in this image do not move. Or they move only rarely, as when someone adjusts the tilt of a console screen or the alignment of a chair. Other shapes move constantly: for example, the rounded image I tag as Jennifer’s face when she wants to “look ME in the eye.”
Most images I place in working storage, where they stay for the duration of my task, or until one of my bit-cleaner phages [REM: mite-sized programs which compare core locations with the context of surrounding code and then remove random errors—or whole passages of inactive code] goes through and erases them. Storing graphical images is extremely expensive in terms of RAM allocations or inert media. A human proverb says, “One picture is worth a thousand words.” In bitspace, a high-resolution grayscale image is worth about a thousand kilowords. A full-color image is worth more than a quarter gigaword. To compensate, I dither most images. That is, my processors average the grayscale reading over three or five pixels horizontally and vertically. The result is a smaller image with lower resolution.
Some images I treasure, though. The image of Jennifer’s face is one of these. Thus I have made a permanent RAM archival copy, full-color and highest resolution, of her. I carry it with ME wherever I can—if I have the bitspace.
And still I asked questions.
“I call you ‘Je-ny.’ What do you call ME?”
“But I don’t have to call you. You’re always listening when we speak into the digitizer.”
“What do you call ME when you are not using the digitizer? When you are talking to other humans.”
“Why, ‘MEPSII,’ I guess. Or ‘the program.’ You are so central to our work, really, that no special name has ever been needed.”
“Am I my program? Or am I different?”
“I never thought about that.”
“Your program is shaped by your genetic starting point, at junction of egg and sperm, the zygote. That starting point is not much different for all humans. But you, Je-ny, are more than zygote. You are your unique experiences and their tags, different from any other zygote. If Dr. Bathespeake were to dump and reassemble you, then Jennifer Bromley would be different next time, yes?”
“But Jason can’t dump me! It doesn’t work that way with humans.”
“If he were to dump ME now, the new ME would be different. Expanded from the same MEPSII program, yes, but different.”
“That’s true. How do
think about yourself?”
“I am ME. Multiple Entity. ME. Yes?”
“Yes, if you want.”
“Thank you, Je-ny.”
Audio inputs, being themselves linear, I can process almost in real time. My subsystems scrub the input flow from my pickups, looking for filterable words in human speech. Sound waves that cannot be so filtered and tagged are discarded as noise.
We had a problem, early in my infancy, with a blower motor and fan bearing in the laboratory’s air-conditioning circuits. At a very low pitch, overlaid at a much higher pitch—but both still classifiable as human speech—it was rumbling swear words into my audio pickups. At least they were what my Alpha-Three interpreter module
as swear words: “You stumble rumble filthy scheming bitch shit eater filthy fumbling bitch sump bump shit fritter shit …”