Robert Heaton

Software Engineer /
One-track lover / Down a two-way lane

Lessons from a surprisingly successful blog

26 Jul 2014

Since I started writing at the end of 2012, I’ve written 34 posts. I think that 17 of them are good, 5 are quite bad, and the other 12 are OK. To date they’ve been read just under 350,000 times, which is a tiny number in the grand scheme of things but feels pretty solid when I remember that I’m just some random guy with a website and a thesaurus creased open at the word “monkey”.

To be clear, I don’t know how to grow your traffic 100x, I don’t know how to get more Twitter followers, I don’t know how to sell things, I don’t know how to A/B test, I don’t know how to increase click-through rates.

I do seem to be able to write articles of between 500-5,000 words in length that a reasonable number of people are interested in reading. I think I’ve figured out a few simple ways to promote them that feel like the kind of thing a real human would do, rather than a machine that feeds solely on spam and eyeballs. And I reckon I have a reasonable idea of how to come up with ideas and convert them into something you’re happy to attach your name to.

And so without further ado or self-aggrandising (there will be plenty of both later), here is a hefty but painstakingly edited guide of the most interesting and non-obvious things I have learned about the ideas, motivation, process, reception, traffic, style and practicalities behind blogging.

1. Why blog?

There are many, many arguments for why blogging is good for your health. But I think there are only 2 reasons why people actually decide to do it:

  1. They enjoy writing
  2. It’s exciting when other people read your writing

You have to actively want to write, and you have to want to do it instead of all the other things you could be spending your time on. There are lots of things that it would be kind of cool to be able to do or to have done, like rap battling, macaroon baking or playing intermediate club-level tennis. But unless you are actually intrinsically interested in these things then they won’t stick, you’ll give up, and you’ll have to look for the next thing that you might be an undiscovered genius at. Writing is no different.

However, if you have no reason to believe that anyone will ever read what you’re writing, then it becomes very hard to write well or even at all. It seems that there do exist artists who compulsively create with a genuine disregard for the attention or opinions of their public or critics. But I am not one of them, and you probably aren’t either. It’s worth being honest about this, because then you realise that it’s important to do a basic amount of work on putting your writing where other people might see it.

Unless writing brings you both joy and some degree of attention, you will struggle to keep at it. There are other reasons that one can give, and these can be pleasant auxiliary benefits. “It improves your writing skills”, “It is satisfying and professionally beneficial to build up a body of work”. But I don’t believe that any of these actually cause people to write.

In particular, a motive claimed by many is that “writing a blog post helps me clarify my thoughts about something”. Whilst this is true and a nice sentiment, I cannot believe that it is what causes someone to sit down, open a new Evernote and start hit hitting the keys. On the other hand, professing to be writing for unassuming, personal reasons nicely sidesteps common criticisms of amateur essayists. There often seems something arrogant and naive about blogging, as though it is hopelessly deluded to believe that you have sufficient authority to write about anything or that anyone will ever read it if you do. But if your claimed motivations are devoid of any thought or care for the actions or opinions or others then you neatly elude these (mostly imaginary) critics.

Give your motives some independent thought; I may not be right (n.b. I am usually right).

2. Practicalities and getting started

You will need:

2.1 A friend

A friend who is also an aspiring or established blogger is perfect. They will be your sounding-board, your editor and your reassurance that you aren’t a vainglorious toolbag. They will provide a friendly yet tacitly ultraviolent degree of competition, and frequently galvanise you into writing your next post. They will certify that your latest post doesn’t make you sound like a dick, and console you when Twitter tells you otherwise. Also you presumably enjoy hanging out with them. I recommend James Shakespeare and Peter Nixey.

2.2 A domain

Unless you have a really, really good reason not to, use $ or as close to it as you can get. You want to have your name and personality at the forefront of your writing, and almost no one will associate “ - a blog about whimsy and nanobiology by Steve Steveington” with you, Steve Steveington. There’s no need to get cute - is actually available for registration (I’ve checked) so just go and buy that.

2.3 Jekyll

I’m sure that people have their reasons, but I cannot understand why anyone would ever write extended prose on Medium, Quora, or any other system that gobbles up your hard work and uses it for its own ends. Personally, I’m uncomfortable even going near a platform that ties my work to their database in any meaningful way.

