Earthquake! -and- Sorry I (nearly) Got You Fired

I’m sorry I got you fired.

Well, nearly fired, anyway. It was pretty close. The road to unemployment is paved with good intentions. God knows I sure led you on. And when management found out, hoo boy.

One fine sunny afternoon in Silly Valley I was sitting in my cubical at work, happily noodling away at some C++, when someone in the hall tripped and fell down and rolled against the wall of my cubical. “I hope they’re okay,” I thought, and started to get up to see how they were.

Then whoever it was got up and fell down again, a little harder this time, and a small truck hit the building and my 21 inch monitor (known as a “Kong” in our group, and which incorporated at least 80 pounds of lead and probably a fair amount of neutronium ) started to rock back and forth on its not insubstantial base. I stood up (trust me, you don’t want one a Kong in your lap) just as another, larger truck hit the building, making the monitor rock even more and causing the light fixtures above the cube farm to swing. And my next thought was “Is this the Big One?” because it was clear we were about eight seconds into a definitely non-trivial earthquake, and if it kept escalating it wasn’t going to be one of the little “ha ha, something farted underground and now it’s over” kind of earthquakes we get all the time in Silly Valley and that barely make it to the second section of the newspaper, but instead a whopper that we would still be talking about years later, assuming we survived the next couple of minutes.

The shaking got worse over the the next couple of seconds. Time to panic.

So I did what everyone else did, exactly what safety experts tell you not to do, which was to run — no WALK — rapidly towards the building’s exit. As I left my cube, I saw my monitor rock over one final time and land on my chair, where my lap had just been (so: good call). I WALKED rapidly down the hallway. Left turn. Right turn. Down into the stairwell with a crowd of equally unwise people, all of us very definitely not panicking and not running. About that time the really big shaking started, and we all played Star Trek Bridge Attack Scene —

        INT. BRIDGE -


The enemy ship has launched photonic torpedoes, Captain!


Keep walking. Don't run! WALK, DAMMIT!


        EXT. BUILDING -



Keep walking! Get away from the building! Look out for glass!


Hey, who's the asshole who knocked over my motorcycle?


Beep. Beep. Beep . . .

After an unreasonable amount of time — it couldn’t have been less than a couple of weeks — the shaking finally stopped. We looked at each other, the unspoken question on everyone’s mind being “Is that all? Or was that just the warm-up for the Really Big One?” After milling around for a while we were told by some management we’d be contacted when it was okay to return to work, and that we should all go home now. A few people at a time were allowed back into the building to get car keys and other critical items.

I lived about a mile from work then, so I walked home and cleaned up a few tipped-over bookshelves. Power was out for six or seven hours, and helicopters from the Naval base a few miles away were quartering the valley like you’ve seen in a Vietnam War movie, with a great whapping of helicopter blades.


A week later we were told to return to work in another building, far away from Apple’s campus in Cupertino, way out in Mountain View. This building was near 101 and Moffet Field, and just under the approach path for the airfield. Several times a day Navy P-3 sub-hunting planes returning from a tour of keeping the west coast free from pesky nuclear submarines would start their approach, fly over our building and dump fuel on us. There were mornings when you could smell the napalm. (We called the Bay Area Air Quality Board, and while they would have gone rotweiller on any company or individual dumping fuel, these were military flights and the Navy could dump anything they pleased). Some wit posted a “No Smoking” sign on the door leading to the parking lot. No idea who, honest.

Apple was never a company willing to pass up a good earthquake as an excuse to do a re-org. Our division got a little political shaking of its own, and that’s how I landed two cubicals away from someone we shall call “Tim”, who worked on the MPW Shell user interface.

I need to describe the MPW Shell to you.

Imagine a Unix shell, circa 1985. You are probably staring at an 80×25 VT-100 terminal. At your fingertips are hundreds of tools, all with little fiddly options, all different, and a couple of editors (Emacs, vi, and yeah, /bin/ed), and that’s about it.

Now imagine you’re a developer at Apple, and you want a Unix shell and a bunch of Unix-like tools, but you hate the miserable 80×25-and-no-mouse jail, so you decide to do your own thing. It starts out well, with a mouse-driven text editor. You hang a command interpreter on it and tell your users that Enter just inserts a newline, while Command-Enter submits a line or selection as a command, and after a while they get used to it. Integrated editor plus shell, pretty neat, actually.

Then things go off the rails.

Nearly every major tool got its MPW-ified version. Regular expressions used the Mac’s extended character set (so “wavy squiggle” for ‘*’, a fat-looking bullet splat for ‘^’, and a cute little infinity sign for ‘$’). Makefiles used funky characters instead of “:”. Every tool got a template-driven front end with checkboxes and lists of options.

