Archive for the 'the larger world' Category

My story about cyclomatic complexity

In the 1980’s, I was interested in metrics, maybe even a fan, and cyclomatic complexity was trendy. I was never entirely comfortable with it: all the justification in terms of “basis paths” seemed hand-wavily disconnected from the reality of code, and the literature seemed to go out of its way to obscure the fact that the cyclomatic complexity of a routine is just the number of branches + 1 (including the implicit branches in boolean statements like a && b). (I don’t remember if there are any restrictions on that identity.)

Then I read a paper in CACM on the cyclomatic complexity of Unix commands, and it was quite a revelation. You see, I worked for a Unix porting shop. We were regularly presented with broken commands whose code we didn’t know well, commands we had to dive into and fix. Two of the commands whose code was ranked least complex by the paper were notorious among us for being hard to understand. Otherwise fearless programmers wept like children when told they’d have to work on `/bin/sh` and `adb`.

Why were those two commands so hard to understand, even if not complex? The one I remember best was `/bin/sh`. This was an older version, written by Steve Bourne, I believe. At that time (I assume he’s gotten over it), he was enamored with the idea of turning C into Algol using the C preprocessor.

That is, his code included a header file that looked like this:


#define BEGIN {
#define END }
#define AND &&

That meant the parts of C that are easy to understand were defined into another language. But you can’t do that with the parts of C that are hard to understand—”Is this a pointer to a function returning an array or a pointer to an array of functions?”—so all that was left (mostly) alone. The end result was like a combination of German and Sanskrit, which turns out to be hard to read even if you know both languages.

(As I recall, the “Algol” part wasn’t just a matter of lexical substitution: it also also meant using Algol idioms instead of familiar C ones. I don’t remember the details, but it might have been things like not using C’s null-terminated strings and malloc/free, but instead inventing new libraries to learn.)

None of this affected the branchiness of the `/bin/sh` code, so it didn’t affect the cyclomatic complexity. It just made the job of understanding the code much more, um, complex.

I don’t remember as much about `adb`. I think it was partly the complexity of the domain (it was an assembly-level debugger), partly that it was heavily data-driven (so that the complexity was in the setup and interconnection of data, not in the code that then processed it).

The point of all of this is that merely using a word from the domain of human psychology allows you to import, under cover of night, tons and tons of assumptions, making them harder to notice. By saying “complexity” instead of “branchiness”, the purveyors of one simplistic measure were able to make it seem profound. They could hide, perhaps even from themselves, the fact that they were, at best, feeling one part of the elephant.

The same applies, I suspect, to the common statement that “functional programs are easier to reason about.” I happen to believe that’s a heck of a lot closer to being true than that complexity is all about branchiness, but still: it’s important to realize that the motivation for that broad statement has historically been the much narrower claim that functional languages make it easier to prove that programs satisfy their specifications.

When most of us slap down our coffee cup next to the keyboard and open up some code in the editor, our conscious goal is not to make proofs. It’s to accomplish other ends. Therefore, a straight extrapolation from “easier to write proofs about” to “easier to reason about” is a big leap. It smuggles in an assumption that “to reason” is one sort of thing, and that one sort of thing is formal logical deduction. That’s a really strong and dubious claim about the nature of thought, one that hasn’t led to overwhelming practical success when used in, oh, artificial intelligence or as logical positivism.

As usual, we ought to leave the grand claims about “the way humans are” or “the way that it is best to live/work” to psychologists and preachers. Amongst ourselves, perhaps we should just say things like “I’ve been doing this one kind of fairly specific thing recently, and I’ve been surprised to find that X has been really helpful to me. Maybe it will help you too.”

Review: Next by James Hynes

As the ground rushes up to meet him, Kevin thinks about missiles again. One missile in particular, a shoulder-fired anti-aircraft missile, blasted from a tube balanced on the bump where some guy’s clavicle meets his scapula. What guy—a Saudi? An Egyptian? A Yemeni? Some pissed-off Arab anyway, kneeling in the back of a dinged-up pickup truck with Texas plates, or crouching on the springy backseat of a rented convertible on a track just outside the airport fence. One of those portable weapons from Afghanistan, back when Afghanistan was somebody else’s problem, called… something, a Slammer or a Tingler or something like that. Kevin recalls that it’s the same name as a cocktail—a Whiskey Sour? A Tom Collins? A shoulder-fired Banana Daiquiri? No a Stinger, that’s it! Four parts brandy to one part crème de menthe in a cocktail glass, or a fat olive-green tube that farts flame out the back while the missile erupts from the front, its backside trailing a wobbly spiral of smoke until the missile gets its bearings and climbs like a sonuvabitch in a long smooth curve into the heat-hazy Texas sky toward the sleek underbelly of Kevin’s plane, a Pringles can with wings, packed full of defenseless Pringles.

