As Patrick McKenzie celebrates his 9th year in review and many other folks write theirs up, I believe I’ll write my first. It’s been a big year, and I have a lot to be thankful for.

Don’t know me? Makes sense. I wrote Rebuilding Rails, an ebook about understanding Rails by building a Ruby web framework from the ground up, as a result of Amy Hoy’s excellent 30x500 class. I’m writing a Ruby web app deployment class called (edited to add: now-defunct) Rails Deploy In An Hour. I’m employed full-time as the Analytics lead at OnLive, a cloud-gaming company. I have a wife and two kids, so selling products on the side is an adventure I don’t really have the time for — but I don’t let it stop me :-)

Let’s start with dollar amounts before explanations. That’s why I’d be reading if I were you.

Revenue in 2014

Amounts are net of processing fees and refunds. Also, it’s Dec. 23rd, so not quite done. But pretty darn close. Tell you what: if anybody buys a professional package of Rails Deploy In An Hour, I’ll update this to reflect it :-)

  • Rebuilding Rails: $7,679.35 - 208 non-refunded sales, 6 refunds
  • Rails Deploy In An Hour: $1,277.70. That’s three pilot students and one professional package buyer. Plus 1 sale-and-refund of developer package from a guy who thought I was farther along than I was.
  • Misc - affiliate sale, guest episode: $600.00

Rails Deploy In An Hour is doing… okay. I reopened the class a few weeks ago and I haven’t done much for it since then. I’m waiting until more of the class is finished to seriously advertise for it, which means no sooner than January and more likely February.

Amazing how little traffic it takes to make money.

Rebuilding Rails is basically flat year-over-year. That’s not amazing, but honestly better than I expected. My flurry of activity for the new class is breathing more life into it. I’m not doing much marketing for Rebuilding Rails itself right now. It has some nice posts that still bring in visitors, and an autoresponder email class. I’m playing with the idea of doing more of a second edition of Rebuilding Rails, but I just can’t justify it right now. Maybe in 2016?

(Do you just want more dollar amounts? My First $1000 in Product Revenue may be the right place for you.)


Last Year’s Goals: I knew I wanted a new product. I didn’t think about much more.

This year I launched Rails Deploy In An Hour to its pilot class of three people, and I’ve made one continuing sale. It’s a deeper, more involved and more expensive product than Rebuilding Rails and it’s going to take awhile to really finish — not that such a product is ever 100% finished. I have three chapters done of seven, and two videos of at least ten, plus several miscellaneous guides well under way. Overall the class is probably 35%-40% done, though the software works fine now. This class? It’s too many pieces. I’m managing, but it’s a lot.

I’m learning a huge amount: video editing, using other people’s templates, thinking more about production values and having a somewhat slick product… It’s not perfect, but it’s much, much better than my earlier attempts.

I also haven’t completely neglected Rebuilding Rails. I had an affiliate sale of Owning Rails for Marc-Andre Cournoyer, which I think went well all around. I responded to many customers (and prospective customers) with technical issues, and my turnaround time is, if anything, getting better. I like getting customer email. Somebody is using my work!

I use my own Stripe integration for Rebuilding Rails. I have switched to Gumroad for Rails Deploy In An Hour. Both are cheap and amazing, but so far I’ll give Gumroad the win over raw Stripe. It’s pretty close either way. But I’m tiny, and Gumroad makes sure my payment page is usable at 3am when the internet freaks out. My Stripe integration needs me running a (very simple) server.

I took Ramit Sethi’s Zero To Launch class, and that helped crystallize a lot of what became Rails Deploy In An Hour. ZTL felt like a better intermediate class than 30x500, but a worse beginner class. It also reminded me how much I miss good community when I’m off by myself making products to sell. It’s lonely, you know?

Some folks at a workshop based on Rebuilding Rails.

I decided I needed to reach out more and talk more to my new community, the folks building small products online. And it became a great year for that:

  • The affiliate sale with Marc-Andre
  • A guest episode of RubyTapas with Avdi Grimm
  • Joined Breanne Dyck for her “Elevate Hot-Seat” class as a business owner
  • Edited a prelease draft of Sebastian Marshall’s new book Gateless
  • Joined Nathan Barry’s Building Profitable Audiences class as much for the community and forums as for the content (which is also very good)
  • Had a lunch with Patrick McKenzie which was transformative for my class. I’m glad he made time for me, and I hope he didn’t feel too pestered ;-)

And a lot of other little stuff as well. I’ve reached out to Jarrod Drysdale, Edmond Lau, Tom Morkes and a number of others on a variety of topics.

This year, I felt like “this is what I do.” I wrote Rebuilding Rails three years ago, and this year, finally, I feel like that. It’s good.

When people started buying a lot of copies of RR near Christmas time, I even pulled together a quick coupon. You know, like a professional person who sells things. When people email me, I get less of a twinge of impostor syndrome before answering. When people refer to me as an authority on this topic, I treat it as true. You’ll have to take my word for it — this kind of thing is an improvement.


  • One product launch - perfect.
  • 17 blog posts (18 with this one): not bad, but a little low. See next section.
  • 12 emails to my list: also too low, and mostly about the product launch.
  • A hard-to-quantify number of relevant tweets, some of which made me money.

Professionalism, Habits and Routine