On the other hand, Jekyll is just great. Your site is its own self-contained, completely customisable unit, although Github will host it for free if you want (and you do want). There are scores of equally free themes available, and based on my experience, my friend Mu-An will make you your very own if you ask her nicely/hourly-until-she-gives-in. The world won’t end if you use Tumblr or Wordpress or whatever, but it will be slightly worse.

2.4 Social buttons

Social buttons are not without their downsides. They do detract from the sense of sombre gravitas your powerful words create, and the “Tweet” button looks pretty lame when it’s stuck at 2 (we’re assuming your mum also uses Twitter). But they do seem to result in more people sharing what you have written. I have zero research on this, but since everyone else on the internet is doing it, you probably should too.

2.5 A mailing list

It is unlikely that Steinbeck or Orwell had mailing lists, but that’s why they’re only numbers 70 and 34 on the Amazon bestseller list at the moment. Given how straightforward and free Mailchimp is, for the sake of 10 minutes and a text box at the bottom of each post you might as well have one. Some people will want to receive your future posts in their inbox, and you should absolutely oblige.

2.6 An email address

If you put it on your site, people will email you from time to time, even about your crappiest posts.

2.7 Analytics

Set up both Google Analytics and Google Webmaster Tools. Until the numbers they produce become important for some reason they are just vanity metric generators. But all is vanity, so set them up.

3. Ideas

When you start writing, you will probably have very lofty notions of what constitutes an idea worthy of your time. You will also probably not have very many ideas that meet these stratospheric standards. There are two solutions. You can either have more and better ideas, or you can lower your standards. Both are legitimate approaches, but for obvious reasons let’s focus on the first one.

3.1 Where ideas come from

An incomplete list:

Don’t worry too much about sticking to one topic. Just write about whatever you find interesting and trust that someone else will agree with you. I have no quantifiable evidence that this is a sensible idea, but it’s what I’ve done and I feel like it’s worked out.

3.2 Storing ideas

If you come across something and think “oooh this could be a blog post” for even a second, write it down. Even your crappiest ideas can become more interesting over time, the same way that thriving mould societies can flourish on even the most rancid meat. I have 3 lists:

  • “Ready to write” - a list of posts I could pretty much sit down and write right now, making it easy to do so whenever I feel so inspired
  • “Vague ideas” - a list where half-formed kernels can mature and evolve their way onto the top list
  • “Posts I will never write” - because I am sometimes wrong

At the time of writing I have:

  • 7 ideas in “Ready to write”
    • How emoticons are genuinely useful to convey otherwise opaque tone and emotion in emails
    • I keep going to Hacker News rather than my Pinboard, even though I know I have a massive queue of awesome posts to read in Pinboard. Variable rewards are really powerful and scary.
  • 110 ideas in “Vague ideas”
    • Keeping your eye on the ball when playing golf will make you play better even if you don’t understand why
    • Even Edward Snowden, King Badass, went along with NSA bullshit for years
    • “Concern with talent is a low level prayer to be rewarded for who you are now” - True and False
  • 35 ideas in “Unlikely to ever write”
    • What playing Starcraft has taught me about vim
    • Things that happened whilst I was an international chess player

3.3 Your pet idea

Everyone has their pet concept or idea that they just know will become a fantastic blog post (perhaps even a whole series) one day. When they have finally finished mulling over all its subtle nuances and find the time to sit down and write it, it will truly be a thing of beauty. Months or years later, when they finally come to write the thing, it is just terrible. It’s a confused mess, nothing sounds as good on pixels as it did in their head, and even the bits that are halfway coherent seem boring and obvious.

This happens when you give an idea too much time and space to expand and embellish itself. What you see as maturing and evolution is actually procrastination and festering. By the time you come to put fingers to keyboard, the core of the idea feels trite and simplistic. You elaborate on what may have already been complex concepts, skipping out the now tedious foundations of your arguments. You try to build a roof without a house, and end up buried in tiling and drainpipes.

On the flip side, the posts that you come up with and write days or hours after first thinking of them will often be your finest, freshest work. The ideas are almost as new to you as they are to your readers, and so you give them the time and credit they require.

3.4 In short

If something feels promising, write about it now.

4. The process of writing