That’s the first paragraph of James Hynes’ novel, Next. If its style grabs you: the modern stream of consciousness, the use of detail to capture a scene, the exaggeration of situation and low-culture references (”Pringles can with wings”), you’ll likely find the first two parts of the book readable enough to get to the payoff in the third.

I say that because the first two parts take place mostly in the protagonist’s head as he wanders, Leopold Bloom-style, around Austin Texas killing time before a job interview.

Kevin is a typical Hynes protagonist: take Woody Allen’s Alvy Singer character from “Annie Hall“, subtract Jewish culture, add in whitebread American culture, and substitute actual failure for imagined failure. Hynes’ job as a novelist is to make such a character something other than a dreary collection of white whines. He’s always done that by making the whines clever and well written, as above, but I think he’s also relied on the nature of the books around the characters. With the exception of his first, they’ve been satires that toss the protagonists into wildly exaggerated situations. (In Kings of Infinite Space, the lead character is a failed academic with a temp job at the Texas Bureau of Motor Vehicles—who’s haunted by a malevolent ghost cat and runs into a small problem involving human sacrifices.)

In Next, Hynes sets himself a harder job: to explore such a character more deeply but keep the reader balanced between dislike and sympathy, while also discarding crutches like human sacrifices chosen at karaoke parties or knife-throwing English professors. Indeed, the secondary characters in Next are more fully human than in previous Hynes novels, and (to me) it’s clear that any cardboard-y aspects are because we’re seeing them through Kevin’s eyes and it takes a jolt for Kevin to pay attention to other people long enough to flesh them out.

The plot starts simple. Kevin thinks of himself as “an underachiever in every way he can imagine, professionally, personally, financially.” He’s a book editor with a marginal job at an academic press, a failed marriage behind him, a girlfriend he probably doesn’t love and may not even like. He’s fifty, so he’s flown to Austin for a job interview, telling no one, with thoughts of making a clean break:

It’s not a real choice so much as it’s a choice between two equally risible clichés: Count Your Blessings, or Follow Your Dreams. Look it up (\mid-lif kri-ses\ n) and find a line drawing of Kevin Quinn in a sporty little convertible, with his perky young — well, younger — girlfriend beside him, her hair loose in the breeze. See MIDDLE-AGED MAN.

The plot’s set in motion when Kevin gets an absurd crush on his airplane seatmate (a much younger Asian-American woman) as she walks down the jetway away from the safely-landed plane:

Kevin cannot help but admire the enormously fetching way she moves, a sort of well-lubricated slouch by which she lets her shoulders droop and leads with her hipbones. It’s not an aggressive catwalk strut, it’s much less self-conscious and much more feral, and as Kevin follows her into the filtered light and cathedral echo of the terminal itself, into the delta of debarking passengers fanning across the carpet and onto the cool marble, he thinks, I know that walk, I’ve seen that walk before. And for one thrilling moment, his heart swells with the possibility that I know that girl! But of course, he couldn’t possibly—she’s twenty-five, maybe thirty years younger than him, he’s never seen her before in his life, and if he had, he’d have remembered. But by God he knows that walk, someone else used to walk that way, he’s felt that walk up close, he’s curled his fingertips around those hipbones from behind, and then his heart fills up again, only this time with honest-to-God hundred-proof middle-aged melancholy. It’s Lynda, he realizes, Lynda used to slink like that, Lynda used to glide away from his touch just like that. Lynda on the dance floor, Lynda à la plage, Lynda on the railing.

It’s a later chance sighting of the same woman that takes Kevin out on his Ulysses-like wandering around Austin instead of staying where he belongs, waiting in a Starbucks. (Don’t worry, though: this isn’t a Woody Allen movie. They don’t “meet cute”, he doesn’t get the girl, and she disappears from the story well before the end.)

So, another possible warning: the first two parts mix Kevin’s mild misadventures and his reactions to them with his recollections of, and musings on, the four key women in his life. Those musings increase to the point where a cabbie warns him “You need to pay attention, man.” Kevin does not, which sets him up for Part 3, which is fifty devastating pages.

