They say you learn something new every day.

Posts tagged ‘bookmarks’

Couting Words (27/02/2012)

So, as I said, proof reading is hard. Really, to misquote Douglas Adams, hard. You just won’t believe how vastly, hugely, mind-bogglingly hard it is. I mean, you may think doing maths is hard, but that’s nothing compared to proofreading.

One of the things I find difficult to spot is duplicate words. Being a techie sort, I decided to code myself out of it, so I wrote a little internet app: the repeated word finder.

Basically it searches for cases of the same word being used in close proximity and highlights them. Obviously, there are lots of legitimate uses for repeated words (like both the ones in the illustration), and I know that you can never code better writing, but it helps you see the errors. My hope is that by highlighting these things  it’ll help me spot them.

It’s interesting – there are some things humans are good at, and some things computers are good at. Humans are very good at reading what should be there, and improving phrasing etc. Computers are very good at reading what is actually there and highlighting things that humans would just gloss over.

Hopefully, this is just the beginning of a larger proof reading tool. It’s something of a sister to the uber-wordcount tool, which needs a bit of a rewrite really. My plan is to handle all of this sort of thing – stats, wordcounts, etc, in one javascript based application. There’s no need to do anything server side with this at all.

I’ve written the app in javascript, and I have to admit, my javascript is rusty. I was quite exicited to find a javascript minifier. This is the original:

