Archive for the 'Science' Category

Jun 28 2010

How filtered-accumulate generalises accumulate

Published by Dougal under Maths & Computer Science

I posted a couple of days ago about one of the earlier exercises (ex1.33) in SICP. After some discussion with Brent Yorgey on Facebook I had another look at some of the definitions given in the book. Yes, if in doubt, re-read the question! :-)

The issue that needed clarified was whether I could justify treating the null-value argument as a full-blown identity element. The text says:

a null-value that specifies what base value to use when the terms run out.

(It’s worth noting that the definition of combiner also isn’t specified very well: a “procedure (of two arguments) that specifies how the current term is to be combined with the accumulation of the preceding terms”.)

This isn’t abundantly clear but it suggests that null-value is the last element that can be included in the calculation, so that:

5 + 4 + 3 + 2 + 1 + 0

is allowed but

0 + 1 + 2 + 3 + 4 + 5

is not allowed, because I’m starting with my null-value (ie, 0) and adding the remaining values to it. In this case there is no difference in result. So I needed to find a situation where some element work as an identity on the right but not on the left. Wikipedia to the rescue!

The number 1 as an identity element for exponents if it’s the power but not if it’s the base. Using ^ as an infix exponent function, for any x:

x ^ 1 = x

but

1 ^ x = 1

We can create a chain of odd-numbered exponents to test our implementations of filter-accumulate:

(define (odd-exponent-chain a b)
  (filtered-accumulate odd? expt 1 identity a inc b))

An implementation of filtered-accumulate which cleaves as closely as possible to the definitions should implement (odd-exponent-chain 2 6) as (expt 3 (expt 5 1)).

This conclusion that null-value only works as a right-identity has further repercussions — most of the answers published for iterative version of accumulate are wrong. Why?

(define (accumulate combiner null-value term a next b) 
  (define (go acc n) 
    (if (> n b)
        acc
        (go (combiner acc (term a)) (next n)))) 
  (go null-value a))

The iterative versions always start with the null-value in the accumulator and slowly combine each new term until the end. But the definition above clearly states that null-value is to be combined with the results when there are no more terms left.

This is possible but not as elegant as the recursive solution by a long shot. There’s probably a good way of cleaning it up that I haven’t spotted yet.

(define (accumulate-iter combiner null-value term a next b)
  (define (go acc n)
    (if (n > b)
        (combiner acc null-value)
        (go (combiner acc (term n)) (next n))))
  (if (a > b)
      null-value
      (go (term a) (next a))))

Having got this far we realise we can no longer implement filtered-accumulate in terms of accumulate: the first term forms the seed for the accumulator whether it is appropriate or not. In this case we do have to create a new filtered-accumulate which is more powerful than accumulate on its own.

(define (filtered-accumulate-iter filter combiner null-value term a next b)
  (define (go acc n)
    (if (n > b)
        (combiner acc null-value)
        (go (combiner acc (term n)) (next n))))
  (define (start n)
    (cond ((n > b) null-value)
          ((filter n) (go (term n) (next n)))
          (else (start (next n)))))
  (start a))

After all this it seems prudent to ask “who’s being pedantic here?” and whether the mistakes identified are the right ones.

  • The lack of formal specification of parameters like null-value encourages assumptions. Most people doing these exercises assumed that null-value works as an identity element per the examples of (+,0) and (*,1). These examples reinforced rather than highlighted the assumptions.
  • With this assumption it is possible to implement filtered-accumulate in terms of accumulate, contra the question. I haven’t found an instance online where someone spotted this mismatch.
  • The “obvious” ways of writing the iterative and recursive accumulate have different semantics if you don’t pay close attention. (Which is another way of saying one of them is wrong.) Hence the problem with making poor assumptions.
  • The only way that requires a rewrite of filtered-accumulate is one that doesn’t assume a left-identity element.
  • There is an official tutor’s book published but not available online (presumably to prohibit cheating for universities who use this textbook). So we don’t know what the writers had in mind when they wrote that section.

