There's Probably Nothing Easier Than Poo-pooing The Atheist Bus Ad Campaign

Posted by bitbutter on October 27, 2008

Atheist bus stop advert mockup, final.

In case you didn't hear about it already, a wildly successful fundraising campaign to put atheist adverts on the sides of london buses is currently underway. The campaign, initiated by Ariane Sherine and Jon Worth, has shown that atheists are a potentially powerful political group, and can join forces to achieve a common goal. At the time of writing the money raised (over £100,000) is about 20 times greater than the target amount.

Inevitably the campaign has been criticised, and misrepresented, in various places.

The impression has been given that Richard Dawkins is leading the campaign (including on the UK satire show 'Have I Got News for You'), which is inaccurate. When Dawkins offered his support for the project, Ariane replied that the campaign should be funded by 'ordinary people', the solution was for Dawkins to agree to match the first £5500 raised. Having Dawkins associated with the campaign certainly gave it an enormous boost in publicity, but despite what some of its detractors would like people to believe, this is not Dawkins' campaign.

A spokesperson from the Christian organisation Theos published a scathing commentary, announcing that Theos had donated £50 themselves since they believed that the slogan was 'so bad' that it would backfire.

"At first, we almost felt sorry for the campaign, as its difficulties showed that there were not many atheists in Britain, and certainly not many who were willing to put their hands in their pocket"

Amusingly, the Theos article has been edited since being published. In light of the campaign's runaway success, certain sentences have been quietly replaced, including the one quoted above (though they didn't yet see fit to correct the false implication that the campaign has been rescued by Dawkins' money).

There have been many comments on the use of the word 'Probably' in the slogan. Religionists and atheists alike have said that it's too wishy-washy, and that it speaks of a lack of conviction. It's worth remembering though, that without the word 'probably', we can be sure that an equally vocal group would be complaining that the slogan describes a dogmatic faith position, since God's non-existence cannot be known for certain.

Although introduced out of necessity, I think that the 'Probably' is an important part of what gives the ad it's conversational tone, lightness and humour. As a passage aimed to get people to consider their beliefs, I think this works much better than a stronger sounding, point-blank statement ever could.

As it is, I think the slogan is perfectly pitched. Of course not everyone's happy with it, but that was always going to be the case. The most important thing is that the slogan has attracted about 7300 individual donations so far, for a value of–it bears repeating–over £100,000.

So if you're one of those who's criticised the wording of the slogan, reflect on the massive level of support that the campaign has received. Ask yourself whether so many people would have been willing to rally behind your favourite slogan; at best, you have no idea.

I really like the tone of the current ad. I'll end with a suggestion for a potential follow-up that I think matches it: "There's probably no God, so it's up to us to help each other."

Atheist outrage over pro-Christian Narnia films

Posted by bitbutter on December 29, 2007

Not really of course. But here's an entertaining parody created in response to the thin-skinned Catholic outrage over the film 'The Golden Compass'.

Parents at a 12:50 showing of "The Golden Compass" in Fort Worth's Eastchase district were both shocked and appalled to find that the movie was preceded by a trailer for the upcoming big-screen adaptation of the novel "Prince Caspian", which some parents fear may cause their children to read a series that promotes spiritual belief and "denigrates Atheism."

"I just can't believe this," said Leah Jones, mother of three and proud atheist. "I can't believe that they would allow children to be exposed to this kind of thing without warning!

What a good idea: the BPR3 blog icon

Posted by bitbutter on November 15, 2007

bpr3.org have made an icon that bloggers can incorporate in their posts when blogging about peer reviewed research. A small, smart, step that should make it easier for us when deciding which articles to trust.

Bloggers for Peer-Reviewed Research Reporting strives to identify serious academic blog posts about peer-reviewed research by offering an icon and an aggregation site where others can look to find the best academic blogging on the Net.

Here's a list of reactions from other blogs to the bpr3 initiative.

Analysing the claim that the Luton CCTV image was doctored

Posted by bitbutter on November 05, 2007

I saw the following image on a blog. It's a CCTV still of the London bombers of "7-7″. The author presents this image and the accompanying legend as evidence that the image has been doctored in Photoshop. In my work as a web developer I deal with compressed photographs regularly and I find these claims of foul play unconvincing to say the least.

  1. The Haversack. A crude job, and it shows.
  2. The Half Leg. How does this person walk at all?
  3. The Iron Face. The bar should be behind. Is there a face?
  4. The Bar Split. The two ends of the crossbar don't line up.
  5. The Split Two. Same problem as above. Must be a twist in space.
  6. The Face Blur. Face has been darkened and blurred -like the others.
  7. The Ghost Bar. Some of this crossbar should be behind the person.
  8. The Something. Another anomalous square area. It must be something.
  9. The Clown Foot. What a large foot -with a halo effect all around.
  10. The Floater. Someone was a bit too heavy with the white reflection.
  11. The Peg Leg. Must be a serious fracture. Also yet more halo effect.
  12. The Shadow. Why wall shadow if the light comes from behind him.
  13. The Square Nose. Must have walked into a door. Interesting eye too.