function countit(){

var formcontent=document.wordcount.words.value
formcontent = formcontent.replace(/\n/g, “

formcontent = formcontent.split(” “)
var recentbits = “”

for ( var i = 0; i < formcontent.length; i++ )
if ( recentbits.toLowerCase().indexOf(” ” + formcontent[i].toLowerCase()) > 0)
formcontent[i] = “” + formcontent[i] + “

recentbits = “”

for (var count=0; count < 20; count++)
recentbits = recentbits + ” ” + formcontent[i-count]


var totalwords = formcontent.length

document.getElementById(‘totalwords’).innerHTML = “Output: (” + totalwords + ” words)

” + formcontent.join(” “)


And this is after minifying:

function countit(){var a=document.wordcount.words.value;a=a.replace(/\n/g,”

”);a=a.split(” “);var b=”“;for(var c=0;c0){a[c]=””+a[c]+””}b=”“;for(var d=0;d<20;d++){b=b+” “+a[c-d]}}var e=a.length;document.getElementById(“totalwords”).innerHTML=”Output: (“+e+” words)

”+a.join(” “)}

Obviously, you can’t read it, but it’s so much more compact.

Going through it, I don’t think it does anything cleverer than renaming all the variables to consecutive letters and getting rid of all the space. But it’s pretty nifty for loading into the live system.

All is not lost (19/01/2012) were unable to retrieve the post I lost. It’s one of the first things I can think of that I’ve irrevocably lost on a computer. It’s somewhat ironic, because I’ve only just started my backup plans.

The “missing post” was about some free OCR software called tesseract. It’s not a massively important post, and I have a copy of the one key thing about it (the command line syntax) which is:

tesseract.exe FILE output -l eng

As well as, somewhat ironically, the pictures. Unlike Jeff I’ve kept the pictures but lost the text.

Here they are, showing the effect of the update. Accuracy of old version:

Old version

Accuracy of new version:

New version

However, I don’t want to talk about what’s missing.

Since I started my aim to learn something new each day, I’ve managed to write something every day. But losing this post was the first time that made me think, “oh damn, is it worth it”. It really annoyed me – perhaps more than it should.

There’s a section in Transformative Entrepreneurs where Jeffrey Harris talks about what makes people successful:

Successful entrepreneurs combine optimism, creativity, passion, courage and perseverance. They have an uncanny ability to keep going when times get tough. They have such excitement about what they are doing, and a need to prove to the rest of the world that their idea has merit and that they don’t quit.

Now, admittedly, losing one post isn’t the biggest set back in the world. It’s nothing compared to the set backs Mr Honda went through before his company became successful:

Like most other countries, Japan was hit badly by the Great Depression of the 1930s. In 1938, Soichiro Honda was still in school, when he started a little workshop, developing the concept of the piston ring.

His plan was to sell the idea to Toyota. He labored night and day, even slept in the workshop, always believing he could perfect his design and produce a worthy product. He was married by now, and pawned his wife’s jewelry for working capital.

Finally, came the day he completed his piston ring and was able to take a working sample to Toyota, only to be told that the rings did not meet their standards! Soichiro went back to school and suffered ridicule when the engineers laughed at his design.

He refused to give up. Rather than focus on his failure, he continued working towards his goal. Then, after two more years of struggle and redesign, he won a contract with Toyota.

By now, the Japanese government was gearing up for war! With the contract in hand, Soichiro Honda needed to build a factory to supply Toyota, but building materials were in short supply. Still he would not quit! He invented a new concrete-making process that enabled him to build the factory.

With the factory now built, he was ready for production, but the factory was bombed twice and steel became unavailable, too. Was this the end of the road for Honda? No!

He started collecting surplus gasoline cans discarded by US fighters – “Gifts from President Truman,” he called them, which became the new raw materials for his rebuilt manufacturing process. Finally, an earthquake destroyed the factory.

After the war, an extreme gasoline shortage forced people to walk or use bicycles. Honda built a tiny engine and attached it to his bicycle. His neighbors wanted one, and although he tried, materials could not be found and he was unable to supply the demand.

Was he ready to give up now? No! Soichiro Honda wrote to 18,000 bicycles shop owners and, in an inspiring letter, asked them to help him revitalize Japan. 5,000 responded and advanced him what little money they could to build his tiny bicycle engines. Unfortunately, the first models were too bulky to work well, so he continued to develop and adapt, until finally, the small engine ‘The Super Cub’ became a reality and was a success. With success in Japan, Honda began exporting his bicycle engines to Europe and America.

His plans were stopped by the whole world going to war and his factory was destroyed by a blooming earthquake. But he didn’t give up. I’m not sure I’m there yet. I think if an earthquake destroyed one of my projects I’d probably call that one a day, but I think this is an incredible lesson to us all.

The thing I’ve learnt today is to be successful you need to carry on even when you fail. Even if you fail ten times and then succeed, you’ve succeeded. Succeeding isn’t not failing, it’s working through all the failures to get to the success at the end.

It’s like that old joke:

“Why do I always find my keys in the last place I look?”

“Because you give up looking when you find them.”

The only way to not fail is to keep trying.

The other thing, of course, is to review your failures. They may be painful, but failure is the only thing you can learn from.

Consequently, I’ve reviewed Jeff’s list of “how to backup” again and looked at my process:

  • Don’t rely on your host or anyone else to back up your important data. Do it yourself. If you aren’t personally responsible for your own backups, they are effectively not happening.
    [I assumed queued posts were backed up. They weren’t]
  • If something really bad happens to your data, how would you recover? What’s the process? What are the hard parts of recovery? I think in the back of my mind I had false confidence about Coding Horror recovery scenarios because I kept thinking of it as mostly text. Of course, the text turned out to be the easiest part. The images, which I had thought of as a “nice to have”, were more essential than I realized and far more difficult to recover. Some argue that we shouldn’t be talking about “backups”, but recovery.
  • It’s worth revisiting your recovery process periodically to make sure it’s still alive, kicking, and fully functional. 

And I’ve got a plan to stop this happening again.

Pimp my Tumblr Search (18/01/2012)

Yesterday I was looking for something I’d learnt before (about adding a new table in SQL, I believe), so I thought I’d search my Tumblr for it. Wrong. It turns out the Tumblr search box doesn’t work. What on Earth? Did I break my theme when I pimped my Tumblr?

It turns out I didn’t. This is quite a common problem. The search on Tumblr just doesn’t work. I genuinely found this hard to believe at first. “It must work”, I thought to myself, “they wouldn’t just leave a broken feature there”. But, it doesn’t.

I was left really stumped that a Web 2.0 project which seems to care so much about usability, would make such a mistake. I suppose the themes are made by individuals so Tumblr can’t get rid of the search box. But it must have worked at some point for people to add it in. Maybe it causes too much load on the system. Whatever the reason, we have to deal with the problems that we’re dealt. The Tumblr search just does not work.

It’s a problem to which some people have come up with some innovative solutions.

The standard solution seems to be to use a tag search:

You put this bit of code in the HTML head of your theme:

function handleThis(formElm)
return false;
// —>

And then edit your search box:

It’s quite a nifty bit of code – and a bit like the code that I hacked together (and didn’t really understand) years ago to make my own custom search page:

Looking at this code, I understand it completely, which is a really nice feeling.

It takes “this” (the value from the form) and adds it to the string to get a new page location. It then uses “window.location” to load the new page created. Technically you could create any page with this. And hence, point to any form that uses GET variables.

The problem of course is that all it’s doing is loading tag pages, which isn’t really a proper search.

One option would be to add it into a Google search using the “site:” feature, like this:

But the problem with this is that it takes you to Google and away from Tumblr, which is a bit jarring. It’s like opening the fridge door and finding yourself in Tesco. It’s great and thanks for all the choice and that, but I only wanted the milk.

Added to this is the fact Google’s crawling may be a few days out of date. It’ll be fine for the old pages, but given I update this every day, that might be a bit annoying for me when searching.

Sentences (16/01/2012)

I’m reading Your Voice in My Head at the moment. It’s one of my top books of all time, along with How to be Good, and some books by Ali Smith and Tibor Fischer. I’ve been trying to think what is it about these ones that puts them in my top few. And I’ve concluded that it’s because they are spectacularly easy to read. When I go back to another book after these, I find it a drag to read them.

L was given a copy of Mr Chartwell the other day. It’s an interesting book about a literal Big Black Dog pursuing Churchill. But it suffered because I read it immediately after Forrest. Take this sentence from the beginning of Mr Cartwell.

In a terraced house in Battersea, Esther Hammerhans came tearing down the stairs with one arm through a cardigan sleeve, the rest flapping at her legs, and turned off the hob. The kettle stopped its screaming, throwing out hysterical clouds of steam. Esther found the teapot and filled it with hot water, some spilling over the work surface. The tea leaves had been forgotten, something she discovered live minutes later, after a wild campaign with the washing up.

There’s nothing really wrong with it. The first sentence is active rather than passive. There aren’t lots of sub clauses. The action is at the beginning of the sentence. And something actually happens in it; that is, the character does something.

I mean there are some things you could improve. There are no really short sentences. Most of them have at least two parts to them. There’s a passive sentence: “The tea leaves had been forgotten” which could have been cut. But these aren’t big things.

But compare this to the first section of Your Voice in My Head:

A man hovers over me as I write. Every table in the Los Angeles café is taken.

‘Are you leaving?’

My notebook, coffee and Dictaphone are spread out in front of me.

‘No,’ I answer.

‘I’ll give you a thousand dollars to leave.’

‘OK,’ I say, as I pack up my things.


‘Sure. A thousand dollars. I’m leaving.’

He looks at me like I’m mad and beats a hasty retreat.

I meant it. He didn’t mean it. My radar, after all these years of sanity, is still off when it comes to what people do or don’t mean.

My mum calls my cell phone and I go outside to take it.

‘How do you pronounce Tóibín,’ my mother asks me, ‘as in Colm Tóibín, the novelist?’ This is our daily call, me in America, her in England, every day since I moved here at twenty-one. I’m thirty-two now, and she’s seventy-one, though she sounds like she’s seventeen.

‘It’s pronounced toe-bean. Like “toe” and then “bean”.’

‘That’s what I feared,’ she says. She lets this marinate a moment. Then, ‘No. Not acceptable.’

‘But that’s his name! That’s how you say it.’

‘I can’t be going around saying “toe-bean”. It simply will not do.’

‘Why don’t you just not say his name?’

‘He’s a popular writer.’

‘Read his books but don’t talk about them.’

‘No,’ (I can sense her shaking her head) ‘some situation will arise that requires me to say his name.’

Now, obviously, there are a few differences here. Forrest is writing in the present tense, Hunt in the past tense. Forrest’s is a couple of snapshots. She’s using dialogue. But you know what, I want to keep reading Forrest’s. It doesn’t feel like reading. Hunt’s does. Now, obviously, it is a novel, so that’s not such a bad thing, but of these two, I know which one I’d stick with.

Good dialogue is a wonderful thing. It makes the reading not feel like reading. I’m reminded of Alice in Alice’s Adventures in Wonderland:

[…] once or twice she had peeped into the book her sister was reading, but it had no pictures or conversations in it, “and what is the use of a book,” thought Alice, “without pictures or conversations?’

What’s particularly nice about this section from Alice is the way the narration turns into speech with that “and”. Alice’s thought follows on from the narration.

There’s the old chestnut about writing like you speak:

0. Speak what you write: This is rule zero because all other rules follow on this. Basically: If what you’re writing is hard to speak, what makes you think it’s going to be easy to read? It won’t be. So speak out loud what you write. If you can’t speak it naturally, rewrite it. Simple.

It’s true. I wonder if this is because when writing is conversational it feels more like listening than reading.

Take the beginning of How to be Good:

I am in a car park in Leeds when I tell my husband I don’t want to be married to him any more. David isn’t even in the car park with me. He’s at home, looking after the kids, and I have only called him to remind him that he should write a note for Molly’s class teacher. The other bit just sort of … slips out. This is a mistake, obviously. Even though I am, apparently, and to my immense surprise, the kind of person who tells her husband that she doesn’t want to be married to him any more, I really didn’t think that I was the kind of person to say so in a car park, on a mobile phone. That particular self-assessment will now have to be revised, clearly. I can describe myself as the kind of person who doesn’t forget names, for example, because I have remembered names thousands of times and forgotten them only once or twice. But for the majority of people, marriage-ending conversations happen only once, if at all. If you choose to conduct yours on a mobile phone, in a Leeds car park, then you cannot really claim that it is unrepresentative, in the same way that Lee Harvey Oswald couldn’t really claim that shooting presidents wasn’t like him at all. Sometimes we have to be judged by our one-offs.

Again, it’s in the present tense. Unlike Forrest though there’s no dialogue here. But while there may not be dialogue, if you put speech marks round it you could believe someone was saying it.

Let’s go back to Hunt’s first sentence. I don’t want to rip her apart – I think it’s probably a good book, but it’s just the first book I read after one of my favourites, and I’m trying to work out what’s different.

To be fair to her this isn’t the first sentence. The book begins with:

Winston Leonard Spencer Churchill’s mouth was pursed as if he had a slice of lemon hidden in there.

But the sentence I’m looking at is the bit that caught my attention, and made me wonder what was wrong with it.

The tense is quite a key thing. I used to hate writing in the present tense. I thought it wasn’t “proper” story telling somehow. But thinking about it now, that’s probably what’s so great about it. Writing in the present tense loses the feeling of telling a story. It makes it feel like it’s just happening.

Forrest and Hornby have both been journalists. And I wonder if this is something to do with it too. Newspaper features are generally in the present tense, and you lose that feeling of narrative too.

Of course, the other problem with Hunt’s beginning is how mundane it is. Moreover the sentence is stating where the location is (“in a terraced house in Battersea”). And that’s boring. Compare this to Hornby:

I am in a car park in Leeds when I tell my husband I don’t want to be married to him any more. David isn’t even in the car park with me.

We’ve found out the name of her husband without knowing. That knowledge slips in. It doesn’t say:

It was in a car park in Leeds that Katie told her husband David that she didn’t want to be married to him any more.

Hornby states the location as well. But there’s something about the blandness of “a car park in Leeds” against the emotional nature of “I don’t want to be married to him” that works. In Hunt’s, the blandness of “In a terraced house in Battersea” is set against the blandness of “turn[ing] off the hob”.

The word “tearing”, is a cliché; it has a sense of artifice to it. Ester didn’t really “tear” down the stairs, she ran down the stairs. That’s what happened. Describing it as “tearing” involves translating from the action to the metaphor.

Even having one arm through a cardigan is a cliché; enough of a cliché that it only took me a few seconds to find a cartoon of it.

And at the end of this sentence, there’s no emotion. Just someone turning off a hob.

I think there’s a few things to learn here, one of which really is, as I said the other day, you need to be weird. As readers we crave oddities. If I want to know what it’s like to turn off a hob in a rush, I’ll leave the milk to bubble over. If I want to be surprised by the oddities of a character, I’ll read Your Voice in My Head.

More than that, you need emotion in your sentences, and you need to create that effect of reading without reading. It doesn’t just need to be easy reading, it needs to flow.

Pimp my Tumblr Some More (08/01/2012)

I’ve quoted Steve Makofsky’s description of his blog as “a backup of my brain – a permanent online record so I wouldn’t have to write everything down” before, but I really like it. I’ve realised it’s exactly what I’m trying to do here.

It’s surprising how often parts of my brain become corrupted and need to be restored from the backup!

When I went home at Christmas I found this book:

My Favourite Childhood Book

As a child this was one of my favourite books about cartooning (I wanted to be an illustrator, you see). I pored over it for ages. And in particular one picture:

My favourite childhood desk

I loved the look of this desk and wanted to have one like it day.

I’ve had this picture half in my mind for a long time (when I first left home I bought two massive pieces of wood from Ikea and put together a corner desk a bit like this). However, it was really nice to see the original again since it had meant so much to me when I was little.

It was also really good to recalibrate my interests. Sometimes, we’re so busy going through life that we forget what it is we actually want. It was useful to put myself back into my childhood state of mind to remind myself what I like doing, and what I want from life.

This leads me back to the purpose of this blog. One of the reasons I’m keeping it is so that I don’t forget things. And I don’t mean things like buying some milk or writing a thank you note to Aunt Mavis for the knitted gloves. I mean useful things. The interesting, useful things you learn and read but then forget.

This Guardian article about “waiting-for-lists” sums up the sort of problem I’m trying to solve:

[…] multiple times a day, at work or outside it, most of us make requests of people – underlings, superiors, friends, service providers – and simply assume they’ll follow through. Even non-managers like me, whose work involves no formal delegation, “delegate” like this all the time: that’s what’s happening when you order a book from Amazon, ask a colleague for a piece of information or email a friend about your weekend plans. Yet based on an unscientific survey of my acquaintances, what proportion of people have a systematic way to keep track of who they’re waiting to hear back from? Zero per cent, approximately. (I suspect the same problem infects entire organisations, too.) And though aficionados of David Allen’s book Getting Things Done will be familiar with this issue, the vast majority of “productivity systems” are no help at all: they’re fixated on helping you remember and prioritise your own tasks – even though, in truth, you’re far less likely to forget about those.

It turns out that keeping a “waiting-for” list is like being handed a pair of x-ray spectacles for peering inside your colleagues’ lives. Based on what does or doesn’t get crossed off the list, as people do or don’t get back to me, I’m pretty sure I now know who’s on top of things, and who’s inefficient or just lazy, their email inboxes backed up like clogged drains. (It’s possible, I realise, that it’s just me they’re not responding to, out of icy contempt. I hope not.) The only downside is wondering how many loose ends I must have let slip before keeping the list: how many mail-order items ordered and never received, how many plans suggested to friends then abandoned, just because it slipped my mind that I’d ever asked?

I’m shocked to think of all the interesting ideas I’ve read or thought, insightful quotes, fascinating websites, things I’ve learnt and then just forgotten.

I learn things and then I forget them again. Trying to get less stupid is like filling a bath with the plug out. You’re filling it, but at the same time, information is running away.

There’s a bit at the beginning of each of the Head First Labs books explaining why this happens:

[…] what does your brain do with all the routine, ordinary, normal things you encounter? Everything it can to stop them from interfering with the brain’s real job—recording things that matter. It doesn’t bother saving the boring things; they never make it past the “this is obviously not important” filter.

How does your brain know what’s important? Suppose you’re out for a day hike and a tiger jumps in front of you, what happens inside your head and body?

Neurons fire. Emotions crank up. Chemicals surge.

And that’s how your brain knows…
This must be important! Don’t forget it!

But imagine you’re at home, or in a library. It’s a safe, warm, tiger-free zone. You’re studying. Getting ready for an exam. Or trying to learn some tough technical topic your boss thinks will take a week, ten days at the most.

Just one problem. Your brain’s trying to do you a big favor. It’s trying to make sure that this obviously non-important content doesn’t clutter up scarce resources. Resources that are better spent storing the really big things. Like tigers. Like the danger of fire. Like how you should never have posted those “party” photos on your Facebook page.

I’m not convinced that’s fully how your brain works, but it’s close enough. And the end result is the same.

Writing things down is all very well, but as Samuel Johnson says, there’s two parts to learning:

Knowledge is of two kinds. We know a subject ourselves, or we know where we can find information upon it.

So today I reviewed my tagging of my posts. More importantly I added the “categories” bar to the side of this page.

At first, I was a little annoyed that Tumblr didn’t add a list of tags to the side of the blog automatically, like, say, Blogspot or WordPress. However, this has given me an opportunity to organise my tags a little better.

I want to keep this up to date, and regularly check that I haven’t inadvertently mistyped or created any new ones, and that’s where today’s script comes in.

set xmlhttp = CreateObject(“MSXML2.ServerXMLHTTP”) “GET”, Page, false
xmlhttp.send “”
Fetch = xmlhttp.responseText
set xmlhttp = nothing

I’ve written this vbscript function that downloads the contents of webpages into a string.

Luckily, on Tumblr, the complete post of each article is displayed in the summary page, so I can just work my way backwards through the pages until I get to the first article:


All we need to do is hold some unique text from the first article I wrote. Something like the unique Disqus key (of course, I can’t post it in this article, or I’ll break my script!).

We end up with a script that looks a little like this:

DO UNTIL Done = “Done”

NewPage = Fetch(PageUrl & PageNumber)
PageContents = PageContents & NewPage
PageNumber = PageNumber + 1

IF INSTR(NewPage,EndContent) > 0 THEN
   Done = “Done”


Now that I’ve got all the contents of my Tumblr articles in a string I can do some interesting things with them.

It’s actually a backup (although not the backup, as the proper one has to be automatic, and I’ve already solved that problem), but I can do stuff with it.

The first thing I did was this, so that I could pull out all the links:

Links  = Split(PageContents,”href=”“http”)

Then I looped over the array and removed all the junk data:

ThisLink = “http” & Left(link,INSTR(link,”“”“)-1)

To leave me with just the link name. Splitting the text string into an array may seem strange, but I think it’s the neatest way.

Now that I’ve got all the links I can pull out all the tags, check them against the current list on the website and just display new ones:


// This checks if it’s a tag 

 INSTR(ThisLink,””) > 0

// This checks if it’s a duplicate 

 AND INSTR(TagList,Mid(ThisLink,50)) = 0

// This checks if it’s already on the site 

 AND INSTR(ExisitingLinks,ThisLink) = 0


TagList = TagList & “
” & Mid(ThisLink,50)


But what I can also do is run each proper link against this function:

set xmlhttp = CreateObject(“MSXML2.ServerXMLHTTP”) “GET”, Page, false
xmlhttp.send “”
PageStatus = xmlhttp.status
set xmlhttp = nothing

And check that they work!

I know there are some link checking services out there:

Are the two that jump to mind. However, I find they tend to get a bit confused.

I ran my website through Xenu recently, and it spent the rest of the day trying links. Hundreds of thousands of them. Now I know I’m generous with my links, but not that generous. I think it must have got into a loop and was trying the same page multiple times.

I mean, even running the W3C Link Checker on this Tumblr site now, it seems to check the standard pages and then click into each article and check them as well.

I don’t blame them. There’s no way that they can know that the text of this article will be duplicated on the summary page and on it’s own individual page  – but since I’m getting the data anyway, I can run my own check, and it can do it customised to my exact requirements.

You scratch my backup, I’ll scratch yours (05/01/2012)

So, like everyone else in the world, I don’t backup any of my data. I just assume that losing data is something that happens to other people. And then when I do lose data I find someone to blame.

The standard backup strategy

However, I’ve decided I’m going to change all that. Of course there are a few requirements for my backup plan:

  1. It must be automatic. Ideally fire and forget. I love stuff that’s fire and forget. It’s as close to perfect as … stuff can get. And not just computers. Take inoculations, for instance. The perfect example of fire and forget medicine. The problem is if it’s not fire and forget, then I’ll have to remember to do it. And I’ll forget.

    This is a general point about everything, not just backups and not just computers. If it’s not something you’re interested in, you will forget. Everyone seems to have their own laws and rules these days, so I’ll propose the Pitt Principle:

    Anything that someone can forget to do, someone will forget to do

  2. It must be free. I’m not going to pay to store all my stuff. Again. That would really be a kick in the teeth. No, sometimes I have mixed feelings about this philosophy, but overall, as a starting point I try to do things in a way that’s free.
  3. The process must not affect my life or computer use. I don’t want some background task that uses up 100% of my CPU so I can’t do anything productive, or some upload task that uses up all my bandwidth. Or even, some application that slows my boot time down or takes up 50GB of hard disc space. The simpler the better as far as I’m concerned.

Now, that’s enough of what’s it’s not. While it’s helpful to have a nemesis, I was watching a documentary about Blackadder (I think it was this programme, although I can’t find the quote, despite hunting through the subtitles) the other day where they said they spent so much time talking about what they didn’t want to make that they almost painted themselves into a corner.

So, what should my backup plan contain?

  1. I’m happy to put in more effort in advance if it means less effort in the future. I regard this as quite a central tenant of being lazy. There’s no use being lazy now, if you have to do twice as much work tomorrow. That’s bad laziness.
  2. I’m happy to script some stuff if it means it does just what I want it to do. There’s a tension here, I always think, between getting software that’s already written, and writing your own that does just what you want. I fight this a lot at work. But there is a sweet spot, and partly that sweet spot depends on how good you are at coding.
  3. I’m happy for it to be several processes as long as they’re all automatic.

I came across the first part in my plan yesterday: the excellent site If This Then That. It’s such a great idea for a website, and it’s really nice to use as well.


It takes as an input a number of social media sites, RSS feeds or emails (so you can insert arbitrary inputs), and allows you to automate another task based on those. It’s a bit difficult to explain, so it’s easier to show with an example.


Yesterday, I created a task that automatically posts a copy of an article to my backup wordpress blog every time I post an article to Tumblr.

I’ve never really thought blogs needed backing up; I assumed the hosts did that for you, but that isn’t always correct. Now, though, I’ve got blog redundancy. If Tumblr goes down (I’m sure that it won’t), this will still be available on wordpress. And if it dies, all my text content will be save.

Perhaps a bit overkill, for this site, which is really just for me, but that’s not the point. It’s the right thing to do,

Now, of course, that’s just the first part of my plan. I’ll need to do something similar for my website. I store all the images for this blog centrally in my website, so what I need to do is automate a back up of them to something like dropbox or Flickr.

Now along with this the other day I read Jamie Zawinski’s tongue-in-cheek blog post about backing up:

Learn not to care about your data. Don’t save any old email, use a film camera, and only listen to physical CDs and not MP3s. If you have no posessions, you have nothing to lose.

He means this facetiously. but there’s something a bit appealing about this. It’s like getting rid of possessions. It’s quite liberating. But, having said that, there is some data I’d be really sad if I lost.

The real option, Jamie tells us, is to buy a load more hard drives and back up to them. And a server. And leave a hard drive at work. And post one to your Aunt in New Zealand, and put one on the Voyager shuttle etc.

Hard drives galore

Obviously there’s such a thing as backup overkill. And I suspect if 95% of the world doesn’t backup at all, 4% obsessively over backup to a ridiculous level. The idea is to be the 1%, that backup to a degree appropriate to their content.

I have 4x1TB hard drives in my computer. However, most of this is media (video, games, music) which I could rip or download again if necessary. The key part is my self created content (like this site) that I would be sad to lose. I may copy some of the more rare media to my unused external hard drive, but that’s as far down that path as I want to go.

I also need to create a boot disc (tick, I’ve got a Win PE disc lying around somewhere) and create an image of my current C Drive for bootable purposes. Somewhere I have an Acronis True Image bootable disc lying around. It’s not too important to me that this up to date, as I’ll only be using it to restore my machine to get it bootable.

However, it’s scattered around my computer, so I think when I get home, one of my first tasks will be to organise my computer a bit more, and then write some script to automate an incremental backup to my web server. That second stage will be for another day, I think. Right now, I’m pleased to have found and set up If This Then That.

Of course, the final part of my backup strategy, what I’ve learnt and discovered, is this site.

Tag Cloud