In 1952, Sight and Sound magazine followed up a Belgian poll of directors’ favourite films with a similar referendum, this time for critics. The result was sixty-odd top-ten lists and an aggregate “ten best films”, with Vittorio De Sica’s Bicycle Thieves coming in at number one.
The poll would be of relatively little interest if it had ended there, but it was repeated in 1962 — and 1972, 1982, 1992, 2002… Collected, the lists show the evolution of the cinematic canon (or at least the critical zeitgeist, which may not be precisely the same thing) over the last half-century. For example: 1962 saw Citizen Kane move to first position, where it’s stayed ever since, but in 1952 it shared thirteenth. Ten years later, it was even further in front.
I suppose that watching items move up and down lists is only of interest to a certain kind of person, but that kind of person is me. It’s annoyed me no end that so many of the websites collecting lists of greatest films only provide the S&S aggregate top tens: those by individual critics offer much greater variety, as well as scope for more interesting statistical projects.
To that end, now that I’ve dug up the original magazines, here they are in full (or close to it):
The BFI has graciously put all of the 2002 results online already.
Not every list was published in the magazine, though from 1962 onwards the effort was made. I haven’t included the comments, many to the effect of “you bastards, how can I pick just ten?”
There’s a remarkable range of creative interpretations of the words “top ten films”. Some included twelve or fifteen. Some included single entries like “The Apu Trilogy” (really three films), “Chaplin’s Mutual films” (more than ten), and in one case “Anthology of the works of W. C. Fields” (more than thirty). Some picked small extracts — like a single musical number — over films entire. One picked a specific, unreleased cut, subsequently destroyed by re-editing. Some sent in lists of directors.
Please forgive any missing diacritics: the OCR was hard on them, and I’m willing to sacrifice a cedilla here and an acute there to save time. All other corrections are welcome.
Drupal 4.2.0 was the first CMS I ever installed, back in 2003. A few weeks later it became the first CMS I botched an upgrade to, at which point I moved on to other pastures.
That was that until last week, when John demanded help with a custom module for his mountaineering club site, to enable users to enter unique codes in their profile area and have their membership “upgraded” to a new role. I gather the point is to pass out the codes in meatspace when members join or pay their dues — it’s a clever idea.
A day or three later and the result was this module.
Most of my experience developing plugins for other people’s PHP comes from WordPress, so it was interesting to use such a dramatically different API. WordPress requires explicit registration of hook functions, e.g.
add_action("edit_post", "my_edit_post_action");
But Drupal uses magic function names. If you have a module called “mymodule“, any function called mymodule_init will be automatically hooked into hook_init.
It’s an elegant solution, though I favour the Pythonic “explicit is better than implicit” philosophy too much to be comfortable with it.
One of the best (and worst) things about the whole experience was the Forms API. Instead of writing HTML, you just write some code like this:
function mymodule_form() {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#description' => t('What are you called?')
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Yield!'),
);
return $form;
}
Hook the function in at the appropriate place, and Drupal renders it, themed prettily, with anti-CSRF nonces already handled. More magic functions, hooked in as mymodule_form_validate() and mymodule_form_submit(), can be used for validation and form submission actions respectively.
As always, the downside of a leaky abstraction is that customizations not provided for in the API are much harder than they should be, but I expect that the vast majority of modules never have any problems.
Drupal has lots of other niceties missing from WordPress too, like the watchdog logging system and documentation that doesn’t suck. I have issues with it as a user — the learning curve for administration is comparatively steep — but it’s flexible, powerful, and easy to extend. As a developer I’m extremely impressed.
I wanted to have some Bayesian fun in a user-script, so did a quick JavaScript port of the fabulous Divmod Reverend Python module.
It’s somewhat limited, but dead easy to use:
var guesser = new Bayes();
guesser.train("hannibal", "I love to kill people and eat them.");
guesser.train("austen", "Come, let us have tea and scones in Mr. Bingley's gazebo.");
guesser.guess("Jane, these scones are simply delightful!");
// [["austen", 0.9999]]
guesser.train("hannibal", "I love to kill people and eat them with tea and scones.");
guesser.guess("Give me those scones or I'll kill and eat you.");
// [["hannibal", 0.9481433307479079], ["austen", 0.6203339133520634]]
It’s missing some stuff, but does enough to be getting along with.
As a test application, I went on and wrote up one of the examples given in the Reverend docs: a script to tell whether you write more like Charles Dickens or Jane Austen. It’s both pointless and inaccurate, but I suppose it qualifies.
It seems to be a Greasemonkey kind of month. IMDb ratings are fuzzy in the middle, so Tom Moertel made a decoder ring listing what the rating means in terms of the movie’s per-genre percentile ranking. Leprechaun 5’s 3.2 rating seems bad enough even with an even distribution; in reality, it has a worse rating than 90% of movies in the database.
Anyhow, this userscript puts the data conveniently inline.
Before:

