In commemoration of this, the 50th post on cleanswifter.com, I wanted to get a little meta and reflect on some learnings I’ve had of how to start a programming blog. I wanted to capture: What has gone well? What improvement areas are there? What success have I had? Where do I want to go from here?
Start With Why
In case you didn’t catch my About Me page, there were three reasons I created cleanswifter.com:
- I want to improve my Swift, and the best way to learn something is to teach it to others.
- Dogfooding is invaluable. At AWeber, my day job, we provide a service digital marketers. Bloggers fit this category. My maintaining a blog, I’ll be able to better relate to our customers.
- Help others learn. I know I have so much to learn with Swift and iOS app programming. On the same note, I also have a lot of experience building apps for the past 8 or so years. With this experience, and my continued learning, maintaining a blog is a great way to give back to the community and help others learn as well.
While I didn’t really write these down until later on, I had a good grasp as to why I wanted to start a blog right from the very beginning, before I wrote any post or even tried a content management system. Having this foundation, or core values even, has been a driving factor in being able to “stick with it.” I absolutely urge you think through the same thing if you want to start anything in life- why are you doing it? This way, anytime self-doubt creeps in, or you need a sounding board for making a decision related to your project, you can always return to this foundation for guidance. It’s helped me immensely.
Build Your Tribe
With each post, I imagine that there are people out there looking at my blog everyday to follow what I’m going to post next. When I write my posts I imagine that I’m writing directly to these people. To help better connect with your raving fans, I also urge you to start an email list from day one. You may not even necessarily know how you’ll eventually use this list for yourself down the road (trust me there are plenty of ways, http://www.smartpassiveincome.com/ – Pat Flynn’s site is a little heavy on the fluff, but there is some major insight there on monetizing your following). For me, this is where some of the dogfooding comes into play, AWeber is a software as a service specifically for email marketers. I want to build my own email list of my raving fans. I use SumoMe‘s WordPress plugins to help collect email addresses on cleanswifter.com. This then automatically sends collected email addresses to my AWeber list. Right now, anyone who signs up will get each post to cleanswifter.com delivered right to their inbox. Looking at Google Analytics to see that people are visiting my site is energizing, but looking at my email subscribers reliably opening my emails and clicking the links is a whole other world. These are my tribe, and it’s exactly them who I have in mind when I write each post.
Picking A CMS
For me, picking a content management system was a big decision. I had been using Squarespace for my personal site, <andyobusek.com> and it worked well enough, but I wasn’t thrilled. It seemed targeted to an end user less technical than me. I had also played around with a more static solution like jekyll, and while that worked well enough for the pure function of writing blog posts, it wasn’t easily extensible and it was almost more low level than I wanted. I have been using WordPress for my work with raywenderlich.com and the AWeber Engineering Blog so I’m familiar with it from an end user standpoint, but never really an Admin. It intrigued me, so I purchased some shared hosting from DreamHost (affiliate link) and I haven’t looked back. It’s no joke that WordPress runs the Internet, and now I see why. You can totally customize your website and not write a single line of HTML.
Here’s a list of plugins I’m using:
SEO Is King
SEO really is king for starting a programming blog. I’ve loosely been running a test to see how I can grow my traffic by purely focusing on SEO. Besides tweeting once about one of my posts on Storyboard Code Review, and including a link to Xcode Testing Shortcuts with my appearance on the raywenderlich.com podcast, I haven’t done any social sharing of articles on cleanswifter.com. I have tried posting links back to cleanswifter.com on a couple other relevant blogs in comments of related articles on those sites. I know I’m missing out, but I also didn’t want to revel in vanity metrics of page views from my mom. I wanted to focus purely on driving traffic to my blog in organic ways.
The Yoast SEO plugin for WordPress is freakin awesome. It gives you a gamified way to optimize your post for SEO. You just try to get all the little lights green, and then your post if good to go for SEO. One caveat is that it’s kind of incompatible with other WordPress plugins for Markdown. That’s okay though, because even though the bubble isn’t green, you’re still good from an SEO perspective.
Google Search Console
I have yet to dig into the Google Search Console to its fullest extent, but it’s important to get it setup from the very beginning. Essentially, the Google Search Console does at least two important things: it let’s you refine how Google sees and indexes your site, and 2) shows you data on what people are searching for when they see your site in search results (and whether they clicked on it or not).
I have yet to definitively tie this to SEO, but I’ve read all over the web that there are two things really important to driving traffic to your site: post frequency, and post frequency consistency. This means, pick a frequency for posts, and do it no matter what. For me, I’ve chosen to get a post out Monday through Friday each week. It’s tough to sustain for sure. I can see a future position where I dial this back. Once a week feels too infrequent, but I’d like to still have time to work up that monster post, while also surrounding it with some solid content curation.
There are a TON of other tips on SEO available on the web, just Google it.
Figuring Out Content
For me, one of the biggest hurdles in my output is figuring out what to write about. Assuming that what I’ve read about SEO is true, that posting everyday leads to higher SEO rankings, that means I need to post everyday. Whew, let me say that again, I need to post everyday. That…is…a…lot…of…content. One of the things that is most stressful to me, is coming up with that content. I want to make sure the content is relevant and valuable as well. Now, I’m not talking massive 3500 word tutorial posts, but Yoast suggests a minimum length of 300 words. Here’s some strategies I’ve come up with to keep the content flowing:
- Content Brainstorm List – I have a Google Sheet where I just jot down post ideas as they come to me. It’s long, somewhere between 50-100 items. It’s great for capturing an idea when it comes to me, and nothing else.
- Content Calendar – I found that if I can seed the idea for the post days ahead of time, it vastly removes the stress of writing the post. I’ve been planning for the 1 to 2 week timeframe at the moment. Basically, over the weekend, I’ll make sure I know which topic I’m going to write about each day for the upcoming week. I’ll also look out one week further for an even rougher idea of which posts I’ll be focusing on.
- Content Curation – Content curation is an awesome way to get valuable content out to your readers. Just because you saw a popular article on Twitter, don’t assume that your readers have seen it. Chances are, they haven’t. And even if they have, there’s always room for more voices and opinions on the topic. Re-post it with your own perspective and your readers will love it. I’ve tried either linking to another piece of valuable content that I found that week with some additional commentary of my own, or lately, been doing more of the dogfooding thing and using my app Curate to construct a weekly newsletter. The newsletter gets sent to my email list subscribers via AWeber. I then post a link to the web-based version of the newsletter from my blog.
- Weekly Menu – I actually heard this idea at the 2015 AWeber Ascend Conference (for digital marketers). The bad thing is that I can’t remember who presented it. Basically, the gist is that you line up your posts over the week as you might line up your courses while out to eat for dinner. Monday’s post is just like an appetizer, something light to whet your appetite. For me, lately I’ve been posting my videos while reading Martin Fowler’s book on refactoring. Similarly, Friday is all about an easy transition into the weekend with some content curation. The mid-week is all about the monster post. Somewhere between Tuesday and Thursday, I’ll shoot for a longer post, usually something instructional, to allow my readers to dive into something a little more meaty. These will probably be the best posts to really tweak for SEO. If you can write an in-depth instructional article, chances are, new readers will come to your site for this content. On the surrounding days, write other posts somewhere in between the long monster post, and the shorter content curation posts. I’ve also tried weeks of related content, like back when I was writing about code coverage.
Progress To Date
50 posts ago, when I was just getting started, I learned in this article titled 5 Tips to Drive More Traffic to Your Blog Today that once you have 51 posts, your blog traffic increases by 53%. 50 posts has been a milestone I’ve had in mind ever since I started, and now that it is here, I’m really excited. It’s just a milestone, not a goal. I’ll continue past it and am now looking forward to my 100th post.
Here’s a screenshot from my Google Analytics Audience Dashboard:
Now I know I haven’t changed the world, but I feel really good about 607 users over almost 2 months. That’s my tribe. It’s hard to find actionable information in Google Analytics, but for me, seeing the trend upward in readership really motivates me. For that alone, Google Analytics is invaluable. It helps reinforce to me that I’m actually helping people.
Other Random Tips
Don’t Start With H2
RSS feeds don’t show style. So if your RSS feed takes an excerpt from the beginning of your article, and your first line is an H2 title, if won’t appear as such in the feed and may seem disjointed from the rest of the content. Your better off writing an introductory paragraph, and then following it up with an H2 when you introduce the first section of real content.
Spam In Google Analytics
Did you know that you can get spam in Google Analytics? Ya, it’s a real thing. I first noticed it in when looking at referrers to me site. Basically spammers simulate requests to Google Analytics properties with randomly generated ids. Then, the spammer’s website shows up as a referrer to your site. You click their URL to check out their page thinking “Oh who’s this that linked to my site?” and you land on something totally bogus. There’s a ton of information online for tweaking your Google Analytics settings to prevent this rotten information from infecting your analytics, do yourself a favor and check it out.
I have so many more ideas on how to make cleanswifter.com even better, that really time is the big constraint.
Time Is Not On My Side
Time is by far the constrained resource. Right now, my priority is to get the daily content out on cleanswifter.com. And I’m on a streak that I don’t want to break. In the future, there will be a day when that streak breaks. I can see the merit in less frequent posts – maybe then the posts that do go out are higher quality, or longer? Either way, posting everyday, and then doing surrounding tasks like picking a new theme, or working on screencasts, is incredibly hard to find the time to do.
Right now, I just trust that DreamHost is available all the time. I certainly haven’t had any problems to date with it. Pingdom is a great service that I’ve used in other projects that will essentially monitor the uptime of your website, and then alert you when it goes down. I’d like to hook this up to cleanswifter.com.
Create My Funnel
I referenced Pat Flynn earlier in the article. He has some great information on his website smartpassiveincome.com/ for monetizing your content. I’d love to investigate some of these options to help offset the costs with maintaining cleanswifter.com.
Share Your Love
I have not spread the word about cleanswifter.com through my own social channels. Honestly, I’ve been a little shy about it. I wanted to make sure it was something I stuck with. I don’t even really have this confidence yet, but I had always looked at 50 posts as a milestone where if I got that far, I figure it would become something part of me, and that I would stick with. I guess I’m there? Either way, I kind of look at 50 posts as a coming out party, and now that cleanswifer.com is here on the scene, I’ll start tweeting new posts, sharing links in the Slack rooms I’m in, and actively trying to drive social traffic to the site.
I hate my WordPress theme. I need a new one. I have such a terrible eye for design that I don’t know where to begin. I’ve tried a couple others, but don’t feel they are any better. On the other hand, I look at colleagues’ WordPress sites, and they look beautiful. How do I get therE? Something to figure out for the future.
Well, that’s the highlights of my learnings for how to start a start a programming blog. I’ve come to adopt the tagline for signing off posts, “Happy cleaning.” It’s kind of a quirky line, but something that I feel like adds a little bit of personalization to the posts. And with that…