Embryology and Programming Languages

If you’ve never thought that the way molars develop in mammalian fetuses is way cool, you should read this article by PZ Mhieares at Pharyngula. It’s all about one substance in the environment of the developing jaw saying “you are going to become a bit of enamel”, and then that turns on another substance that tells neighboring cells, “cancel that: you don’t want to become enamel after all”, and stuff like that.

One fascinating thing about embryology is that the way living bodies develop is completely different from the way you’d build a house, or a credenza, or a sewing machine. It involves working in different media, with different tools, and that affects the way you do things, sometimes radically.

To me, the shift in thinking about building furniture to thinking about embryology is like learning a new programming language.

Read More

Pattern Substitution as Funky Iterator

I have a project in which I have a row of cells, and a number of segments of given lengths, and I need to try out all of the ways in which the segments can fit into the row. If you like, think of it as: how many ways can “eye”, “zygote”, and “is” be placed, in that order, on a row of a Scrabble board?

I’m doing this in Perl, so naturally I’d like to play to Perl’s strengths (pattern matching and substitution) rather than its weaknesses (arithmetic). And I’ve discovered a nifty little hack.

Read More

Another Law of System Administration

Let me propose this law, to see if it grabs anyone:

There is no task, software package, or piece of equipment so simple that it cannot be made to require a dedicated admin.

There are supercomputing centers with so many RAIDs that normal failure rates and ordinary statistics show that there will be several disk failures per day, so they have a person whose job it is to go around and replace the disks that died overnight.

And a friend just found a job opening for a Subversion admin.

Calculating My Tastes

One thing you can do in iTunes is to give songs a rating from 1 to 5 stars. It also has an option to play highly-rated songs more often during shuffle play, but frankly, I can’t be bothered to go through my collection rating songs by hand. And besides, the metadata that iTunes stores for each song includes things like the number of times it was played, the last time it was played, the number of times it was skipped, the last time it was skipped, and the time when it was added to the library. It seems that from this, it should be possible to figure out what I like and what I don’t like. Specifically, it should be possible to write an AppleScript script that goes through the library and computes ratings.

Read More

Fun With Playlists

One thing I like about iTunes is its “smart playlists”, which are not simply lists of songs, but are defined by certain criteria. For instance, I have one called “80s Music”, with the single rule

  • Year is in the range 1980 to 1898

which, obviously, contains all music from the 1980s, and is automatically updated when I add or remove songs.

Recent versions have added a number of other features and criteria, which make various interesting lists possible. Read More

Sony Learns Nothing From Its Mistakes

Remember back in 2005, when Sony decided it would be a smashingly brill idea to include a rootkit on one of their CDs? Well, now they’re selling USB keychain drives with built-in fingerprint scanners, and they figured it’d be totally rad to include a rootkit with that as well.

As the old saying goes, subvert my security to prevent the inevitable release of your IP onto the net by 15 minutes, shame on you; subvert my security etc. twice, shame on you still, dumbass.

Retro-Toy

One of the departments at work is moving offices around, so there are piles of junk in the hallways, some of it cool, most of it not.

One thing I picked up was a Gerber Variable Scale, invented by H. Joseph Gerber as a more elegant solution to an engineering problem that had originally required the use of his pyjama elastic.

Read More

/kernel.el

From an Ubuntu security advisory:

After a standard system upgrade you need to restart emacs to effect the
necessary changes.

Details follow:

Hendrik Tews discovered that emacs21 did not correctly handle certain
GIF images. By tricking a user into opening a specially crafted GIF,
a remote attacker could cause emacs21 to crash, resulting in a denial
of service.

Gosh, they make it sound as if Emacs is a daemon, run from an init file, running all the time and… oh, wait. Right.

Another Problem With Searle’s Chinese Room

(Update, Aug. 20: John Wilkins, an honest to God philosopher, tells me in the comments that I’m wrong. So take this with a grain of salt.)

For those not aware of it, John Searle’s Chinese room is an argument against the possibility of artificial intelligence.

As recounted by Roger Penrose in The Empereor’s New Brain, it goes something like this: let’s say someone has written a program that understands natural language. This program reads a short story in a human language (e.g., “a man went to a restaurant. When his meal arrived, it was burned to a crisp. He stormed out without paying the bill or leaving a tip.”), then takes questions (e.g., “did the man eat his meal?”) and answers them. Now, let’s make two changes: first of all, the program “understands” Chinese, rather than English. And secondly, instead of a computer, it is John Searle (who doesn’t speak a word of Chinese), who will be executing the program. He is sealed in a room, given detailed instructions (in English), and some Chinese text. The instructions explain what to do with the Chinese characters; eventually, the instructions have him draw other Chinese characters on a sheet of paper, and push them out through a slot in the wall. The instructions don’t include a dictionary or anything like that; he is never told what the characters mean. Searle’s argument, then, is that although to the people outside it appears that the room has read a story and answered questions about it, no actual understanding has taken place, since Searle still doesn’t speak Chinese, and has no idea what the story was about, or even that it was a story. It was all just clever symbol manipulation.

One objection that recently occurred to me is this: what if, instead of a natural-language recognition program, the Chinese researchers had given Searle a program that forecasts the weather, or finds a route from one address to another, or typesets Chinese text, or plays go, or even one that does simple arithmetic (written out in Chinese, of course)?

I don’t see that this makes a significant difference to the argument, so if the Chinese room argument is sound, then its conclusion should stand. Let’s assume that Searle, a philosopher, knows absolutely nothing about meteorology, and is given a weather-forecasting program. To the people outside, it looks as though the room is predicting the weather, however well or poorly. But Searle, inside, has no understanding of what he’s doing. Therefore, by his earlier argument, there is no true weather forecasting, just clever symbol manipulation. Therefore, computers cannot forecast the weather.

I think we can all agree that this is nonsense: of course computers can forecast the weather: they do it all the time. They also find routes between addresses (surely no one thinks that Mapquest has a bunch of interns behind the scenes, frantically giving directions), and all of the other things listed above. In short, if the Chinese room argument worked, it would prevent computers from doing a whole lot of things that we know perfectly well that they can do. The programs may just be clever symbol manipulation, but if the solution can be implemented using sufficiently-clever symbol manipulation, then what’s the problem? (BTW, I don’t imagine that I’m the first person to discover this flaw; I just happened to rediscover it independently.)

The real problem with the Chinese room argument, as I see it, is that in his analogy, he takes the place of the CPU (and associated hardware), and the detailed English instructions are analogous to software. While a statement like “my computer can play chess” is quite uncontroversial, if I were to say “my Intel Pentium can play chess”, people would think that I don’t know what I’m talking about (or at best, ask me to explain myself).

Of course, Searle came up with this argument in 1980, back before everyone had a computer, so perhaps he can be forgiven this misunderstanding. Or perhaps I’m misunderstanding some subtle aspect of his argument, though I don’t think so.

More EULA Stupidity

Weather Underground has a Dashboard Widget for MacOS (basically, a little desktop display that shows the weather and five-day forecast). The EULA contains a standard no-reverse-engineering clause:

You may not alter, merge, modify, adapt or translate the Software, or decompile, reverse engineer, disassemble, or otherwise reduce the Software to a human-perceivable form.

The problem is that dashboard widgets just use HTML, JavaScript, and CSS. They’re just mini-web page.

Or, to put it in non-techie terms: hey, jackasses! The thing that I’m not allowed to translate into human-readable form is already in human-readable form. Dumbasses.