The three most important things about writing (in my humble and correct opinion) are:

4.1 Simple really is better

Some writers, such as Gerald Cohen, can write eloquent, sub-clause-heavy prose and still somehow manage to be readable, communicative and enjoyable. Unless you have been writing professionally for many years, this is unlikely to be you. If you are telling a story, then you may be able to afford to engage in Writing. If you are trying to convey information then you probably can’t. You can tell when an author is engaged in Writing, as their words cease to serve their story or message and instead start to demonstrate Literary Form. Over-ambitious similes flow like a river of ham, and superfluous adverbs plundered plethorically from the bosom of their thesaurus tumble onto the page. Do not do this. Keep trimming.

You may have to kill some words, even paragraphs that you love. It would be too strong to say that every sentence must have an explicit purpose, but any sentence that has neither a purpose nor some form of joke about a dancing animal should be a constant candidate for deletion. Keep trimming.

4.2 It takes a long, long time

I don’t keep exact records, but I would expect any given 600-1000 word post to take somewhere between an afternoon and a day before it is remotely readable. A multi-thousand word opus like the one you are reading will take several times this. Apart from some rare exceptions that just fall into place as though written by Clark Kent himself, this is just the way it is. Simplicity does not come quickly, and it takes an enormous amount of pruning before you get there.

4.3 Your first draft is meant to suck

I have found that writing a vague outline, moving a few sections around and then uncontrollably vomiting words that loosely correlate with this plan is the best way to produce a first draft. It will be mostly unreadable, but I have recently been informed that you are not actually obliged to publish your drafts and that this it fine. You have your skeleton. You can now identify themes that you might want to highlight, see if your overall argument feels coherent and whether it is the same as what you thought it would be. You can cut or drastically modify sections before you have invested time into them. And no one will ever see the first draft.

5. How I write

No one can tell you how you should write. But I can tell you how I write.

5.1 The good

There are some things I think I do well. I think I do a good “humble-but-not-too-humble”. Whatever you’re writing about, it’s always worth making it clear that you still have plenty to learn and are no expert. Unless of course you are an expert, when there’s still no need to be a dick about it. On the other hand, it quickly gets tedious when people are overly modest, and can even get insulting. If you think that only knowing 4 programming languages is a sign of gross moral turpitude and sexual inadequacy, where does that leave me if I only know 2?

I try to be clear in my head about why I think people will decide to read a post. This is mostly about choosing an intriguing but not too cryptic title and setting out what you plan to do in your introduction. I try and set the reader’s expectations to match what I am giving them, and in some cases to go as far as to directly tell readers exactly why they should bother with the next X00 words. Go back to the top of this post for a good example.

I also try to know why a reader will have enjoyed a post by the time (if) they get to the end. Will they have learned something? Will it be something they care about? Will they have just chuckled at a few gags, enjoyed some wordsmithery but not much else? This gives context when deciding what sentences are paragraphs to cut. I am increasingly realising that it’s not magic or random virality why some posts do well and others flop. Can you answer “why would anyone read this?”

5.2 The sneaky

Often you will want to write something controversial that would require an entire essay on its own to justify. For example, in “Getting Nothing Done: a misguided quest for productivity”, I tell the story of how lifehacking literature made me go temporarily insane for several years. I wanted to focus on the effect these ideas had on me, and to this end it was a helpful simplification to characterise the productivity community as basically insane. I was not really interested in a refined discussion of which parts of the lore are worthwhile, what specifically it is that causes people like me to lose their heads, or what could be done to make it less tempting to abuse. I was interested in telling some funny stories and absolving myself of my past sins, which required broadly dismissing lifehacking as a mad cult for mad people, brazenly by-passing these potentially relevant details.

When faced with such an impasse, my standard solution is to first say “only a total charlatan would claim X”, and then proceed to nonetheless claim X immediately.

“It would […] be unfair to suggest that GTD necessarily had to make you go insane. However, since caricature is much easier than nuanced prose, I will.”

In this way you are able to recognise the gross intellectual negligence involved in your arguments, gain some self-awareness credibility, and yet still make the exact same point you have just maligned.

A variation on this theme is to say something like “I wouldn’t say that this makes me better than you, but it does make me more intelligent, better dressed and more attractive to my preferred sex.” The generic form is “I am not X, but I am Y”, where Y is in fact completely equivalent to X. This has the same benefits as the technique described above - you can make a lazy argument, and simply point at it and laugh instead of improving it.

