Sunday, January 17, 2021

How We Worked Before the Internet, and What We Can Learn From It

Originally posted January 17, 2021 

Back in the ’80s, when we cooked popcorn and reheated coffee on the stove, and when “let’s go to the videotape!” actually involved videotape, we already had both private and public networks. We had external media, long- and short-term storage, and even L1 caches. It was glorious.

I spent much of my childhood transferring data from external media into local storage and into my L1 cache. I read anything I could get my hands on. I learned about history and biology and sociology and medicine and art and physics and music and poetry and responsibility and chemistry and psychology and just about everything by having it beamed to me through the air… and also by living it much more deeply than I tend to do today. When I needed information I used the telephone network to ask people who knew more about it than I did. If I needed a lot of information I’d ask my parents to take us to our Town Data Repository, where I could find almost anything I needed, neatly indexed by subject, author, and title. And if that turned up empty, I could ask them to access an even larger network, with even more data, and transfer the information to me.

But you asked how people worked back then.

The short answer is that we relied far more heavily on our own L1 caches and local processing units, and also on those we could network with either over the air or via telephone.

My first few engineering jobs involved building stand-alone industrial appliances based on various microcontrollers like Intel’s 8051.pdf and Motorola’s M68HC11E.pdf and MC68360UM.pdf. If you look at any of those PDFs, you’ll see it tells you literally everything you might need to know about the product’s physical characteristics, from its physical dimensions to the amount of power it uses to the purpose(s) of every pin. The manufacturer also provided a programming manual like the M68000PRM.pdf that explained the memory map, the purpose of every register and how to use it, and even the individual bits that create each of its instructions.

Most of us had our own personal storage area that housed all of this data, as well as the data for the other hardware and software components we used like the 16550.pdf serial transmitter and receiver. Anyone who was serious about the newfangled Internet thing also had a set of Stevens’ TCP/IP Illustrated data: Volume 1: The ProtocolsVolume 2: The Implementation, and Volume 3: The One Everyone Forgets About.

They were all indexed and searchable, but lookups could be slow. To compensate for that, we created pointers to the sections we needed to reference most often.

Sometimes we got stuck!

As you can imagine, before Stack Overflow and Google, when we came upon a roadblock we had limited options. We could ask our colleagues for help, or call the manufacturer, or maybe post a question to one of the Usenet groups. But when you’re doing something that probably hasn’t been done before, or at least hasn’t been done very often, you’re pretty much on your own. So more often than not, we had to figure stuff out for ourselves. And that could be hard!

Here’s the thing, though:

I keep referring to our brains as an “L1 cache,” but only somewhat in jest. There’s a fairly deep analogy between the way we store and process information electronically and the way we do it with our own cranial meat. In general, the farther away the data is from a CPU, the slower the storage and the longer it takes to access it. Tape storage takes forever to access because it involves physically moving and inserting cartridges into mechanical hardware. Disks are faster, but they still take a relative eternity to read and write. DRAM (most computers’ “main memory”) is orders of magnitude faster, and SRAM (the guts of today’s solid-state drives—SSDs) is faster still. It’s yet faster to access memory that’s stored within the processor itself… but even that’s not fast enough for most processors to actually work with directly, to perform calculations that manipulate the bits. At least historically, the only memory a processor can use directly is a tiny set of registers that each store only a single piece of data: one number or letter, or maybe the color of a single pixel. If you want to process an encyclopedia’s worth of data, each and every byte must make its way through one or more registers inside the CPU before a program can operate on it. Everything else—however many terabytes or petabytes there might be—is just waiting.

If a program “knows” it’s going to need a certain set of data, it can move that data from slower memory into its onboard cache, or at least into faster memory, so the processor won’t need to wait very long for it. The bigger and faster the cache, the quicker the CPU can process a large set of data.

Our brains work almost exactly the same way.

Suppose you need to write a paper about a subject you know very little about. You’d probably start by doing some research. As you began you’d need to learn how to tell what was relevant and what you could ignore. You’d have to figure out which information was credible and which was inaccurate. You’d begin to assimilate this knowledge, building a context in which you could more effectively interpret new information. You’d recognize domain-specific language without needing to look up every word. You’d internalize the concepts. Ideas and phrases would become familiar, and you’d begin to get the “big picture.”