Here's a version of the photo without the overlay:

"1. The Haversack. A crude job, and it shows."

Not at all. What shows is image compression artifacts and loss of detail.

"2. The Half Leg. How does this person walk at all?"

The leg is foreshortened, exactly as we would expect a leg to look at various moments as a person walks towards us.

"3. The Iron Face. The bar should be behind. Is there a face?"

The bar is behind the face. A highlight on the face appears at the same level as the bar. Hardly remarkable.

"4. The Bar Split. The two ends of the crossbar don't line up."
"5. The Split Two. Same problem as above. Must be a twist in space."

In any photograph there is a chance that lens distortion would prevent a bar like this 'lining up' at either side of an object in front of it. But despite this, the claim that the bars don't line up here is baseless. I've added an overlay here to demonstrate that the lines do in fact line up as we'd expect them to:

"6. The Face Blur. Face has been darkened and blurred -like the others."

Check the surrounding street furniture, notice that it is also blurry and unclear. Recognize that it is the nature of highly compressed images to be blurry and unclear. The image gives us no grounds for supposing that these faces have been deliberately manipulated.

"7. The Ghost Bar. Some of this crossbar should be behind the person"

All of the crossbar is, in fact, behind the person. If you look carefully you'll see that there is a dark shape beyond the crossbar that you are mistaking for part of the body of the person.

"8. The Something. Another anomalous square area. It must be something."

I don't understand why this item is even in the list.

"9. The Clown Foot. What a large foot -with a halo effect all around."

Halos like this one are very common. They are artifacts caused by automatic image sharpening processes that many cameras apply.

"10. The Floater. Someone was a bit too heavy with the white reflection."

The reflection looks perfectly natural considering that the ground is clearly wet, and the man is wearing bright white trainers.

"11. The Peg Leg. Must be a serious fracture. Also yet more halo effect."

The trouser fold looks strange, but is far from suspicious.

"12. The Shadow. Why wall shadow if the light comes from behind him."

The light is diffused and doesn't appear to be strongly directional. It's also far from clear that the 'wall shadow' is actually a shadow of the man at all.

"13. The Square Nose. Must have walked into a door. Interesting eye too."

The nose area is described by only nine pixels, it's hardly surprising that it looks squareish. There is nothing remarkable or unnatural looking about the nose or eye.

Reading this list, I think the author could reach similar paranoid conclusions about any highly compressed digital image.

Face Maker: Where are the eyes in this image?

Posted by bitbutter on October 09, 2007

While watching a friend using Face Maker I noticed that what I had taken to be decorative markings of the cheeks, she understood as eyes. And the shapes that I took to be eyes, she took to be unnecessary markings. I think there's been parallel selection for two separate sets of eyes. Both sets are very widespread among the current population of faces.

Here I've edited out the lower eyes, leaving only the top set:

And here's how it looks with only the lower set of eyes:

I think that voters tend to 'see' one pair more quickly than they see the other, and that once the first pair is recognised, there's a kind of blindness towards the other pair. For instance, before I was aware of the lower set I would have interpreted the previous image as missing eyes altogether.

Which set do you consider to be the real eyes?

Miracles: Some questions for Christians

Posted by bitbutter on October 06, 2007

A long list of miracles are attributed to Sai Baba, for instance it is claimed that he 'materialised' a live monkey during an interview–he maintains that this was no conjuring trick, but that he was using devine power. Why don't I believe him? Because I believe that 'extraordinary claims require extraordinary evidence', and I'm not aware of extraordinary evidence that supports Sai Baba's claim.

If James Randi were to set up a controlled test of Sai Baba's powers, and was unable to demonstrate that he is a fraud, I would assign a greater likelihood to the possibility that Sai Baba is telling the truth. But in the absence of such a test it doesn't seem premature to assume that there is nothing paranormal going on. My guess is that most of us would agree.

Which seems more likely to you:

  1. The reports are true; Sai Baba performs miracles
  2. There is some other explanation for the fact that thousands of people claim that he performs miracles

Which seems more likely to you:

  1. The miracles that Joseph Smith (the father of Mormonism) described really happened
  2. The miracles that Joseph Smith described didn't happen

Which seems more likely to you:

  1. The miracles described in the Qur'an really happened
  2. The Qur'anic miracles didn't really happen

Which seems more likely to you:

  1. The miracles ascribed to Krisha really happened
  2. Krisha's miracles didn't really happen