5.3 The minutiae

Despite what you may have been told by your kindergarten English teachers, starting sentences with “And” or “But” is a very easy way to emphasise a point. But you have to be careful not to overuse it. In a similar vein, starting a new paragraph gives the sentences either side of the divide a cheap injection of urgency.

It’s dangerously effective.

5.4 The neutral

It’s long been known that articles with titles along the lines of “X ways to Y” are both incredibly easy to write and irresistibly clickable. In the rarefied circles in which you no doubt move they are recognised as the laughably transparent eyeball-traps that they are, but that doesn’t stop you from clicking on them. For one example amongst bajillions, see the paradoxically titled “Top 10 Ways to Defeat Distractions and Get Your Work Done”. These posts are easy to write because you don’t have to bother working out how to thread your ideas together or form an overall, cohesive argument. You can just finish one point, increment the number in the margin and suddenly no one expects you to put any effort into transition or synthesis.

But sometimes you’ve just got to write a list. My post “9 ways to get that engineer” (perplexingly the best thing I’ve written that no one wants to read) consists of 9 ways to attract and hire software engineers. Each paragraph is a single and separate point, only tangentially related to the other 8. It felt most useful to present them as distinct blocks, allowing readers to discard the 7 suggestions they felt were moronic and focus on the 2 that made some kind of sense to them. I’m not ashamed.

I feel approximately the same way about posts split up by headings (like this one). Each heading is to some extent an excuse not to connect the paragraphs either side of it. But again, if you are trying to present actionable information in a clear, easy to digest format, splitting your writing up into labelled chunks has to be a good idea. Just don’t let the awesome power to completely change the subject without any notice go to your head.

6. Traffic

The best way, or at least a pre-requisite for getting people interested in your work, is to make it good.

Write as a genuine human, about stuff that you genuinely think is cool and that you think genuine real people will want to read because they will genuinely enjoy it.

You’re not blogging to make $10000/DAY GUARANTEED FOR 2 HOURS WORK PER DAY - you’re doing it for the combination of intrinsic reasons, vanity, and wide-eyed hopes of future literary stardom discussed above. You’re not looking to besmirch your good online name by being a spammy robot douchebag, so don’t be one. I may be misunderstanding their message or motivation, but I would suggest that this means that much of the advice that appears in Google when you search for “how to promote a blog post” either obvious or mostly useless to you. You have a limited amount of time and energy to spend on your blog. When you are starting out as a personal blogger (if not for even longer) , it strikes me that the most pragmatic approach for achieving your goals is to spend most of your time writing, make a moderate effort to expose your work to people who might find it interesting, and then call it a day.

6.1 Starting out

When you start writing, it takes all the courage you can muster to even hit the “publish” button. You assume that as soon as your post hits the internet, your online persona will immediately be set upon by angry polar bears who disagree with your anti-establishment opinions about toast. Of course, the reality is that at first no one will care or know about any of your opinions about anything, and this is therefore deeply, deeply mad.

I published my first 3 posts in one batch. It was important to publish them all at once rather than as I finished each one because of very important reasons that I have since forgotten. After pushing them out, I was surprised that no one seemed to be reading them. I shouldn’t have been; I wasn’t confident enough to admit to even my own Twitter and Facebook feeds that I had written anything. Whilst the internet is a marvellous place of whimsy and interconnectedness, no one can connect to you if you don’t tell them you exist.

6.2 Your first few visitors

Accidental stealth mode is no fun. One way out of it is to independently become respected and well known within your field, so that potential readers start actively seeking out your writing and are already excited when they find it. Unfortunately, this sounds quite hard and can apparently take as much as 3 WHOLE MONTHS. No one has that kind of time. And this also seems to be missing something. The promised magic of the internet is that anyone can put their work where it can be seen, and if it’s good (and shareable and well-packaged and well-marketed and…) then it will do well. It ought to provide scope for the non-rockstar to give their thoughts on what it’s like not being a rockstar. It ought to be a place where you can make your ideas heard without prior notoriety or public success.

For the little guy, I see 2 low-hanging ways to get a foot on the ladder.

