Sunday, October 31, 2010

Sometimes they let me out of the asylum

I was invited to give a talk at Ignite London 3. The video of the talk has now been posted:

The Geek Atlas: Sun, Sea, Sand, Science - by John Graham-Cumming from chichard41 on Vimeo.

(I do use some language in this talk which might be considered NSFW, although it's pretty mild).

The ICCER C++ Code

Early in September I received a message from Sir Muir Russell indicating that he and the Independent Climate Change Email Review folks were going to look into my request to release the C++ code they used to analyze GHCN records as part of the review.

This morning I received another email from Sir Muir indicating that the code had been released and that it was available from the review web site. Sure enough it appears that the code was released last week.

Today I downloaded it and got it running without much difficulty. The code is written in C++ and compiles easily with g++. The review didn't release a Makefile or similar build instructions so I quickly hacked one together to make building easy:

# Trivial Makefile to build a program called 'ghcn' from the code
# released by the ICCER for gridding/trending GHCN data

# The name of the program that will be generated
PROG := ghcn

.PHONY: all clean
all: $(PROG)
clean: ; @rm -f $(PROG)

HDRS := $(wildcard inc/*.h)

$(PROG): Analysis.cxx $(HDRS) ; @g++ -Wall -o $@ $<

Doing a make creates a program called ghcn that reads GHCN files (v2) and calculates anomalies, performs gridding and calculates the global time series.

There's a helpful README file that comes with the code which contains an important caveat: The exploratory nature of this code is such that it does not follow design rules or optimisation as would be appropriate for production code and there is no comprehensive exception handling.

And, sure enough, the code is a bit messy and doesn't follow some good C++ practices. The comments present in the code tend to be poor, there are entire classes implemented inside .h files (which is mentioned with the cryptic comment The code is purposely not factorised into normal .cxx and .h files), there are a few #define's where a const would have been better. And there's an almost random handling of the special -9999 code for missing data where sometimes the code decides to check for -9990, -9999 or -1000 seemingly on the whim of the coder.

But, having said that, reading it it wouldn't be a big step to go from it to something quite robust. The first step would be to write tests for the code so that its operation could be verified at a functional level. Note that I've compiled with maximum warnings and none a produced.

The only thing I saw that was obviously anomalous was that the code uses fifteen values in the date range 1961 to 1990 for normal calculation, whereas the ICCER report said they used ten values from 1955 to 1995. Note that that'd make much difference.

The program fills an array with the yearly temperature trend. Here's what that looks like when charted:

Monday, October 25, 2010

Tweet is cheap

Malcolm Gladwell (who I've taken a mild swipe at in the past) has an excellent article in the New Yorker called Small change which argues that Twitter isn't the tool to use for a revolution or social change. Having used Twitter and other social media as part of the Alan Turing apology campaign I've had some direct experience of social change through social media.

And I agree with Gladwell.

In the past I've been pretty unhappy about the Twitter revolutions that seem like Western self-congratulation more than actual change. The ridiculous Iranian Twitter revolution was something I criticized at the time and got pilloried for it by enthusiasts. Yet Ahmadinejad appears to still be in power.

I've even criticized people who change their Twitter icon to include a poppy to commemorate the war dead. It seems like doing almost nothing to give the appearance of having done something. Go out and buy a poppy and wear it.

The reality I saw with the Alan Turing campaign is that Twitter is a useful amplifier(*), but it's not the actual cause of change itself. I'm grateful to the people who tweeted about the campaign, but the apology came mostly through strong media reporting (and Twitter amplification of that) and people signing their real names and addresses to a public petition on the Number 10 web site. More than 30,000 people stood up and were counted. They had some 'skin in the game' because they had to identify themselves publicly as wanting change.

A tweet or retweet of a social cause may help spread the news, but it takes just as much effort as retweeting a LOLcat. People shouldn't stop tweeting the things they believe in, but they should do more if they want to support a cause. Donate some time, or money, or write a letter to the government. Above all take some action that takes more effort than clicking Retweet.

(*) Note that amplifiers amplify noise as well as signal. IMHO That's what happened with the Iranian "protests". And, of course, something quite dangerous came out of that: Haystack.

Wednesday, October 20, 2010

You never think you'll have to do CPR, until you have to do it

I decided to work from home because I'd been suffering from a cold. At about 1030 I popped out of the house to buy a coffee from a local coffee shop; it's very cold in London today and a bucket of warm coffee sounded good. I never got the coffee because life threw something random at me.

To get to the coffee shop I passed down a little alleyway close to my home, and there lying at the end of the alley was an old man. At first I thought it might be a drunk, but as I got closer I saw a man in his 70s seemingly trying to get up. I bent down and offered to help him. He seemed like he didn't want me to bother him, but something bad struck me at once. His lips were blue.

I talked to him briefly and he told me he felt very tired. He didn't seem to want to get up. I decided to call 999 and get an ambulance.

I went back to the man and knelt down beside him waiting for the ambulance. Suddenly he stopped. He stopped breathing and moving. I looked for a pulse in his wrist and then in his neck. Nothing. I immediately called back 999 (they had asked me to do so in this eventuality). The call log on my phone tells me that just five minutes had elapsed between calls. They directed me to put him on his back, head back and start CPR. I have to say that the operator was great: clear instructions.

I'm the sort of person who's done the Red Cross First Aid course twice and so I knew what to do and was almost immediately compressing his chest to the rhythm of the Bee Gees' Staying Alive with the phone operator counting along with me. No, I'm not being funny. The rhythm of that song is ideal for CPR.

I was 100 compressions into the CPR when the ambulance service arrived and took over. They worked on him in the alleyway and eventually put him in the ambulance and took him to the hospital. Between my first call and the arrival of the ambulance nine minutes elapsed. Thanks, NHS!

I don't know if he survived. It's not my place ask.

But I will ask you, dear reader, this: go take a course on first aid. It won't take long and you'll carry that knowledge around in your head until the day when life throws you something random.

Update: The London Ambulance Service were kind enough to let me know (without revealing any personal information about the man) that he survived. He was revived by the ambulance crew and his heart was beating again by the time they made it to hospital.

All Plan 28 Media Coverage

This is the 2010 archive, for 2011 see 2011 Plan 28 Media Coverage

I'll be keeping this page updated as new stories are posted. Articles with * next to them are the most in-depth.

October 3, 2010

The Independent: One of the great inventions that never was – until now? *
The Independent: Start the Engine

October 4, 2010

The Daily Mail: Campaign to build Charles Babbage's steam-powered 'Analytical Engine' - 173 years after he designed it
O'Reilly Radar: The 100-year leap *

October 5, 2010

The Register: Legendary steampunk computer 'should be built' - programmer Geek plans to build Babbage compute

October 6, 2010

iProgrammer: Plans to build Babbage's Analytical Engine

October 7, 2010

Fudzilla: Babbage's analytical engine should be constructed

October 8, 2010

e-Katalog: Британский энтузиаст намерен построить паровой компьютер

October 9, 2010

Der Standard: Dampf-Computer von 1837 soll Realität werden

October 11, 2010

elektor: Dampf-Computer soll Realität werden
Der Standard: 1837 entworfener Dampf-Computer wird gebaut

October 12, 2010 Megépülhet az 1837-ben megálmodott gőzzel működő számítógép

October 14, 2010

BBC News: Campaign builds to construct Babbage Analytical Engine *
redOrbit: Campaign To Raise Funds For Analytical Engine Underway
The Daily Telegraph: Campaign launched to build Charles Babbage's Analytical Engine
UPI: Historic computer replica proposed
ubergizmo: Charles Babbage's Analytical Engine could very well be realized

Komputer Swiat: Chcą zbudować komputer na parę

October 15, 2010

Tech.Blorge: Babbage’s Analytical Engine may get built
TG Daily: Campaign launched to build Babbage's steam-powered computer
Geekosystem: World of Steampunk Rejoice: Somebody Might Build Charles Babbage’s Analytical Engine
PC World: Rebuilding a 19th-Century Computer: One Programmer's Quest
Inhabitat: UK Campaign Aims to Build Legendary Steam-Powered Computer
Gizmodo: Charles Babbage’s Failed Computer From 1837 Will Be Built
Discover Magazine: Get Your Steampunk On: This Guy’s Building a Computer From 1837
Geeks are Sexy: 1837 steam powered computer could finally enter production
io9: Bringing back Babbage

sudkurier: Computer unter Dampf
microsiervos: Proyecto para construir una máquina analítica de Babbage en el MundoReal™

October 17, 2010

Escapist Magazine: Campaign Pledges to Finish 19th Century Steampunk Computer

October 18, 2010

PCR: Plan to build Babbage steam computer
Gizmag: Ambitious project to bring world's first general purpose computer to life
ITProPortal: Babbage Steam Computer To Be Built
Hexus: Babbage behemoth battle
TechNewsWorld: Geek Seeks to Bring Babbage's Analytical Engine to Life
PC Pro: Wanted: Assembly programmers for 173-year-old computer *
Techwatch: 170-year-old steam powered computer to be built? Campaign to build 1837 Babbage's Analytical Engine
GreenMuze: Building Babbage's Analytical Engine

Hirado: Meg akarják építeni Charles Babbage analitikus gépét
hvg: Meg akarják építeni Charles Babbage gőzhajtású számítógépét

October 19, 2010

CBS News: Move to Bring Babbage's Famous Computer to Life

detikinet: Kampanye 'Plan 28', Ajak Orang Ciptakan Prototipe Komputer Jadul
Heise: Spendensammlung für Dampfmaschinen-Computer

October 21, 2010

De Standaard: En als we eens de stoomcomputer van Babbage bouwden?! *
NyTeknik: Nu ska ångdatorn äntligen byggas

October 22, 2010

As it happens (CBC Radio): Prithee, dispatch thine riotous video portraying the farcical antics of cats!

October 25, 2010

Radio New Zealand: Long interview about Plan 28 *

October 26, 2010

Wall Street Journal Europe: The Ultimate Steampunk Project *
TechEye: Steampunk computer to be made of brass and powered by steam

November 2, 2010

Haaretz: אחרי 170 שנה, המחשב הראשון קורם עור וגידים
Wall Street Journal Europe: Geek immortality from €10

November 4, 2010

PÚBLICO: O século XIX dos computadores a vapor está a nascer agora

November 12, 2010

Irish Times: Revisited invention planned as tribute to 'father' of computing *

Monday, October 18, 2010

A Plan 28 completion date

Today in 1871 Charles Babbage died. 11 years from now it will be 150 years from Babbage's death.

He kept working on the Analytical Engine up until his death. Let's make sure that his Analytical Engine is built by October 18, 2021.

Help get the word out about Plan 28.

Two wonderful Oscar Wilde quotations

So, it was Oscar Wilde's birthday over the weekend, which produced a flurry of Wilde quotes. Here are two that I love:

To live is the rarest thing in the world. Most people exist, that is all.

And one for my bank manager:

Those who live within their means suffer from a lack of imagination.

PS Every time I see my name in the media I recall:

The only thing worse than being talked about is not being talked about.

Sunday, October 17, 2010

Plan 28: the first 10 days

So, it's been 10 days since I posted the Analytical Engine PledgeBank and the total number of signatories stands at over 2,700 with many people pledging £50, €100 or even $1,000. The PledgeBank estimator reckons I'll hit 42,435 pledges (84.9% of target) by the target date. Given how much more than $10/£10/€10 many people are pledging I'd imagine that my goal isn't unrealistic, but please keep spreading the news.

As well as pledges of money I've received pledges of professional design and manufacturing help, document digitizing, CAD software and more. These are super-helpful.

In addition there's been a lot of media interest. The best articles are the BBC's Campaign builds to construct Babbage Analytical Engine and The Independent's One of the great inventions that never was – until now?. If podcasts are your sort of thing then you can listen to the excellent session about Plan 28 on TWiT #269.

There's also been some nice tweet-support from BBC broadcaster Maggie Philbin and author William Gibson.

And behind the scenes I've received hundreds of emails of support or with questions. To help field some of the questions I did a reddit AMA and posted a FAQ.

Also behind the scenes there's a proper design well underway for the Plan 28 web site which will transform it from my awful design skills to something respectable.

And, finally, I'll be meeting with the folks at the Science Museum early in November to talk more about Plan 28.

Above all: thanks to everyone who's written about Plan 28 in the media, on Twitter or on a blog, thanks for all the pledges of money or services, and all your kinds emails.

PS Forgot to add that descendants of Charles Babbage have been in contact to express their support for the project.

Thursday, October 14, 2010

What Nature didn't say

Nature has a nice article about scientific software which starts by mentioning the hacking of the Climatic Research Unit and the release of software from the hacked files, and then goes on to talk generally about the state of scientific software. My summary would be that it's generally a mess because software engineering has crept up on scientists and now they need to get educated about things that have been common in the commercial software world for years.

Which is pretty much what I said on Newsnight in December 2009.

The article begins:

When hackers leaked thousands of e-mails from the Climatic Research Unit (CRU) at the University of East Anglia in Norwich, UK, last year, global-warming sceptics pored over the documents for signs that researchers had manipulated data. No such evidence emerged, but the e-mails did reveal another problem — one described by a CRU employee named "Harry", who often wrote of his wrestling matches with wonky computer software.

"Yup, my awful programming strikes again," Harry lamented in one of his notes, as he attempted to correct a code analysing weather-station data from Mexico.

Although Harry's frustrations did not ultimately compromise CRU's work, his difficulties will strike a chord with scientists in a wide range of disciplines who do a large amount of coding.

True enough that the messy code from CRU wasn't shown to compromise any of their scientific results. None of the enquiries into "ClimateGate" examined the CRU code. I did show, however, that the code I saw was buggy. (See, Whoops, there's a third bug in that code and Bugs in the software flash the message 'Something's out there'.) In fact, the best that can be said is that CRU's code was buggy and we don't know if those bugs have a material impact on the science.

And another piece of CRU-related code, the code used by the Met Office to produce the CRUTEM3 temperature set was similarly buggy. I first showed that there were errors in the way the station files were generated (see The full response from the Met Office. By the way, I'm still waiting for them to make good on their promise to credit me) and then (with Ilya Goz) showed that the program used to generate the station errors in CRUTEM3 wasn't working (see Something odd in CRUTEM3 station errors and Met Office confirms that CRUTEM3 station errors are incorrectly calculated.)

What's interesting about these bugs is that practices like unit testing or automation (through even make, which has been around since the 1970s) would have helped avoid the problems the Met Office saw. And likely the bugs in the CRU code. It really would be a good idea for commercial best practices to be introduced to scientists.

Nature didn't mention any of that. Pity. Those are real bugs in the real software related to CRU.

I don't know if any of this leads to problems with actual climate science, that would take a real examination of the source code used to produce published papers. But it does concern me that it was so easy to find so many errors. There really could be a nasty surprise lurking in the code.

Wednesday, October 13, 2010

How to hack the media

With the release of my book and the Alan Turing apology campaign I've spent quite a bit of time dealing with the media, both old and social. Here's the distillation of what I've learnt.

1. Learn to write

If you can't communicate your message clearly and concisely then you are going to have a hard time dealing with any media. In both old and social media there's an attention problem: people haven't got time to read long-winded explanations that don't get to the point. That's precisely why press releases are a total waste of time: they are too long.

If you haven't read Strunk and White or On writing well then do so... now. Then practice writing with a space limit.

Just yesterday someone from The Times asked me for "100 words by Friday" on Plan 28. Try describing your business, idea or plan in 100 words. And then make sure those words are interesting enough to appear in a newspaper.

One reason to know how to write is that you might find yourself writing about what you are promoting. For example, when The Geek Atlas was released I wrote to all the major papers trying to get reviews. For example, I emailed the Travel Editor of the San Francisco Chronicle:


I thought you might be interested in my forthcoming book, The Geek Atlas. It's a travel book for people interested in science, technology and mathematics and features 128 destinations around the world (many of which are in the US and many of the US ones are in Silicon Valley). If you are interested in a review copy I will arrange with the publisher.


She replied:

I have a better idea. We have a little feature called "5 places" - we do offbeat things like, "5 places to have bed, breakfast and bordello" (former bordellos now turned lodging), or "5 places to smell your coffee and the ocean too" (beachfront hotels) and we're also doing things like biker bars and factory tours. Why don't you do 5places to release your inner geek? We pay XX (you should submit at least 2 handout photos for us too) and you can mention your book in your lead-in. If you are interested I will send you a couple of samples.


And you can read the resulting article Unleash your inner geek without spending a cent. The same thing happened with The Sunday Times in the UK (read The top 10 geeky holiday spots). And it's not just my book, I wrote about the Alan Turing apology campaign for New Scientist (The real Turing Test: learning to say sorry).

You won't get to do this for the hard news sections of newspapers, but the supplements and special sections are good places if your story fits into one of those sections.

2. Read newspapers and use social media

If you want a newspaper to write about your idea then you need to know what the newspaper writes about and who at the newspaper writes about your subject. The only way you are going to find that out is by reading newspapers. Similarly, if you plan to get your story on social media it's worth hanging out on the social media sites and getting a feel for the sorts of stories that interest the population on the site.

For old media, once you've figured out which paper(s) to target and which journalists to target you need to write to them. Most papers have either direct email addresses for journalists, or emails for the editors of sections. Use those addresses, but also Google journalists. Many journalists have personal web sites with contact information. Go straight to the writer with a short targeted email about your story (see my email to the San Francisco Chronicle above).

Also, many newspapers now have blogs. It's often easier to get to journalists through these blogs because they accept comments, or because the blogs are actively looking for feedback from readers. Many blogs are linked with Twitter accounts that are read by the journalists themselves. For example, I managed to get The Economist to mention my book via a tweet I sent.

You can also get an idea of what journalists are interested in by signing up for Help A Reporter Out. Read through the stories people are working on and contact them if you having something useful to add.

3. Journalists are human

Sometimes, from the outside, this doesn't appear to be the case. And every journalist has their particular foibles, and you need to work with them. It's important to put yourself in the journalist's shoes when pitching your idea. They want to know a few important things about your story: is this new? what's the hook? is this relevant to me?

Newness is important. Many journalists want to get in ahead of anyone else with a story. Make sure that they are aware of the newness of your story (or some aspect of the story). For example, when dealing with the Alan Turing campaign I would tell journalists about famous people who were newly supporting the campaign. That gave them the ability to write something like "Richard Dawkins backs blah blah blah" ahead of their cohorts.

The hook. This is the idea that the whole story hangs on. This is the idea that gets you, the reader, into the story quickly and makes you want to read it. In the story One of the great inventions that never was – until now? the hook is my quest to build the Analytical Engine. In Dawkins calls for official apology for Turing the hook is Richard Dawkins' involvement.

Relevance. If you've done your job correctly this shouldn't come up because you will have targeted the right journalists for your story. But it's still worth framing your story in a way that makes it relevant to the writer. You may need to tell them why it's relevant. Here's an email that I sent to a product at The Colbert Report about my book. I specifically used the word 'nerds' and mentioned basements as a way of framing the humorous aspects of the book.

I'm writing to you to suggest my own book, The Geek Atlas, as something that Stephen Colbert might get a kick out of. It's a travel book for nerds (or at least for people who are interested in science, technology and mathematics); it might even get some of them out of their parents' basements :-) If that seems like something of interest I'll happily organize a review copy for you.


I had a reply within hours.

Make sure that once you have a relationship with a journalist that you cultivate it. Thank them for what they've written and feed them other interesting stories (even stories totally unrelated to what you want to promote). You may well be aware of something well ahead of a journalist (for example, I told Newsnight in the UK about "Climategate" within hours of the email hack).

4. Old media matters... a lot

Just when you think it's dead, it turns out that it matters enormously. Take a look at this chart showing the number of signatories on the Alan Turing apology petition:

Notice how the BBC article kicked the signatures up massively in a single day. Up until then it had been written about in a few newspapers and I'd campaigned extensively using social media.

5. Social media is a conversation

If old media is all about getting a journalist interested in your story, social media is all about getting a population interested. And the biggest part of that is the conversation with the population. This is brilliantly handled in the Old Spice viral campaign where the brand communicated directly with people using social media.

On a smaller level you need to be aware of where your idea is being talked about and I'd recommend using real-time analytics (such as chartbeat) so that you can immediately know where your pages are being linked from and participate.

You also need to stay on top of Twitter with search alerts, and use Google Alerts for general media alerting (set to send immediately rather than a daily batch). The other day a story about Plan 28 peaked on Reddit and I was able to quickly jump in and answer people's questions.

You should also think about tailoring messages for different communities. Three places I've spent a lot of time are reddit, Digg and Hacker News. These all have different populations and then same message is unllikely to work for all of them. Painting broadly: Hacker News readers are looking for insights and intelligent conversation, reddit readers are looking for social activism and humor, and Digg readers are more celebrity and silliness oriented (note that Digg is changing, so this will change).

Related Hacker News discussion

Plan 28 (Analytical Engine) FAQ

Answers to your questions about the Babbage PledgeBank:

1. Can I pledge more than $10/£10/€10?

Yes, of course! Many people have done so. The system doesn't have a box where you can enter an amount, but you can contact me and let me know, or, even better, publish a public comment with your pledge amount.

2. Can I pay you the money?

Not yet. Currently, I'm working on building up enough pledges to make sure this is viable. Once I have enough you'll receive an email detailing the new Plan 28 organization and how to actual send in the money.

3. Do you really think you can get 50,000 people to pledge?

Yes. Last year I got over 30,000 in the UK alone to sign the Alan Turing petition. This campaign is global and so I am confident that with the right exposure in the media and the help of enthusiastic people over 50,000 will pledge.

4. The Plan 28 web site is ugly.

Yes, I know. This is being actively worked on by a professional designer.

5. I have another idea about this.

Great. Contact me. I'm building up a big list of ideas, volunteers, etc. Would love to hear from you.

6. How can I help?

Sign the pledge. Tell people about this: tweet it, Facebook, email, etc.

7. Why hasn't someone done this before?

Because it takes time. It wasn't until the 1970s that Babbage's contributions were fully understood (see Bruce Collier's thesis), and until the 1980s that his plans had been deciphered by the likes of Allan Bromley. Only then could the Difference Engine No. 2 be constructed. It was finished in 1991. In many ways, The Difference Engine No. 2 was an 'easy' project because Babbage had left complete plans for it. The Analytical Engine is a different matter.

Babbage left multiple plans for the Analytical Engine and was constantly refining its design up until his death. To build the Analytical Engine first requires a research project to figure out which plan to build from. That's why the project has steps involving scanning all of Babbage's papers and a research project on them.

8. What's the best introduction to this project for a newbie?

Probably, the article The 100-year leap.

9. Why are you doing this?

In 1992 I sat on the floor of the Science Museum in London and watched the Difference Engine No. 2 demonstrated. And then I sat outside in the sun near the Natural History Museum and worked through its operation on paper. Since then I have been fascinated by Babbage and the fact that he had invented a real computer in 1837.

In 2000 the Science Museum completed the printer attachment for the Difference Engine No. 2 showing that Babbage's dream would have worked. I simply want to complete the task of honouring Babbage by creating his computer and showing it to the public.

Tuesday, October 12, 2010

1,000 people sign the Plan 28 pledge

A few moments ago I checked the Plan 28 pledge page to find that it had passed the 1,000 people mark. That took just 6 days. Thank you to everyone who's pledged so far (Peter Zuidhoek was the 1,000 person).

But even more heartwarming than the 1,000 are the comments people have been leaving on the page. You can read them all on the pledge page, but here are a few highlights. Many people have said that they'll pledge more than $10/£10/€10, with some going as high as $1,000. Brilliant.

Worth it just for the first step. Do it for the next generation. -- Matt Doar

Put me down for a hundred quid. -- Aidan Karley

I have been hoping for years that someone would do this. I contributed to the construction of the Difference Engine and am proud to be able to contribute here. -- Raymond Woodward K3VSA

I'll pledge $100 - Roston McGregor

Great idea and willing to pledge more 50$ when the time comes -- Marcus Jaeger

Great endeavor, sign me up for $50 USD. -- Robert Huwar

I'd love to see this in action. I've seen the Difference Engine 2 at the Computer History Museum, and it's absolutely beautiful. I'm happy to pledge $1000. -- Eric Uhrhane

I hope this happens! $100 is yours. -- Christopher MacMurray

I will happily pledge way more than the $10. Best of luck. -- Noah Gildersleeve,

I'd love to see this happen. I pledge $100. -- Laurence Gonsalves

Your pledges and comments are marvelous. Keep 'em coming!

PS If you want to know what this is all about visit Plan 28 or read The 100-year leap.

Related Hacker News discussion

Monday, October 11, 2010

A big boost for Plan 28

Last night I appeared on TWiT with Leo Laporte and John C. Dvorak and guests. We talked about a lot of things late into my night, but mostly about Plan 28.

Leo encouraged listeners to pledge money and made the stunning offer of personally pledging $1,000 to the effort! And so, on top of Leo's pledge the number of people pledging has tripled!

Thanks Leo.

Sunday, October 10, 2010

Geek Weekend: Kew Bridge Steam Museum

So, I managed to persuade the people around me that it would fun to go and visit Kew Bridge Steam Museum, and it was brilliant! The museum is one of the places that was on the list for The Geek Atlas but got cut for space. Nevertheless, it's really worth visiting.

On weekends and other special days the folks at the museum set the machines running (including the massive 90 inch engine). I got there early enough to see most of the engines demonstrated and the staff were great. Got a good explanation of the operation of the triple expansion engine used for pumping water for London. Here it is in action:

Another nice engine is the Dancer's End engine that was used for pumping water on the estate of Lord Rothschild and was moved to the museum in the 1970s. And makes a lovely noise as the condenser water can be heard bubbling away. Here it is.

And finally, it's not all steam. There's a collection of Diesel engines. Here's a small one in action. What a brilliant sound.

There's also a steam train and Diesel train that run on a small track and are included in the price. And the ticket is valid for a year, so you can go back and see these wonderful engines in action as often as you can persuade your family to go with you.

Friday, October 08, 2010

The Power of Gratitude

While working on the Alan Turing apology campaign I put into action something that I'd always believed: gratitude is a powerful thing. As people began signing the petition I used a combination of a Perl script and Wikipedia to automatically identity "celebrities" that might have signed the petition by scraping the No. 10 web site.

One of these was the writer Ian McEwan. To confirm that it was really the writer and not some other Ian McEwan I sent a note to his literary agency:


I'm the person who created the Alan Turing petition on the Number 10
web site:

It is rumoured that Ian McEwan has signed the petition. Could you
forward this email to him and pass on my thanks to him for supporting
this campaign?


The next day I received the following email from McEwan's personal email account:

Dear John Graham-Cumming,
Good luck in your campaign. Alan Turing was one of the most important British scientists of the 20C. I think that HMG regards apologies in general as opening the floodgates. But I think it will mean a lot, even to make this attempt.
Best wishes,
Ian McEwan

And from there I had a brief back and forth with him and was able to use his name publicly with the press (which was a very important step because that gave the press something to say).

And I also wrote to every journalist who had covered the story thanking them for the coverage. To this day I am in contact with many of them and was able to quickly tell them about the Plan 28.

But most importantly I replied to every single person who wrote to me about the campaign. Often I didn't have more time available than for a simple thanks, but many of those thanks resulted in conversations that were very helpful.

Now, all that may seem self-serving. These thanks turned into something more. But underlying my gratitude is something that I think is more important. Gratitude is a way of communicating to a person that you acknowledge their effort and that you were not taking their effort for granted. Those two things are vitally important whether it's as part of a national campaign or on a personal level. When people make an unpaid effort to do something, repay them with thanks.

Tens of thousands of people supported my Alan Turing apology campaign. I wish there were a way for me to email them all a note of thanks. I did manage to thank Stephen Fry, who replied like a gentleman.

On a personal level I receive a lot of mail from people asking for help with things on my blog (such as GNU Make, image forgery, climate change, spam filtering, or my high-altitude balloon). I try to help them all.

Quite often I receive no thanks at all. Being on the receiving end of a lack of gratitude is annoying because I will have made an effort on that person's behalf. A suitable 'repayment' is a simple "Thanks". And if you do thank me you are more likely to get more out of me later.

It turns out that I, and others, will do a lot if you express gratitude. And even if you never ask me anything again, it's better to be remembered as the person whose last word to me was, "Thanks".

Thanks for reading.

1,000 (bad) ideas

Tidying up my messy corner in the basement I unearthed one of my older "ideas books" in which I write down the random ideas that flit through my head quite frequently. Flicking through it I noticed that this book contained idea number 1,000 written on October 3, 2006. Most of these ideas never get implemented but they are fun to go back and read.

Idea 1,000 was In-ear headphones that automatically pause music when removed. The details mention using either a proximity detector to discover when the headphones are in the ear, or a strain gauge to detect the pressure of the ear canal.

The previous idea was Brake lights that show the severity of braking. The idea there was to replace the current 'high-level' brake lights in cars (that are typically a horizontal bar), with a triangle of lights. Under normal braking just the top, horizontal red bar would illuminate. Under heavy braking the triangle would illuminate warning drivers of an emergency situation (particularly useful on motorways at high-speed). Since the red triangle is a common warning symbol this would be instantly recognizable.

I've been filling these books since about 1992. By 2006 I'd had 1,000 (bad) ideas, which works out to about one every five days. Some of them I've implemented (such as l8tr), others I've seen implemented by other people: there's an amusing entry from 1995 about building a networked disk drive service that I wanted to call "I-Drive". The plan was to use FTP as the underlying protocol and make a drive (I:) appear in Windows 95. I: would actually be on the Internet and could be accessed by multiple machines.

The idea I'm most pleased with is my book, The Geek Atlas, because it was (fairly) original. No one else had written "Lonely Planet for Nerds". Overall, perhaps 10 of my 1,000 ideas look like they might be 'good ideas'.

Does anyone else generate ideas like this? And if so, what percentage turn out to be good?

Related Hacker News discussion

Babbage's heart-warming message for the middle-aged

You might think that designing the first computer would be a young man's game. Far from it. Charles Babbage started work on the Analytical Engine in 1833. He was 42 years old.

He kept working on designs for the Analytical Engine until 1846 when he was 55. He then stopped working on it and spent time on the Difference Engine No. 2 which was constructed by the Science Museum in the late 1980s.

Babbage returned to the Analytical Engine in the mid-1850s when he was 65 and kept working on it until his death in 1871 (aged 79).

The primary reason Babbage started so late on the Analytical Engine was that he was building up experience and knowledge prior to being 42 that led to its invention. He had started working on the Difference Engine No. 1 in 1822 (aged 31) and ideas for the Analytical Engine (such as the barrel based micro-programming and loops) came from trying to solve the problems associated with the Difference Engine.

That contrasts sharply with trends in the software industry where there's currently a cult of youth demanding that programmers be young and therefore relatively inexperienced. This comes about from the desire to deal with people knowledgeable about the absolute latest technologies, overlooking the fact that computer software undergoes macro shifts relatively infrequently (e.g. the rise of functional programming in the 1950s, structured programming in the 1970s, the dominance of object-oriented techniques in the early 1990s, ...).

Babbage's life points to the fact that experience can make an enormous difference and shouldn't be overlooked.

Thursday, October 07, 2010

The Analytical Engine vs. The ZX81

Many people got started with computing in my age group with the Sinclair ZX81 (which in the US was sold as the Timex Sinclair 1000).

Reading through Allan Bromley's excellent papers on Babbage's Analytical Engine (as described in 1847) I thought it might be fun to compare the two machines.

The ZX81 has 1KB of memory in which programs and data had to be stored. The Analytical Engine as first imagined would have had 50 variables capable of each storing a 30 digit decimal number. That's equivalent to each variable having 100 bits and hence the memory for the Analytical Engine would have been 5000 bits (675 bytes). Later Babbage proposed much larger memory sizes with up to 50 decimal digits per variables and 1000 variables: that would have been a memory of 166 bits per variable or over 20 KB of memory.

Critically, the Analytical Engine's programs would be stored on punched cards and executed directly from them so that entire memory space was for data (not the program). In contrast the ZX81 had to load the program from magnetic tape into its 1KB of RAM.

But the ZX81 was much, much faster than Babbage's machine. It had a clock speed of 3.25 MHz. The Analytical Engine was based around a standard cycle time of 1/7s which is the same as 7Hz. To get an idea of the speed of the machines, here's a comparison of a 100 bit add on the two machines.

On the Analytical Engine it would take about three seconds to fetch the two numbers from memory (the store) and perform the addition. Although this is long Babbage added the ability to do a pipeline of multiple additions with overlapped reads from memory and addition happened in parallel. The ZX81 does not have that ability.

On the ZX81 in Z80 assembler a 100 bit addition (which I've done as 13 8-bit additions here) could be implemented as follows. I've assumed that IX and IY are pointing to the operands in memory and that the result will be stored in the memory addressed by IY.

LD A,(IX+0)
ADD A,(IY+0)
LD (IY+0),A
LD A,(IX+1)
ADC A,(IY+1)
LD (IY+1),A
LD A,(IX+2)
ADC A,(IY+2)
LD (IY+2),A


LD A,(IX+12)
ADC A,(IY+12)
LD (IY+12),A

Each instruction there takes 19 clock cycles and there are a total of 39 instructions giving 741 clock cycles. With the Z80 running at 3.25MHz that set of instructions takes 0.228 ms. So for that addition the ZX81 would have been 13,000x faster.

Obviously, this is slightly bogus because there are other more complex and slow instructions in the Analytical Engine (such as division) but it gives an idea of the scale.

So, the ZX81 had much less RAM than the Analytical Engine (and who doesn't remember all the trouble of fitting everything into RAM on those machines) and was forced to use it to hold programs, but the Analytical Engine was slow in comparison.

PS If you'd like to see the Analytical Engine built, read this.

Wednesday, October 06, 2010

Let's raise £500k for the Analytical Engine

If you are new to this please read my introduction to Babbage's 100-year Leap. If not, read on...

I've created a PledgeBank entry for the project here where I'm asking people to pledge to donate $10/£10/€10 towards a non-profit organization dedicated to building the Analytical Engine. The non-profit would have four goals:

1. To help digitize and make available in electronic form all of Charles Babbage's notes and plans associated with the Difference Engine and Analytical Engine.

2. To fund the study of Babbage's Analytical Engine plans to determine what best constitutes a complete design for the Engine.

3. To coordinate the building of a computer simulation of the Analytical Engine that shows its working in 3D with accurate physics.

4. To build the Analytical Engine and donate it to a museum in Great Britain for public display.

PledgeBank operates on an all-or-nothing system where I either reach the goal and then can ask people to make good on their pledge, or I fail. Please consider signing up to pledge $10/£10/€10 towards these goals.

Sign my pledge at PledgeBank

x is down


Boo hoo.

You know what? I couldn't care in the slightest that you can't be Mayor of the coffee shop round the corner, or post an asinine and narcissistic update to your Facebook 'friends', or Tweet your breakfast, or feed your virtual flock.

I don't care because you are not paying for those services.

If you were paying for them you wouldn't be bitching on whatever social media sites are still up about the other site being down. If you were paying you'd be calling their support line, just like you do in the real world, remember?

What sort of world do you think you are living in where everything is 'meant to be' free, and at the same time provide 100% perfect service? Are you nuts? Have you not realized that you are not the customer of most of these services, you are the cannon fodder used by them to make money off your own back?

Next time your favorite waste of time is down, just shut up about it.

You are the ingredients in their Soylent Green. Shouting about that isn't something to be proud of.

PS Some commentators over at Hacker News are disappointed by this rant, hoping for greater things from me. I shall return to normal, non-ranty service shortly. This is merely an interlude. While you're here, go and read something more positive like Three Silicon Valley places Paul Graham omitted.

Charles Babbage and Climate Change

At the risk of turning into James Burke and creating my own version of Connections, it's amusing to know that two of the topics I've blogged about, Charles Babbage and Climate Change, have a strong connection.

One of the key areas of climate change research used to demonstrate the we live in historically overheated times is dendrochronology (looking at tree rings) to determine past climate (called dendroclimatology). This is a large part of the science behind the Hockey Stick and related controversy.

So, who's the father of dendroclimatology? Charles Babbage has a strong claim.

Babbage wrote in 1838:

It is well known that dicotyledonous trees increase in size by the deposition of an additional layer annually between the wood and the bark, and that a transverse section of such trees presents a series of nearly concentric though irregular rings, the number of which indicates the age of the tree. The relative thickness of these rings depends on the more or less flourishing state of the plant during the years in which they were formed.


These prominent effects are obvious to our senses, but every shower that falls, every change of temperature that occurs, and every wind that blows, leaves on the vegetable world the traces of its passage; slight, indeed, and imperceptible, perhaps, to us, but not the less permanently recorded in the depths of those woody fabrics. All these indications of the growth of the living tree are preserved in the fossil trunk, and with them also frequently the history of its partial decay.

Let us now inquire into the use we may make of these details relative to individual trees, when examining forests submerged by seas, embedded in peat mosses, or transformed, as in some of the older strata, into stone. Let us imagine, that we possessed sections of the trunks of a considerable number of trees, such as those occurring in the bed called the Dirt-bed in the island of Portland. If we were to select a number of trees of about the same size, we should probably find many of them to have been contemporaries. This fact would be rendered probable if we observed, as we doubtless should do, on examining the annual rings, that some of them conspicuous for their size occurred at the same distances of years in several trees. If, for example, we found on several trees a remarkably large annual ring, followed at the distance of seven years by a remarkably thin ring, and this again, after two years, followed by another large ring, w¨ should reasonably infer that seven years after a season highly favourable to the growth of these trees, there had occurred a season peculiarly unfavourable to them; that after two more years anotherveryfavourable season had happened, and that all the trees so observed had existed at the same period of time. The nature of the season, whether hot or cold, wet or dry, might be conjectured with some degree of probability, from the class of tree under consideration.


The means of identifying the influence of differentt seasons in various: sections of the same individual tree an its branches being thus attained, the conclusions arrived at must be applied to several trees under similar circumstances, and such modifications must be applied to them as the case may require; and before any general conclusions can be reached respecting a tract of country once occupied by a forest, it will be necessary to have a considerable number of sections of trees scattered over various parts of it.

Tuesday, October 05, 2010

Three Silicon Valley places Paul Graham omitted

Paul Graham came up with a good list of places to see Silicon Valley, but to my mind he missed three important places from a historical perspective. One of these is a major omission because it put the Silicon in Silicon Valley.

1. The HP Garage

Paul mentions walking around Old Palo Alto but doesn't include 367 Addison Avenue where HP got started. Working out in the garage of the house where Dave Packard lived, William Hewlett designed HP's first product: The Model 200A oscillator. Notice how they were great at marketing: they called it the Model 200A to make it look like it was one of a number of products from a big company.

© BrokenSphere / Wikimedia Commons

The Model 200A was a cheap audio oscillator that undercut competing products and contained a wonderful hack. To solve a common problem with the oscillator type that underlies the Model 200A (a Wien-bridge) Hewlett needed a resistance that would automatically vary to prevent the amplitude of oscillation from rising too high (and causing clipping). He replaced a fixed resistance in the circuit with a lamp. As the amplitude increases the bulb shines brighter and its resistance increases. The lamp resistance forms part of a voltage divider and the increased resistance lowers the voltage bringing the amplitude under control.

2. The Shockley Building

Although it's now a shop, the place that put Silicon in Silicon Valley is the building that housed Shockley Semiconductor. In 1956 William Shockley moved to Silicon Valley (where his mother lived) and started a company to produce silicon, rather than germanium, transistors.

The building is at 391 San Antonio Road in Mountain View. Be sure to get your photo taken next to the historic marker.

Mostly because Shockley was a difficult person his company fell apart and a large number of employees went off to form Fairchild.

3. The Fairchild Building

This is another photo opportunity with a historic marker. The original Fairchild building is at 844 Charleston Road in Palo Alto and its here that the integrated circuit was invented (using the planar process). The planar process is the familiar method used to produce integrated circuits to this day by repeatedly doping a piece of silicon to process N-type and P-type regions through a photographic mask. It was far more efficient that Texas Instruments' mesa process.

All three places, of course, are in The Geek Atlas. And all three are very close together in Palo Alto and Mountain View. You can easily visit all three in an afternoon.

Babbage's Other Woman

An enormous amount has been written about Ada Lovelace and almost nothing about another woman with whom Charles Babbage corresponded frequently: Countess Teleki.

Countess Teleki was born Jane Frances Bickersteth in Britain in 1836 and married the Hungarian/Romanian Count Alexander Teleki in 1857. She corresponded with Babbage frequently concerning the Analytical Engine writing in 1862:

The more I think of it, the more I am distressed at your thinking it possible that you should give up the Analytical Engine. To strangle an idea and a great invention after so much pains to bring it to perfection, appears to me a kind of moral murder, and an inquiry to the whole human race, which it cannot be right to inflict... It is certain that you, and you only, are capable of completing the Analytical Engine, which if you abandon it, must perhaps remain unrealized for ages, and great though it be to conceive an idea hundreds of years in advance of one's kind, it surely is greater, by realizing that idea, to make the human race, in one generation, outstrip the progress of many.

Babbage replied: "I find no flaw in your reasoning about the Analytical Engine; I admire it; but you are aware that it rests entirely on the hypothesis that I care for the 'whole human race'".

Babbage was continually refining plans for the Analytical Engine (up to his death) and the Countess attempted to persuade him to actually build it writing in 1863:

I am very glad to hear your progress has been so satisfactory, and I hope that as you have now arrived at the ultima Thule of simplicity you will now really make the engine without searching further improvements. Don't forget the proverb I have often already quoted to you: le mieux est l'ennemi du bien.

The Countess' quotation from Voltaire would be translated into English as "The better is the enemy of the good."

All three of the women important in Babbage's life (if I exclude his mother who was very supportive of her son) preceded him to the grave. His wife, Georgiana died age 31, Ada Lovelace died aged 36 and Countess Teleki died a year before Babbage aged 34. It's sobering to think of the stunning rate of death associated with childbirth in the 1800s.

More about the Countess and Babbage can be found in Bruce Collier's excellent thesis on Babbage. He concludes his thesis writing:

In final conclusion, if one were to draw a moral from the history of Charles Babbage and his calculating machines, it would have to be that while there is certainly truth in Countess Teleki's maxim: "The Best is the enemy of Good", it is also true, as illustrated by Babbage's life and work, that "The Satisfactory is the enemy of the Marvellous".

Monday, October 04, 2010

The 100-year leap

Here's something I wrote for O'Reilly Radar:

In December 1837, the British mathematician Charles Babbage published a paper describing a mechanical computer that is now known as the Analytical Engine. Anyone intimate with the details of electronic computers will instantly recognize the components of Babbage's machine. Although Babbage was designing with brass and iron, his Engine has a central processing unit (which he called the mill) and a large amount of expandable memory (which he called the store). The operation of the Engine is controlled by program stored on punched cards, and punched cards can also be used to input data.

Read on.

A year of Geek Atlas sales (or some facts about book royalties)

So it's been over a year now that I've been collecting royalty statements from O'Reilly for The Geek Atlas, and the other day someone commented to the effect that I must be living large off book royalties. Clearly, this person either mistook me for J. K. Rowling or knows nothing about books.

Here's how book sales work using The Geek Atlas as an example.

The cover price is $29.99. O'Reilly sells the book to the retailer for much less than that: the publisher is getting around 60% of the cover price (numbers below). That, by the way, is roughly how sells you books for so little: they didn't pay the cover price for the book in the first place.

I get 10% of what O'Reilly gets. So if the book sells for $29.99 and O'Reilly gets 60% ($18) then I'd get $1.80 per copy. In practice, the actual amount I get per copy is around $1.25 because different retailers have different discounts, and because my book might be sold in bundles of other books with different discounts.

Now, lest you think I'm complaining: I'm not. It was a great privilege to write that book and I'm happy whenever I do get some money back from it. But if you are thinking of writing a book bear that in mind. I spent 6 months writing The Geek Atlas: I didn't do it for the money!

Here's a quick chart showing how the actual royalty I receive per book has fluctuated over the last year.

For eBooks I get the same 10% of what O'Reilly gets. Here's the trend in that:

Interestingly, I make less money now from eBooks than physical books.

Two other important factors play into the money I receive: the advance and reserves.

O'Reilly were kind enough to pay me an advance while I was working on the book. It's not called an advance for no reason: the author pays that money back from the royalties. Basically my first few royalty statements were all negative because the royalties I was receiving were going to paying the 'debt' to O'Reilly.

The other factor is the reserve. I get paid when a book shop buys the book (not the consumer). But that creates a problem for the publisher since the book shop can return the book as unsold after a certain period of time. So from each royalty statement O'Reilly reserves money to offset any returns of the book.

They actually reserve 20% of the royalties on physical books. I then get that money back (if the book is selling!) 6 months later.

The 10:10 Campaign's Appalling Film

Today on the 10:10 campaign's web site there's an apology:

Today we put up a mini-movie about 10:10 and climate change called 'No Pressure’.

With climate change becoming increasingly threatening, and decreasingly talked about in the media, we wanted to find a way to bring this critical issue back into the headlines whilst making people laugh. We were therefore delighted when Britain's leading comedy writer, Richard Curtis - writer of Blackadder, Four Weddings, Notting Hill and many others – agreed to write a short film for the 10:10 campaign. Many people found the resulting film extremely funny, but unfortunately some didn't and we sincerely apologise to anybody we have offended.

As a result of these concerns we've taken it off our website. We won't be making any attempt to censor or remove other versions currently in circulation on the internet.

The film in question is here. It opens with a schoolteacher telling her pupils about the 10:10 campaign and then murdering two of the children by blowing them up in front of their classmates (who are splattered with blood and gore) because they plan to do nothing about climate change.

No, I did not make that last paragraph up. And no I did not find killing schoolchildren funny.

Now, in the apology the people behind the campaign apologize to "anybody we have offended". Simply put, that's not good enough. This film is such a massive error of judgement that you have to question the leadership of 10:10 and their decision making process. That this disgusting film made it to their front page to "bring this critical issue back into the headlines" is an indictment of the organization.

Their apology is almost worthless, the only solution is for resignations within 10:10 itself.

Dropped all advertising from

After a discussion last week on Hacker News about monetizing I've decided that it's not worth the effort.

So from this morning there are no longer any ads on I'm leaving in place the affiliate links for my book because I would like people to buy it, but all the Google AdSense ads have now been removed.

GAGA-1: Computer mounting

Not much time to work on GAGA-1 this weekend, so I nailed down one of the simpler items: how the two computers (flight and recovery) are going to be mounted inside the capsule. After considering all sorts of techniques I settled on self-adhesive Velcro "coins" and a cut up fast food container (the plastic containers that much Indian food comes in have nice fitting lids and are made of strong plastic: I use them for storing screws, components and all the miscellaneous stuff in my basement).

Here's a picture of an untouched curry container and once I cut up. The two black dots are Velcro pads on I stuck on the bottom. The container is just the right width to fit in the box and the small vertical portion pushes against the edges of the box keeping it snug. Between that and the Velcro this will provide adequate support for the two computers.

With the two computers sitting on it, it's clear that there's adequate space. The computers will be attached using screws and risers that I have left over from an ancient robot project.

Finally, here's a shot inside the capsule itself showing the Velcro pads that are stuck directly to the polystyrene.

The other thing I spent time on was deciding on interfacing for the Telit GSM862 module. I toyed with the idea of buying a SparkFun USB Evaluation Board to make the module easy to program, but the price put me off. It's very expensive just to get a USB interface.

Since the module will be flown attached to a simple breakout board (see the photo above), I decided that I'll interface directly to that board for programming using a USB TTL converter cable. That way I can program the device in place... cheaply. The breakout board will only have three additional things attached to it: power, an LED on the STAT_LED pin, and a simple switch on the ON/OFF pin.

Note that in the circuit diagram for the SparkFun GSM862 Basic Evaluation Board (the breakout board I'm using), it's not obvious that all four of the VCC connections on the Telit module are connected together, and both the GND connections are connected together. This is super convenient because it means only one of each needs to be connected to the battery, but the SparkFun circuit diagram is incorrect in showing six separate connections. A quick test with a multimeter and a look at the PCB tracks verifies the truth.

Start The Engine

I woke up this morning to discover that the The Independent newspaper in the UK had picked up on my desire to build Babbage's Analytical Engine (see Plan 28) with not one, but two articles. The first article begins:

It may seem an anachronism in the era of the ever-shrinking digital gadget, but Charles Babbage's locomotive-size "Analytical Engine" remains one of the greatest inventions that never was.

Babbage's brainchild, first conceived in 1837, never wound into life. But now John Graham-Cumming, an influential programmer and science blogger, is leading a quest to build the Analytical Engine in all its 19th-century glory. He plans to use detailed blueprints which Babbage laid down in a series of notebooks held in the archives of London's Science Museum.

But the real surprise was that they decided to talk about the Engine in a Leader titled Start the engine:

John Graham-Cumming led the successful campaign last year to secure a pardon for Alan Turing. Now the science blogger intends to deliver a posthumous honour for another of the fathers of computing: Charles Babbage. Mr Graham-Cumming's latest project is to build Babbage's "Analytical Engine" – essentially a great steam-powered computer – based on the 19th-century inventor's designs held by the Science Museum.

PS Amusingly, The Daily Mail has picked up the story here without speaking to me at all.

Friday, October 01, 2010

Answer Day

I'm unilaterally declaring Sunday, October 10 this year as Answer Day.


Well, it's 10/10/10 and 101010 in binary is 42. And 42 is, of course, the answer to Life, The Universe and Everything.

So, let's celebrate the life and work of Douglas Adams on Answer Day, by rereading his lovely books. I'll be making sure I know where my towel is that Monday.

Will you join me in carrying a towel on your daily routine that Sunday? I'll carry a towel rolled under my arm that day. Say Hello if you see me.

You've still got time to prepare so... Don't Panic.

Top blog content for September 2010

The following blog stories were hits around the web:

  1. The Myth of the Boy Wizard 17% of page views

  2. We've read your code 12% of page views

  3. A Tale of Two Cultures 9% of page views

  4. Beautiful Simplicity 9% of page views

  5. Babbage's Debugger 8% of page views