{"id":1030,"date":"2013-05-10T03:05:58","date_gmt":"2013-05-10T03:05:58","guid":{"rendered":"http:\/\/garysieling.com\/blog\/?p=1030"},"modified":"2013-05-10T03:05:58","modified_gmt":"2013-05-10T03:05:58","slug":"lessons-learned-from-0-to-40000-blog-readers","status":"publish","type":"post","link":"https:\/\/www.garysieling.com\/blog\/lessons-learned-from-0-to-40000-blog-readers\/","title":{"rendered":"Lessons Learned from 0 to 40,000 Readers"},"content":{"rendered":"<p><strong>Starting Out<\/strong><\/p>\n<p>I started writing a little over a year ago, after finding \u201c<a href=\"https:\/\/www.amazon.com\/gp\/yourstore\/home\/?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;linkCode=ur2&amp;tag=thesecrelifeo-20\">Technical Blogging<\/a>\u201d by Antonio Cangiano through Hacker News. Since then, a bit over 40,000 people have read articles I&#8217;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.<\/p>\n<p>Before starting to write, I came upon ~650 followers on Google Plus through a <a href=\"https:\/\/plus.google.com\/106419647632534512037\/posts\">mutual-follow program on Hacker News<\/a> and was interested in the SEO potential. If you\u2019re signed into Google, people you follow are promoted in search results. Before this I built a site for a family member selling <a href=\"http:\/\/www.makingbeehives.com\">beehive plans<\/a> 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\u2019t do the writing yourself, so I\u2019ve pivoted to pursue technical subjects.<\/p>\n<p><strong>Choosing Material<\/strong><\/p>\n<p>Antonio recommends writing in a focused niche, but I am still developing direction. I started with vague ideas based on things that interest me &#8211; <a href=\"http:\/\/garysieling.com\/blog\/category\/database-performance-tuning\">database tuning<\/a>, <a href=\"http:\/\/garysieling.com\/blog\/category\/data-mining\">machine learning<\/a>, <a href=\"http:\/\/garysieling.com\/blog\/category\/data-science\">data science<\/a>, <a href=\"http:\/\/garysieling.com\/blog\/tag\/statistics\">statistics<\/a>, and practical applications of these. In practice, I\u2019ve written on wider subjects &#8211; anything within \u201cfull stack web development\u201d is fair game, trying to focus on new, or popular tech &#8211; <a href=\"http:\/\/garysieling.com\/blog\/tag\/scala\">Scala<\/a>, DevOps (<a href=\"http:\/\/garysieling.com\/blog\/tag\/vagrant\">Vagrant<\/a>\/Chef\/<a href=\"http:\/\/garysieling.com\/blog\/category\/virtualization\">Virtualization<\/a>), <a href=\"http:\/\/garysieling.com\/blog\/tag\/hadoop\">Hadoop<\/a>, <a href=\"http:\/\/garysieling.com\/blog\/tag\/r\">R<\/a>, and <a href=\"http:\/\/garysieling.com\/blog\/tag\/scraping\">scraping<\/a>. Typically I write with an audience in mind &#8211; 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 <a href=\"http:\/\/garysieling.com\/blog\/tag\/flippa\">Flippa auction data<\/a>, where I received links from the <a href=\"http:\/\/experienced-people.net\/forums\/forum.php\">experienced-people forum<\/a> and the Flippa corporate blog.<\/p>\n<p>Choosing a strategy for generating material can be challenging. There are several models for success: just write what you\u2019re 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\u2019s easy to establish business value. This has been used to build info-products with great success by <a href=\"https:\/\/training.kalzumeus.com\/\">Patrick Mckenzie<\/a>, <a href=\"http:\/\/doubleyourfreelancingrate.com\/\">Brennan Dunn<\/a>, and <a href=\"http:\/\/nathanbarry.com\/books\/\">Nathan Barry<\/a>.<\/p>\n<p>I\u2019ve followed the first two approaches &#8211; there are a few tools to help you pick topics, such as the very <a href=\"http:\/\/marketsamurai.com\/c\/gms12345\">spammy looking, but useful Market Samurai<\/a>. 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\u2019t be found through Google for whatever reason.<\/p>\n<p>I\u2019ve found a few motivating examples of the last case- \u201c<a href=\"http:\/\/garysieling.com\/blog\/tag\/r\">R<\/a>\u201d is hard to search for, and a lot of their API documentation is in PDFs (weird&#8230;). Before receiving VC funding, <a href=\"http:\/\/garysieling.com\/blog\/tag\/extjs\">ExtJS<\/a> 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.<\/p>\n<p><a href=\"http:\/\/garysieling.com\/blog\/scraping-adsense-ads-with-phantomjs\">Detailed proof of concepts<\/a> lead to people with the title \u201cFounder\u201d contacting you about jobs, an improvement over typical recruiter spam. <a href=\"http:\/\/garysieling.com\/blog\/tag\/extjs\">Writing resembling technical documentation<\/a> or <a href=\"http:\/\/garysieling.com\/blog\/fixing-vagrant-error-chefexceptionscookbooknotfound\">error messages<\/a>\u00a0leads to a lot of people contacting me for help. I get enough traffic from this approach that I\u2019m established as an authority who can <a href=\"http:\/\/garysieling.com\/blog\/category\/book-reviews\">review Javascript books<\/a>.<\/p>\n<p>Another article generation technique that works well is \u201c_Old Concept_ with _New Tool_\u201d. E.g. &#8220;<a href=\"http:\/\/garysieling.com\/blog\/building-a-json-webservice-in-r\">Building a JSON Webservice in R<\/a>&#8220;, \u201c<a href=\"http:\/\/garysieling.com\/blog\/implementing-k-means-in-scala\">Implementing K-Means in Scala<\/a>\u201d &#8211; basically trend-surfing. A key success of this is that someone actually applied to a job where I work because of a post called \u201c<a href=\"http:\/\/garysieling.com\/blog\/scala-vs-clojure\">Scala vs. Clojure<\/a>.\u201d 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.<\/p>\n<p><strong>Editing<\/strong><\/p>\n<p>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 &#8211; I use a WordPress plugin based on <a href=\"http:\/\/qbnz.com\/highlighter\/\">GeSHi<\/a>. I found that code written in a REPL is often very dense, and I&#8217;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) &#8211; this lets me get feedback from people who are using it.<\/p>\n<p><strong>Promotion<\/strong><\/p>\n<p>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 <a href=\"http:\/\/www.garysieling.com\/blog\/tag\/scraping\">\/tag\/scraping<\/a> at the top of search results for a day. Few people clicked through &#8211; my WP tag pages were not setup to look appealing, and I\u2019ve since begun to fix that. To that aim, I wrote <a href=\"http:\/\/garysieling.com\/blog\/extracting-social-media-vote-counts-for-reddit-twitter-google-and-hacker-news\">a script to extract counts<\/a> from Twitter, HN, and Reddit, to estimate popularity, so I could make each tag page a \u201cGuide\u201d to the subject in question, filtered to the most popular and useful articles I\u2019ve written on each subject.<\/p>\n<p>The other SEO lesson is that the \u201cnot provided\u201d 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, \u201cnot provided\u201d 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.<\/p>\n<p>I must confess, I\u2019ve thought for a long time that Twitter was kind of stupid, but recently I\u2019ve been disabused of this notion, although I may be the last person to figure it out. While attending <a href=\"http:\/\/garysieling.com\/blog\/?s=philly%20ete\">Philly ETE<\/a> I realized that during the keynotes people sit there checking their phones &#8211; 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 &#8211; <a href=\"https:\/\/www.hnsearch.com\/\">hnsearch<\/a>, and the WordPress plugin search.<\/p>\n<p>I\u2019ve written several articles which have been posted to Twitter by 20+ people. I only noticed in hindsight &#8211; t.co is the 6th most productive source of visits for me. Some of these posts are automated &#8211; 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 <a href=\"http:\/\/garysieling.com\/blog\/building-a-naive-bayes-classifier-in-the-browser-using-map-reduce\">farm database queries out to browsers<\/a>. It\u2019s the only thing I\u2019ve 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 &#8211; I was surprised as it was something I\u2019d whipped off in half an hour.<\/p>\n<p>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\u2019ve 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&#8217;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.<\/p>\n<p><strong>Technical Considerations<\/strong><\/p>\n<p>Most default WordPress themes render terribly in mobile devices, so it\u2019s 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.<\/p>\n<p>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\u2019s 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\u2019s harder, which I suspect calls for tighter integration with twitter, etc, but I haven\u2019t proved this out yet.<\/p>\n<p>The second technical issue worth paying attention to is <a href=\"http:\/\/garysieling.com\/blog\/halving-page-load-time-with-pngcrush\">page load time<\/a>. Even when it\u2019s fast for you, it\u2019s not for others. I set this blog up on a <a href=\"http:\/\/www.linode.com\/?r=e0aff3e71285079f7ffaaee9b7a92b6bcb3d6295\">Linode host<\/a>, and have been slowly improving this (e.g. APC, Image sizes, more memory from <a href=\"http:\/\/www.linode.com\/?r=e0aff3e71285079f7ffaaee9b7a92b6bcb3d6295\">Linode<\/a>, Apache caching). The <a href=\"http:\/\/wpengine.com\/blog\/\">WPEngine blog<\/a>\u00a0is extremely helpful for finding useful tidbits &#8211; the wasted effort I&#8217;ve gone through tuning this site seems to be what they are trying to help businesses avoid.<\/p>\n<p>If you run your own server, you eventually will get hacked, especially if you use popular software &#8211; I\u2019ve recently started using <a href=\"http:\/\/wordpress.org\/extend\/plugins\/better-wp-security\/\">Better WP Security<\/a> to mitigate this risk.<\/p>\n<p>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 &#8211; a character named \u201cWeng Fu\u201d, 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 \u201cWeng Fu VB6\u201d &#8211; who knew.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Starting Out I started writing a little over a year ago, after finding \u201cTechnical Blogging\u201d by Antonio Cangiano through Hacker News. Since then, a bit over 40,000 people have read articles I&#8217;ve written, not a huge number in the grand scheme of things, but enough to draw a few lessons. The more I write, the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.garysieling.com\/blog\/lessons-learned-from-0-to-40000-blog-readers\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Lessons Learned from 0 to 40,000 Readers&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[3,10],"tags":[266,499,535,556,601],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/1030"}],"collection":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/comments?post=1030"}],"version-history":[{"count":0,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/posts\/1030\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/media?parent=1030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/categories?post=1030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.garysieling.com\/blog\/wp-json\/wp\/v2\/tags?post=1030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}