This chapter is dedicated to New York City's Books of Wonder, the oldest and largest kids' bookstore in Manhattan. They're located just a few blocks away from Tor Books' offices in the Flatiron Building and every time I drop in to meet with the Tor people, I always sneak away to Books of Wonder to peruse their stock of new, used and rare kids' books. I'm a heavy collector of rare editions of Alice in Wonderland, and Books of Wonder never fails to excite me with some beautiful, limited-edition Alice. They have tons of events for kids and one of the most inviting atmospheres I've ever experienced at a bookstore.
Books of Wonder: 18 West 18th St, New York, NY 10011 USA +1 212 989 3270
They took me outside and around the corner, to a waiting unmarked police car. It wasn't like anyone in that neighborhood would have had a hard time figuring out that it was a cop-car, though. Only police drive big Crown Victorias now that gas had hit seven bucks a gallon. What's more, only cops could double-park in the middle of Van Ness street without getting towed by the schools of predatory tow-operators that circled endlessly, ready to enforce San Francisco's incomprehensible parking regulations and collect a bounty for kidnapping your car.
Booger blew his nose. I was sitting in the back seat, and so was he. His partner was sitting in the front, typing with one finger on an ancient, ruggedized laptop that looked like Fred Flintstone had been its original owner.
Booger looked closely at my ID again. "We just want to ask you a few routine questions."
"Can I see your badges?" I said. These guys were clearly cops, but it couldn't hurt to let them know I knew my rights.
Booger flashed his badge at me too fast for me to get a good look at it, but Zit in the front seat gave me a long look at his. I got their division number and memorized the four-digit badge number. It was easy: 1337 is also the way hackers write "leet," or "elite."
They were both being very polite and neither of them was trying to intimidate me the way that the DHS had done when I was in their custody.
"Am I under arrest?"
"You've been momentarily detained so that we can ensure your safety and the general public safety," Booger said.
He passed my driver's license up to Zit, who pecked it slowly into his computer. I saw him make a typo and almost corrected him, but figured it was better to just keep my mouth shut.
"Is there anything you want to tell me, Marcus? Do they call you Marc?"
"Marcus is fine," I said. Booger looked like he might be a nice guy. Except for the part about kidnapping me into his car, of course.
"Marcus. Anything you want to tell me?"
"Like what? Am I under arrest?"
"You're not under arrest right now," Booger said. "Would you like to be?"
"No," I said.
"Good. We've been watching you since you left the BART. Your Fast Pass says that you've been riding to a lot of strange places at a lot of funny hours."
I felt something let go inside my chest. This wasn't about the Xnet at all, then, not really. They'd been watching my subway use and wanted to know why it had been so freaky lately. How totally stupid.
"So you guys follow everyone who comes out of the BART station with a funny ride-history? You must be busy."
"Not everyone, Marcus. We get an alert when anyone with an uncommon ride profile comes out and that helps us assess whether we want to investigate. In your case, we came along because we wanted to know why a smart-looking kid like you had such a funny ride profile?"
Now that I knew I wasn't about to go to jail, I was getting pissed. These guys had no business spying on me — Christ, the BART had no business helping them to spy on me. Where the hell did my subway pass get off on finking me out for having a "nonstandard ride pattern?"
"I think I'd like to be arrested now," I said.
Booger sat back and raised his eyebrow at me.
"Really? On what charge?"
"Oh, you mean riding public transit in a nonstandard way isn't a crime?"
Zit closed his eyes and scrubbed them with his thumbs.
Booger sighed a put-upon sigh. "Look, Marcus, we're on your side here. We use this system to catch bad guys. To catch terrorists and drug dealers. Maybe you're a drug dealer yourself. Pretty good way to get around the city, a Fast Pass. Anonymous."
"What's wrong with anonymous? It was good enough for Thomas Jefferson. And by the way, am I under arrest?"
"Let's take him home," Zit said. "We can talk to his parents."
"I think that's a great idea," I said. "I'm sure my parents will be anxious to hear how their tax dollars are being spent —"
I'd pushed it too far. Booger had been reaching for the door handle but now he whirled on me, all Hulked out and throbbing veins. "Why don't you shut up right now, while it's still an option? After everything that's happened in the past two weeks, it wouldn't kill you to cooperate with us. You know what, maybe we should arrest you. You can spend a day or two in jail while your lawyer looks for you. A lot can happen in that time. A lot. How'd you like that?"
I didn't say anything. I'd been giddy and angry. Now I was scared witless.
"I'm sorry," I managed, hating myself again for saying it.
Booger got in the front seat and Zit put the car in gear, cruising up 24th Street and over Potrero Hill. They had my address from my ID.
Mom answered the door after they rang the bell, leaving the chain on. She peeked around it, saw me and said, "Marcus? Who are these men?"
"Police," Booger said. He showed her his badge, letting her get a good look at it — not whipping it away the way he had with me. "Can we come in?"
Mom closed the door and took the chain off and let them in. They brought me in and Mom gave the three of us one of her looks.
"What's this about?"
Booger pointed at me. "We wanted to ask your son some routine questions about his movements, but he declined to answer them. We felt it might be best to bring him here."
"Is he under arrest?" Mom's accent was coming on strong. Good old Mom.
"Are you a United States citizen, ma'am?" Zit said.
She gave him a look that could have stripped paint. "I shore am, hyuck," she said, in a broad southern accent. "Am I under arrest?"
The two cops exchanged a look.
Zit took the fore. "We seem to have gotten off to a bad start. We identified your son as someone with a nonstandard public transit usage pattern, as part of a new pro-active enforcement program. When we spot people whose travels are unusual, or that match a suspicious profile, we investigate further."
"Wait," Mom said. "How do you know how my son uses the Muni?"
"The Fast Pass," he said. "It tracks voyages."
"I see," Mom said, folding her arms. Folding her arms was a bad sign. It was bad enough she hadn't offered them a cup of tea — in Mom-land, that was practically like making them shout through the mail-slot — but once she folded her arms, it was not going to end well for them. At that moment, I wanted to go and buy her a big bunch of flowers.
"Marcus here declined to tell us why his movements had been what they were."
"Are you saying you think my son is a terrorist because of how he rides the bus?"
"Terrorists aren't the only bad guys we catch this way," Zit said. "Drug dealers. Gang kids. Even shoplifters smart enough to hit a different neighborhood with every run."
"You think my son is a drug dealer?"
"We're not saying that —" Zit began. Mom clapped her hands at him to shut him up.
"Marcus, please pass me your backpack."
Mom unzipped it and looked through it, turning her back to us first.
"Officers, I can now affirm that there are no narcotics, explosives, or shoplifted gewgaws in my son's bag. I think we're done here. I would like your badge numbers before you go, please."
Booger sneered at her. "Lady, the ACLU is suing three hundred cops on the SFPD, you're going to have to get in line."
Mom made me a cup of tea and then chewed me out for eating dinner when I knew that she'd been making falafel. Dad came home while we were still at the table and Mom and I took turns telling him the story. He shook his head.
"Lillian, they were just doing their jobs." He was still wearing the blue blazer and khakis he wore on the days that he was consulting in Silicon Valley. "The world isn't the same place it was last week."
Mom set down her teacup. "Drew, you're being ridiculous. Your son is not a terrorist. His use of the public transit system is not cause for a police investigation."
Dad took off his blazer. "We do this all the time at my work. It's how computers can be used to find all kinds of errors, anomalies and outcomes. You ask the computer to create a profile of an average record in a database and then ask it to find out which records in the database are furthest away from average. It's part of something called Bayesian analysis and it's been around for centuries now. Without it, we couldn't do spam-filtering —"
"So you're saying that you think the police should suck as hard as my spam filter?" I said.
Dad never got angry at me for arguing with him, but tonight I could see the strain was running high in him. Still, I couldn't resist. My own father, taking the police's side!
"I'm saying that it's perfectly reasonable for the police to conduct their investigations by starting with data-mining, and then following it up with leg-work where a human being actually intervenes to see why the abnormality exists. I don't think that a computer should be telling the police whom to arrest, just helping them sort through the haystack to find a needle."
"But by taking in all that data from the transit system, they're creating the haystack," I said. "That's a gigantic mountain of data and there's almost nothing worth looking at there, from the police's point of view. It's a total waste."
"I understand that you don't like that this system caused you some inconvenience, Marcus. But you of all people should appreciate the gravity of the situation. There was no harm done, was there? They even gave you a ride home."
They threatened to send me to jail, I thought, but I could see there was no point in saying it.
"Besides, you still haven't told us where the blazing hells you've been to create such an unusual traffic pattern."
That brought me up short.
"I thought you relied on my judgment, that you didn't want to spy on me." He'd said this often enough. "Do you really want me to account for every trip I've ever taken?"
I hooked up my Xbox as soon as I got to my room. I'd bolted the projector to the ceiling so that it could shine on the wall over my bed (I'd had to take down my awesome mural of punk rock handbills I'd taken down off telephone poles and glued to big sheets of white paper).
I powered up the Xbox and watched as it came onto the screen. I was going to email Van and Jolu to tell them about the hassles with the cops, but as I put my fingers to the keyboard, I stopped again.
A feeling crept over me, one not unlike the feeling I'd had when I realized that they'd turned poor old Salmagundi into a traitor. This time, it was the feeling that my beloved Xnet might be broadcasting the location of every one of its users to the DHS.
It was what Dad had said: You ask the computer to create a profile of an average record in a database and then ask it to find out which records in the database are furthest away from average.
The Xnet was secure because its users weren't directly connected to the Internet. They hopped from Xbox to Xbox until they found one that was connected to the Internet, then they injected their material as undecipherable, encrypted data. No one could tell which of the Internet's packets were Xnet and which ones were just plain old banking and e-commerce and other encrypted communication. You couldn't find out who was tying the Xnet, let alone who was using the Xnet.
But what about Dad's "Bayesian statistics?" I'd played with Bayesian math before. Darryl and I once tried to write our own better spam filter and when you filter spam, you need Bayesian math. Thomas Bayes was an 18th century British mathematician that no one care about until a couple hundred years after he died, when computer scientists realized that his technique for statistically analyzing mountains of data would be super-useful for the modern world's info-Himalayas.
Here's some of how Bayesian stats work. Say you've got a bunch of spam. You take every word that's in the spam and count how many times it appears. This is called a "word frequency histogram" and it tells you what the probability is that any bag of words is likely to be spam. Now, take a ton of email that's not spam — in the biz, they call that "ham" — and do the same.
Wait until a new email arrives and count the words that appear in it. Then use the word-frequency histogram in the candidate message to calculate the probability that it belongs in the "spam" pile or the "ham" pile. If it turns out to be spam, you adjust the "spam" histogram accordingly. There are lots of ways to refine the technique — looking at words in pairs, throwing away old data — but this is how it works at core. It's one of those great, simple ideas that seems obvious after you hear about it.
It's got lots of applications — you can ask a computer to count the lines in a picture and see if it's more like a "dog" line-frequency histogram or a "cat" line-frequency histogram. It can find porn, bank fraud, and flamewars. Useful stuff.
And it was bad news for the Xnet. Say you had the whole Internet wiretapped — which, of course, the DHS has. You can't tell who's passing Xnet packets by looking at the contents of those packets, thanks to crypto.
What you can do is find out who is sending way, way more encrypted traffic out than everyone else. For a normal Internet surfer, a session online is probably about 95 percent cleartext, five percent ciphertext. If someone is sending out 95 percent ciphertext, maybe you could dispatch the computer-savvy equivalents of Booger and Zit to ask them if they're terrorist drug-dealer Xnet users.
This happens all the time in China. Some smart dissident will get the idea of getting around the Great Firewall of China, which is used to censor the whole country's Internet connection, by using an encrypted connection to a computer in some other country. Now, the Party there can't tell what the dissident is surfing: maybe it's porn, or bomb-making instructions, or dirty letters from his girlfriend in the Philippines, or political material, or good news about Scientology. They don't have to know. All they have to know is that this guy gets way more encrypted traffic than his neighbors. At that point, they send him to a forced labor camp just to set an example so that everyone can see what happens to smart-asses.
So far, I was willing to bet that the Xnet was under the DHS's radar, but it wouldn't be the case forever. And after tonight, I wasn't sure that I was in any better shape than a Chinese dissident. I was putting all the people who signed onto the Xnet in jeopardy. The law didn't care if you were actually doing anything bad; they were willing to put you under the microscope just for being statistically abnormal. And I couldn't even stop it — now that the Xnet was running, it had a life of its own.
I was going to have to fix it some other way.
I wished I could talk to Jolu about this. He worked at an Internet Service Provider called Pigspleen Net that had hired him when he was twelve, and he knew way more about the net than I did. If anyone knew how to keep our butts out of jail, it would be him.
Luckily, Van and Jolu and I were planning to meet for coffee the next night at our favorite place in the Mission after school. Officially, it was our weekly Harajuku Fun Madness team meeting, but with the game canceled and Darryl gone, it was pretty much just a weekly weep-fest, supplemented by about six phone-calls and IMs a day that went, "Are you OK? Did it really happen?" It would be good to have something else to talk about.
"You're out of your mind," Vanessa said. "Are you actually, totally, really, for-real crazy or what?"
She had shown up in her girl's school uniform because she'd been stuck going the long way home, all the way down to the San Mateo bridge then back up into the city, on a shuttle-bus service that her school was operating. She hated being seen in public in her gear, which was totally Sailor Moon — a pleated skirt and a tunic and knee-socks. She'd been in a bad mood ever since she turned up at the cafe, which was full of older, cooler, mopey emo art students who snickered into their lattes when she turned up.
"What do you want me to do, Van?" I said. I was getting exasperated myself. School was unbearable now that the game wasn't on, now that Darryl was missing. All day long, in my classes, I consoled myself with the thought of seeing my team, what was left of it. Now we were fighting.
"I want you to stop putting yourself at risk, M1k3y." The hairs on the back of my neck stood up. Sure, we always used our team handles at team meetings, but now that my handle was also associated with my Xnet use, it scared me to hear it said aloud in a public place.
"Don't use that name in public anymore," I snapped.
Van shook her head. "That's just what I'm taking about. You could end up going to jail for this, Marcus, and not just you. Lots of people. After what happened to Darryl —"
"I'm doing this for Darryl!" Art students swiveled to look at us and I lowered my voice. "I'm doing this because the alternative is to let them get away with it all."
"You think you're going to stop them? You're out of your mind. They're the government."
"It's still our country," I said. "We still have the right to do this."
Van looked like she was going to cry. She took a couple of deep breaths and stood up. "I can't do it, I'm sorry. I can't watch you do this. It's like watching a car-wreck in slow motion. You're going to destroy yourself, and I love you too much to watch it happen."
She bent down and gave me a fierce hug and a hard kiss on the cheek that caught the edge of my mouth. "Take care of yourself, Marcus," she said. My mouth burned where her lips had pressed it. She gave Jolu the same treatment, but square on the cheek. Then she left.
Jolu and I stared at each other after she'd gone.
I put my face in my hands. "Dammit," I said, finally.
Jolu patted me on the back and ordered me another latte. "It'll be OK," he said.
"You'd think Van, of all people, would understand." Half of Van's family lived in North Korea. Her parents never forgot that they had all those people living a crazy dictator, not able to escape to America, the way her parents had.
Jolu shrugged. "Maybe that's why she's so freaked out. Because she knows how dangerous it can get."
I knew what he was talking about. Two of Van's uncles had gone to jail and had never reappeared.
"Yeah," I said.
"So how come you weren't on Xnet last night?"
I was grateful for the distraction. I explained it all to him, the Bayesian stuff and my fear that we couldn't go on using Xnet the way we had been without getting nabbed. He listened thoughtfully.
"I see what you're saying. The problem is that if there's too much crypto in someone's Internet connection, they'll stand out as unusual. But if you don't encrypt, you'll make it easy for the bad guys to wiretap you."
"Yeah," I said. "I've been trying to figure it out all day. Maybe we could slow the connection down, spread it out over more peoples' accounts —"
"Won't work," he said. "To get it slow enough to vanish into the noise, you'd have to basically shut down the network, which isn't an option."
"You're right," I said. "But what else can we do?"
"What if we changed the definition of normal?"
And that was why Jolu got hired to work at Pigspleen when he was 12. Give him a problem with two bad solutions and he'd figure out a third totally different solution based on throwing away all your assumptions. I nodded vigorously. "Go on, tell me."
"What if the average San Francisco Internet user had a lot more crypto in his average day on the Internet? If we could change the split so it's more like fifty-fifty cleartext to ciphertext, then the users that supply the Xnet would just look like normal."
"But how do we do that? People just don't care enough about their privacy to surf the net through an encrypted link. They don't see why it matters if eavesdroppers know what they're googling for."
"Yeah, but web-pages are small amounts of traffic. If we got people to routinely download a few giant encrypted files every day, that would create as much ciphertext as thousands of web-pages."
"You're talking about indienet," I said.
"You got it," he said.
indienet — all lower case, always — was the thing that made Pigspleen Net into one of the most successful independent ISPs in the world. Back when the major record labels started suing their fans for downloading their music, a lot of the independent labels and their artists were aghast. How can you make money by suing your customers?
Pigspleen's founder had the answer: she opened up a deal for any act that wanted to work with their fans instead of fighting them. Give Pigspleen a license to distribute your music to its customers and it would give you a share of the subscription fees based on how popular your music was. For an indie artist, the big problem isn't piracy, it's obscurity: no one even cares enough about your tunes to steal 'em.
It worked. Hundreds of independent acts and labels signed up with Pigspleen, and the more music there was, the more fans switched to getting their Internet service from Pigspleen, and the more money there was for the artists. Inside of a year, the ISP had a hundred thousand new customers and now it had a million — more than half the broadband connections in the city.
"An overhaul of the indienet code has been on my plate for months now," Jolu said. "The original programs were written really fast and dirty and they could be made a lot more efficient with a little work. But I just haven't had the time. One of the high-marked to-do items has been to encrypt the connections, just because Trudy likes it that way." Trudy Doo was the founder of Pigspleen. She was an old time San Francisco punk legend, the singer/front-woman of the anarcho-feminist band Speedwhores, and she was crazy about privacy. I could totally believe that she'd want her music service encrypted on general principles.
"Will it be hard? I mean, how long would it take?"
"Well, there's tons of crypto code for free online, of course," Jolu said. He was doing the thing he did when he was digging into a meaty code problem — getting that faraway look, drumming his palms on the table, making the coffee slosh into the saucers. I wanted to laugh — everything might be destroyed and crap and scary, but Jolu would write that code.
"Can I help?"
He looked at me. "What, you don't think I can manage it?"
"I mean, you did this whole Xnet thing without even telling me. Without talking to me. I kind of thought that you didn't need my help with this stuff."
I was brought up short. "What?" I said again. Jolu was looking really steamed now. It was clear that this had been eating him for a long time. "Jolu —"
He looked at me and I could see that he was furious. How had I missed this? God, I was such an idiot sometimes. "Look dude, it's not a big deal —" by which he clearly meant that it was a really big deal "— it's just that you know, you never even asked. I hate the DHS. Darryl was my friend too. I could have really helped with it."
I wanted to stick my head between my knees. "Listen Jolu, that was really stupid of me. I did it at like two in the morning. I was just crazy when it was happening. I —" I couldn't explain it. Yeah, he was right, and that was the problem. It had been two in the morning but I could have talked to Jolu about it the next day or the next. I hadn't because I'd known what he'd say — that it was an ugly hack, that I needed to think it through better. Jolu was always figuring out how to turn my 2 AM ideas into real code, but the stuff that he came out with was always a little different from what I'd come up with. I'd wanted the project for myself. I'd gotten totally into being M1k3y.
"I'm sorry," I said at last. "I'm really, really sorry. You're totally right. I just got freaked out and did something stupid. I really need your help. I can't make this work without you."
"You mean it?"
"Of course I mean it," I said. "You're the best coder I know. You're a goddamned genius, Jolu. I would be honored if you'd help me with this."
He drummed his fingers some more. "It's just — You know. You're the leader. Van's the smart one. Darryl was… He was your second-in-command, the guy who had it all organized, who watched the details. Being the programmer, that was my thing. It felt like you were saying you didn't need me."
"Oh man, I am such an idiot. Jolu, you're the best-qualified person I know to do this. I'm really, really, really —"
"All right, already. Stop. Fine. I believe you. We're all really screwed up right now. So yeah, of course you can help. We can probably even pay you — I've got a little budget for contract programmers."
"Really?" No one had ever paid me for writing code.
"Sure. You're probably good enough to be worth it." He grinned and slugged me in the shoulder. Jolu's really easy-going most of the time, which is why he'd freaked me out so much.
I paid for the coffees and we went out. I called my parents and let them know what I was doing. Jolu's mom insisted on making us sandwiches. We locked ourselves in his room with his computer and the code for indienet and we embarked on one of the great all-time marathon programming sessions. Once Jolu's family went to bed around 11:30, we were able to kidnap the coffee-machine up to his room and go IV with our magic coffee bean supply.
If you've never programmed a computer, you should. There's nothing like it in the whole world. When you program a computer, it does exactly what you tell it to do. It's like designing a machine — any machine, like a car, like a faucet, like a gas-hinge for a door — using math and instructions. It's awesome in the truest sense: it can fill you with awe.
A computer is the most complicated machine you'll ever use. It's made of billions of micro-miniaturized transistors that can be configured to run any program you can imagine. But when you sit down at the keyboard and write a line of code, those transistors do what you tell them to.
Most of us will never build a car. Pretty much none of us will ever create an aviation system. Design a building. Lay out a city.
Those are complicated machines, those things, and they're off-limits to the likes of you and me. But a computer is like, ten times more complicated, and it will dance to any tune you play. You can learn to write simple code in an afternoon. Start with a language like Python, which was written to give non-programmers an easier way to make the machine dance to their tune. Even if you only write code for one day, one afternoon, you have to do it. Computers can control you or they can lighten your work — if you want to be in charge of your machines, you have to learn to write code.
We wrote a lot of code that night.