So MPW is all bespoke stuff written by people who say they hate Unix, but who secretly just want to re-write all that fun things for a new environment.


One day I’m noodling around porting Emacs to the Mac. Again. Every six months or so I get fed up with the MPW’s Hell lack of key bindings and crack open the Emacs sources. Maybe I can do it this time. And after a few hours I back away slowly, then rm -rf (sorry, DeleteFile -recurse yupperoo) and feel sorry for my lack of gumption. It doesn’t help that Richard Stallman hates Apple, and personally hates my very own specific ass. Anyway, I’m in the middle of seeing if Emacs has improved or my ability to hold my nose and just Go For It and fork the damned thing has, when I find Tim looking over my shoulder. He has probably heard my teeth grinding.

“Whatcha doing?”

trying to port emacs,” I whisper.  One of the group’s management heavies is not far away, and he definitely doesn’t understand real editors.

emacs? what’s that?” Tim whispers back.

it’s an editor that doesn’t suck.

what’s wrong with MPW?

Oh boy. I telnet to a handy Vax (yes, Apple has Vaxen) and give Tim a whirlwind tour: The simpler commands, followed by composition with universal arguments and keyboard macros. Key bindings for various modes (“see? tab and return do the indentation here…”). MPW had a bunch of stuff better than Emacs — a full GUI and multiple windows and so forth — but MPW’s key handling was pretty quaint. And modes? Ha.

Tim was visibly awed, despite the 80×25 constrained interaction.

wow, that would be pretty neat. how do those keyboard macros things work again?

I showed him. And I sealed his fate.

Tim came returned a few times for more discussion, and I showed him more of what the Emacs folks had come up with over the years. His own implementation gave it an MPW-spin and made things a lot more friendly, and powerful. It was pretty neat. Users were going to love it.

And then he showed his little side project to his manager, who freaked out and told him NEVER to even CONSIDER putting the feature into the shipping product.


About three months later Tim knocked on the side of my cubie and said, “I think they’re going to fire me.”


“I checked all that stuff in, and it went out in the last release and they just discovered that it’s in there.”

“You checked it in? After Fred told you ‘no way’?”

“I sort of snuck it in. They’re pretty lax, and it was already in there for the demo. I just left it enabled and didn’t say anything and it . . . sort of escaped. To users.”

“Hoo boy.”

“The problem is, the users *love* it. The discussion groups are full of great comments. Fred is pissed.”

Tim had mentioned me as a source of influence, so I had a parade of managers file through my cubie for the next day or so. The managers didn’t get it. The programmers who had to use MPW every day loved it. The support folks were reporting that developers loved the feature, and that they were hoping that the feature was a sign of continued and fresh life in a product that they loved to complain about.

Tim wasn’t fired. I think the mgt had some meetings and did their usual “We have to pee in this feature, MPW-style” design work, but even after the poltical torque had been applied, the keyboard binding stuff remained usable and people still loved it.

I wound up leaving the group about six months later. I lost track of what MPW was doing after that, and I’ve utterly lost track of Tim, too.

I know this is a shitty way to build features that customers want, but the opposite way is shitty, too. Ain’t no easy answers.

Hello again

Yeah, well. It’s been almost a year. I don’t promise regular posts, or any posts at all, really.

If you found this at all, it’s a wonder.

I moved this site to some cheaper hosting, so many of the links from the outside are probably busted. Hey, you get to wade through my nonsense again. The missing images, the broken links . . . text is still the most stable thing we have on the Internet. I hear they’re working on that problem.

When I started this blog maybe 20 years ago, blogs were the thing to do. Much of my writing was driven by frustration and dissatisfaction with the state of the world. Mostly I don’t have that stuff on my back now, or I don’t have the time to write much. There are side-projects I’d like to finish, there’s the yard, there’s The Teenager we’re trying to raise (or at least, get off the couch). Entropy never sleeps.

So I don’t know where the heck this blog is going. Probably nowhere, if the pace of postings keeps up at the rate of once a year.

The Flatliner

The re-org happened while our Big Manager was away on a long vacation, and though he’d prepared for his absence (we didn’t lose anyone important, and we kept our desks and chairs and cubicals and we still had paychecks), it must be said that we also got shafted, too.

The shaft in question was the arrival of Person X, a Software Quality engineer none of us knew even existed until he showed up. One morning there was a new person in our little area, unboxing his stuff. Who’s this?

The Q/A manager held a short gathering. Obviously unpleased, he said “This is Person X. He’s going to be doing Q/A for [redacted] and help us ship the new version.” The X in question had been bounced from group to group for quite some time, and we were the lucky recipients.