I won’t spoil the sudden shift, or the pages that follow. Just let me say this: I found myself in a Pringles can over the Atlantic with tears running down my cheeks for Kevin and two other characters, even though I kind of think I despise him, even though I stopped reading every few paragraphs to focus on the in-flight movie until I collected myself.

So: it seems I recommend this book. It’s worth noting that I’m in many ways like Kevin. I’m peripherally academic. I examine my life too much. I’m the same age (though I claim my midlife crisis started at 28 and never stopped.) I too can get set back on my heels by the accident of a woman’s stance. In a later bit of the book, Kevin thinks back to a single devastating sentence a woman said to him, one that may have changed his life, and I’ve had a similar experience. So it’s possible I’m too much Hynes’ ideal reader. Perhaps I should read this to Dawn and see what she thinks.

Madison 2011, Honiton 1766

[Update: I accidentally published my first draft of this.]

I’m reading that part of E.P. Thompson’s The Making of the English Working Class that’s about what happened before the industrial revolution. I’ve been struck by the food “riots” that were common until the 1840’s. I put “riots” in scare quotes because they were often (usually?) peaceful. Here, Thompson quotes John Wesley:

[The mob] had been in motion all day; but their business was only with the forestallers of the market, who had bought up all the corn far and near, to starve the poor, and load a Dutch ship, which lay at the quay; but the mob brought it all out into the market, and sold it for the owners at the common price. And this they did with all the calmness and composure imaginable, and without striking or hurting anyone. (p. 64)

Thompson gives another example:

In Honiton in 1766 lace-workers seized corn on the premises of the farmers, took it to market themselves, sold it, and returned the money and even the sacks back to the farmers. (p. 64)

Oddly similar to events in Madison, where most reports of the scene in the capital were of a surprisingly self-organizing, calm, and disciplined crowd.

What was the motivation for the bread riots? They were “legitimised by the assumptions of an older moral economy, which taught the immorality of any unfair method of forcing up the price of provisions by profiteering on the necessities of the people” (p. 65). Thompson also singles out the tradition of the free-born Englishman, which consisted of:

[…] a moral consensus in which authority at times shared, and of which at all times it was bound to take into account […] this question of the limits beyond which the Englishman was not prepared to be “pushed around,” and the limits beyond which authority did not dare to go, is crucial to an understanding of this period. The stance of the common Englishman was not so much democratic, in any positive sense, as anti-absolutist […] [The unwritten consensus stemming from the Glorious Revolution] might provide the propertied classes with a sanction for the most bloody code penalising offenders against property; but it provided no sanction for arbitrary authority. (pp. 79-80)

That resonates with me. I’m a comfortable white middle-class American. I have certain expectations that those with power will be… tactful. They won’t be absolutist (toward me). They won’t be arbitrary (toward me). They won’t nakedly use a crisis as an excuse to cut off their political enemies’ funding. They won’t be radical. Gov. Walker is radical in the same way that many Republicans have recently been, but their targets have been, well, poor people, brown people, people imprudent in their mortgage borrowing—people Not Much Like Me. Walker’s targets are (much more explicitly) teachers, middle-class workers, firefighters, policemen—people that are like me, not “others”.

That’s why I feel in my gut he’s gone too far. (My head thought all his sort had gone too far long ago.) That’s why I think many whitebread people like me feel he’s gone too far. We finally realize: there really is no social contract left that stops us from being next.

That $20 Billion BP deal

Various Republicans have characterized the recently announced 20 billion dollar deal between the government and BP as a “shakedown” for a slush fund, one that Obama doesn’t have constitutional authority to set up. From what I’ve read, it strikes me as a pretty straightforward deal, not wildly different than the way I used an escrow company as an independent party when selling testing.com. Or that unpleasant incident with my neighbor’s grill a few years back…

Me: You careless oaf! You burned up my lawn!

Him: I admit it. I take full responsibility. Sorry.

Me: You’re going to pay for this damage, you know. All of it.

Him: I will do that.

Me: I bet that big old maple that overhangs the house is going to have to come out. That’s going to cost you a bundle.

Him: Oh now, it doesn’t look that bad.

Me: I had a tree hit by lightning once. Didn’t look much worse than that, but carpenter ants got into it and the tree had to come out. The guys who took it out told me I should have done it right away, that the tree was worse off than it looked. I’m not waiting this time.

Him: Uh… Don’t know all that much about trees.

Me: Neither do I. Look. Let’s simplify this, keep at least some of it out of court. Let’s get someone with experience at judging these kinds of damages and have him decide, shrub by shrub, tree by tree, what you owe.

