Free Novel Read

Halting State Page 16


  Barnaby snaps her fingers, a dry, popping sound. “Time series analysis on the transaction log from the auctions,” she says, leading you to wonder whether you’re surrounded by complete nutters or just very, very strange detectives.

  Jack shakes his head. “I’d better go see if Mike’s got a list—”

  You reach a decision. Funny how Marcus Hackman’s bottom-feeding scum are a lot more human than he is, isn’t it? “No you won’t. We will. Because if you find anything, and there are names attached, I’ll be wanting a wee word with them.”

  It turns out that nobody actually knows what’s been stolen.

  “You’ve got to understand, it’s a distributed database,” says Couper, looking flustered—when you and Jack found him he was hunkered down in a nest of big flat screens full of tiny coloured text with a ragged left margin, and it took a tap on the shoulder before he’d look up—“we don’t track everything centrally.”

  “What about the journal logs?” asks Jack. Someone behind you snaps their fingers.

  “Well sure, but we’re typically tracking close to a million transactions per minute. Good luck if you expect us to grep that.” He kicks his chair back from his workstation and turns to face you. “You’d have to track the user handles from when they logged in—”

  “Can’t you put up a notice somewhere?” asks Elaine. “Ask for information.” She pauses.

  Couper doesn’t give her a breathing space. “Sure, but nobody would—”

  “Tell them it’s to register an insurance claim,” she interrupts, raising her voice. Someone’s been taking assertiveness classes, you realize. “That Hayek Associates are trying to get the items back, but will be unable to return unclaimed items.”

  “But they’ll claim all sorts of shit that they never had!”

  “Really?” She gives Couper a withering look: “I’d never have guessed. Poor innocent me, nobody told me that people lie while I was studying for my master’s in forensic accountancy…”

  “But what use is it?” Couper looks upset, more than anything: “It doesn’t make sense!”

  “It’s simple enough. Most people will tell the truth, especially when we tell them we just want to know their five top items, so we can verify them against our database.”

  “But there isn’t a database—” Couper stops dead.

  Elaine nods, smiling a little smile. “But they don’t know that, do they?”

  “Oh. Right, well then.” Couper shakes his head.

  “I’ll need admin access to the auction-houses,” Jack adds.

  Couper splutters. “You can’t be serious! They’re in this to make money. They could sue us into the ground if we let you mess with their stock—”

  “Read-only,” Jack says firmly. “I need to write a scraper that can trawl their database for hot property.”

  “Talk to Wayne, or Beccy. I can’t give you access without their sayso.” Sam crosses his arms stubbornly. “Go on. I can’t help you.”

  Elaine looks at you and raises an eyebrow. “Sounds like a plan,” you tell her. The thought of giving Wayne Richardson, Prize Twat, a bad case of indigestion holds a curious appeal for you. “Let me handle this.”

  ELAINE: Game of Spooks

  It’s about eight fifteen when you finally get out of Hayek Associates’ offices and summon a taxi to whisk you back to your hotel room. You are, not to put it too pointedly, dog-tired. On the plus side, at least you made some progress. That cop, Sergeant Smith, looks like she’s going to be a useful contact, and Jack is certainly paying his way. When you left him back at the bunker, he was elbow deep in whatever it is that programmers do, oblivious to everything else. Which is kind of annoying, because he’s about the only person up here who you know who isn’t a co-worker, and now you’ve got to face an evening in a strange city on your own, but what the hell. They call this place the Athens of the North—there’s got to be something you can do by yourself on a summer night, hasn’t there?

  Well, no.

  Back in your room, you have a quick shower, then check the eating-out guide, by which time it’s past nine and you’re half past hungry. You’re not keen on going back to the places you went into with Jack, not on your own, and the room service menu looks okay, so you order up a big green salad in penance for yesterday’s business meeting, then it’s ten, and the hotel gym’s closed, and where the fuck did the day go? It’s even worse than a weekday in London—at least there you can break the commute home in a cocktail bar with some friends.

  It’s ten thirty and you’re glumly contemplating an early night and a seven o’clock session in the gym when your phone rings. You look at the display with a sinking feeling: It’s a particularly tedious LARP called SPOOKS, a real-time game in which you’re acting your parts in a shadowy pan-European intelligence agency locked in a struggle for global hegemony with the forces of Chinese military intelligence, the Russian FSB, and, of course, the CIA.

  “Yes?” You try not to snap.

  “Elaine Barnaby? This is Spooks Control. Are you busy right now?”

  You glance around your beautifully decorated and utterly sterile worker cell: “Not particularly. You know I’m in Edinburgh?”

  “That’s why we’re calling.” Your nameless Control sounds drily amused. “On behalf of our sponsors.” The spooks at the centre of the organization in the game you play. “Your authenticator is—” He rattles off a string of nonsense words, just to prove he’s got access to your Control file.

  “I’m on business…”

  “So are we. We were hoping you could do us a small favour while you’re there.”

  “How small?” As usual, there’s no face to go with the call, just the eye-in-a-glass-pyramid-in-Docklands logo. If this was a video call, at least you could glare at him. “It’s half past bloody ten!”

  “We need a small parcel delivering.”

  “A small parcel. What’s wrong with FedEx?”

  “Well, as you just pointed out, it’s half past ten at night. The parcel’s sitting downstairs in your hotel lobby. It needs delivering to—” He rattles off a set of Galileo co-ordinates. “That’s about half a kilometre away from where you’re sitting.”

  “Humph.” You look at the phone speculatively. “What’s it worth?”

  “To you? A twenty-minute walk before bedtime. To the recipient? Priceless.” Control sounds smug. You can picture him sitting in some bed-sit, working through his check-list of in-game tasks in order to convince himself he’s got a life.

  There’s no easy way to say no without giving offence, and anyway, you were thinking about doing something before bed—“I’ll do it.”

  “Thank you. I’ve been told to tell you, Agent Barnaby, that a hell of a lot depends on this package being in place before midnight local time.”

  “Sure.” You hang up, pull your shoes and glasses on, grab your jacket, and go downstairs.

  It’s dark outside, and there’s a single tired-looking clerk on reception. You smile at him tentatively. “I understand you’ve got a parcel for me? Barnaby, room 214.”

  “I think so, let me just go and see…” He shuffles off into the back office, then returns, holding a DHL package. “If you’d sign here, please?”

  “Sure.” You swipe your phone across his reader and thumbprint the signature. “Thanks.”

  Outside, the evening air is cool and smells faintly of the cherry blossom that’s piling up in the gutters at the side of the pavement. You pull on a disposable plastic glove then pull the tab on the parcel. This recording will self-destruct in thirty seconds. Rumour has it that the first SPOOKS campaign got the beta-testers arrested and questioned for a week under the Terrorism Act before the police realized it was a game; that’s why you carry a special endorsement on your ID card. The parcel turns out to contain a bland-looking matte black plastic box about the size of an old-time DVD case, and some heavy-duty outdoor bonding pads. There’s also a brief, printed note on paper. “Attach to front of building above eye level facing th