It was soon apparent that Person X was uncomfortable speaking english and much preferred his native Qwghlm. When he found that one of the other Q/A engineers also spoke Qwghlm, he was overjoyed.

“Grkewgh sych plmrwquwh!” he said happily.

“We are going to use english,” the other Q/A engineer replied, a little frostily. She was looking worried.

“Rlyeh ftaghn fyyff?”

“Absolutely not. English.” She did not add ‘… motherfucker, do you speak it?’, but it was plain on her face.

But she’d been given the responsibility to bring Person X up to speed on the product. This did not go well. She told the new guy about the documentation, the firmware, the tools, the database of test cases, and how the various processes worked. A mix of english and Qwghlm floated over the cubical walls. By the end of the first day she was madder than hell and it was the first time I ever saw her visit our group’s secret beer fridge. By the end of the second day (honestly, by lunch time) she ready to quit. Serious, no-kidding quitting and high-frequency spitting noises were coming out of her. We talked her down, I don’t remember how. I think we might have bought her some ice cream.

Then Person X started in on the engineering staff.

“I understand this . . . blvwgph. This . . . why you not use standards?”


“There are standards. Ex dot two five. VBH. RFC. Why did you not use them? And what is this ‘scrum’?”


“You did this all wrong. You should use DCOM and SMTP and SNA.”

We backed away from the crazy guy slowly. We thought that ice cream might be in our near future, too.

My manager asked me to give him a better technical overview of project. Well, let’s be truthful; we were really doing a somewhat shitty post-hire interview. I wasn’t terribly subtle about it. I pointed him at the technical documentation, asked him to read it, and that we’d chat in a day or two. He returned a couple days later with a copy of the documents marked up in red Qwghlmian squiggles, and we found a small meeting room.

I don’t remember much about the next hour or so except that after ten minutes I wanted out of that room really bad. Not only did he not understand how the product or the underlying technology worked, he was actually arguing about what the product should do and how we’d done a bad job. While I’m happy with technical debates, I’m a lot less happy about clueless attacks. We had a firmware update system that he called stupid. There was a USB protocol that he didn’t understand, and while I never clearly grasped his objections, he was clearly upset at pieces of it.

I reported back to the minibosses. “The guy’s a zero. Maybe a negative number.” And the minibosses expressed a kind of smile / grimace thing that meant both, “Thanks” and “Damn, now we have to fire him.”

Now, it takes six months to fire someone at BigSoftwareCorp. Short of some public and spectacular transgression it was possible for someone to utterly turn off their brain, show up at their desk every day and just play solitaire, and it would still take half a year to can their sorry ass. Person X was no different. We did take away his ability to do any damage to the source tree, and his line miniboss probably gave him something to do (“We need these 1’s and 0’s sorted into neat little piles. It’s very important. Slide a monthly status report under my door.”)

Then one happy day he was gone. The sun came out and we had a fine spring day in December. Somehow there were birds in trees, the temperature shot up ten degrees, coy little breezes played with our napkins at our outdoor (outdoors! in December!) lunch, and none of the builds broke.

Now, you ask most managers about what it’s like to fire someone and they will get depressed and maybe teary-eyed; it’s not easy to tell someone they no longer have a job. In this case the Q/A manager was smiling. And he bought us ice cream that we ate in the sun.

Jury Duty

Annnd . . . I’m off to do jury duty again. I don’t know exactly what I’m going to be doing over the next few weeks, since that totally depends on how many jaywalkers need to be sent to the labor camps, and whether or not I can still fake a convincing siezure. This is the price of having a legal system that largely works, where the term “large” refers to the amount of money you’re able to scrape up to buy some justice.

So it’s time to sit in a room with total strangers, waiting for the cattle call to the courtroom where we will be instructed not to pass early judgement upon total strangers whose lives are utterly fucked up and whose emotional garbage will be spread out in public for analysis by shlubs like me. Do we give a damn? Surprisingly, we do.

Well, that was easy. A day and a half of testimony and hi, ho, that fucked-up moron is off to jail. The guy accused of the Awful Thing even took the stand. His public defender probably urged him not to. His public defender was miserably ineffectual in many areas, but that particular advice was sound and the moron should have listened. Take the 5th, stupid, it has your name on it, it’s there for *you*.

I don’t know what the world’s record is for the shortest deliberation, but when it was time for We the Jury to go into the back room and decide the poor sot’s fate, things went pretty damned quick. We filed in, found chairs, elected yours truly as foreman, and I called for a preliminary vote. “Who’s thinking . . . guilty?” Everyone raised a hand. That was like three minutes flat.

So we spent another twenty minutes talking about the case, just to make sure, took another vote, and that was that. Mister Screwed-up Life (who thought he was going to have a “great time” with a 16 year old who actually turned out to be a 45 year old police officer with a hillbilly beard and a cop-class donut gut and a pretty nifty video recording setup) was sent up to the Big House for a couple years of bad food and quality meditation time.