6.2.1 Your friends

I find it painfully hard to believe that spamming out Tweets and emails to people you have never met but who are tangentially connected to the subject of your post can be a good idea. This could just be because I really, really don’t want to do it, and so I also really, really don’t want it to be something that would work if I did.

On the other hand, asking people you know and are actual friends with if they could give your oeuvre a quick Tweet feels fine and like something that a real human person would do. My typical approach is to only ask people who I can either say or email:

“Hey I’ve written this, could you give it a Tweet?”

rather than:

“Hey, how’s it going, hope that thing X is going well. I saw thing Y a while ago and thought of you - what do you think about it? Anyway, I’ve written this piece about thing Z that is kind of relevant to you and was wondering if you’d mind Tweeting it?”

Although maybe I’m just too British. Oddly, in situations like this I feel that the more tenuous the connection between you and someone else, the bigger the favour you have to ask for for it not to seem weird. You would be kind of confused if an old acquaintance from school rang you up and asked if they could borrow your gazebo, but not so much if they asked to talk to you for an afternoon about your preferred brand of golf club (assume that you know a lot about golf clubs).

6.2.2 Aggregators

The quick and potentially easy imaginary-internet-points are in aggregators like Reddit and Hacker News. These are sites where users submit links that they think the community might enjoy. Other users “upvote” or “downvote” links, and the most popular ones are displayed on a constantly evolving “front page”. They are read by approximately two kajillion people every day, and if some percentage of those people decide that they like your post then you can get a lot of traffic very very quickly. I think it’s completely legitimate to submit your own links to these sites, especially if you’re just starting out and especially especially if it’s something you are particularly pleased with. If people don’t like your post then it will simply fade into obscurity, and will only stick around if it’s popular.

Aggregators are the steroids of blogging. Each community will have biases towards certain writers and websites that acquire a reputation within the community, but it is still very possible to do very well as a complete unknown.

6.3 Subscribers

It is hard to wean yourself off a reliance on aggregators as your only source of noteworthy traffic. When you are #1 on /r/programming you are world famous, but when your 15 minutes of fame has passed you fade into the exact same obscurity that you came from. Subscribers are the key to a sustainable audience. As far as I know, there are 3 main ways people might subscribe to you:

6.3.1 Twitter

Since “Twitter is quite popular” no longer counts as news, I will not say much more about it. After a successful post, I tend to end up with O(10s) more Twitter followers than when I started.

6.3.2 Mailchimp

You might think that no one in their right mind would sign up to your mailing list, but it turns out that people are crazy. Progress is slow and sporadic, but I now have around 100 subscribers. For the sake of a few minutes and a text box, you should definitely set one up.

6.3.3 Feedly/RSS

I have nothing constructive to add beyond “have an RSS feed but don’t worry about it too much since I can’t think of anything you can do to influence how it is used.”

6.4 The Googles

For my first 10 posts or so, Google was broken. My site never seemed to come up in anyone’s searches.

Then about a year ago, I had a startling realisation. I had just written “How to hack a Rails app using its secret_token” and “The Padding Oracle Attack”. A few weeks after publishing them, I started to get a slow but steady stream of hits from Google for searches like “rails app secret_token” and “how does the padding oracle attack work”. It dawned on me that the posts that do well on Google are the ones that actually answer questions that people are asking. Whilst my rhetorical posts like “Check you’re wearing trousers first” and “Take pride or fuck it” were touching, sentimental, emotional reads, they were unrequested food-for-thought that people didn’t know they were looking for. Few people are wondering “say, what does little-known Ruby programmer Rob Heaton think about the dichotomy between taking pride and fucking it?”

But it turns out that people whose job is to program computers occasionally have questions about computer programming, and the first person they ask is almost always Google. If you can be the one answering their queries, you’ve got yourself a steady stream of imaginary-internet-points. And thus were born more posts:

and the rather more esoteric:

Writing a technical post about something moderately involved is absolutely not the fastest or most efficient way to learn about it, but it does force you to be thorough. In addition, I now get a several hundred hits/day from Google searches, almost all on the above 6 posts plus “Lessons from a Silicon Valley job search”. Imaginary-internet-money-paydirt.

6.4.1 SEO