It’s been an interesting few days of thinking! Many thanks to Brent for making me re-examine the text and my assumptions a further time. I think we got to the bottom of it in the end.

2 responses so far

Jun 26 2010

Does filter-accumulate generalise accumulate?

Published by Dougal under Maths & Computer Science

My latest interesting thought while doing the exercises in SICP is a bit confusing because the book is suggesting something which seems wrong. In Exercise 1.33, after creating a function accumulate (a kind of fold without lists where the start and end values are specified) it asks:

You can obtain an even more general version of accumulate by introducing the notion of a filter on the terms to be combined. That is, combine only those terms derived from values in the range that satisfy a specified condition. The resulting filtered-accumulate abstraction takes the same arguments as accumulate, together with an additional predicate of one argument that specifies the filter. Write filtered-accumulate as a procedure.

The tricky bit I see is the “even more general version” instruction. As far as I can tell filtered-accumulate can be written in terms of accumulate. It’s not more general or more powerful than the plain accumulate.

The previously-defined accumulate takes the following arguments:

  • a null-value and a combiner-function (which is to say the binary operator and identity for some monoid)
  • a pair of numbers representing the start and end value in the range we want to accumulate over
  • a function which maps values in this range to values in the monoid described above (and it could be the identity)
  • a function to get to the next value in the range given the current one

My (recursive) accumulate looks like this:

(define (accumulate combiner null-value term a next b)
  (if (> a b)
    null-value
    (combiner (term a) (accumulate combiner null-value term (next a) next b))))

Exercise 1.33 wants you to pre-filter values so that they don’t all get added together. Only those a which pass some predicate get combined into the result. But since the combining function comes specified with a null value it’s not necessary to skip over undesired results. All we need to do is convert any values which fail the test into the null value.

Put it this way: given a list of numbers between one and ten, you could find the sum of primes by either removing all the non-primes, or converting them into zeroes, because adding zero doesn’t affect the result. Similarly if you want the product of odd numbers between 14 and 103 you can filter out all the even numbers or turn them into 1s, because multiplying by 1 doesn’t affect the end result.

And it just so happens that there is already a way in accumulate to convert numbers before they are combined together, the term argument. This is used to square input values or apply some other function. The key argument is that this function can check if the input meets some criterion and then either process it further or replace it with null-value.

(define (filtered-accumulate filter combiner null-value term a next b)
  (define (filterterm n) (if (filter n) (term n) null-value))
  (accumulate combiner null-value filterterm a next b))

All the solutions to this exercise that I have seen online basically re-implement the rest of accumulate with extra filtering. This doesn’t seem to be necessary. My implementation above works for the following two exercises (sum of squares of primes, and product of all relatively prime integers).

But the exercise plainly says that filter-accumulate is “an even more general version of accumulate”, which to my mind means that filter-accumulate should be able to produce answers which standard accumulate cannot. (And that filter-accumulate cannot be implemented in terms of accumulate.) What is the counter-example that I’m missing, or is the book wrong?

Note: I’ve starting putting my solutions for the SICP exercises online, at http://www.dougalstanton.net/code/sicp/.

One response so far

Jun 19 2010

Initial thoughts on SICP study group

A few weeks ago I mentioned the idea of a study group at work, for the purpose of reading through some programming-relevant texts and discussing them. We’ve been working on Structure and Interpretation of Computer Programs (SICP) for a few weeks now. I’m enjoying it more than I expected. The exercises are mostly within grasp and I’m happy to note that I’m not being left behind intellectually. There are a few mathematical proof exercises I’ve been skipping and some of the more boring “run this computation by hand” are not worth taking to completion once you’ve seen the basic point. But mostly we’re following the exercises as planned.

Scheme is not so interesting so far. The parentheses still bug me and we haven’t got to the stage where dynamic typing has proven useful so I’m smarting from the lack of a decent type system. From what I remember when I skimmed the book in the past most of Scheme development involves creating ad hoc type systems in the runtime. :-) Many people insist that dynamic languages are good for something so hopefully this something will become apparent.