I don’t claim this is a total win for society. We’re probably better off not having Hells-Angel-lookalike police officers pose online as under-age teens and essentially entrap people. It’s unclear that entrapment has any real effect on the supply-and-demand equation, or that we’re getting anything out of this other than improved employment for police officers and sales of trick video gear. On the other hand, I’m happy to have Mr Fucked-Up Life off the streets for a while. On the gripping hand, it’s not like this long and involved and very expensive process has actually improved anything in the world.

Hint: If the cops ever arrest you, and especially if they have you in front of a video camera, ask for a lawyer and shut the fuck up.

[Yeah, I know I haven’t posted here much in Quite Some Time. Mostly my output has been driven by frustration, which when multiplied by my reservoir of stories equals content, and I kind of ran out of both for a while. More later, I can’t promise when.]

RIP Jerry Pournelle

We’ve lost another big name in SF. I liked Jerry Pournelle’s collaborations with Larry Niven a great deal.

The Mote in God’s Eye is (in my opinion) the best piece of hard SF to come out of the 70s. [Screws eyes shut and thinks hard]. Yup. Ringworld was pretty damned good, but it hasn’t aged well, and Stand on Zanzibar and Dune were published in the 1960s, so Mote it is. It’s a fantastically well crafted first-contact novel.

Here’s a bit, I believe written by Pournelle, describing how the two authors built Mote.


When the little hand is on the two, and the big hand…

Two thirty in the morning is the witching hour of technology.

If you are a firmware engineer working on a product that has some kind of online periodic update system, at some point you will have a conversation with your project manager, the subject of the conversation being”What time of day do we *do* this update?” Because updates invariably require reboots and other awkward shenanigans, and who needs that in the middle of their daytime soap opera or fitness run?

The answer will invariably be two-thirty in the morning. If your product does weekly updates, your PM will respond with “Two-thirty every Sunday morning.” [Which you will change to “Two-thirty every *Monday* morning” because your PM really didn’t think about it enough, but you knew what they meant.]

The argument goes: Two-thirty in the morning is a time when all sensible and God-fearing people (and especially technology review editors) should be tucked away in bed. Thus, no one will notice just one appliance going offline for a minute or two while it reflashes its firmware. And no other company is going to do the same thing to *their* products at that crazy hour, it’s just so *unlikely*. Two-thirty AM sounds great, let’s ship it. It’ll be our secret.

The young, clever and over-enthusiastic dev pipes up, “Let’s make it /really/ random. Say, 2:37AM.”

“Great idea,” someone agrees. And you ship.


Cut-to: I am insomniac again. Minding my own business at Something-Dark-Thirty in the morning and doing some reading. Okay, I’m watching Firefly again, sue me.

The TV stutters for a second or two, then goes black and displays “Rebooting, please wait”. The microwave oven emits a “beep” and starts doing something awful and herky with its LEDs. My watch buzzes and shows a spinning whooshie graphic while it messes with its own insides. Everything is displaying progress bars and “percentage complete” counters and little apologetic messages that betray the same sad trains of thought. All the widgets in my living room are emitting little boops and beeps to announce that they have upgraded their brains and jumped off the cliff into next week’s firmware, to better our lives with bug fixes and shiny, new buggy features. Even the damned toaster is getting into the act. Why would a toaster need a firmware update?

Some of the devices don’t come back to life. Maybe there’s a hardware failure, or an overworked software guy flubbed a semicolon in the update code and now that company has catapulted half a million of its heavily advertised Internet of Things devices into the category of Internet of Dead-Ass Bricked E-Waste. People find these little corpses in the morning, like poor little rodents discovered by the cat. It’s highly likely that the company that made these benighted devices will become a corpse, too, which is why wise companies feed and train their firmware engineers with care. Right?

O, this brave new world of embedded, connected systems. Kind of like the old world, but I sure hope you’re running version 2.01a, because unless you have that latest patch . . .

   Intertubes of Things
Cat monitor, coffee grinder
       It sends email, too.

Let us not speak about devices that are designed to listen to you all the time. It is just too early in the morning for that amount of trust.

RIP Henry SF Cooper

I should keep track of my favorite authors better. Henry SF Cooper, author of Apollo on the Moon, Thirteen: The Flight that Failed and the majestic The Evening Star (which is about how the Magellan probe team debugged OS race conditions from 20 million miles away) died in January.

I can’t say enough good things about The Evening Star. If you’re into computers or into space exploration, it’ll be a great read. If you’re into both, it’s incomparable.

I highly recommend all of his books.