Two Year Work Retrospective

It’s been almost two years since I last published anything about work. A lot has changed for me. I gave up management by quitting my job as a Director of Engineering and took a job as just a good ol’ Software Engineer at Ghost Inspector. A lot of reasoning went into that decision, but to sum it up: I was sick of commuting and managing. Considering what’s happened in the last year, I’m glad I made that choice!

As a lifelong introvert, I was being drained on a daily basis by having to manage other people. I had been juggling that while still coding for about four years straight. During that time, I was a user of Ghost Inspector, so when the opportunity opened up, I jumped at the chance to work there and I’m so glad that I did.

What attracted me to Ghost Inspector was the product, but what has kept me here is the amazing work environment. There may be bigger, more exciting challenges in the job market, but working here is without a doubt the best job I’ve ever had! For most of my career, I jumped from company to company, looking for that “hockey stick growth”. But what I eventually realized is that I’d rather have stability and trust. At previous startups, we were only stable for the few months after the most recent funding round. Justin and the rest of the team have built a business that grows at a very sustainable pace. We’re only beholden to our customers, not venture capital investors. The only deadlines are the ones we set for ourselves, and those are pretty rare.

The typical Agile process used by most software companies creates a lot of meetings that, in my opinion, are not respectful of a software developer’s time. The majority of meetings are focused on determining what they should work on, when they should start, and how long it should take. A system designed around tracking velocity with points, will heavily incentivize speed and efficiency. So now all those meetings talking about work, instead of doing it, feel like impediments to completing points. I have worked at places that handle this better than others, but there’s always that underlying pressure that creates at least a bit of animosity around meetings.

We have a completely different process at Ghost Inspector. I would describe our software development methodology as Agile-lite — we take the few good parts and leave the rest behind. We have a backlog of epics and stories with all the good features we want to deliver to our customers. However we don’t do sprints. Without sprints, we’re able to skip all the other Agile rituals that I personally loath. Here’s a list of all the meetings we don’t do. No sprints means no sprint planning. No points means no estimation meetings. Without a product owner needing to constantly check the velocity of every story, we don’t need to give a status update every day. We generally only meet once a week. Thankfully, not once do I remember anyone saying the word “blocker”.

I’ve lost track of the amount of time wasted on just scheduling meetings at previous companies. Even the daily status was always hotly debated. Too early and all the night owls are grumbling. Too late and you risk interrupting the flow of the early birds. I can’t tell you how nice it is to stop thinking so much about how we work and instead just think about the actual work. My levels of stress have been reduced to an extremely low level while working here. The meetings we do have feel particularly important and useful and I welcome them!

As a developer, I have all the autonomy I could ever wish for. There are constant opportunities to learn new skills. We don’t work on the bleeding edge by any means, but we have a diverse set of projects that allow us to experiment with new technologies. Here’s a truncated list of all the different projects I’ve worked on in the last year and a half:

All of this is possible because we have a rock-solid customer base, a stable system for our application, a team who trusts and respects each other, and a CEO who enables us to do our best work. I’m really happy to have joined the team.

Blogging 101: How to Setup WordPress

Time to get started!

Okay, hopefully after reading my last Blogging 101 post, you have a set of keywords to target, have picked the best revenue channels to monetize your blog, and maybe even written a couple articles. All that’s missing is an actual website. There are dozens of platforms you could build your blog on, from, to Blogger, to self-hosting a Drupal, Joomla, or ExpressionEngine install. If you want to make money from your blog, DO NOT USE (.org is the self-hosted download). Here’s why:

Adsense, Yahoo, Chitika, TextLinkAds and other ads are not allowed on free blogs… In addition to AdSense-type ads, please do not use the following services on your blog: sponsored / paid posts including PayPerPost, ReviewMe, and Smorty; affiliate / referral links to the following domains: usercash, clickbank, clickhop, cashrocks, payingcash; clicktrackers (and any similar) and any promotion of the “I made a million on the internet and so can you” type of advertising (i.e. MLM, network marketing, cash gifting, etc.). Paid or sponsored post content is also prohibited.


I can’t speak for Blogger or other services, but I imagine their terms are the same. Even if the don’t prohibit ads now, it doesn’t mean they won’t in the future. By chaining yourself to a service, you’ll have to abide by their rules as long as you keep using their service. You will also be limited in which plugins you can install. Transferring to your own host isn’t impossible, but it can be a lot of work to update your URLs and any images you’ve uploaded. Skip the regrets by learning how to setup your own domain and hosting.