The key is that the more information you already know, the more effectively you can incorporate new information. You can make connections between seemingly disparate topics. You can compare and contrast. Most important, you can synthesize new information by considering your knowledge and experiences in previously untried combinations.

In some ways, workers in the ’80s had a huge advantage.

That’s because, without the Internet, we were forced to remember things, to be resourceful, to learn “the hard way” through many trials and lots of error. And because of that, we came away with a much deeper understanding than we get when we copy and paste something from a web site without taking the time to truly understand and internalize it.

Don’t get me wrong: there’s plenty that we can learn from the Internet, with all the world’s information literally at our fingertips. The Internet makes it possible to get so much more information, at virtually any depth we’d like, than was available in the ‘80s.

But it’s up to us to decide whether we’ll take advantage of it to learn, explore, and grow, or just to solve the problem of the moment and then move on.

Saturday, February 9, 2019

Things You Hear as a Band Parent

It was the night of the high school band's annual fundraiser at the "fancy hotel" in our town. I don't know the official name of the event; I just call it the Annual Dance for Rich Parents. I'd dropped her off with her trombone, let her know that Mom would probably be picking her up because I was exhausted, then drove home and went to sleep.

She came downstairs the following morning:

Kid: OMG, Dad, last night was so eventful!

Me: What happened?

Kid: The dance was great, and we were having a blast in the band until the third set.

Me: Because…

Kid: Because literally a third of the band was missing. We couldn't find them anywhere! They weren't getting food, they weren't in the bathrooms or hallways, they were just… gone!

Me:

Kid: And then we noticed the flashing lights outside.

Me: Whaa?

Kid: The fire department came because they were all stuck in the elevator. Like, 9 of them. Until the end of the third set.

Me: Wait—how did you get through the set with a third of the band missing?

Kid: Well, I played the sax part by ear, and we all just faked it.

Me: Hold on—you play the sax now, too?

Kid: No, I played it on my trombone. It was terrifying.

Me: I hope there's video.

 

It turns out that she very well could have played the... um... slide saxophone: YouTube.

Wednesday, May 8, 2013

Am I Calvin's Dad or Stephen King?

Here's an actual bedtime conversation with my 5-year-old, many years ago. I know, I'm a terrible parent.


HE:  Dad, I know I need to go to sleep, and I know this is kind of ridiculous, but I'm sort of afraid of bears.

ME:
  What do you mean?

HE:  Well, I'm kind of afraid a bear will come through the window and get me.

ME:
 You're right, that is ridiculous.  You know that bears go by smell, so it would go for your sister first.

HE:
  That's not really helping, Dad.

ME:  Well, when was the last time you saw a bear in our town?

HE:
  Um, never.

ME:
  
And how many of your friends have been attacked by bears?

HE:
  Um, none, I guess.

ME:
  And how many kids in our family have been eaten by bears?

HE:
  None?

ME:
  Well, actually, there was your brother Steve, but Mommy and I don't like to talk about him.

HE:
  MOMMY!!!!

 

Monday, February 18, 2013

Buffaloed by Buffalo

 Adapted from my original post on Google+, back when we were allowed to have nice things.

WARNING: English ahead.

One of the difficult things about learning a language is understanding that a word may have several different meanings. Sometimes those meanings are so different that they have absolutely nothing to do with each other. And sometimes they're even different parts of speech.

Consider the word buffalo:

buffalo: (n) an ox-like mammal; bison
buffalo: (v) to confuse or intimidate
Buffalo: (n) a port city in New York

OK, three different meanings and two parts of speech. How bad could that possibly be? I'm glad you asked!

African Buffalo
Image courtesy Wikipedia


Buffalo are large, imposing creatures, and they're not known for being especially bright. Up close, they're rather intimidating, and it's reasonable to assume they're easily confused. In other words, it's easy to buffalo them. That's right: you can buffalo buffalo. In fact, even though New Yorkers are among the best-educated people in their state, the same is sadly not true of their livestock, including the ones in northern New York State. So if you have nothing better to do, you can confuse bison from the city of Buffalo, NY: you can buffalo Buffalo buffalo.

With me so far? Great! Hang on, 'cause there's more.

These animals travel in herds, but they don't seem to have much empathy for each other, or for anything at all, for that matter. They're basically huge, stupid, hunks of meat. You could say they're beef-witted. It's not at all a stretch of the imagination to think that many, if not most, of their interactions are confusing to them. It wouldn't take much for one buffalo to confuse another, would it? And if the buffalo from Buffalo confuse other members of their herd, well, then Buffalo buffalo buffalo Buffalo buffalo, don't they?

