Line by line

Through iTunes University , I’m following along in the lectures of a Yale course on modern American literature, authors like Hemingway, Faulkner and Fitzgerald. The professor talks about three registers of analysis: the macro, middle, and micro registers. At the micro register, the focus of the analysis is on things like the role of sensory information such as smell or sound. At the middle register, the focus of the analysis is on how authors of the time would experiment with narrative structure, such as the non-linear approach that Faulkner uses in The Sound and the Fury. At the macro register, the focus is on the larger historical context of the books. It’s only at the micro-level that you can do analysis by examining individual sentences. And, yet, the only way an author can write a book is to generate it by indvidual sentences.

We also talk about software at different levels of analysis, such as architecture for the higher levels, design patterns for the middle level, and lines of code at the micro level. There’s long been a yearning to be able to create new software by working at a higher level of abstraction. In today’s jargon, this is known as model-driven-development, where some kind of high-level graphical or textual model is created, and then is ultimately transformed into code. And this approach has found success in certain niches, such as Simulink, LabView, and Yahoo! Pipes.

For most applications, I suspect that the only way to write the software will continue to be the same as the only way to write novels: line by line.

Publications trump ideology

Dylan Matthews interviews Sasha Issenberg, the author of “The Victory Lab”, which is about  how political campaigns are increasingly applying social science research techniques.

It turns out that Democrat campaigns tend to apply these techniques more than Republicans, unsurprisingly, since academic researchers with knowledge of these techniques tend to lean left. However, Matthews notes that a lot of the important research in this area was done during the campaign of Republican governor Rick Perry in 2006. And why is that? According to Issenberg:

The reason Perry developed that partnership is that he made them an unusual offer, which is that they could publish their work.

Via Kevin Drum.

Training is a dirty word

Two posts caught my eye this week. The first was Anil Dash’s The Blue Collar Coder, and the second was Greg Wilson’s Dark Matter, Public Health, and Scientific Computing. Anil wrote about high school students and Greg spoke about scientists, but ultimately they’re both about teaching computer skills to people without a formal background in computing. In other words, training.

In the hierarchy of academia, training is pretty firmly at the bottom. Education at least gets some lip service, being the primary mission of the university and all. But training is a base, vulgar activity. And it’s a real shame, because the problems that Anil and Greg are trying to address are important ones that need solving. Help will need to come from somewhere else.

Relative confidence in scientific theories

One of the challenges of dealing with climate change is that it’s difficult to communicate to the public how much confidence the scientific community has in a particular theory. Here’s a hypothesis: people have a better intuitive grasp of relative comparisons (A is bigger than B) than they do with absolutes (we are 90% confident that “A” is big).

Assuming this hypothesis is true, we could do a broad survey of scientists and use them to rank-order confidence in various scientific theories that the general public is familiar with. Possible examples of theories:

  • Plate tectonics
  • Childhood vaccinations cause autism
  • Germ theory of disease
  • Theory of relativity
  • Cigarette smoking cause lung cancer
  • Diets rich in saturated fats cause heart disease
  • AIDS is caused by HIV
  • The death penalty reduces violent crime
  • Evolution by natural selection
  • Exposure to electromagnetic radiation from high-voltage power lines cause cancer
  • Intelligence is inherited biologically
  • Government stimulus spending reduces unemployment in a recession

Assuming the survey produced a (relatively) stable rank-ordering across these theories, the end goal would be to communicate confidence in a scientific theory by saying: “Scientists are more confident in theory X than they are in theories Y,Z, but not as confident as they are in theories P,Q”.

A point of view is not a bad thing

In the North American tradition of journalism, it is considered inappropriate for journalists to have actual opinions about the news stories they are covering. But humans have opinions, and everybody knows that, so suppressing this is a ridiculous fiction. What’s pernicious about this tradition is that journalistic writing is more compelling when authors write in their own voice, instead of the detached view from nowhere  shtick that Jay Rosen (rightly!) complains about. It’s even worse in analysis-type pieces, because the journalist is supposed to express their opinion in the piece, but aren’t allowed to do so explicitly, so what happens instead is they find sources they agree with, and then publish quotes from those sources.

This piece by Dave Weigel from a few days ago is an example of the kind of journalistic writing that becomes possible  if a journalist writes in their own voice. Great stuff, and the Washington Post is much poorer for having let him go.

When something you believe is false

When you’re programming, and the program you’re working on behaves in some way you don’t expect, then by definition there’s some assumption you’ve made about the system that’s incorrect.
Today I was working on adding some fields to a Django admin interface, and I got an unexpected error message when I tried to create a new object in the admin interface and save it. The code was very similar to other code I had previously written that already worked, so I tried to figure out what was wrong by identifying the difference.

The important difference I couldn’t see was that the name of a variable was the source of the problem. In this particular case, the field name (image) was colliding with the field name in a grandparent class, which caused the error to occur. I hadn’t considered that the name of the variable was a meaningful difference that could cause a problem, until I did a search on Stack Overflow and found someone who encountered a similar problem.

This is one of the hardest parts of programming: being able to systematically test your assumptions until you discover which of your current beliefs are false.