Ultimately the best and most recommended solution is a self-hosted WordPress site. The benefits of WordPress are many: 5 minute install, easy to use control panel, thousands of themes, plugins and tutorials. Trust me, unless you’re an expert web developer, and even if you are, you’ll be stepping into the wild if you build your blog on anything BUT WordPress.

Okay, so, WordPress. What now?

1. Get a domain, through something like Namecheap and get some hosting. There are lots of reliable hosts with dirt cheap pricing. You do not need to pay a premium for hosting. I wouldn’t spend more than $10/month and that might be pushing it. Personally I like Lithium, but I’ve also used apis networks and they were fine. Whichever you pick, start with the lowest price and work your way up as you need more bandwidth.

2. Install WordPress, theme, plugins, and setup your pages and initial posts. Here’s a list of recommended plugins. At the very least I suggest installing WordPress SEO (by Yoast) or anything that lets you set meta values and create an XML sitemap.

3. Setup Google Analytics, Google Webmaster Tools, register your sitemap with Google, Bing, and Yahoo.

What’s the best theme?

There is no best theme. There are literally thousands of very good choices and as long as you are in control of your sitemaps, your heading tags, and your URLs, it will be hard to go wrong. I would always suggest you pay for a theme from a reputable site like ThemeForestMojo Themes, or Woothemes and not by Googling “free WordPress theme”. Why? Because half the time (or more) those “free” themes have hidden backlinks or other malicious code. Not to mention the quality of the design will almost always be lower and your blog will look like a cookie cutter, spammy blog.

A professional, well designed theme typically runs $35. I always count this cost as part of the required blog investment along with domain name and hosting. Don’t skimp.

If you want a more detailed guide on how to setup everything for WordPress, including detail on most of the steps I’ve outline above, I highly recommend this post: A Comprehensive Checklist To Creating The Perfect WordPress Website

Introduction to Blogging: Choosing the Right Keywords

I started blogging, for personal reasons, many many years ago on this very site. Since then I’ve started doing it professionally both at work and at home. Writing has always been enjoyable to me (I nearly graduated as an English major) and with my passion for web development, blogging seems like the perfect combination for me. At work, I’ve spearheaded the launch of two separate blogs, both aimed at promoting a company or product. Those have met with minimal success, but that is due to a lack of time for content generation.

At home, where my time is my own, I’ve had significant success with my blog about the Fiat 500 Abarth, a new car model debuting in the US in 2012. It took 3 months before it made a single penny, but the income from AdSense steadily rose to $100 a month and then $300, and just this month it has made over $1,000! Now that I understand the power of passive income through blogging and niche sites, I’m aiming to replicate that success with a handful of other websites.

Through that first site, I’ve learned a lot about SEO, WordPress, writing, hiring writers, and everything else that is involved with running a revenue generating information site. I have done countless hours of research and had some success, so I feel qualified to talk about it with some authority. Hopefully my advice will help, if you’re just getting started.

Note: I originally wrote this content for a popular forum I frequent, when I was given the responsibility of restarting the blogging thread with a new introductory post. Now that enough time has passed, I’ve decided to republish my first post here, since it is my own content. I have taken the time to update the content with new bits of knowledge I have learned.

Blogging? Isn’t that for weird people with no jobs?

Well, yes. But you’re not going to be like them. You’re going to create a blog that makes money while you sleep!

There are lots of way to make money online: doing surveys, writing articles, etc. Most of those are very time intensive however, especially when compared to the passive income that blogging or niche websites can create. Don’t get me wrong, building a successful blog still requires a considerable amount of work, but once you get one going it can run with minimal input.

Blogging also doesn’t require any one particular skill, other than the motivation and determination to put in the time. In order to be successful, it certainly helps to be skilled at writing and web design and development, but all you really need is time and a willingness to learn. Even if you don’t have the time, there are enough resources out there to simply pay for the skills you don’t possess. I’ll get to that in a later post.

Enough with the pep-talk about determination and heart. Let’s get to the good stuff…

What do I write about?