e street. When attached, initiate pairing with your phone to ‘unnamed device 1142.’ Passcode is 46hg52Q. Once paired, dial ##*49##*, and leave the area. When home, text Control.”

  Bloody typical. You pocket the bugging device, or whatever it is, key the co-ordinates into your specs, and let the overlay guide you along the pavement towards the target building. This sort of nonsense is partly why you’ve been thinking of retiring from SPOOKS; it’s almost tediously realistic. Not James Bond swigging cocktails by the pool in Grand Cayman, just “pick up package X, transport to location Y, phone number Z.”

  Location Y turns out to be an impressive crescent of Georgian stone town houses. They’ve got flights of steps like stone drawbridges, jutting out over a dry stone moat with windows in the basement—and steps down to them, for these are garden flats. You hunt around for a few minutes until you find the right set of steps, then approach the door. There’s a row of ten buzzers next to the entrance, and right at the top of the row someone has chalked a blue rectangle with your SPOOKS cell warchalk sign. You take out the box and the adhesive pads, position it carefully, and jump through the digital hoops to switch the thing on. (It’s probably just a ten-euro inventory tracking phone and a camera to snap the back of another player’s head as they leave for work tomorrow: but what the hell.) You wait till you’re halfway home before you text Gareth.

  You’re just keying in a brief message when your specs vibrate for attention. You glance up: The SPOOKS overlay is active, and it’s telling you TWO-PERSON TAG TEAM DETECTED.

  The dictates of the game require you to take it seriously, even though you’re too tired for this shit, and you want to go to bed. Besides, SPOOKS tries to map non-player characters onto real local objects—and you can really live without two strangers trying to follow you. You speed up slightly, not glancing round—that’s your glasses’ job—and mumble quietly, calling up a course into the densely occupied area around the corner of Princes Street and Lothian Road. You change direction, darting into a side street, and behind you the blips on your head-up display turn to follow you.

  This isn’t good. “Phone, get me a taxi,” you mutter, and break into a jog. The side street is almost deserted, cars parked on either side of its cobbled quaintness, but you can see lights and hear traffic ahead. There are footsteps behind you, and you accelerate, running—

  And a taxi’s headlights show up, swerving in towards the kerb in front of you. “Where to, miss?” asks the driver, as you pull the door shut. “Hotel—” You try to remember. “Hotel Malmaison…”

  Behind you, the tail team falls away in the darkness as the taxi carries you back to the illusion of security.

  JACK: Meat Machine

  It’s like that first alcoholics anonymous meeting: “Hi, my name is Jack. And I have a code problem.”

  You’re a grown-up, these days. You don’t wear a kamikaze pilot’s rising sun headband and a tee-shirt that screams DEBUG THIS! and you don’t spend your weekends competing in extreme programming slams at a windy campsite near Frankfurt, but it’s generally difficult for you to use any machine that doesn’t have at least one compiler installed: In fact, you had to stick Python on your phone before you even opened its address book because not being able to brainwash it left you feeling handicapped, like you were a passenger instead of a pilot. In another age you would have been a railway mechanic or a grease monkey crawling over the spark plugs of a DC-3. This is what you are, and the sad fact is, they can put the code monkey in a suit but they can’t take the code out of the monkey.

  Which is why you more or less missed out completely on a very entertaining barney between Elaine and some weedy intense-looking marketroid in casual-Friday drag and fashionable specs who seemed most upset about something. You were off in your own head, trying to figure out a strategy for reducing the Himalayan pile of junk data that your query agents are going to pull out of the Zone database, and you just wished they’d all shut up so you could go back to drawing entity-relationship diagrams on the walls in green crayon. In fact, you were so far out there that the mummy lobe forgot to threaten to set Sergeant Smith on you on account of your overdue library books. You even managed to forget about the weird phone call last night. You were, in short, coding.

  “What’s up with him?” you remember the cop asked Elaine.

  “Not sure. If I didn’t know better, I’d say he was stoned, but he keeps twitching his fingers: I think he’s in keyboard withdrawal or something.”

  So you surfaced for long enough to explain what you needed, and they got the marketroid to tell Sam to log you on to the code repository and give you the authentication tokens, then they found you a nice padded beige cubicle and parked you in it so you could design a tool for the job of trawling through several million transactions.

  An indeterminate time later, an irritating voice inserted itself into your awareness. “Jack. Hello? Have you got a spare minute?”

  “No—” You shook yourself. “Uh.” Your bladder was threatening to go on strike, your left calf was standing in for a pincushion at a convention of Belgian lace-makers, and your eyes ached. “Hang on a moment.” You check-pointed the project and pulled your glasses off, then leaned back and stretched your arms over your head. “Okay, I’ve got a spare minute now.”

  Elaine leaned against the door-frame. She looked tired and irritable. “It’s nearly six thirty. Are you getting anywhere?”

  “Give me another three hours or so, and I might be ready to switch it on. Assuming you posted the insurance ad?”

  “Yes, that’s been authorized.” She fidgeted with her hands, clasping one palm in the other and flexing her wrist back and forth, then the other. “We’ve already got some responses. I thought you said this would be fast?”

  “Give me a file of magic items and miscellaneous loot in well-formed Structured Treasure Language, and I’ve got a tool that can search one or more auction-houses for stuff resembling each item in it, and give you back a proximity metric and some information about the seller. I’ve got one auction-house plug-in nearly completed and four more to write, but they’re all variations on a theme after the first one. Trouble is, your responses won’t be in STL, so I’ll have to run them by hand. Best thing would be if you give me five or ten sample items, and I can leave it crunching overnight on the test data. Then if it works, tomorrow I can set the rest going.”

  She rolled her eyes. “Okay.” She sounded unconvinced, and that got your attention; it was the sound of 1000 an hour slipping away.

  “Ever written a large spreadsheet?”

  “Yes.”

  “And then tested it? Making sure that what comes out is what’s meant to come out?”

  “Yes, but—” She stopped.

  “What I’m doing here is like working up a pivot join, then some complex statistical break-downs across six or seven different tables, a couple of which are in different formats. If I rush it, it’ll come out wrong. Worst case, it’ll come out looking right but full of plausible garbage.”

  “If it’s like writing a spreadsheet, then”—she raised an eyebrow—“what do I need you for?”

  “Because you don’t have a couple of years to learn the Zone APIs and the Python 3000 language for scripting it. How long did it take you to write that spreadsheet?”

  “Ah.” You could hear the clunk as the gears engaged between her ears. Then she smiled, reassured. (Advanced Programming 401: managing the managers—first of all, figure out how to tell them what you’re doing in their own language. Writing a big spreadsheet with lots of macros was a bit Mickey Mouse, but you had to admit it wasn’t too far removed from what you were doing. It was all data reduction when you got down to it.) “Okay. I’ll email you the data I’ve got. If you can run a test tonight…when will we know?”

  “If it doesn’t crash and burn, first thing tomorrow. At least we’ll know something, even if there’s nothing but smouldering wreckage—if we’re lucky we’ll hit pay-dirt overnight.” If it didn’t work, you’d fix it, then run it