Which seems more likely to you:

  1. The miracles described in the bible really happened
  2. The biblical miracles didn't really happen

Face Maker: Artificial selection experiment online

Posted by bitbutter on October 02, 2007

Philipp Lenssen kindly gave his permission for me to publish Face Maker, which I've just deployed. I wanted to build an online artificial selection system ever since reading about Richard Dawkins' The Blind Watchmaker programme but Face Maker is an experiment heavily inspired by Philipp's Mutating Pictures project.

A web site is a perfect place to host a project like this that deals with small incremental change. No single user is burdened with devoting hours to 'evolving' the faces. Instead the effort is massively distributed–and continues day and night. Users from all over the world work on collaboratively selecting for face-like appearances.

And participation provides its own rewards. Judging the procession of 'faces' has been strangely hypnotic while using Phillip's site and while working on my own. It's fascinating to see the eerily detailed faces emerging and it's almost tempting to wonder where they come from.

Face Maker differs from the current version of Mutating Pictures in a few ways.

  1. The images are drawn using curved shapes rather than triangles
  2. Both black and white shapes are used, overlapping one another
  3. Images are presented next to one another, the user is invited to select the most face-like image
  4. When one image 'wins' a round, the loser is removed from the database, and the winner gives birth to one child.

Continuing to borrow from Philipp's approach I plan to use this blog post to collect comments and discussion about Face Maker.

Face Maker was built in a feverish 2-day sprint with Ruby on Rails. It could be that some bugs surface, if they do, please accept my apologies in advance.

One of the original images:

Some faces that went extinct:

Underestimating the problem of induction

Posted by bitbutter on September 28, 2007

David Hume pointed out that inductive inferences are not rational, but arise from custom and habit. One way to illustrate this is to think of whether the sun will rise tomorrow. Most of us will agree that the sun is more likely to rise tomorrow than it is not to rise.

But which ever way we explain our judgment about the likelihood of a sunrise, all our explanations depend on the assumption that the future will resemble the past in a fundamental way. To give a more concrete example: We assume that the laws of physics we understand today won't be radically contradicted by how things behave tomorrow.

But what are these assumptions based on? How can we know that the laws of physics that explain the earth's rotation will still hold tomorrow? It seems that we can't claim to know these things, and it's not immediately obvious how we can even assign probabilities to them.

It can feel unsatisfying to think that our expectations about the future are inherently irrational. The presuppositionalist thinks that he has a way out. He believes that a god exists who has promised to maintain the uniformity of nature. We can take the the uniformity of nature to mean that the future will resembling the past in some fundamental way.

There are at least two distinct kinds of problem with this 'solution' though, either of which invalidate it. They can be summarised as follows:

1. We can't trust a god's promise without using induction. So if you're using God's word to justify induction, you're begging the question.

2. Even if nature is uniform, this isn't enough to provide a rational justification for induction, as illustrated by the black swan example.

How to trust God's promise?

According to the presuppositionalist, God has promised to maintain the uniformity of nature, which is needed if inductive inferences are ever going to turn out to be true.

God is all powerful and his word is final so that might seem to settle things. But even if we ignore the so-called biblical evidence which plainly shows that god often changes his mind and breaks his promises, it's not as simple as that.

How do we know to trust someone's promise? In deciding about their trustworthiness we take things into consideration about the one who's making the promise: a particularly important consideration is whether the promise-maker has broken or kept his promises in the past.

To see that this applies even if we're considering a divine promise-maker, think about how you'd react to a new promise from a god who'd made many promises in the past, and broken all of them; even his most devout worshiper would be a fool to trust him.

So the presuppositionalist uses the ideas he has about how his god behaved in the past and comes to the conclusion that god is very unlikely to break his promise about the uniformity of nature in the future. He's using induction.

God never lied to me in the past, therefore God won't lie to me in the future.

But remember that induction is the very thing the presuppositionalist wanted to justify in the first place. The presuppositionalist might protest that he's not really using induction to know that god won't lie. He might say that he knows God won't lie because it's not in God's nature to lie. But all he's done is generate a different inductive equation:

God's nature was X in the past therefore God's nature will be X in the future

Whichever way he chooses to explain his trust in God's word, the presuppositionalist uses induction in his solution. He's assuming what he sets out to prove. This is a fallacy called begging the question. Any defense of rational induction that depends on a god's promise falls into the same trap.

The insufficiency of the UON

The second problem is that even if we know that nature is uniform, we still haven't done anything to provide rational basis for induction. It seems that the only way we could be certain that an inductive inference would turn out to be true is if the universe was uniform, and we knew everything about it. And this is clearly not the case.

While there are things we don't know about the universe, we can never be sure our inductive inferences will turn out to be true. Perhaps the sun, according to some previously unknown feature of our uniform universe will vanish before the sunrise we predicted has had a chance to happen.