Picking your blog topic is probably the most important step of the process. Pick something with too much competition (like “video games”) or too few keyword searches and you’re pretty much doomed from the start. First, think of something you might be interested in writing about. Then start typing keywords into the Google Keyword Tool to see what people are actually searching for. I recommend Looking for keywords with at least 1,000 local monthly searches and an Approximate CPC above $1. I used to only consider keywords with low competition, but there is an argument to be made that high competition validates the popularity of the keyword and is not a barrier to entry (if you know your SEO).

Some more tips on using the Google Keyword tool:

  • Start with a broad set of words that your blog could cover (‘sleeping bags’, for example), with ‘Only show ideas closely related to my search terms’ clicked. This should give you a big long list of potential long tail topics.
  • For the sleeping bag example a lot of it is stuff like ‘princess sleeping bag’, which may not be right for your blog, so be sure to filter out the bad stuff. You’ll notice a lot of duplicates as well, like ‘compact sleeping bag’ and ‘sleeping bag compact’, and I usually just write the one that gets more views, unless I can make the two posts reasonably different.
  • It depends on the niche, but for anything below 500 global searches or so, the competition is probably going to be low enough to warrant writing. Anything above that it might not hurt to just check the first page of Google and see.
  • Google keyword tool is useful, but you really need to go and actually look at the first page of the Google results for whatever the keyword is and see what kind of chance you have of getting there. This is a half decent guide on analyzing the first page of Google to see what your chances are, but if you’re willing to put more work in, more competition for the first page is acceptable.

You’ll want to target these keywords in all of your posts. You don’t have to write like a spambot, but you need to get those key phrases in. Just write like you normally do, make it engaging for real readers, then come back and insert those keywords where they are needed for SEO.

If you need more help picking a topic, here are some very useful articles from authors that are smarter than me:

What’s Next?

Next week I’ll start getting into the technical details of setting up your website with WordPress. There are a lot of different ways to build a website, including free services like Blogger and, but I always recommend owning your own domain and a self-hosted site using WordPress. This gives you the most freedom and flexibility for the future.

WordPress 101

I recently served as a tutor for two people I met over craigslist who wanted to learn more about using WordPress. Without knowing exactly what they needed to know going in I tried to prepare a general overview of how to develop a WordPress theme. But as it turns out, the “students” were on two very different levels, both far below what I was trying to teach. I talked a little too much and too long about template heirarchy and the WordPress codex. But once we started talking about their exact problems it was easy to provide quick answers. I think it worked out well and I hope I can do it again!

Here’s a list of the links that I provided them for future reference:

Official Documentation:

Tutorial Websites:

Other Useful Links:

Installing WordPress

A few tips:

  • Install WordPress in its own directory, below the root, with a unique name. I tend to use a password generator to create my directory name. Although the location of your folder can easily be found in the HTML of your site (all your CSS and image files will be inside it), this will be a smaller barrier against scripts that look for WordPress at the root or in common folders like “blog”, “wp” or “wordpress”. Keeping WordPress out of the root will keep the install cleaner and allow you to have sub-directories and other files in your root that won’t conflict with WordPress.
  • Do not use admin as your username. Previous versions of WordPress forced you to use it on first install, but with 3.0 you can now choose your own username. It doesn’t have to be crazy, although the more complex it is the safer it will be, but anything besides admin will be an improvement.
  • Do not use an English word as your password. Again, use a password generator. In addition, consider using a password repository to store your password in case you want to access your admin from another computer. But trying to use a password that is easy to remember probably means it is easy to crack.
  • Install the plugins and themes you want, remove the ones you don’t. Although the default WordPress theme (Twenty Ten), akismet, and Hello Dolly are probably very safe, its good practice to just remove any files you aren’t using. Don’t worry, you can download them again if you really want them. But by keeping them off your server, its fewer files that you have to worry about updating and if you ever run into security problems, you won’t have to worry about checking them.
  • Update your comment settings. You’ll probably want to treat most posts spam, only allow comments from people who have posted before, and generally make it hard for your blog to get filled up with spam. Get an akismet API and activate the plugin. Once your blog gets popular, you’ll be happy you had it all ready to go first.
  • Setup your permalinks. Despite it not being an option, category/postname seems to be the most recommended option for SEO purposes. Its also the most readable for humans. No one cares what the post date was, but if they want to find more posts in that category, its easy for them to do by manipulating the URL. It also allows people on other sites to trust the link more which means they are more likely to click on it.