I have enjoyed several of the exercises which require rewriting recursive algorithms in an iterative style. Seeing the contrast and thinking up different routes to the end product is fun, and I’m glad we’ve got a unit test framework (SchemeUnit) to help in that regard. I tried to track down a Scheme version of QuickCheck but while one used to exist it’s disappeared off the net.

No responses yet

Feb 07 2010

Global warming, MMR, and media “scandals”

Published by Dougal under Bad Science

It looks like the recent series of non-events relating to climate research and global warming have legitimised/mobilised the denialist factions of the Conservative party:

Most Conservative MPs, including at least six members of the shadow cabinet, are sceptical about their party’s continued focus on climate change policies, it has been claimed.

The recent furore around “Climategate” has hardened the views of Tory MPs, many of whom were already unconvinced by the scientific consensus, and has led to increasing calls for the issue to be pushed down the priority list.

I’m beginning to think that Climategate should be re-labelled “the media’s global warming hoax” because I’ve yet to see any article about the story that even approximately tells what we know. Every story serves to reiterate the general sense that there was falsification, manipulation of data or deletion of data series or correspondence — none of which is true.

As time goes on each “smoking gun” gets put into clear context and shown to be nothing of the sort, but the aura of suspicion — all these hundreds of stories about dishonesty — doesn’t disappear. It’s just now part of common knowledge that the scientists at the University of East Anglia’s Climate Research Unit (CRU) were doing bad science, even if every individual claim made about the research is untrue.

Which is how so many of the comments on this interview with Phil Jones (director of the CRU) are so disgusting:

I thought of killing myself, says climate scandal professor Phil Jones

Why didn’t you? Because you are a coward! Just like the rest of your free loading, elitist,socialist hack buddies living off free money from socialist governments to which you sell your soul and junk science!!! Go to hell and take your ilk with you! Miserable lowlife scum!

and

Jones, Mann and Hansen should all lose their degrees for what they have done to science. They have taken over $100 billion, ruined every new science book for two generations, poisoned science education with environmental BS and political correctness. These guys should be pushing brooms and driving cabs.

This is exactly the behaviour exhibited by the anti-vaccination crowd recently, when the GMC finally found Andrew Wakefield to have acted unethically — this from the pen of famous US anti-vaccination campaigner Jenny McCarthy:

The retraction from The Lancet was a response to a ruling from England’s General Medical Council, a kangaroo court where public health officials in the pocket of vaccine makers served as judge and jury.

Appeals to conspiracy and perceived political consequences without an attempt to grapple with the science. Every one of those commenters on the interview with Phil Jones knew that he was a lying, mendacious bastard, though there is no evidence of it at all; and every single one of Andrew Wakefield’s supporters knew there was a link between MMR and autism when they gathered to support him at the GMC hearing:

We have come here to show him we believe in him. There has been a witch-hunt against him when all he was trying to do was help people.

Of course, there was no evidence of that either. There has been very little soul-searching on the part of the media since the GMC verdict — indeed, plenty of “bad doctor done bad!” stories but very little admission of their own part in the sordid tale. I don’t hold out much hope for a change of tack over their coverage of Climategate and the later “scandals”, regarding the Himalayan glaciers or Amazon rain forests. From what I have read so far, the opinion pieces continue to lecture scientists on the benefits of self-criticism and humility. Irony is dead.

ETA: Two recent links a week after I wrote this piece, but providing good background information. The first is Real Climate with some background information on the IPCC itself and the various errors that have been highlighted. The second is a look at the principal journalists behind this spate of alarmist articles about climate change conspiracies.

2 responses so far

Feb 05 2010

Documentaries and Ofcom

Published by Dougal under Bad Science, Politics

Some of you might remember a TV broadcast from a couple years ago called The Great Global Warming Swindle. The central thesis, that cosmic rays are the central cause of global warming, has been long disproved. (To make the film-makers’ case more appealing they, uh, “omitted” the last 30 years of data.) Two of the interviewees filed official complaints with Ofcom because their views were misrepresented and their scientific findings distorted in order to show the opposite effect. The producer has previous record on this point and it’s a wonder anyone wants to work with him at all.