Him: Like the independent mediator written into lots of contracts.

Me: Right.

Some time passes as we dicker over who we both trust.

Me: Now, I’m pretty sure this is going to cost you over $2000…

Him: Aw, that seems high

Me: That maple is four stories tall!

Him: Hey, I still think it’ll be alright. But OK—so long as we get that mediator guy, the one I trust.

Me: And I want you to put the money in escrow.

Him: Aw, c’mon. You know I’m good for it.

Me: Yeah, well, my trust in you is not super-high right now.

Him: Well…

Me: Look. Back out of the deal if you want. You’re going to pay one way or the other. You can do it quickly or drag it out. Your choice.

Him: OK, OK: it’s a deal.

Why free market enthusiasts should love trial lawyers

[I am not an expert in these fields.]

Most people who self-identify as enthusiasts of the free market loathe trial lawyers. I believe they do so out of tribal loyalties, not from reason. In this essay, I’ll only address the “not from reason” part.

Some people are faith-based free-marketeers. They believe that in our current economic organization the market would make the correct decisions in the absence of regulation. I distinguish these people from those who believe that, given a different economic organization, the market would make the correct decision in the absence of regulation. The difference between the two is that the faith-based free-marketeers pretend that externalities do not exist.

Externalities are cases where part of the cost of a good or service is not paid by participants in a market transaction.

Example: If your factory is upstream of me, and you dump sewage in the river I get my drinking water from, you damage me but (in our society minus government) I have no recourse. Your customers get cheaper goods than they should.

(A somewhat famous) Example: You run a railroad on your property. Sparks from your trains ignite my wheat field. Who should suffer? How much?

Example: As a fisherman, I gain direct benefit from overfishing, the cost is spread amongst all other fishermen, and there is no way for them to get compensation from me.

The free-marketeers I’m concerned with solve this problem by extending property rights to everything. I have property rights to the water I drink from, so I can charge you for the right to pollute. In a pure market situation, it makes as much sense for me to bill you for my burned wheat as it does to force you to install spark arrestors. If fish are proportionately owned by fishermen, my overfishing is in effect stealing someone else’s property.

So, in what’s sometimes called pure market anarchism, the BP Gulf oil spill is handled by the owners of the gulf and adjacent lands demanding compensation from BP. BP, as a rational economic entity, will have already adjusted its operations so that its gain from drilling in the gulf is more than the total of what it will pay owners in a spill. (Or, equivalently, BP buys the appropriate amount of insurance.)

However, there’s a problem even in the case of perfect information and friction-free litigation: How does BP know how much to adjust its operations? That must be done by understanding the cost (and benefit) of previous spills. But how is the cost arrived at? By what was previously paid out. (Yesterday’s weather, for you Extreme Programmers out there.) But BP (or its insurance company) and any patch-of-Gulf-owner are likely to disagree about the degree of damage and thus the amount of compensation due. For any given spill, its cost is disputed. But a single number is required. How can this be handled?

One way is by our existing system of litigation: BP lawyers and the owner’s lawyers (or lawyers for a collective of owners) fight it out in front of some impartial authority (a judge or jury). If you agree with that, you love trial lawyers because they’re required to make that system work.

However, many free marketeers find trial lawyers unsavory, so they envision some more dispassionate entity. People of my generation often read Heinlein in their formative years and long for the role of “Fair Witness” - someone who, due to deep training, does not let her own preferences sway her judgments.

Suppose there exists a Fair Witness-like adjudicator. There are two possibilities: (1) she gains all knowledge needed to decide the case herself, or (2) she relies on proxies who feed her information. In a market world, I suppose that different Fair Witnesses would offer both approaches. I claim, though, that the proxy approach (2) would win out.

Why? If we assume the market works, we must assume that salesmanship, marketing, and advertising work. They are not significantly regulated, so are not affected by market distortions, yet they persist. (Man do they persist.) If you believe the market works, you must believe they lead to better decisions by consumers. (Else the company that eschewed them would be able to deploy the cash saved to positive ROI activities.)

However, what are marketing, salesmanship, and advertising but an argument that your competitor’s counter-argument is weak? It is an inherently adversarial relationship, using the consumer as the highly-interested judge of competing arguments.

This is precisely parallel to the situation of two advocates arguing in front of a Fair Witness. Therefore, the skills of an advocate—a trial lawyer—are essential for the market process of determining how much BP should spend on safety (or, equivalently, how much its insurance provider should insist it spend on safety).