Here, let me color-code that for you: Buffalo buffalo buffalo Buffalo buffalo. The Buffalo buffalo are animals from the city, and buffalo is the verb. Better? Nobody ever said English was easy. Stick with me; it gets better. Or worse.

So far, we've established that bison from Buffalo can fool other bison from Buffalo. Let's think about that for a moment: if you were fooled by a bison, how would you feel? Angry? Taken advantage of? Might you be upset enough to want to fool other bison? (I have no idea whether bison are actually spiteful or vengeful; but it's critical to the storyline, so let's just go with it, OK?) If you were hell-bent on fooling other bison, which ones would you choose? Well, you'd choose the ones that had already been fooled, right, because they're the gullible ones. Which ones are they? They're the Buffalo buffalo that other Buffalo buffalo buffalo, aren't they: the Buffalo buffalo Buffalo buffalo buffalo. Great. So let's suppose these angry, gullible, spiteful slabs of steak set out to fool others who are just like them. In other words:

Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo Buffalo buffalo buffalo.¹

And this is why I'm so grateful that English is my first language.  I'd never be able to learn it as a second one.

 
 
 
 
 
 

*I'll take pity and make it a little easier. Again, buffalo is the verb:

Buffalo buffalo that Buffalo buffalo buffalo will also buffalo Buffalo buffalo that Buffalo buffalo buffalo.

 

Saturday, November 26, 2011

Random Thoughts

Richard Feynman is one of my heroes, as much for his brilliance and creativity as for his sense of humor, his matter-of-fact view of the world, and his unassuming and, well, human personality. Years ago, as I read his autobiography, Surely You're Joking, Mr. Feynman, I couldn't help thinking I would have loved to work with him. Maybe, just maybe, I might have absorbed some of the Feynman genius (or at least some of the Feynman humor) through osmosis. But I also wonder if he'd approve of my curiosity and quirky thoughts, or if he'd just shake his head and wonder if I'd ever get it right. The first chapter of his autobiography is titled "He Fixes Radios by Thinking!" But my version, one of the highlights of my career, might've been called "He Fixed a Critical Product Flaw by Accident."

I was an engineer at a tiny company, building a family of devices that still make me proud. Before most people had even heard of the Internet, our appliances let our customers connect their computers over the telephone or a network to their remote electronic equipment: the PBXes that ran their telephone systems, their network switches and routers, their alarm systems, you name it. If you could talk to it electronically, we'd figure out how to connect you to it. Better still, we could program our devices to monitor that equipment, diagnose any faults, and page a technician if we couldn't fix the problem automatically. Then the technician could access our device with his computer, connect through it to his own equipment, and fix it without leaving home!

Of course, we didn't want to open the proverbial barn door to anyone with a computer, so we built some heavy-duty security into all of our products, many of which are still considered state-of-the-art. The details were too complicated for our average customer, so we tucked them inside a fairly simple, friendly interface. So simple, in fact, that we often taught our computer-savvy customers how to write their own programs to make our devices do almost anything they could want. Seriously: anything that involved communication, monitoring, and alarming. One customer bolted them to cell phone towers. Why? You've seen the flashing red lights on top of those towers, the ones that warn pilots to keep their aircraft a safe distance away? Well, this customer wanted to monitor the lights, start a diesel generator if the power failed, and page a technician any time a light stopped working. We did that.

One particular training was held at our office during the holiday season. I sat in, partly to meet the customers, partly to see how our products were used "for real," and partly because it's an absolute treat to be in one of Mike's classes. One of the company's founders, Mike is among the smartest and most entertaining people on the planet. He's done engineering, programming, training, tech support, tech writing, sales, ... and there are only a handful of people who can do any one of those jobs as well as he did. He also has a wonderful sense of play and humor.

To start the class, Mike showed us how to write a program to turn the lights on the device on and off. First we turned them all on, then all off. Then we lit them in sequence, in pairs, and in reverse order. Since it was close to the holidays (and because we wanted to demonstrate our random number generator), he suggested we flash them randomly, like the lights on a Christmas tree.

That was when I unwittingly started channeling Feynman.