After:

- Flow is the feed. It's the posts and the tweets. It's the stream of daily and sub-daily updates that remind people that you exist.
- Stock is the durable stuff. It's the content you produce that's as interesting in two months (or two years) as it is today. It's what people discover via search. It's what spreads slowly but surely, building fans over time.
Supposedly "anonymous" datasets have a history of revealing far more personal information (including identifying details and details which could reasonably be considered private, such as sexuality) than intended.
Fascinating:
English spelling may be the most idiosyncratic, [...] But spelling is ancillary to a language's real complexity; English is a relatively simple language, absurdly spelled. [...]
For sound complexity, one language stands out. !Xóõ, spoken by just a few thousand, mostly in Botswana, has a blistering array of unusual sounds. Its vowels include plain, pharyngealised, strident and breathy, and they carry four tones. It has five basic clicks and 17 accompanying ones. [...]
Beyond sound comes the problem of grammar. On this score, some European languages are far harder than are, say, Latin or Greek. Latin's six cases cower in comparison with Estonian’s 14, which include inessive, elative, adessive, abessive [...]
Death Bear will [come to your house and] take things from you that trigger painful memories and stow them away in his cave where they will remain forever allowing you to move on with your life.
Amazing (fake?) covers for an Inglourious Basterds 70s-Marvel comic adaptation. I would love a print of #5!
The time will come
when, with elation
you will greet yourself arriving
at your own door, in your own mirror
and each will smile at the other's welcome,and say, sit here. Eat.
You will love again the stranger who was your self.
Give wine. Give bread. Give back your heart
to itself, to the stranger who has loved youall your life, whom you ignored
for another, who knows you by heart.
Take down the love letters from the bookshelf,the photographs, the desperate notes,
peel your own image from the mirror.
Sit. Feast on your life.
Mary Harron:
We talked about how Martian-like Patrick Bateman was, how he was looking at the world like somebody from another planet, watching what people did and trying to work out the right way to behave. And then one day he called me and he had been watching Tom Cruise on David Letterman, and he just had this very intense friendliness with nothing behind the eyes, and he was really taken with this energy.
np312:
I grew up in a college town, and one Halloween our doorbell rang and we opened the door expecting to see trickortreaters-- but what was in front of our open door--was another door! Like, a full-on wooden door, that had a sign that said "Please knock." So we did, and the door swung open to reveal a bunch of college dudes dressed as really old grandmothers, curlers in their hair, etc, who proceeded to coo over our "costumes" and tell us we were "such cute trick or treaters!" One even pinched my cheek. Then THEY gave US candy, closed their door, picked it up and walked to the next house.
It was amazing.
Isaac Schlueter:
[O]ur conventions for naming things should take into consideration the limitations of the human brain. The length of a variable's name should be proportional to the distance between its definition and its use, and inversely proportional to its frequency of use.
Global config setting that gets specified once and used in 4 places throughout the program? 10-20 characters is probably appropriate. Might wanna go with UPPER_SNAKE_CASE to make it stand out a bit more, even.
Iterator variable that you define in a 3-line for loop and then never see again outside of it? Call it "i".
Another way to look at this: The first time you meet someone, you learn their full name. When discussing them with someone else who knows them, you use just a single name. If they're standing right there, you don't bother using their name, but just make eye contact, and maybe a "Hey". Should be the same way with variables.