In the last couple of weeks, we’ve seen announcements of hundreds of thousands of layoffs from companies as supposedly solid as Caterpillar, Pfizer, Alcoa, Sprint Nextel, Home Depot, Intel, IBM . . . and the list just keeps growing. In other news, Exxon just announced a record yearly profit. That’s not a record just for them; it’s a record for any company, anywhere, at any time.

Conclusions are left as an exercise for the reader.

How Not To Smoke a Ham

Any blog named Pygmalion in a Blanket has got to be worth a look. Thanks to Jim Henley for this link to an utterly hiliarious story about two strange people, a dog, and a ham. Warning: plenty of profanity. Also, it helps to have a key.

  • “The N” (Nabob) refers to the man of the house, who’s doing the smoking/grilling/whatever.
  • “The G” (Governess) refers to the woman of the house.
  • Normal text is by the G, bold text is by the N.
  • “The potato” is their child. I think.
  • I’m mostly inclined to side with the N, except for leaving stuff in the sink. There were other choices besides the refrigerator.

Rules for the Real Computer Industry

Just some random observations.

  • Don’t assume your competitors are morons.
  • Do assume your competitors are unethical.
  • Skill can be bought; ethics can’t.

From suspect benchmarks and fake reviews (Belkin and Carbonite), to blog-shilling by employees and anonymous FUD sites, to WikiMarketing (“attractive choice as the technology of convergence” doesn’t exactly meet Wikipedia’s NPOV guidelines) and whisper campaigns about a company’s products, its employees, its customers or finances, there are definitely some creepy things that go on in our industry. Unfortunately, a company that lacks either skills or ethics can go out and buy the skills, placing them at a competitive advantage vs. a company that was skilled and ethical to begin with. Then CreepyCo can use their ill-gotten gains to buy some more skills, often wholesale in the form of buying entire companies, and tilt the playing field even further from meritocracy. Where does that that leave our entire industry? Don’t do it, don’t tolerate it at your company, and don’t let others get away with it without being called on it.


The new geek toy in the household is a QNAP TS-109 with a 1TB Western Digital Caviar Green disk inside. Now that I’m regularly downloading video for podcasts and TV shows, my disk-space needs have increased considerably, and I figured that as long as I’m buying I might as well get something with more functionality than a plain old disk. Here are some of the considerations driving my choices.

  • I’ve always favored storage that’s accessible to more than one machine. Having it instantly accessible, without having to deal with both power and connectivity for a USB drive, is even better.
  • Prices for home NAS (Network Attached Storage) devices have come down a lot lately, and functionality has increased.
  • One particular feature that has become common is a built-in FTP/BitTorrent client, which allows the NAS device to do its own downloads without requiring that an attached host be left running.
  • If I’m going to leave something running in the office, then power consumption and acoustics are both important considerations. These were major factors in choosing the TS-109, and practically the only factor in choosing the Caviar Green.

So, how did all this work out? The instructions were good, and it only took a few minutes to install the drive. Software setup took a bit longer, and I’m glad I had a Windows box handy because there seemed to be no option for doing initial setup via Linux. Grrr. Getting through the setup stages was very straightforward, and after a few more minutes it was formatting the new drive. Half an hour later it was done, so I went to try mounting the drive on my laptop.

I hit a bit of a glitch because my UID on my laptop didn’t match the UID for the account of the same name I had set up on the QNAP. Writing files directly within the machine-created directories worked OK, but writing files within subdirectories would yield permission errors. There didn’t seem to be a way to force it to create an account with a particular UID, either, but it’s Linux inside (2.6.12-6 on a 500MHz ARM with 128MB memory to be precise) with ssh enabled and I’m not exactly new to this stuff so I just fixed up the UIDs that way and restarted the appropriate services. Voila, problem solved.

Other than that, things have been great. The performance isn’t stellar, but that’s the fault of the switch built into my wireless access point, which is how everything upstairs is connected too even when it’s wired. 100Mbps never seemed like an issue before, but it’s still faster than my internet connection and I didn’t have any real need for anything better inside the house. Right now it just doesn’t bother me anywhere near enough that I feel like paying for a better switch. The unit is quiet, all right, and seems to stay cool. I’ve used the built-in BitTorrent client once already, to download an ISO, and it got good download speeds. It seems a mite antisocial that you can’t tell it to keep seeding for completed downloads, though. Overall, I’d have to say I’m very happy with this little guy. There are a bunch of features I haven’t explored yet – it can be a web server, database server, and iTunes server as well as a file server, and there’s even an established mechanism called QPKG for users to contribute code to do even more things – but it’s already doing what I need and doing it well.

In the future, there are two more directions I might take with this toy. One is that I might set things up so it’s accessible from outside, for when I’m at work or on the road. There are some situations where I can imagine that being handy, but security concerns (and associated limitations on what I’d put on the device at all) outweigh that slight level of extra convenience. The other thing I might play with is remote replication. One of the things that distinguishes the QNAP product line from most of its direct competitors is that it supports automatic remote replication. It’s presented as something that requires similar devices on both ends, but it looks like it’s just rsync so I don’t think that’s really the case. Backing up to my web host, or even to S3, might be kind of nice.