I bring all this up to mention that I saw the Ofcom summary by accident the other day:

However, whilst Ofcom is required by the 2003 Act to set standards to ensure that news programmes are reported with “due accuracy” there is no such requirement for other types of programming, including factual programmes of this type.

You heard it here first — factual programmes do not have to be factual.

It seems documentaries, or programmes which look like documentaries, do not have to hew to anything we might call reality. Graphs, figures and statistics can be pulled out of the producer’s… hat and this wouldn’t matter.

The remainder of the ruling makes for some quite depressing reading. You can get away with whatever you want if you introduce your detractors as “the orthodoxy”, mention that they represent a “distortion of a whole area of science” and that they are conspiring to “invok[e] the threat of climatic disaster, to hinder vital industrial progress in the developing world”. Because despite all that you are letting the opposing view have a say. The excuses can stretch even further if your programme is viewed as being “polemical”, as if unsubstantiated nonsense is its own rightness.

Totally unrelated to the above, the same document also contains other rulings, the last of which quite amused me. It was regarding a complaint against subscription-only SportXXXGirls, in which the female presenters “perform[ed] explicit sexual acts” and “invited viewers to contact them for ‘adult chat’ via a premium rate text service”. The complaint was that the “live chat” was a repeat from the week before, which wasn’t obvious (unless you’d seen the previous screening, I guess…). I can only imagine how often they get complaints like this — I don’t know how many people consider complaining about subscription porn channels — but the result was that “Ofcom viewed the recordings supplied and noted that the material shown on the 10 February 2008 was a repeat of that shown on 3 February 2008”. What a strange job…

One response so far

Jan 29 2010

Dilution of trust: homeopathy for sale at Boots

Published by Dougal under Bad Science, Health

Tomorrow (that is, 30 January 2010) there are going to be a number of demonstrations/protests outside branches of Boots, under the general name of the 10:23 campaign. At 10:23, a bunch of not-very-brave people will be “overdosing” on homeopathic pills. I think the plan is that each person takes a bottle full. This will, of course, have no downsides whatsoever because there is nothing in it.

The point in this case is not to point out the stupidity of homeopathy to the people in the street, though it will no doubt do that. It’s to make the point that Boots sell these things — have whole aisles devoted to these little white pills — even though they admit there is no evidence for their effectiveness. There are even Boots-branded homeopathic pills on the shelves! And at the same time they sell you something useless, they want you to know that their pharmacists are trustworthy enough to dispense medicines with active ingredients, and give advice about these medicines.

I leave you with James “the Amazing!” Randi, to explain the absurd details of homeopathy in his wonderful way:

No responses yet

Oct 28 2009

What is this simulated annealing stuff anyway?

A couple of days ago I mentioned implementing simulated annealing for my comicbake program so I thought I would take some time to explain what that means and why it’s helpful. I’m sure there are some curious souls out there wondering what it’s all about!

He is seeking it, seeking it, all his thought is bent on it.

Let us start with a discussion of search.

Search is what you do when you don’t know how to get something by straightforward means. The type of search you do depends on what you’re looking for. Sometimes you know the goal but want to know how to get there. How to get from A to B is literally the problem solved by route-finding programs like Google Maps. The other type of search is where you don’t know what the goal is but you know what properties it has. You don’t know what your next chess move might be until you examine the board, but ideally it would involve not losing any pieces, and maybe gaining one of the opponent’s pieces.

Some searches are completely “uninformed” and will examine all possible solutions. This is obviously quite slow, so is avoided in all but the smallest of cases.

A simple improvement is to assume that any small change that improves the current solution can be used as a starting point to hunt for another small change. This is called “hill-climbing”, as we slowly ascend the terrain of the search space towards the highest point. An uninformed search would walk back and forwards across the landscape in a regular pattern as if looking for a contact lens. Hill climbing would never go back down hill, but follow the steepest course up hill.

The Gloaming from Beinn Bheoil.
The Gloaming from Beinn Bheoil.
© Iain Gillespie