The extent of my practical SEO knowledge is:

  • Other site linking to your site are good
  • It seems to often take a few weeks for a new post to climb the search engine rankings. I don’t know why.
  • Titles are important

An anecdote - my post “Is Python pass-by-reference or pass-by-value?” opens with a rather unnecessary spiel about 1980s sci-fi, and the title started life as “Python’s pass-by-object-reference, as explained by Philip K. Dick”. However, it quickly dawned on me that if your question is “why isn’t my code working”, you probably aren’t in the market for self-indulgent parentheses about androids and electric sheep. My most searched-for post is called “How does HTTPS work?” When you’re trying to answer someone’s question, make it clear to them that that’s what you’re doing.

Apart from that, you’re on your SEOwn.

7. Reception

7.1 Feedback

As more people start to read your work, more people will start to have opinions on it. Having mostly written about the relatively uncontroversial topics of computer programming and brainteasers, most of the (massively appreciated) feedback I receive is along the lines of “@RobJHeaton nice piece about the Padding Oracle Attack, thanks!” or “Hey, I think you missed out an XOR in your second block.” Occasionally someone in a comments thread or a scary corner of Twitter will have alternative, less me-affirming opinions, but they are rarely much cause for anguish. When people you have never met say nice things about your work, it’s important to take them at face value. They have just taken the time to tell you that they like what you’re doing, and that’s not an insignificant signal that you’re doing something right.

But to leave it at these platitudes would be to forget that Ruby and self-improvement are not the only things that people write about. Maybe your field is politics, justice or the environment, and the more controversial your subject-matter, the more vitriol will come your way. You may well be game for a good fashioned intellectual rumble, but it’s unlikely that you have much interest in being mauled by a distributed, bigoted leviathan. It seems that even subjects that shouldn’t be remotely contentious can set you up for taking some extreme heat. One prominent example is the depressing number of women subjected to a maelstrom of abuse as a result of their work, both on feminism and topics completely unrelated to sexual politics. The internet can bring much knowledge, happiness and fluffy joy, and for better or worse this is the part that I tend to write for. But it would be ignorant to forget that it can also mete out incredible quantities of hate at an astounding rate and precision.

7.2 Confidence

Since writing and nervously publishing my first post, I have become much more confident in my ability to express my ideas and the legitimacy of my doing so. The most significant and inevitable factor is likely that I am 18 months older and wiser, and so am unavoidably more experienced. On the other hand, I have also recently written several posts that I could easily have written a year ago if I hadn’t been so timid, for example “Why you should be vegetarian” and “Why I love refactoring”. There’s nothing wrong with starting with low-hanging fruit, but whenever you have some beliefs that seem pretty sensible and defensible to you, someone somewhere will enjoy reading about them. You’ll never know what they think until you ask them.


The keys to a good conclusion are recap and closure. Tell the reader what you believe the overall moral of the story is, and hopefully they will mostly agree. Raise further food for thought; what is important for the future of your subject, and where can the interested reader go for further study? This is also a good time to raise and acknowledge questions that you found too hard to answer yourself, and if you realise that you’ve over or understated one side of the story, you can at least show that you’re aware of it. Finally and obviously, you want a powerful final sentence, one that slams into the readers skull and leaves it pulsating for days. Of course, sometimes you’ve been writing all weekend and are just fresh out of imagination. This is not the end of the world (managing expectations for 2 paragraphs time).

As I said almost 6,000 words ago, writing a blog is definitely A Good Thing with Many Tangible Benefits. But you have to actively want to do it. When you’re working on a post, it has to be the one thing in the entire world that you most want to do in at that moment in time. I don’t believe that you need to start with any specific goals for your writing, other than to have some fun and create something of interest. If you then decide you want to use your writing for measurable, concrete purposes or make a concentrated effort to become an industry thought-leader, you can 1) worry about that later and 2) talk to someone who know a lot more about that than me.

It does occur to me that I might have overdone the optimism in this guide. Ideas, motivation and traffic are all non-trivial problems to solve, and even if you get past them you might just not be that great at writing yet. But better too much brightness than too little. If you’ve made it this far then you probably don’t need any further encouragement, so I look forward to reading your next post!

Subscribe to my new work on programming, security, and a few other topics. Published a few times a month.
Follow me on Twitter ➜ RSS ➜