Thursday, June 30

Context Free Sentence

Twice in the past two days, I've had the opportunity to enlighten people in my vinicinty (probably against their will, but that's what they get for hanging out with a pedantic smartassall the time) on a sentence that you'll recognize if you've ever taken a Linguistics class taught in English.
Colourless green ideas sleep furiously.
Yup. Colourless green ideas sleep furiously. Linguistics classes use it to demonstrate that there's more to language than just syntax (the stringing of words into sentences according to rules), that semantics is a valid intellectual discipline. The first time I heard that sentence, I blinked a few times and then laughed. It's syntactically valid -- the words are arranged according to the rules of English grammar -- but the words don't relate to one another at all, absent an extremely strange and contorted context. The mechanisms whereby we use the sounds that make up spoken language, or the glyphs that make up written language, to share mindstate with other people don't work for that sentence.

If you do try to discern what someone's thinking when they say that sentence, you reach one of a number of conclusions:

* they're telling an obscure joke, the point of which is that the sentence doesn't make any sense
* they don't understand the meanings of the words that make up the sentence
* they understand the meanings of the words, and their internal mental state is so different from yours that the sentence makes sense to them.

We call people who do the first thing a lot 'language nerds', people who do the second thing a lot 'not fluent in English', and people who do the third thing a lot 'crazy'. No, seriously. That's what crazy is. An internal mental state that deviates so far from the norm that it impairs the ability to communicate effectively. And that's why talking to crazy people makes you feel a little crazy yourself, because your mind naturally tries to make sense of what they're saying, which involves contorting your own mental state to match theirs. Hard work. Actually, getting a true 'meeting of minds' with someone, learning what they mean by what they say, is hard work even if the person isn't crazy. you have to infer a lot. Establish a shared context with them.

so...yeah. Colourless green ideas sleep furiously. Use it when someone says something that doesn't make any sense.

Wednesday, June 29

Implementations Have Consequences

One of the blogs I read every day is Old New Thing, Raymond Chen's fascinating daily dive into the murky depths of Windows. Highly technical.

Today, he got a comment from another MS blogger: mgrier, who maintained the NT DLL loader for a couple years. That's the piece of operating-system code that manages the process by which the reusable parts of programs (Dynamic Link Libraries) are made available to executables, and to each other. One of his recent articles, part of a series on the internals of the NT DLL loader, had this quote in it:
I believe that this is not an implementation detail...

Wow. What an incredibly scary thing to say. Not just because it demonstrates that the Windows operating system is sufficiently complex that the very intelligent people maintaining it think about it abstractly enough that they hold beliefs about it, but also because he's making an important point about software here.

Every implementation decision you make matters to your design. Even things that, to the designer/architect/whoever-specced-out-the-thing-you're-working-on, seem like pure implementation details. At some point down the road, someone is going to care that you present your output as an ordered list because that's how it happened to come out. This is most important for applications that have other applications 'downstream' from them (i.e. their output is going to get fed into some other thing), but it's applicable for end user programmers too. (Especially since a lot of the output you think is being read by people is actually being read by machines.) So a truly conscientious programmer considers all these things, and thinks carefully about the consequences of each implementation decision that needs to be made. Or at least, they should.

I wonder if we do?

Tuesday, June 28

Conflicted over Adequacy

Oz had things to say about revision control recently, as well as some comments on 'the tyranny of adequacy'.