The trouble with hill climbing, as any ramblers out there will know, is the minor summits. You get to the top of a small hill which seemed so all-encompassing, and you realise it actually stands in the shadow of a more massive peak. And to get onto that peak, you have to go downhill. Standard hill-climbing search doesn’t know there are other peaks and won’t ever go downhill to find them. It gets stuck in the foothills.

Simulated annealing is one further improvement to standard hill climbing search. It allows us to go down instead of up sometimes, if the direction we have chosen takes us down. We won’t always go downhill, as we want the gradual trend to be upwards, but a small proportion of downhill treks will help us avoid being trapped on the little peaks. To continue with the hill-climbing theme we can decide that the chances of going downhill as well as up should depend on how energetic we feel. Early in the day we may be willing to strike out in search of new peaks, but as the day wears on and the legs begin to tire, the adventurous spirit wanes.

Search with simulated annealing helps to avoid being trapped in locally good areas. The name in fact comes from the process of heating worked metal and cooling it very slowly — the molecules in this case are affected by temperature, allowing them to break out of their warped crystalline structure and slowly form better bonds as the temperature drops.

There were minstrels and mountebanks and harpers and clowns

What does all this have to do with where we started? With comic strips? You can probably see, in some vague way, how the search process might work if we actually wanted to find the tallest point in a range of hills, but how does this translate to the actual problem at hand?

In case there is any confusion, the problem at hand is choosing the best location to place speech bubbles on an individual panel of a comic strip, so that none of the bubbles overlap each other or hide the characters’ faces. Rather than jumping straight in to the solution we’ll work up to it slowly.

It helps to consider the problem in terms of the degrees of freedom we have at any point. How many things can we change at any step of the problem, in order to make the situation better or worse (ie, to ascend or descend our metaphorical hill)? If we were doing an actual hillwalk we could define our location in terms of x and y co-ordinates (such as latitude and longitude), and for every co-ordinate there would be a unique, corresponding height. Think of it as an association from co-ordinate to height:

(x,y) → Height

Here we have two degrees of freedom, as we can change each of the x and y co-ordinates independently to change our height.

In some situations you have more degrees of freedom. If you’re walking around your house looking for mobile phone signal you might also wave the phone in the air, or stand on the kitchen table or anything else if you think it will work. In this case you’re changing x, y and z co-ordinates. The value which changes is signal strength, and you’re trying to find the combination of co-ordinates which maximises signal.

(x,y,z) → Signal

This situation has three variable aspects, but other situations will have more. Every time we increase the number of variables the problem gets harder. Next you might imagine having to solve this problem to get several compatible solutions. If two people want to use their mobile phone at the same time they both can’t stand in the same spot. Now we need two places where the signal is strong! We can increase this to three, four, five…

But let’s pull things back a bit. If there are two mobile phone users in the same general area they both want good signal. We’ll say for the sake of explanation that we have three people waiting for really important calls:

Phone1(x,y,z) → Signal1
Phone2(x,y,z) → Signal2
Phone3(x,y,z) → Signal3

We want to maximise the sum of all the signals, so that everybody gets a good quality connection.

Maximise (Signal1 + Signal2 + Signal3)

To maximise the signal across all the phones we still only have the options of changing x, y or z for each. If we number each co-ordinate of each phone — so that Phone1 is located at point (x1,y1,z1) — we can see that we really need to maximise the following function:

(x1,y1,z1,x2,y2,z2,x3,y3,z3) → Overall Signal

That’s a lot of choices! And the more things there are to change, the harder the problem is and the more likely that we’ll waste time changing things which don’t affect the overall problem.

(The astute might have noticed that if everyone starts off with okay signal, we might be able to give someone really great signal at the cost of bumping someone else into a signal black hole. Overall the sums might not change, or they may prefer the unfair arrangement to the fair-but-mediocre one. We can avoid this by careful planning.)

Johnny Boo, Twinkle Power
Johnny Boo, Twinkle Power
© John Cooper