Sunday Amy, 2009-01-25: Fall Fun

I’m going to try posting Amy stuff on Sundays for a while, as a way to keep up and to have consistent content here. I picked Sunday because it’s the time I’m most likely to be editing pictures and video anyway, and least likely to have other stuff on my mind, so if I’m going to have a fixed time it’s a good one. First, a random quote from dinnertime.

‘Dinosaur’ is the word for ‘pot roast’ in Spanish.

For a while, in addition to asking what real (English) words mean, she has been making up new ones and asking what they mean. Now she seems to have internalized the notion of a language, and that things have different names in different languages, and she’s applying that to her word-play.

In other news, WALL-E has been a big hit. We first watched it last Saturday, and then (I think) she has watched it every day since. We’ve had many detailed discussions of why this or that happened, why WALL-E or EVE wanted to do something or other, and so on. Sometimes she seems more curious about the inner workings of that world than of this one. Go figure.

OK, on with the multimedia section of our show.

Amy playing with some freakishly large leaves we found on a walk through the neighborhood. (JPG image)
Amy playing while we were raking leaves. (H.264 video, 11MB)
Open gym at the Hayden rec center in Lexington. (H.264 video, 10MB)
First Christmas tree of the season, in Lexington center.(JPG image)

I’ve deliberately left out the pictures and video from December’s observation day at Amy’s dance class (tap and ballet). That will be next week’s post, followed by Christmas stuff.

Thoughts on Regime Change

This is not a post about ideology. It’s a post about teamwork, and about how our system of government works, and – in a general sense – about the role of partisanship in politics. Let’s just get one thing out of the way first.

Hey, Republicans: you lost.

We now have a Democratic president, and Democratic majorities in both houses of Congress. Rightly or wrongly, for good or ill, the people have chosen to support the vision espoused by the Democratic party and repudiate that espoused by the Republican party. Got it? No, of course not, and that’s why we’re having this conversation. The issue here is what it means when you lose an election like this. What is the responsibility of the party that won, and what is the responsibility of the party that lost? Here are some parts of the answer.

  • The losers do not have a right to make some percentage of the decisions, and obstruct decisions that are made if they don’t get their way.
  • The losers do not have a right to an equal role in the decision-making process.
  • The losers do have a right and responsibility to express their loyal opposition, with emphasis on loyal, when facing a policy with which they disagree.
  • The winners do have a right and a responsibility to ensure progress, over the objections of the losers if need be.
  • The winners do have a responsibility to listen and seriously consider the losers’ viewpoint, and respect that it represents some subset of the electorate.

Bush was rarely criticized by his own supporters for not doing enough to accommodate his political opponents, and would certainly not have accepted (let alone acted upon) such criticism. The very idea seems alien, even risible. Why, then, are so many people on both left and right demanding that Obama accomodate his political opponents? Why does “bipartisanship” always seem to involve concessions made by the left to the right, no matter who’s in charge? Nuts to that. The debate should occur, the separate viewpoints should be expressed and considered, then the vote should be taken and tallied. Done. No whining or handwringing allowed. As we on the left have been told ad nauseam, get over it and move on. Politics is all about disagreement. Political systems are all about how to handle that disagreement, in the inevitable cases where there is no consensus. Our political system has established rules for how to resolve such situations, and those rules are adequate without demanding any sort of extra-constitutional consideration for the wishes of a minority party. If you want more consideration, get more votes.

Yes, Obama and the other Democratic leaders have a responsibility here to recognize that they are not governing alone, but the part that seems to be most lacking is recognition on the right that they are now the junior partner in this enterprise. They can stop pretending they’re a majority, or even equal. Until they accept their role, and that it means they must persuade instead of demanding to get their way, and learn how to do that, then they will be the ones guilty of destroying any bipartisan or post-partisan spirit in Washington. As Obama said, in a different context but nonetheless applicable here:

We will extend a hand if you are willing to unclench your fist.

Come on. Unclench. We know you can do it.

Military Rank/Order Question

In the car this morning, I was musing about how people set priorities and how they deal with conflicting priorities. This led me back to a subject I’ve wondered about several times. As I understand it, the general rule in the military is that an order from a higher-ranking officer supersedes an order from a lower-ranking officer (“officer” includes NCOs for purposes of this discussion). That makes sense in the obvious case where both officers are in the same chain of command – ranks would have little meaning otherwise – but what if they’re not? Does an order from a colonel outside your chain of command supersede one from a major within it? What about from someone in a vastly different part of the military, perhaps even another branch where the ranks don’t always line up perfectly? I can speculate about some possible answers, but it’s only speculation.

  1. Higher rank wins, unconditionally.
  2. Those outside your chain of command have no authority over you at all, and must contact your chain of command.
  3. Hybrid: apply rule A in combat or other urgent situations, rule B otherwise.
  4. Stupid: “discount” the orderer’s effective rank according to how far removed they are from your chain of command. (Yes, this is unworkable and certainly not the real answer, but it approximates what people do “naturally” in other realms such as business.)

