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.
Most of the offices you pass are empty and dark, but a faint rime of light frosts the night ahead of you as you near it. Glancing sideways, you see that the door is set to opaque; the light barely leaks out around the edges, and if the passage hadn’t been dark, you’d never have noticed it. You hesitate as you reach it, on the verge of knocking out of sheer curiosity, but then you hear the ugly voices.
“—right off! We’re in deep shit if this goes on. They raided the MacDonald tenement, did you know that? And those bastards from DBA are digging too deep. If they keep on going, it’ll be obvious what’s going on.”
“And I’m telling you that if we chill and sit still until the put options vest, they won’t be able to prove anything. It’s running on rails, yes? And we haven’t done anything. So, we’re being targeted. Luckily they don’t know what they’re looking for, and they can’t prove anything. So, just—chill. Stop fretting. Lie low and wait for it to blow over.”
“What about your friends? Can they do something for us? Arrange a distraction, maybe? Muddy the water?”
“I’ve got them working on it already, but I can’t promise anything. Leave that side of things to me. What I want to know is, can you hold up your end?”
Pause. “I’ll do my best. It’s just, with these fucking pests sniffing around underfoot, they keep getting in my face. If we don’t get them out of here soon…”
“Leave them to me, I said. My friends are working on getting them pulled out.”
The voices fall, and you suddenly realize you’re standing here outside the door, and the mummy lobe gooses you with a red-hot trident: Don’t you know it’s rude to eavesdrop? It screeches in your ear. You wince, and tiptoe guiltily away, trying not to think too hard about what whoever they were were talking about. It wasn’t entirely clear, but it sounded like they were simply talking about ways of getting Dietrich-Brunner to pull out. And if you were in their shoes, what else would you do?
Up on the surface, you let yourself out of the office, and the door swings shut behind you before you realize that you’ve got no way back inside. The last vestiges of daylight stain the sky a pale blue above the black silhouettes of the trees. You haven’t booked a taxi, either. You trudge down Drum Brae towards the distant rumble of traffic from Queensferry Road, bringing up a bus map overlay on your glasses. You’ve just missed one by three minutes, and they’re down to three an hour at this time of evening. Great. At least it’s a warm night, without any real risk of a spring deluge.
When you get home, you find a letter lying on top of the pile of spam on the floor just inside your front door. (At least, it looks like a real piece of correspondence—lately the junk mailers have been wising up, disguising advertising come-ons as tax demands and gas bills.) It’s addressed to you by name and they used a real old-fashioned postage stamp. You tear it open and four glossy photographs fall out.
Heart pounding, you pick them up and hold them where you can see them properly, under the hall light. The first photograph is the entrance to Hayek Associates’ offices. You flip past it to the second. This one looks like a primary-school playground. There’s a cluster of wee ones playing in it, and you don’t need the dotted red circle someone’s helpfully Photoshopped into the image to tell you you’re meant to be looking at Elsie. You feel sick, but you can’t stop yourself looking at the third picture. It shows the front door of a house you know quite well, and that was your sister on the doorstep, her and Mary in her school uniform, in the early-morning light, looking very young. The picture’s a little blurry, as if the photographer was trying to conceal the camera. As well they might, because as soon as you get a good look at the fourth picture, you put them all down and speed-dial the number the policeman gave you after the dodgy voice call, hyperventilating and trying not to panic.
The last photograph shows an empty butcher’s slab.