I should note that I am not a believer in the wisdom of the market—due in part to my readings in behavioral economics and asymetrical information—but as a software person I run into a ton of people who claim to believe in the free market but are in effect supporters of America’s peculiar system of crony capitalism that favors unnaturally-large (according to their expressed beliefs) business. Or they are glibertarians. This essay is for them.

The Treaty of Lima

Students of both Spanish and English will be grateful to Leonardo Soto Muñoz (of Lima, Peru) and me. I wrote:

Me

Leo replied:

Him

As of this day, domingo 23 de mayo del 2010, we’ve agreed on these terms.

Old programmers

A correspondent writes:

How does one continue to build a career in software development, when there are younger, hungrier people (i.e.people who can, and will work 16-hour days and can learn things at a ridiculous pace) joining the field?

I’m at the ripe, old age of 33 and am already feeling like it’s a challenge to keep up with the 23-, 24-, 25-year-olds. :/

Also — and I know this is partly a function of the field’s explosive growth over the years — but I just don’t see that many software devs in their 40’s and up, so I don’t have much in the way of precedent to observe, in terms of a career path, other than going into management

Since I’ve pretty much decided to devote this next decade to programming, part of it for hire, this is an important topic to me. (I’m 50.) I don’t know that I have much useful to say, though. Nevertheless…

  • In a team, some people serve as catalysts for other people’s abilities. For example, ever since my 20’s, I’ve been hung up on friction-free work. So I was more likely than other people to make the build work better, write and share emacs functions to automate semi-frequent tasks, or to work on testing. Those are not glory tasks—”I’m a rock star build-fixer!”—but they help the team. As the team’s codger, I might emphasize that bent even more, freeing the team’s whippersnappers to concentrate on the most prodigious feats of coding.

    A typical way in which an older programmer can catalyze is by paying attention to human relationships. If you can avoid the damnable tendency old people have to pontificate at people or tell only marginally relevant stories about how they did it 20 years ago, you can be a person who “jiggles” teams into a better configuration. (Term is due to Weinberg’s Secrets of Consulting, I think.) The ideal role is that of player coach (but one gradually recognized by the team, rather than appointed for it.)

  • Another reason for the patriarch to work in a tight-knit team is that a young programmer’s advantages are not uniform. For example, what makes me feel most like a doddering oldster is the sheer amount of stuff kids these days know about: tool upon tool upon tool, gem upon gem upon gem, the 83 new things in the newest point release of Rails, etc. But if you have one of those people on the team, the advantage accrues to everyone, and the centenarian’s loss of a pack-rat mind is not such a disadvantage.

    When what matters is the team’s capability, balance is more important than each individual’s uniform excellence. So when fogy-dom looms, focus on being complementary rather than unique.

  • A traditional way for the older programmer to cope is by being one of the dwindling number of experts in a has-been technology (Cobol being an example, Smalltalk being another). That technology doesn’t necessarily have to be boring. Sometimes, as has sort of happened with Smalltalk, Lisp, and maybe the purer functional languages, the has-been becomes hot again.

    A perhaps-related route is to become an expert in a very specialized and difficult technology like, say, virtual machines or security–something that’s difficult to pick up quickly and requires continuous learning.

  • Now that we’ve learned that legacy code doesn’t have to suck, perhaps the graybeard should angle to attach himself to a particular large and long-lived code base. There could be a lot of pleasure in watching your well-tended garden improve year after year.

  • It’s also useful not to act old. For example, I have to fight the urge to be sort of smug about not knowing CSS. In my case, of course, I don’t because, well,… CSS. But it’s easily interpreted as my saying “Oh, another passing fad, *Yawn*, give me RPG any day”. Similarly, I should be careful of saying things to Clojure programmers like, “Well the way we did that in my Lisp days was…” As a final example: this website looks like I’ve learned nothing about web technologies since 1994.

    People are sensitive to old people acting old. The flip side is that it’s easy to subvert expectations. I think it’s a good strategy to be able to talk in modest depth about two or three technologies that are sort of new or even faddish. So, for example, I’m pleased that I can talk about Clojure, Cappuccino, and, oh, Sinatra. You want to both present the appearance of being able to–and actually be able to–synthesize the past and the present.

  • Finally: if programming is indeed one of those fields where you do your best work young, older people should be paid less. Older programmers can compete by somehow (credibly) asking for less money.

    That “credibly” is an issue though, since programming is something of a macho, boastful field. In such, a declining salary is easily taken as a big red flag rather than a realistic acknowledgement that–say–short-term memory and concentration are important to programming and both get worse with age.

