Lessons Learned from 0 to 40,000 Readers

Starting Out

I started writing a little over a year ago, after finding “Technical Blogging” by Antonio Cangiano through Hacker News. Since then, a bit over 40,000 people have read articles I’ve written, not a huge number in the grand scheme of things, but enough to draw a few lessons. The more I write, the more good things happen on their own, but at random moments.

Before starting to write, I came upon ~650 followers on Google Plus through a mutual-follow program on Hacker News and was interested in the SEO potential. If you’re signed into Google, people you follow are promoted in search results. Before this I built a site for a family member selling beehive plans and learned a bit about SEO. It turns out that making money by selling $10 print books in a narrow niche is difficult, especially when you can’t do the writing yourself, so I’ve pivoted to pursue technical subjects.

Choosing Material

Antonio recommends writing in a focused niche, but I am still developing direction. I started with vague ideas based on things that interest me – database tuning, machine learning, data science, statistics, and practical applications of these. In practice, I’ve written on wider subjects – anything within “full stack web development” is fair game, trying to focus on new, or popular tech – Scala, DevOps (Vagrant/Chef/Virtualization), Hadoop, R, and scraping. Typically I write with an audience in mind – e.g. a niche forum or subreddit. When this works well, it often ends up in the forum without my help, as in the case of writing about Flippa auction data, where I received links from the experienced-people forum and the Flippa corporate blog.

Choosing a strategy for generating material can be challenging. There are several models for success: just write what you’re interested in; pick topics with a good ratio of searches to existing quality content; pick an area where you own a product; or document knowledge from your consulting services. The last approach is particularly valuable, as it’s easy to establish business value. This has been used to build info-products with great success by Patrick Mckenzie, Brennan Dunn, and Nathan Barry.

I’ve followed the first two approaches – there are a few tools to help you pick topics, such as the very spammy looking, but useful Market Samurai. For a person with a generic IT blog, several types of articles naturally arise from this approach: proof of concepts, weird undocumented error messages, things that ought to be in product documentation, and things that are in product documentation, but can’t be found through Google for whatever reason.

I’ve found a few motivating examples of the last case- “R” is hard to search for, and a lot of their API documentation is in PDFs (weird…). Before receiving VC funding, ExtJS had a period where their primary developers would mock bloggers on their forums, which seems to have somewhat limited the press they received outside their forum. They also made their help in a Rich Javascript UI that Google had trouble spidering.

Detailed proof of concepts lead to people with the title “Founder” contacting you about jobs, an improvement over typical recruiter spam. Writing resembling technical documentation or error messages leads to a lot of people contacting me for help. I get enough traffic from this approach that I’m established as an authority who can review Javascript books.

Another article generation technique that works well is “_Old Concept_ with _New Tool_”. E.g. “Building a JSON Webservice in R“, “Implementing K-Means in Scala” – basically trend-surfing. A key success of this is that someone actually applied to a job where I work because of a post called “Scala vs. Clojure.” The appeal of this tactic for the author is the ease of writing; for the reader, it allows them to see a familiar and easily-digestable concept in a new language.


I have a long list of potential titles, which I update whenever I recognize something that might be of interest. I also have an editing checklist, which I refine over time. For programming blogs, how to format code is important – I use a WordPress plugin based on GeSHi. I found that code written in a REPL is often very dense, and I’ve had complaints from people on Reddit, so I try to format the code with more whitespace than I would normally use. I also push most of my code to github (if there is enough to justify it) – this lets me get feedback from people who are using it.


Recently, Google Webmaster Tools showed a massive spike (400%) in how often they showed my blog in search. This was because they put my wordpress /tag/scraping at the top of search results for a day. Few people clicked through – my WP tag pages were not setup to look appealing, and I’ve since begun to fix that. To that aim, I wrote a script to extract counts from Twitter, HN, and Reddit, to estimate popularity, so I could make each tag page a “Guide” to the subject in question, filtered to the most popular and useful articles I’ve written on each subject.

The other SEO lesson is that the “not provided” keyword in Google Analytics removes a lot of insight. When a user is logged into their Gmail account, keywords are blocked being sent to the recipient site by Google. A lot of traffic is also missing the name of the referring domain entirely, an frequent occurrence when one of my articles is posted on reddit. For me, “not provided” has risen from 50% of search traffic a year ago to 80% today. Since Google Analytics lets you see top articles by referring domain, having detailed URLs helps make up for the lack of keyword data.

I must confess, I’ve thought for a long time that Twitter was kind of stupid, but recently I’ve been disabused of this notion, although I may be the last person to figure it out. While attending Philly ETE I realized that during the keynotes people sit there checking their phones – looking around the room you see Twitter apps.Writing summaries of conference talks using the conference hashtag resulted in a bunch of local people reading my articles and following me. Software that follows twitter hashtags for you is essentially an niche search engine, of which it turns out there are many – hnsearch, and the WordPress plugin search.

I’ve written several articles which have been posted to Twitter by 20+ people. I only noticed in hindsight – t.co is the 6th most productive source of visits for me. Some of these posts are automated – e.g. from HN or DZone.One of the most popular posts of these posts was an entirely hypothetical commentary on using map-reduce techniques to farm database queries out to browsers. It’s the only thing I’ve written that seems to have received significant attention on Google+ (19 events on G+, 24 on Twitter). Discovering how often this was shared prompted this post – I was surprised as it was something I’d whipped off in half an hour.

A few people have shared my articles on Reddit, which has introduced me to new subreddits, but most of these posts have fared poorly due to poor targeting. Posts I’ve made received more votes, even though they are self posts, because they are at least relevant. Unlike Reddit or Hacker News, DZone actively promotes it’s writers. If your articles do well on the social media/voting side of their forum, they invite you to join their network, which I have found very helpful.

Technical Considerations

Most default WordPress themes render terribly in mobile devices, so it’s worth testing, preferably on both Android and iOS. For me, about 10% of my visitors are on phones. The most common rendering issue is that they render the same view a desktop would see, but scaled down so small that you have to zoom and scroll both left-right and up-down. Installing a mobile plugin made my blog render usably, although not pretty, which has reduced the number of people who just give up.

For people who enter through mobile, most come from an app (Reddit, Hacker News, or Twitter), an email link, or an RSS subscription. An important consideration is whether it’s actually possible for someone interested to follow you if they are on a phone. On a desktop you can easily copy a URL to an RSS reader, or type in an email address, but on a phone it’s harder, which I suspect calls for tighter integration with twitter, etc, but I haven’t proved this out yet.

The second technical issue worth paying attention to is page load time. Even when it’s fast for you, it’s not for others. I set this blog up on a Linode host, and have been slowly improving this (e.g. APC, Image sizes, more memory from Linode, Apache caching). The WPEngine blog is extremely helpful for finding useful tidbits – the wasted effort I’ve gone through tuning this site seems to be what they are trying to help businesses avoid.

If you run your own server, you eventually will get hacked, especially if you use popular software – I’ve recently started using Better WP Security to mitigate this risk.

It should come as no surprise that spam has become very sophisticated- for instance, there are people scraping comments from other sites to post on yours. I accepted one comment I never was able to figure out – a character named “Weng Fu”, who goes around to tech blogs praising the glories of VB6 (!), presumably an exercise in trolling. I forgot about this comment until recently, when I found that Google Webmaster Tools shows I rank well for “Weng Fu VB6” – who knew.