“He’s wrong, you know,” stated Henry, decidedly.
“Um what?” I said, intelligently, as I dazedly looked up from my iPhone.
“Professor Eisenfaktor is wrong. He said BigInts were essentially infinite. But they’re not at all. BigInts are limited. They’re limited by design by the memory on the computer.”
“Ah ha ha,” I laughed weakly. We were making our way out of the lecture theatre, Henry leading the way as usual, weaving mysteriously through the ragged masses of students, somehow unconsciously finding the shortest path through the crowd, and simultaneously looking over his shoulder and firing commentary at me about the obvious shortcomings of the lecture.
Me? I was happy just to wander out in his wake, checking Facebook as I went. I didn’t really feel a big need to debate the lecture but knew that Henry did have that need. So I humoured him.
“That’d be a, um, pretty big number, wouldn’t it?” I stated cautiously. “Like, why’d you need to work with numbers that big? An integer with four billion digits?” (I wasn’t just a pretty face.)
“That’s not the point, and you know it. The entire premise of his lecture is flawed. He introduced these BigInt algorithms to us as an alternative for classical integer overflow problems, didn’t he? Well he just moved the boundary conditions. He didn’t fix the problem at all!”
I didn’t quite know what to say in reply to this, so in an unusual fit of intelligence, I said nothing at all.
Undeterred, Henry plowed on. “Who knows what uses there are for huge integers? I mean, look at cryptography. Large numbers are a cryptographer’s bread and butter. And you know how often those crypto systems fall to brute force attacks? Moore’s Law man! It’s inevitable and at some point the Prof’s system will also stop meeting our needs. But … what if …”
Henry abruptly stopped, creating a substantial eddy in the flow of students, as I carefully moored myself next to him. It wasn’t like Henry to ever stop so I was pretty curious to see what would come next.
“Here!” came next, followed by a textbook and a pile of notebooks, tossed into my arms, which I expertly caught. “See you later.”
“Hey? Where’re you going? We’ve got Expert Systems now,” I blurted.
“I’ve got something to figure out. Say hi to Prof Dexter for me,” Henry flung back as he disappeared into the crowd.
I shrugged, used to Henry’s ideas by now, and made my solitary way to Professor Dextor’s Expert Systems, resigning myself to figuring out what on earth the Prof was on about without Henry’s impatient yet insightful interpretation to guide me.
After I’d struggled through Professor Dexter’s Expert Systems, my brain filled with forward chains, backward chains and half understood inference engines, I headed for Henry’s favourite hideout. The library, of course. I desperately needed his help to make sense of the lecture.
Now, I’m sure you’ve seen The Social Network movie, right? Okay, well, Henry is so much like Mark in that movie. Totally brilliant, totally focused. Always buried in an idea, solving, creating. But that’s where the similarities stop. To be fair, the Mark of that movie is focused and brilliant but he’s also a total jerk, yeah? And Henry’s about as nice as they come. Absent minded as hell, oblivious to his own intelligence, but drag him away from his oversized brain and he’s incredibly generous and my best mate.
He and I started Uni together, and by that I mean, at the same time, because he was of course light years ahead of me. We’d grown up together in a small rural town, not too far from the city, but just far enough that Henry’d never been noticed. His mother was always talking about his brilliance, but who listens to mothers? In high school, we’d been the two geeks hiding in the computer lab – that is, the two old Macs sitting in the corner of the classroom – coding away at teenage game projects, Henry leading, myself following, contributing an idea here or there, and happily doing the hack coding.
He’d been noticed at Uni though. After acing his first year without seeming to ever pay attention, and at the same time getting a reputation for being the student who could be relied upon to correct the lecturer if they made a mistake – I must hasten to add, gracefully, and with tact – Henry’s professors none-the-less were somewhat afraid of him, even the intimidating brainbox that was Professor Eisenfaktor. It would start with a raised hand, and the lecturer would say, “Yes, Henry?” (after their first run-in, they never forgot his name), and Henry would reply, “I’m really sorry, but I’m not sure that’s entirely correct. You see, …” and he’d descend into a complex and yet one hundred percent correct explanation of just where they’d gone wrong.
And credit where it’s due, too, to the lecturers, because Henry had a gift for elocution and explanation, which meant that the whole class would listen, and a light would come on in their collective brains as Henry effortlessly reconstructed the lecture. Instead of pandering to their egos, and shutting him down as they so easily could have, the faculty got together in a meeting (I call it the “What do we do with Henry meeting”) and ended up with a concerted plan to encourage him. That takes guts, to accept that a student may be able to take that lecture you took hours preparing, and actually make it hang together, and make it look so easy. So I took my hat off to them.
No doubt, if they can nab him, they’ll have him lecturing First Year by the time he’s in Honours. If they can keep him on topic, anyway. And assuming he doesn’t get snarfed up by someone like Defense Signals Directorate.
Anyway, where was I? That’s right, getting to the library. Henry was in the library, in his usual corner, with a pile of books next to him as he hammered away at his MacBook with its Tux stuck over the Apple. Beautiful hardware, but who’d run an operating system designed for Arts majors?
“Hey,” I said, “can I ask you a question?”
Henry glanced up at me. “Oh, great to see you! Did you know how amazing the early hardware guys were? They did ridiculously cool things. Like, look at this guy, Howard Aiken, he’s my new hero.” (Henry had lots of heroes.) “So he built this computer which could do calculations automatically, and the processors were driven by a 15 metre shaft off an electric motor. How cool is that? Way cooler than this thing!” he said, as he patted his notebook affectionately. “What was your question?”
I dived into the morass of Expert Systems with Henry, and within a couple of minutes he had me straightened out. You see? Great guy.
Henry was instantly back into his computer. I still didn’t know what he was up to, and was loathe to interrupt him again, so I started looking through the textbooks piled up haphazardly next to him on the desk. “Computational Complexity”. Nope, that didn’t help. “Self-Stabilization”. What? “Combinatorial Optimization: Algorithms and Complexity” Okay, I admit it, I was way out of my depth. Just then Henry grabbed another book off the pile, flicked through a few pages, emitted a satisfied grunt, and with his pen, started circling paragraphs and drawing diagrams. In the library textbook. Whoa. That was really not the done thing.
“What’re you doing?” I stuttered.
“What? Nothing, just this book makes so much sense! She’s brilliant. She’s like my new hero, see, look at this.” And he flipped the book around and I stared blankly at the paragraphs of text, now annotated with Henry’s scribblings. Curiously, I looked at the cover. “Distributed Algorithms” by Nancy Lynch. I had never heard of her. I was no further on in trying to figure out what Henry was up to. But I was used to that feeling.
In any case, it didn’t matter. Henry and I had promised to meet some other students for board games after class (yes, we are that geeky) at the English-style pub around the corner from the campus. I didn’t tell Henry, but I had a double-purpose for going to that board game meet-up, because there was this girl there, Jenny, you see, studying engineering, and I was pretty sure that she liked me. Not quite sure enough to ask her out, but I was working towards it. Henry would be oblivious to that, of course, but he did seem to enjoy board games. I dragged Henry away from his computer, told him off again about the book, and Henry acquiesced and shoved his MacBook into his backpack, shrugging it on and following me (for once) out of the library and down towards the pub.
As we crossed the road, Henry started muttering to himself, pulled his phone out of his pocket, and started tapping away on it. Of course. Not on Facebook like any normal human being would be, but writing code. How on earth do you write code with your thumbs? I have no idea; I have enough trouble writing coherent English. He’s a freak, I tell ya. But we made it into the pub, found the players, and got our drinks and counter meals sorted. Henry looked up from his phone for a moment, and unexpectedly said, “Do you know, I think I’ll sit this one out.”
“Your funeral,” said Chris. Chris and I and Jenny and a few others settled down for some good old-fashioned Risk – we always start the night with an easy, light game so that we don’t intimidate newcomers. Henry, back on his notebook, hammered away in the corner.
Several hours later, hopelessly defeated in Kamchatka, out-negotiated in Diplomacy, I threw in the towel. I looked up from my dismal position and caught Jenny smiling at me. That made it all right. But I still didn’t have quite the courage to actually, really, talk to her. And I had to find Henry. Henry had found a power point – another of his magical talents – and was sitting on the floor beside it, still coding. He’ll probably be coding all night, I figured, so I dragged him out of the pub and back to our student digs, and took myself off to bed. He’s a big boy now, he can look after himself, I told myself sleepily and somewhat guiltily. I knew his mother was hoping I’d look after him – she knew all too well what he was like when he got a bee in his bonnet.
I woke up in the morning, and found Henry fast asleep on the floor in the lounge room, his computer next to him. I tried to make my way stealthily past him and into the kitchen, but I wasn’t quite quiet enough, and he sat up and looked at me a little blearily.
“What time did you get to sleep, you ninny?” I asked politely.
“Um, not too late, about 5ish, I think, but you’ve gotta see this,” Henry fired back. He reached over to his computer, typed in one word – bang – and pressed Enter. The screen instantly filled with numbers, scrolling past much faster than I could read them. “Isn’t it awesome?”
“Yeah, but what is it?” Even I could have whipped up a program to fill my screen with random numbers in an hour. There had to be more to it.
“So I solved the Good Professor’s problem, the finite space problem.” With a flourish, he announced pompously, “I hereby introduce you to Distributed Infinite-Precision Integer Arithmetic. DIPIA for short.”
“Great! What is it?” I asked, no further ahead.
Henry was used to my witty repartee, and didn’t hesitate to elucidate.
“BigInt in the Cloud. Networked Bigint. Unlimited Bigint.” I was starting to see an inkling. “But man, I’m hungry,” he abruptly cried – he had of course not eaten his counter meal last night – and leapt up to head out the door, again tossing his computer into his bag as he went. I knew he wanted to head somewhere with coffee. He liked good coffee. It was another of those little foibles: I mean what sort of Uni student is fussy about the coffee he drinks? I followed him to the hip coffee joint which opened early under the quad, and served coffee and bagels and orange juice, and WiFi.
The barista poured our coffees almost as soon as we walked in. Yeah, regulars. Henry pulled out his computer, and launched into a lecture. Behind him, I was fascinated by the numbers scrolling up the screen.
“It’s a factorial generator!” Henry proclaimed, “and I figured out how to do arbitrary mathematical functions on BigInts in a distributed algorithm. Factorials are a great way to test BigInts because they get so big so fast, you see, and plus that meant I could call the app Bang, like the factorial sign, exclamation mark, you know.”
I nodded weakly. Henry liked puns. I watched his screen as the numbers continued to scroll past. “Wait for it, … wait for it … there!” exclaimed Henry, jabbing the screen with a handful of bagel. I just made out the words “acquiring node” buried amongst the chaos of digits as they scrolled up and off the screen.
Just then my phone buzzed. I pulled it out of my pocket, and was shocked to see numbers scrolling down its screen.
“What have you done!?” I cried.
“Isn’t it cool?” Henry asked. “My computer started to run out of space, so it acquired a proximate node and offloaded onto that. It finds the closest nodes on the network for minimal latency, to optimise the synchronisation and hand-off. Of course, your phone is a bit slower and has a bit less memory so it won’t be able to contribute to the algorithm at the same rate, so I had to work out synchronisation and load balancing and … “
I was with him, almost. “Do you mean that you wrote an iPhone app as well as a Linux app? All last night?” As I asked him, I tried to unlock my phone but the numbers kept scrolling past. I held the power button to switch it off. I was relieved that the phone switched off, as normal, but nearly as soon as I switched it on again, the numbers started scrolling past.
“Yeah, an iPhone app, and an Android app, and Windows and Mac clients as well. It’s not too hard. I got stuck with the automated deployment of the client until I figured out how to piggy-back onto the TCP handshake…” At this point, I must apologise because he went really technical and it was way over my head. I’m not even sure I got that much of it right.
“So what’s it doing?” I asked, worriedly. As I asked, another “node acquired” message scrolled past on his screen.
“Well, it’s calculating factorials, of course! The best part is, the algorithm is resilient and self-healing so even if I turn off my computer, it won’t lose data and will continue on your phone … and probably my phone too I guess…” He paused and pulled his phone out of his pocket, and sure enough, numbers were scrolling past.
“Wait, so it jumped onto my phone because my phone is on the same WiFi as your laptop, right?”
“Right…” said Henry, a worried look on his face now, because he was way ahead of me, of course. “Turn it off. Quick.” As he so ordered, he powered down TuxBook and his phone, and again I switched my phone off. “Do you think we got to it fast enough?” he asked.
I caught up. “Has it spread, do you mean?” I was really worried now. “Man, Henry, you’ve really done it this time. Oh man.”
… continued …