Other thoughts that might be of help to my fellow coffin-dodgers?

informed-citizens.org

As part of my ongoing (since age 28) midlife crisis, I’ve been casting around for an ambitious product to build. I have an idea. I describe my personal motivation for it, then sketch what “it” is, on a separate blog. I encourage you to try to talk me out of it.

Up in the Air

I saw “Up in the Air” last night. While it’s a well-done movie, albeit entirely predictable, the world it portrays is a lot more disturbing than it seems at first. To explain, I recommend John Holbo’s close reading of David Frum’s Dead Right. Here’s the most relevant part:

[Frum writes] “The great, overwhelming fact of a capitalist economy is risk. Everyone is at constant risk of the loss of his job, or of the destruction of his business by a competitor, or of the crash of his investment portfolio. Risk makes people circumspect. It disciplines them and teaches them self-control. Without a safety net, people won’t try to vault across the big top. Social security, student loans, and other government programs make it far less catastrophic than it used to be for middle-class people to dissolve their families. Without welfare and food stamps, poor people would cling harder to working-class respectability than they do now.”

[Now Holbo] The thing that makes capitalism good, apparently, is not that it generates wealth more efficiently than other known economic engines. No, the thing that makes capitalism good is that, by forcing people to live precarious lives, it causes them to live in fear of losing everything and therefore to adopt – as fearful people will – a cowed and subservient posture: in a word, they behave ‘conservatively’. Of course, crouching to protect themselves and their loved ones from the eternal lash of risk precisely won’t preserve these workers from risk. But the point isn’t to induce a society-wide conformist crouch by way of making the workers safe and happy. The point is to induce a society-wide conformist crouch. Period. A solid foundation is hereby laid for a desirable social order.

*Some Spoilers*

“Up in the Air” is almost unrelentingly conservative in that it simply assumes that the world of work today is the one Frum [seems to] desire. In the movie, Fate–impersonal forces of industry that are faceless until they hire George Clooney–strikes people unexpectedly, and the only solace or support they can have is their family. They get no help from the Agile Alliance, ACM, IEEE, craftsman guilds, AFSCME, AFL-CIO, their community, or the keen-eyed watchdogs of the press whipping up public opinion. There’s some help from the company–of what quality we don’t know–and the government offers only unemployment benefits that are explicitly called out as derisory. There’s some talk of protecting the firing process from lawsuits [government intervention in the process], but in the one case where a lawsuit is credibly threatened, a simple lie by Clooney makes it go away.

In the movie, the people below the airplanes have no option but a socially desirable [to some] defensive crouch. To the extent that movies capture the zeitgeist, that’s pretty disturbing. The movie comes out against atomization–being alone is Clooney’s unhappy fate–but the atoms can’t form molecules bigger than a family. There are no other bonds. OK: there’s Clooney’s last, human gesture to Natalie, but that’s something delivered in extremis, not a way of life. The character of Alex is more representative of the movie’s view of the world: outside the family, there are no norms and no obligations.

The movie shows a world in which Phil Gramm, one of the architects of our current troubles, is on point when he talked about the US as “a nation of whiners“. One strong element of conservatism is the preservation of hierarchy. To Gramm–who need never fear unemployment–I suspect that we-the-people are not particularly relevant. How annoying it must be when we complain! We should shut up, take our lumps, scrape through, and–as in the movie’s closing narrative–watch the planes containing our fate fly far overhead.

Education

When I was in Middle School (~12 years old, around 1971), we did a murder mystery exercise in class. The teacher passed out slips of papers with clues and then shut up. The children milled around aimlessly for a while, comparing slips. Finally, I got fed up, got everyone’s attention, and said, “OK. Everyone with clues about the murder weapon, go over there. Everyone with clues about the victim, over there.” Then I went from group to group, and we quickly solved the mystery.

I learned three things that day.

  1. Sometimes people need external organization to get things done.

  2. I can do that organizing.

  3. People will get mad at me when I do.

The lesson has affected my consulting. I suspect that my daughter’s homework today—identifying the parts of a knight’s armor—will not affect her future in the slightest way. Social studies no longer appears to involve the study of society. Not surprising, I suppose: too much risk of children drawing conclusions that will get their parents mad at the school, and who needs the hassle?

And the New Math rocked, by the way. It was good that I learned simple set theory so young, and the idea that there could be number bases other than ten was a good lesson in questioning the verities.