tomorrow with all the insurance claims you could get.

  “Good. I need to go get something to eat: I’m starving.” She paused for a couple of seconds: “Well, see you tomorrow, then.”

  You smiled. “See you.”

  A minute later you sat bolt upright in your chair and swore at yourself for missing a hidden query—but you’re more at home with SQL than socialization: Innuendo wasn’t a language they taught in CS lab.

  Ah well, you thought. You were just going to have to face up to another night with only a fish supper and your games console for company. It could have been worse: You might be unemployed as well.

  When you finally stretch and kick back from the laptop keyboard, it takes you a minute or two to remember where the hell you are. There’s the usual moment of disorientation, a kind of existential dizziness as you re-enter the everyday time-stream in which most people spend their lives: Hours have slid by unnoticed, feeling like minutes (except for the ache in your neck and the gritty heat in your eyes). Sometimes you doubt that any time has passed: But when you look at your clock you realize it’s nearly ten at night. Chucking-out time. But at least the search’n’sniff program you threw together is running. The laptop is plugged into Hayek Associates’ own router—physically connected by actual wires—and is trawling through the distributed database, distilling tens of gigabytes per minute into useful candidates.

  You switch off your glasses and blink as you stumble out of the office, noticing for the first time that you’re really hungry. HA have inherited the office layout of the former government military bunker—not much point in trying to tunnel through steel-reinforced concrete walls half a metre thick—but they’ve replaced the old wooden doors with transparent lexan panels that darken to opacity at the touch of a fingertip, replaced ancient fluorescent strip lights with smart OLED panels that brighten in front and dim behind you. The effect is strangely claustrophobic, surrounding you with a pool of carefully sculpted daylight as you walk towards a shadowy exit.