This year I arranged with my wife: I work on products two days a week, Tuesday evening and Saturday morning. We arranged this partway through the year and it has been an absolute transformation. It allows me to answer the question: “about how much time will this take?”, which has never been possible before.

This year I got an accountability partner, not long after I took ZTL. It has been less transformative than scheduled work days, but it’s been pretty darn good for me. I hope he’s gotten a similar benefit from the partnership.

Full-Time Employment

Did I mention I still have a full-time job? I do. It pays amazingly, they love me there and I have great work/life balance. I am very, very lucky and I know it.

Since I’m a silicon valley lead engineer, this means it’s going to be awhile before there is the slightest chance of product revenue replacing my day job. I don’t really want to be a consultant, either.

In any case, OnLive was good enough to let me give several meetups as a recruiting exercise, providing space and food. They funded me going to the last Golden Gate Ruby Conference, where I got to hang out with the wonderful Jeanine Swatton of NineFold, who is happy to do my bragging for me.

I also started a reasonably successful engineering blog for OnLive, which was nice. I write the majority of the articles, but definitely not all. I’m trying to hit the right balance between “use up my writing mojo at work” and “get more inspired and get more writing practice from work”. It feels like I’m doing okay on that balance now — but only okay, not amazing. OnLive is getting more of my grumbly “need to just write” energy than my own blog right now, which is mixed.

This will be interesting in 2015: I’m basically at the glass ceiling for a “just a programmer”. Recruiters that I talk to say, “yeah, I don’t think I can do better than that, but maybe I’ll call you in six months.” It’s faster to give my salary and listen to them evaporate than to make my excuses and hang up politely. I don’t particularly want to take the management track — that is, I don’t want my reviews to be based on how many people I manage, and a promotion means managing more people. But that’s where I’m at. I’m learning how to recruit people, currently (mercifully) for other managers, not me.

I don’t want to start a business to do a VC-style moonshot. I don’t want to try quitting my job and putting my family on a timer for me to get enough recurring revenue.

I don’t know my goals for my job in 2015. But it does exactly what I want at this moment.

Personal, Home and Family

Hell is other people’s kid anecdotes. But my two girls are still wonderful. I love my wife tremendously. I really, really want a way to make enough money to support them well in Silicon Valley but still actually see them. I do okay at that, but it’s a continual struggle. Life is expensive. Silicon Valley is expensive. Everything I do wants as many hours as I can give it.

I’ve been good about helping Krissy with the housework and cooking. I’ve been good about letting her have plenty of time for her own books. There have been a number of other trials this year, especially dietary/cooking, and overall I’m supporting her well. So: thumbs up.

I did okay on exercise this year. Fell on and off the wagon a few times, but I managed a few good sustained months of a-continuous-hour-a-week on the elliptical at the gym and a few good sustained months of (my first ever) weight lifting.

You know that “ohmygod, the best thing you’ll ever do for your productivity is a gym membership” meme?

It never materialized for me.

I’m going to keep going to the gym because I’m a fat middle-aged geek and it seems polite to my wife. But so far, my productivity on weeks/months when I go to the gym looks a lot like my productivity when I don’t.

I’ve also been doing lots of good reading this year. Jay Abraham, Atul Gawande, Charles DuHigg, Venkat Rao, Steve Martin and many more. I’m learning a lot and feeling like I get more from many of these books now that I’m putting more into practice. And a few are just for enjoyment.

Goals for Next Year


I need to get Rails Deploy In An Hour properly up and running. So: autoresponders, better sales site, and mostly just finish the dang product. I’d like to see it making at least $15,000 in 2014 and continuing to sell slowly and reliably, like Rebuilding Rails does. Perhaps more importantly, I’m going to work in some ways I can tell if people are using it. The biggest problem with ebooks and online classes is how rarely people actually pick them up and get value out of them.

I’d like to do at least one revision of Rebuilding Rails, as I did in 2014. It’s not too long in the tooth, but there are a few persistent small things worth fixing. More than one person has emailed me about them.

I should release at least one small product in 2015. In fact, I should specifically release something very small. I usually build stuff big, and it takes me forever. The tiny product might be a short ebook, a video of a meetup or even a small piece of software. At this point it’s easy for me to set up a sales site and a Gumroad page, so I’m out of excuses. More little bitty products.

Habits and Routine

In 2015, I want to tighten my Tuesday/Saturday schedule to something like “Tuesday is promoting and Saturday is developing product”, or something along those lines. I want to write one blog post out every other week, and usually I email it to my list(s).

I want to have and follow checklists for routine, important tasks like “put up a blog post” and “email my list”. Right now I make the kind of mistakes that checklists fix (thank you, Checklist Manifesto!)

And I want to follow an exercise schedule - one day a week of weightlifting, two of cardio. That’s probably MWF, which is how I did weightlifting successfully until recently.

Who Are You To Do This?

You can close the tab now, but in case you’re still reading…

Like everybody else, it’s easy for me to wonder, “what gives me the right to do this?” Every year-end wrap up I’ve read is from people making way more product money than I do, and they’re all better known. I’m as wowed by, say, Nathan Barry as you are.

But I learned a lot from Sebastian Marshall about being ambitious and audacious. Specifically, you don’t have to feel like that, you just have to do it. You, too, can be the weakest of the great (wo)men of all time.

Who am I to do this?

Just some guy. That turns out to be enough.