I asked innocently, "What does random mean?" Which sparked a rather animated discussion: one customer suggested that each light should turn on and off the same number of times as every other one. "If we flash the first light 3 times, then the second one 3 times, and so on, is that random?" We agreed there's something more to randomness, but after a few minutes we still hadn't satisfied ourselves with a working definition. Seizing what to this day has still been my only opportunity to use the math I'd learned in graduate school, I explained that a sequence is random if no part of it "looks like" any other part, and that we can actually measure randomness with a function called an autocorrelation. (If you follow the link, don't let the fancy math symbols fool you: it's not nearly that complicated. You just write the sequence, then write it again starting with the second number. Then you multiply the pairs of numbers together and take their average. Repeat the process starting with the third number, and then the fourth, and so on, shifting it by one more number each time. The lower the averages are, the "more random" the sequence.)

That's when Mike told us that our devices actually had two random number generators. The first is your ordinary, run-of-the-mill random number generator. The second starts with an "ordinary" random number and then encrypts it, the idea being that the encryption makes it "more random." But we couldn't verify the theory because no one knew how to test it. Until now. I ran back to my desk during an aptly timed break and returned shortly with two graphs. And, indeed, the encrypted random number generator produced an autocorrelation with averages that were far lower than the "normal" generator. Except for a single point on the graph, which spiked far too high. Hmm.... That can't be right.

What's that? Mike asked me.

I ran it several times, I answered, and the spike is always there. That's a bug in our code.

Really? Where?

I have no idea. But I'll let you know before the end of the class.

Sure enough, after a bit of digging, I found a variable in one of the encryption routines that hadn't been initialized properly. Instead of starting off at 0, it was left with whatever value happened to be in its particular location in memory when the program ran. Mike asked me what effect the bug would have on the operation of the device. I told him that, since the routine ran only when a user logged in, and the variable could hold 256 possible values, then one time in 256 you'd type the correct password and be denied access.

Mike told me that, over the course of a decade, he was absolutely certain it had happened to him twice.

I promised that it would never happen again.

Sunday, October 9, 2011

Stealth Education

A post stolen from one of my comments on this discussion from a LinkedIn group called The Math Connection.

My kids and I play games all the time. Not the formal, "official" kind, but little impromptu ones that present themselves throughout the day. We try to make words from the letters on license plates. We make up new lyrics to songs. We may very well be responsible for the Worst. Puns. Ever.

 We play "what if" all the time, which leads to fascinating discussions!

  • What if nobody ever died?"

We talked about what it might be like to get older and older, and whether our bodies would age.We talked about all the things we could learn if our lives lasted forever. We even wondered if people would ever learn to get along peacefully, knowing they'd have to live with each other forever. And what would we do when the world filled up with people?

  • What if ice were heavier than water?

We talked about lakes freezing from the bottom up, instead of from the top down, and how fish and the other plants and animals would need to adapt to survive freezing. We talked about ice cubes sitting at the bottom of a glass. We talked about carrying ice from place to place if it were much heavier than water, which is already really heavy.

We ask silly questions.

  • How did Mommy and I know your name when you were born? Maybe we were wrong and your name is really Sandy.
  • Aren't we lucky that the family dog understands English? What if he only understood German?

We ask questions about the way the world works.

  • Why do we ask you to clean up your toys?

We talked about safety. We talked about the importance (and convenience!) of being able to find things when you want or need them. We talked a little about inventory, and how it's hard to know what you have if it's disorganized.

  • Why does it cost more money to have a mortgage than to just pay for a house, and why is it worth it?

We talked about how expensive houses are, compared to salaries. We talked about investing, and about the time value of money. We talked about whether they'd pay a little extra for a toy if it meant they could have it sooner.

We play all sorts of math games.

One of us will pick a number and the others will try to guess it. We'll estimate the number of cars that travel on a highway in a day, or the amount of water we drink in a year. We figure out how long it will take to save up for a new toy.

My wife and I share the belief that learning is—and should be—fun, and our kids have never known differently. To them, learning is just another game.

One day I was trying to show them that they can multiply in their heads. 3 × 1 was easy, as was 3 × 5 when they remembered they have 5 fingers on each hand and 5 toes on each foot. But 3 × 100 baffled them. So I asked, "What's 3 times a hot dog?" They answered, "3 hot dogs!" Then I tried, "What's 3 times a giraffe?" Getting the hang of it, they yelled, "3 giraffes!" "Right. What's 3 times your sister?" Silence for a moment, then, "A big pain in the neck."