So, does anyone actually know which rule is used, or know where I can find an authoritative answer? A similar question is: what happens when you receive an order from someone of rank X which is directly pursuant to an order they had from another officer of higher rank Y (but you had no direct order from Y)? For purposes of determining the precedence of X’s order vs. others, does rank X or Y apply? (Computer folks might recognize this as a priority inversion/inheritance problem.) Any answers people can provide would be appreciated.


I don’t exactly spend a lot of time in oral surgeons’ offices, but this morning marked the second time that REM’s “Everybody Hurts” was on the radio while I was in one.

On the way in to work afterward, I saw a MINI® exactly like mine for only the second or third time ever. We waved.

Beauty in Winter

We got four or five inches of snow last night, on top of eight or nine yesterday. I think I’ve commented before on how beautiful ice storms can be, but a good snow storm can be that way too. On the way in to work, I was on several occasions witness to a tree dumping its entire load of snow – sometimes from fifty feet or more – in front of me. It’s a beautiful sight, and literally put a smile on my face more than once.

Of course, all this beauty can be a sign of danger as well. Part of my commute runs through Concord, where the response to snow is generally among the most pathetic in the region. I guess “public safety” to them means suddenly dropping the speed limit on some roads below what reason or state guidelines would require, and semi-permanently posting a police officer behind one of those speed-limit signs (where he can’t possibly get a valid radar reading), but not actually clearing snow on those same roads. Thoreau and Emerson must be turning over in their graves, Emerson especially since the area next to the hospital that bears his name was worst of all. Nice job setting priorities, Concord. Anyway, the real point is that I love traction and stability control. I just point the car where I want it to go, and it does. The only downside is that when I drive a car (like Cindy’s) without those features I’m liable to forget that life wasn’t always so convenient, and my snow-driving skills are likely to be a bit rusty as well.

Not Invented Elsewhere

I often have imaginary conversations with real people. No, this isn’t evidence of some kind of schizophrenia. Nor is it some kind of Zelig-style wish fulfillment. It’s more like what I do in chess or in designing code to deal with failures, anticipating things that people might say and how I might respond. Most of the things I anticipate remain unsaid, of course, but sometimes I guess right and it’s nice to have my response be thought out instead of ad hoc. As I re-read one of my recent comments, I was reminded of one of my favorite observations about the business I’m in.

“Familiarity breeds contempt” is even more true in computing than elsewhere.

Have you ever met a decent programmer who didn’t express contempt for at least 90% of Other People’s Code that they worked on? I’m not sure I have. Novice programmers sometimes fall prey to the notion that since they’re so smart then anybody who thinks of even one little thing they hadn’t must be a total genius, and engage in bouts of hero worship for whichever programmer most recently taught them a new trick, but most people outgrow that pretty quickly. Usually “it doesn’t suck” is the best thing an old-timer has to say about any code or other piece of technology. It is, of course, a short step from that attitude to the well known “Not Invented Here” syndrome, in which one foregoes use of an existing technology in favor of a similar one developed locally. Sometimes the local variant really is better, but almost never enough so to justify the expense of developing it. This brings us to NIE, which is NIH’s evil twin based on the following observation.

We apply NIH to problems we think we know how to solve ourselves, and NIE to problems we’ve given up on solving ourselves (not that we’d ever admit it).

NIE is a variant of “magic bullet” thinking, and it goes like this. “I’ve worked with technology X, and hate it. Technology Y competes with X. I haven’t used Y and haven’t learned to hate its quirks or limitations. I’d rather use Y, because it makes all my problems with X go away. Since I want to use Y, everyone else should want to use Y.” Obviously there’s a lot wrong with such so-called reasoning, from violating the “devil we know” principle to assuming that the hypothetical speaker’s experiences or preferences can be generalized to everyone, but it’s how a lot of technical biases become entrenched.

An awful lot of advocacy, from Perl vs. Python to IB vs. 10GbE, comes down to either NIH or NIE. Does fear of the unknown or contempt of the known win out? If it’s fear, then NIH will rule the day and the more familiar alternative will be favored. If it’s contempt, then NIE will win and the Shiny New Thing will be pushed instead. That’s why I think we engineers should actively battle both fear and contempt when making our technical decisions. “But Jeff,” you say, “you spend a lot of time casting aspersions on everything you work on.” Yes, I do, because this is my outlet for such things. I rant here, then I go back and work on the very technologies I rant about because I recognize that the alternatives almost certainly have their own problems. Sometimes I push for a change of direction, sometimes I even set off into the bush with a machete to create a new direction, but I never assume that life will be easy either by staying or by going. The real problems don’t go away just because of what technology I choose, and I’d rather spend my work time solving them than wishing them away.

Speaking of which, I’ve spent enough time writing this.