Now back to the problem again. We’ve got a selection of bubbles that all have to occupy unique places on the comic panel. There are a few places which they definitely can’t occupy (the space occupied by characters’ faces) and they also shouldn’t be out of order otherwise the comic won’t make much sense.

This is more or less the same as the mobile phone example without the ability to change z co-ordinate. For simplicity we actually invert the sense of the search — what we’re trying to do is find sea-level rather than the highest peak, though the principle is identical. To do that we invent a set of guidelines, and breaking each guidelines induces a penalty, or “cost”. The search process is trying to find an arrangement which reduces the cost to zero by not breaking any guidelines.

If we’re finding the ideal arrangement of three speech bubbles then this is the function we have to minimise. Notice the similarity to all the others before:

(x1,y1,x2,y2,x3,y3) → Cost

To calculate the cost we add up all the individual penalties which would each contribute to a “bad” solution:

  • Overlapping another bubble induces a penalty. There’s an additional penalty for each bubble that overlaps another, which reduces the chances of them all piling up at one spot on the image.
  • Overlapping a character’s face induces a penalty.
  • Being out of order induces a penalty proportional to how far out of order a bubble is. If the first bubble appears sixth that’s really bad — it’s at totally the wrong side of the image — so we need to ensure that kind of thing doesn’t happen.

With these simple rules we run the computer through the simple procedure of moving the bubbles randomly, assessing their cost and then repeating. They slowly settle on their chosen state and the search process ends.

Along the way we’ve been keeping note of best overall position of each speech bubble. If it’s the current position we leave them there, but if they have been rearranged since then we revert to the overall best formation.

This search procedure is widely used for a lot of difficult problems — problems which would take too long to solve exhaustively. It’s also surprisingly simple to implement the core. The hard part is coming up with suitable cost measures which are quick but effective.

4 responses so far

Oct 18 2009

Bouncing over hills and into valleys, searching for a solution

It’s been a busy few days on the code front. After coming to no real conclusions about the best way to lay speech bubbles out on a page deterministically, I’ve decided to explore the issue of search. I’ve knocked up a quick implementation of simulated annealing, which I’m now weaving in to rest of the code.

Like all random search methods, simulated annealing lives or dies on the quality of the heuristics you can provide. Since you don’t generally know the answer when you’re solving the problem you can’t test any intermediate solutions in the obvious manner. You instead have to test properties which you expect the solution to have. In this case, I have to test that, for example, the speech bubbles are laid out sequentially on the page. Any pair of speech bubbles which are out of order will ruin the sense of the comic, so this is fairly important.

There are other measures of goodness (or badness) of a solution, and some may be more effective than others. This has to be offset against the cost of computing the worth of each solution. If it takes 5 minutes to generate one scene it’s no use to me. Most people would rather place bubbles manually than wait this long. So speed is similarly important.

Right now I’m just waiting. I want to use the Mersenne Twister PRNG from Hackage, and it’s just my luck that the Hackage server appears to be down at the moment:

$ cabal install mersenne-random
Resolving dependencies...
Downloading mersenne-random-1.0...
cabal: Error: some packages failed to install:
mersenne-random-1.0 failed while downloading the package.

I’m optimistic about the results from this approach. I’ve been doing some reading on graph visualisation and also map labelling, which both have a lot in common with my problem. Simulated annealing appears to be effective in both instances, so I look forward to seeing what it produces in the end. When I get my shipment of random numbers…

No responses yet

Aug 31 2009

Edinburgh Haskell Hackathon went quite well

The International Conference on Functional Programming (ICFP) is taking place this week in Edinburgh. A substantial group of attendees are Haskell programmers and researchers, so it seemed a good idea to organise a Hackathon to work on libraries, infrastructure tools and various bits that everybody can use.

Eric Kow was the driving force behind this, and he managed to get us use of the conference facilities on Sunday, while there were a couple of workshops happening elsewhere in the building.

