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.

The Worst README in the World

While trying to install some drivers on a machine, I ran across for them.

CONTENTS

1.0	About this README file
1.1	  Who should read this README file
1.2	  How to get help
2.0	IBM2105.RTE Change History
3.0	Procedure for upgrading AIX OS, Host attachment, and/or SDD
4.0	User license agreement for IBM device drivers
4.1	  Background / Purpose
4.2	  Definitions
4.3	  License grant
4.4	  Responsibilities
4.5	  Confidential information
4.6	  Limitation of liability
4.7	  Termination
4.8	  Representations and warranties
4.9	  General provisions
5.0	Appendix A
6.0	Notices
7.0	Trademarks and service marks

How anal is it to include a table of contents in a README? I just hope that the section numbers are updated automatically. It would really suck to be the guy in charge of manually renumbering the table of contents when someone edits the file.

At any rate, note that the only interesting part is section 3.0, the actual installation instructions. That section reads, in full:

3.0  Procedure for upgrading AIX OS, Host attachment, and/or SDD

     Please refer to the latest SDD readme file for the detailed procedure.

Wow. Three lines. Out of a 522-line file. And all to say “this is not the file you’re looking for.”

I think the stick up IBM’s ass has officially taken over the entire company.

Fabric Brain Art

The Museum of Scientifically Accurate Fabric Brain Art.

Fabric brain

On one hand, people like this obviously have too much time on their hands. On the other hand, damn, that’s cool!

(HT Neurodudes,
Fresh Brainz.)

Truncated Songs on iPod

Every so often, I’ll update the MP3 file for a given song. For instance, if I record an LP to MP3, then buy and rip the CD, I’ll just update the MP3 file on the back end and tell iTunes to reread it (with open -a itunes /path/to/file.mp3, for those who care).

Unfortunately, when I do this, I’ve noticed that iTunes plays the new file properly, while the iPod tends to hang a few seconds befor the end of the song, or, in more extreme cases, reset itself.

Read More

Making Emacs Do Stuff at Startup

Like many users, I start an emacs session in .xinitrc and use it throughout the day. Since I’ve recently started using Emacs Planner, I wanted it to start up automatically in that first Emacs session (but not subsequent ones, if I just want to edit a file).

Read More

Soft Coding

Over at Worse Than Failure, Alex Papadimoulis has an article on soft coding. Hardcoding is when something is written in the code when it ought to be in a header constant or an external config file. Soft coding is the opposite, when something is put in a config file that really ought to be in the source. For instance, the number of days in a week isn’t likely to change any time soon, so you may as well just use “7” in your code. You might

#define DAYS_PER_WEEK 7
#define WEEKS_PER_YEAR 52
#define LOAN_DURATION DAYS_PER_WEEK * WEEKS_PER_YEAR

to make it clear what you’re calculating, but putting it in an external, user-configurable file is just absurd.

I’m guilty of softcoding, myself. In my experience, it comes from trying to be too generic. Code that’s too specific, too hardcoded, is hard to maintain and extend, so a good programmer will ask himself, “What requirements might change in the future? How should I write this so that when it changes, I can do it without too much pain?” This leads to things like declaring configuration constants at the top of a script, in a Makefile, or in a header file; or having the code read messages from an external file, rather than hardcoding them as strings.

But it’s also easy to overcompensate, and start making everything customizable, or overly generic. So it’s important to remember that at some point you have to actually make the code do something.