I'm really conflicted about the sentiment that that there is a tyranny of adequacy. On one hand, as a tool developer, I want The World to be constructed out of the very best components possible because I know that things tend to be overused and abused out there. I'd rather people not use a thirty-year-old textfile editor to do business-critical tasks; I'd rather people not use a terribly buggy operating system when vastly superior ones exist. On the other hand, as a user, I want to learn the fewest things possible because I'm a busy guy and anyway I hate change. (People do. It's a Human Being thing.)

It's really a conflict of interest. Engineering best practices suggest that the best engineering is overengineering, that things should be as perfect as they can be made. But Optimizing is hard work, and it's hard for lazy people -- and I include myself in that category, for sure -- to keep working on perfecting something when what you have in your will do the job. Something that satisfies. Herb Simon coined the term 'satisfice' in the 50s for that concept, so that he could label and dissect the optimizer/satisficer distinction.

Oz seems to be one of those rare humans that prefers to Optimize rather than to Satisfice in his everyday life. He wants the very best user experience on his computer, so he uses an Apple at home. Never mind the fact that, for almost all things, Wintel boxes provide an adequate user experience. He wants his employer to be a thought leader in the industry, so he works for Sun. He wants his pictures to turn out perfectly, so he practices and practices photography rather than just pointing and shooting. (There are other experiences I have with Oz that lead me to hold this to be true, but if get into them you'll know who I am, and I'm trying to hide that a little here.) My point here is that Optimizers worry about a 'tyranny of adequacy', whereas Satsificers just get on with their lives, not caring enough about the quality of their experience to seek out its betterment. Of course, optimize/satisfice is a bit of a false dichotomy; there's a continuum there, depending on what you consider 'good enough' in terms of quality.

Ah ha! Found it! That's my problem with the phrase 'tyranny of adequacy': it obscures the writer's actual sentiment, which is that the community about which the writer complains has lower quality standards than (|s)he does. It also allows the writer to get away with not telling us why they think the community's standards are too low. So there.

[Editor's note: between writing the previous paragraphs and the ones that follow, I had a relatively deep conversation with Oz on this topic.]

Of course, a diehard Optimizer's comment on this would be 'the fact that you don't acknowledge the tyranny of adequacy doesn't mean it's not there'. Well, ok. People do tend to overestimate the pain of learning a new system, and underestimate the time and effort they'll save with the better tool. But that's a fact, and, unfortunately, blogging wistfully about it doesn't make that fact go away. Jow Sixpack responds better to carrots than to sticks; he's more receptive to 'look what this new shiny tools can do that your thing can't!' than 'that thing you're using? it sucks. and here's why. and here's something that sucks less in these three ways'.

So, to return to the actual subject matter of the linked post: how about it? What can your source-control system do that mine can't?

Monday, June 27

Title: Someone on Something

Someone talks about Something today. Statement about how their position is incomplete. Somewhat self-deprecating statement of my position. Poorly-developed support of that position, with reference to personal experience. Question of applicability of the preceding two statements?

Exposition of the pros and cons of Someone's position, especially in the context of This guy and the other one. Then again, statement about the difficulty of having an informed opinion on the subject. Explanation of the technical details of the situation, with a relatively well-developed analogy. Overextension of the analogy to absurdity, to demonstrate its limits.

Call for more thought on the subject, or at least acknowledgement that the state of the art is still pretty bad. Personal reference.

Snappy four-word signoff.

Wednesday, June 15

Hey Couch Potatoes! Look!

So I was reading Time Magazine the other day, and I nearly fell off my chair before I realized that an ill-placed spine-crease made for a very funny word-modification.

Tuesday, June 14

User interface! HELLO MCFLY, ANYONE HOME?

Maybe I'm coming at this from the wrong angle or something. Maybe I'm not the target audience for OpenSolaris. But when Tim Bray says Linux is ahead in terms of user interface -- and that's not the top of his shitlist about Sun's latest release -- there's something desperately wrong.

The only thing that exists about a product, from a user's perspective, is its interface. If a feature exists, but can't be found, it does not exist. If a feature is unlearnable or unusable, it does not exist. Jesus people, let's get the horse before the cart here! Let's actually make this disgusting Unix mess usable!

Friday, June 10

Wormsign: viruses hack your perceptions

This Scientific American article talks about parasitism,and the various evolutionary tricks that parasites get up to to cause their hosts to do things more imicable to their own reproduction.

Including messing with their brains, to exaggerate or reduce their instinctive responses to pheromones (like making rats avoid cats less).

I can't help but think two things: (1) how long is it going to take to weaponize something like this? and (2) how long is it going to take before I can take a pill that makes me concentrate better?

Carbonated Beverages I Have Tasted

I was at a wedding this weekend, and there were carbonated mixers for the various alcohols at the reception. Being the good wedding-partyer I am, I partook -- Rye and Ginger's my mixed drink of choice. (I prefer Scotch neat, but only with expensive Scotch.)

Holy mother of god on a crutch, that stuff is sweet!

It's been more than a year since I stopped drinking pop (not an atkins diet, more of an organic thing), and I've lost a lot of weight doing it which is excellent motivation. Now, trying a pop I'd guzzle like it wun't no thang back in the day, I almost spat it out it was so sweet.

I have also tasted Coca-Cola, Pepsi, tonic water (schweppes brand please, not that nastyass house brand stuff), Fanta, Brio, Red Bull, ginger ale, ginger beer, champagne, prosecco, ale, lager, stout and soda water.

Scotch has them all beat.