We didn’t have anywhere definite arranged for Saturday, so I went scouting a couple of weeks ago and identified a couple of places that would be suitable. I emailed and phoned Henderson’s and they weren’t horrified by the idea. We spent the day there, making sure to buy enough coffees to keep the management happy. There were 8 or 9 of us at the busiest point and we got some pretty amused/strange looks from other customers: a crowded table of people all with laptops open, ignoring each other…

P1010566
P1010566
© Brett Holman

In the evening we went out restaurant-hunting, which I don’t recommend in these circumstances — 9 people, Saturday night, Edinburgh festival, centre of town, no booking. I tried calling Calistoga (their number was still in my phone) as they’re both spacious and hidden from the tourists but they couldn’t take us either. We eventually found an Indian restaurant that would take us, so we idled in the pub across the road while they got ready for us.

On Sunday we were using the ICFP conference facilities, deep in the bowels of the Royal College of Physicians on Queen Street. It was a nice room, with little groups of tables, plenty of extension blocks for powering laptops, a flip chart and a projector. We even had wifi, though the networking infrastructure died a few times from heavy use. We were running off a separate system from the rest of the conference centre and their wireless access died, so there was an influx of random conference-goers looking for net access, which brought our wifi to its knees too. I had felt slightly guilty about taking people to a cafe with dodgy wifi the day before, but in fact the conference centre had an even less reliable connection! :-)

My sincere thanks to the staff of Henderson’s for putting up with us, to Graeme Hutton and Philip Wadler for getting us a room in the conference venue on Sunday, to Eric for doing all his organisation and to everybody who actually came along.

I’m putting a call out to everyone that attended to let me know what they did and so on. More updates when I hear back from them.

2 responses so far

Jun 26 2009

Science Reading: Modern Science Writing

Published by Dougal under Books, Reviews, Science

This month’s book at the Science & Society Reading Group was The Oxford Book of Modern Science Writing, a fairly recent publication edited by Richard Dawkins. It’s a collection of excerpts and articles from twentieth century writing about science — mostly written by working scientists themselves.

The essays were all chosen by Dawkins so it’s not surprising that there’s quite a heavy biology and evolution bias. But there are other exciting things too — Conway’s game of life, an introduction to Shannon’s information theory, and a fair amount of physics and cosmology. There are also the strange and frivolous, poems and fantastical stories, and that category of things which Douglas Hofstadter writes.

I think the only person who finished the book had read it last year and couldn’t remember much about it. The rest of us were still working on it. I think I was the only person not reading through in order, but hopping from article to article depending on what caught my interest. It meant there was a very small overlap between what I had read and what everyone else had read.

I was worried that much of the conversation would be taken up by nature/nurture conversations (which had got quite tedious the previous session when we discussed the movie XXY). It turns out I was foolish and naive — the main topic of conversation was bitching about that Richard Dawkins. Apparently he’s quite opinionated in his introduction; too much for some of my fellow readers anyway. I didn’t really notice this belligerent tone so I guess we just read different passages…

Overall there was a general unease with the book. Many others thought it wasn’t as focussed as it could be, with too many small and disparate ideas. And some people, confusingly, thought it wasn’t challenging enough. Maybe this was a natural effect of a roomful of biologists reading many of the biology-heavy essays at the beginning of the book. I don’t know. But I do feel I have a lot more to read. Every time I brought up the articles which interested me, everyone else hadn’t read them. How disappointing.

One interesting aspect about this book — and this is something I have noticed elsewhere — is the complete absence of the third science. Where is chemistry? Where are the popular writers for chemistry? Even asking chemists seems to draw a blank.

There has been no decision made about what we’ll read next. Suggestions mooted so far have been some philosophy (particularly, Russell’s History of Western Philosophy or some Daniel Dennett, who is easier to tie in with the science focus of the group). In my own reading list I have Gödel Escher Bach and The Annotated Turing, though I fear suggesting the Turing book to a mixed group of readers would not go well!

Does anyone have other “accessible science writing” suggestions I could put forward? In the past they’ve had Bad Science and The Man Who Mistook His Wife for a Hat. Maybe good scientist biographies exist too?

2 responses so far

Next »