All swans we have seen are white, therefore all swans are white

Induction in a uniform universe can, and does, give false results. Karl Popper's example of the black swan illustrates this. So the uniformity of nature, while being necessary in order for us to gain any advantage from our habit of induction, is useless if you want to establish a rational basis for inductive reasoning.

See all posts relating to presuppositionalism.

Step through each model inside a rake task

Posted by bitbutter on September 17, 2007

Sometimes you need to run a rake task that needs to 'know' about all the models in your application.

Here's one such situation that I've run into a couple of times. You've installed (or created) an 'act_as' type plugin that automatically creates a record in another table (eg. 'feed_items') when a new instance of the model it's been applied to (eg. 'post') is created. But because the plugin was added after data had been added to the db you now need to go back and make sure all the Post records have a corresponding record in the feed_items table. If a Post item is found without a FeedItem then one needs to be created.

Rake is good choice for creating this kind of synchronising task that you might need to run more than once. If you don't already have one, create a file called myapp.rake (substituting your app name of course) in myapp/lib/tasks.

Here's the skeleton I use when building tasks like this. Paste this into your myapp.rake file and save it.

desc "Iterates through models in the app and does something with each of them"
task :do_something_with_models => :environment do
  require 'find'
  models=[]
  path="#{RAILS_ROOT}/app/models"
  Find.find(path) do |p|
    if FileTest.directory?(p) and p!=path
      Find.prune # don't recurse into directories
      next
    end
    if p =~ /.rb$/
      puts p
      models << File.basename(p,".*").classify
    end
  end
  models.each do |m|
    puts m
    # Insert code here to do something useful with each model.
    # You can retrieve a collection from the model like this
    # eval("collection=#{m}.find(:all)") …
  end
end

To run this task, cd to the root directory of your application and type

rake do_something_with_models

If all is well you should see a readout of the detected models. Now you can insert code into the models.each loop to do something useful for your application.

N.B This method will only 'see' the models which have corresponding .rb files in your models directory, so models that get created by plugins won't be detected.

Here's a task from a real application that attaches feed items to existing records that should have them. I'm sure it could be improved and optimised, I'm adding it here in case it's useful for others to build on.

desc "Creates feed items for records that might be missing them"
task :create_missing_feed_items => :environment do
  orphan_counter=0
  fixed_counter=0
  require 'find'
  models=[]
  path="#{RAILS_ROOT}/app/models"
  Find.find(path) do |p|
    if FileTest.directory?(p) and p!=path
      Find.prune # dont recurse into directories
      next
    end
    if p =~ /.rb$/
      models << File.basename(p,".*").classify
    end
  end
  models.each do |m|
    c=eval("#{m}")
    if c.respond_to?("new") # is the class an active rcord class that can be instantiated?
      n=c.new
      if n.respond_to?("feed_item") # has the acts_as_feedable plugin been applied to this model?
        c.find(:all,:include=>:feed_item).each do |o|
          if o.feed_item.nil?
            orphan_counter=orphan_counter+1
            if f=FeedItem.attach_to_existing_feedable(o) # try to create a feed item
              puts "#{m} id:#{o.id} no feed_item found, I'm creating one."
              fixed_counter=fixed_counter+1
            else
              puts "#{m} id:#{o.id} no feed_item found, but I failed to create one!"
              puts o.to_yaml
            end
          end
        end
      end
    end
  end
  puts "#{orphan_counter} records were found needing feed items."
  puts "#{fixed_counter} feed items were added to existing records."
end

page_cache_directory gotcha

Posted by bitbutter on September 13, 2007

Lately I started my long overdue experiments with caching. I had some difficulty confirming to myself that rails page caching was working. Following fingertips lazy sweeping article (check it if you didn't already it's can be very handy) I had configured my application to store cache files in public/cache instead of public. The fingertips technique results in the deletion of the contents of the cache folder when doing its 'sweeping' so it's important that this isn't the public folder itself.

Running the application locally (in production mode) the cache files were being generated correctly, but weren't being served back the next time the page was accessed. Eventually it became clear why this was happening. Although I'd modified the public/.htaccess rewrite rules so that apache would know where to find the new cache directory, I wasn't running Apache locally so when I tested this on my own machine the cached files were ignored, and regenerated on each request.

So far I haven't figured out how to configure mongrel to look in the correct place for the cached files but this isn't so pressing since caching does work as expected on the production server.

For anyone in a similar position; to confirm that pages you're seeing in your browser are being served from a cached file (rather than being generated dynamically) cd into your application directory and tail the log file corresponding to the environment your app is running in:

tail -f 100 log/production.log

Then access the page in question with your browser and watch the terminal. Accessing cached pages should bypass rails completely meaning that no new output should show up in the terminal.

Rails Envy Caching Tutorial