Author Archives: Jason

Entrepreneurship Journal, 10/16/2017

In the last few months the following things have happened:

  1. I decided to put Angular on Rails on the back burner
  2. I started a new project called Landing Page Breakdowns
  3. I killed Landing Page Breakdowns and started a project called AWS for Rails Developers
  4. I killed AWS for Rails Developers and started something else that doesn’t have a name yet

The reason I killed AWS for Rails Developers is because I realized that there are people who are just getting started with AWS + Rails who need help but don’t have much money, and there are established business who use AWS + Rails and have a lot of money and those two groups of people don’t really overlap. I’m capable of teaching myself how to help people get started with AWS + Rails but I’m not capable of teaching established businesses how to scale AWS + Rails. I believe that knowledge has to be gained experientially. I’m not really excited about the idea of doing something that requires super deep technical knowledge at this point, either.

The new idea I had was to build some sort of product for the Shopify ecosystem. I have no idea what this product might be.

My thought is that maybe I can do some consulting for Shopify store owners which would give me insight and visibility into the Shopify world. The consulting could potentially even be a good income source on its own. Maybe it could even be a replacement for my contract development income.

So far I’ve had calls with two Shopify store owners. Both expressed interest in working with me, at least on the free basis that I offered. Yesterday I had a call with a guy from Australia who I found on the Shopify forums. I plan to try to find more prospects that way.

I also have a friend joining me in the Shopify endeavor. We’re working on starting an email list for it too.

Entrepreneurship Journal, 9/20/2017


Last time I wrote it was to say that I decided to back-burner Angular on Rails.

I had decided to move onto a new idea called Landing Page Breakdowns. The idea seemed good for a while but then I realized I didn’t know exactly who I was targeting with LPB or what exactly I was offering them. I found it really hard to even begin to gain traction for this reason.

Since then I’ve moved onto another idea that’s less of a radical departure from what I’ve tried before. I’m calling the new project AWS for Rails Developers. The idea is similar to the Angular + Rails idea except I’m of course applying it to AWS instead of Angular.

Here are some reasons why I think I can reasonably expect AWS + Rails to go better than Angular + Rails:

  • AWS changes at a slower rate than Angular, and the back-end world in general is less fickle than the front-end world
  • I personally enjoy AWS as a topic more than Angular
  • Unlike Angular, I don’t have a philosophical problem with AWS as a technology (although I might have some philosophical problems with Amazon as a company, but then again I definitely have some philosophical problems with Google as a company, the company behind Angular)
  • AWS costs money to use (sometimes a huge amount of money), so I think I can reasonably expect that the people I attract might be more closely tied to serious commercial activities than the people Angular + Rails attracted

All this is unproven and remains to be seen. I don’t even consider AWS for Rails Developers to be my official next business endeavor yet. I view what I’m doing as research. I’m asking the question, “Does anybody give a shit about this?” and trying to arrive at a reasonably confident answer as fast as possible.

So far I’ve put out one blog post which gave me a modestly good spike in traffic (~50 visits the first and second days of the post being live) and two email subscribers. I consider the email subscribers a stronger indicator of people caring about the topic than the traffic.

Right now I’m working on a second blog post that I think speaks more to the heart of the challenges encountered when working with AWS + Rails. My next goal is to get 10 email subscribers.


I’ve decided to drastically simplify things on the service side. I’m not planning to take on any new training gigs anytime soon (unless on the off chance a wildly lucrative one falls into my lap). I started working with a new client full-time about 7 weeks ago. It’s a contract arrangement but for all intents and purposes it’s basically a full-time job. I’m okay with this. I’ve spent about 6 years experimenting with ways to get to a better place with freelancing and the only thing that has resulted from most of the things I’ve tried is disappointment, frustration and lost money. I’m glad I tried everything I’ve tried, though, because now I have a better understanding of what works and what doesn’t. I’ve learned that freelance programming is basically a sham and it’s futile to try to have a good freelance programming career because “good freelance programming career” is basically a contradiction in terms. The vast majority of freelance programmers (like 99%+, I would guess) are just contractors, just a tiny notch away from full-time employment. I do believe it’s possible to create a lucrative and enjoyable service business for oneself, I just believe it has to involve selling a service other than coding. (The service itself can involve coding but the thing sold can’t be coding, the thing sold has to be a result that may or may not be achieved by coding.) So long story short, I plan to take a long hiatus from attempting to improve my freelancing business. I have a small amount of discretionary time/energy available to me outside of client work and family time and I plan to devote 100% of that discretionary time and energy to moving forward with product income. Oh, I also stepped down as organizer of Grand Rapids JavaScript Meetup and stopped attending all three of the mastermind groups I was part of. I’m really making it a point to concentrate my efforts and simplify my schedule.

Entrepreneurship Journal, 7/11/2017

Over time I’ve come to discover some weaknesses in Angular on Rails as a business. These weaknesses include:

  • Most of the people who subscribe to my email list seem to be interested in building side projects. They don’t come to my site because they’re part of a going concern that has suddenly developed an expensive problem. They’re interested in my site because they’re working on a side project which almost by definition doesn’t have any revenue associated with it. I’m selling to individuals paying with pocket money, not businesses paying with business money.
  • Angular moves and changes very quickly, meaning my content is constantly going out of date. I have to either live with the out-of-date content or go back and update it, which is very, very time-consuming.
  • The market size for “developers who use Angular + Rails” might not be great enough to support the size of business I want to build.
  • I actually believe that most web applications should not be single-page applications and that the single-page application craze is a force for ill in the web development world.
  • Unlike other people’s self-published books apparently did, mine never led to any real consulting gigs (I tried!), probably for the “side project reason” listed above.

So I’ve decided to move on and start a new business. Unlike when I killed and shuttered my previous business, Snip, I plan to leave Angular on Rails up for the time being. It doesn’t cost that much to run and it doesn’t require any meaningful level of customer support.

Ideally, my next business has the following characteristics:

  • My customers are spending company money to buy my products and services, not personal money
  • The domain of the business is something I personally can write about intelligently
  • The domain be written about in an evergreen way
  • It’s conducive to building an audience
  • It touches on an area where I already have some expertise

I have an idea which I believe checks most if not all of these boxes. I call it It’s somewhat inspired by UserOnboard. I first conceived of the idea a few weeks ago, although in a somewhat different form. Today I kind of finalized the idea, registered the domain name, and put up my first breakdown: I Will Teach You To Be Rich.

My thinking is this: over time I expect to build some traffic and get some email opt-ins. Once I have enough subscribers—1000 or so—I can think about putting together an info product, perhaps just an ebook aggregating my breakdowns and discussing what the good ones and bad ones have in common. Then, like Samuel from UserOnboard does, maybe I can offer training. I also plan to do interviews with some of the people behind the businesses whose landing pages I examine.

And maybe throughout the course of doing all this I’ll come up with a software product to build.

In any case, my first goal is to get my first subscriber by the end of the week and to get 25 subscribers by the end of August.

June 2017 Angular on Rails Income Report

Here’s every month of Angular on Rails’ sales so far:

2016 August $868
2016 September $1053
2016 October $1580
2016 November $871
2016 December $428
2017 January $371
2017 February $449
2017 March $352
2017 April $735
2017 May $480
2017 June $185

As you can see, June 2017 was the worst month ever. Why? I don’t know for sure. One thing I do know for sure is that I’ve neglected Angular on Rails for about the last two months. That may well be the root cause of the decline.

My plan at this point is to focus on one thing and one thing only: traffic. I’ve gone from a peak of over 8,500 visitors a month (IIRC) to about 6,200 in June. So I set a goal of 10,000 visitors in the month of September.

A person might look at these numbers and wonder if Angular on Rails is really a viable business. My opt-in page still converts fine (~14%), my sales page still converts fine (~7%) and my checkout page converts okay (~18%) so I see no reason to seriously think about bailing now.

One big problem is that I’ve given my supposed #1 much less than my #1 slot attention-wise in the first 6 months of 2017. I’ve spent too much focus on training work. My plan for the remainder of 2017 is to go back to doing more coding-by-the-hour work. It’s not as enjoyable as training but it’s easier on my schedule and family, and the paychecks have tended to be more steady. From here on out I only plan to take on training gigs if they’re relatively easy and lucrative.

Entrepreneurship Journal, 6/25/2017

The work experiences I’ve had in the first six months of 2017 have been pretty different from anything I’ve experienced before this. I’ve learned some interesting things.

The main way the first half of 2017 has been different is that most of my income for this period has been from training as opposed to from coding. It seems that I generally enjoy training more than coding. To put it more precisely, I enjoy training more than I enjoy most of the real-world coding experiences I’ve had so far. Hacking away on leisure projects is more fun than either coding for money or doing training for money.

There are pros and cons to training as opposed to coding. One of the main pros of training is that it can be more lucrative. I know multiple people who have charged $10,000+ per week for training. It’s pretty hard to get that kind of compensation for coding. One of the main cons of training is it typically involves travel. Travel itself actually has pros and cons within it. The main con of travel is that it’s hard for my wife and two young kids for me to be away as much as I am.

I actually made a decision yesterday to be more judicious about what training gigs I take on. My strategy up to now was to take any training gig that came my way, no matter how low the pay was (to an extent), how inexperienced I might be with the subject matter (again, to an extent), or how ill-suited the timing was. From now on I only plan to take on training gigs that are some attractive combination of a) lucrative, b) prestigious, c) convenient and/or d) in alignment with my career direction (e.g. I wouldn’t want to try to teach a .NET class since I have no plans to do anything with .NET in the future).

Part of what made me decide to scale back on training is that I just finished teaching week 2 of a 5-week coding bootcamp I’m teaching in Detroit and my absence is really hard on my family. In addition to that, I’ve been volunteering at our local Eagles club and doing some coding work. This means that even though I’ve been coming back home on the weekends I’ve barely seen my family since the bootcamp started. I also decided today to step down from my position at the Eagles club.

I actually drove down to the Eagles club this morning and put in my resignation in person. Afterward I felt a great weight lifted off my shoulders as well as an instant flood of clarity. In addition to all the other crap I have going on, I’ve been talking with a major publisher of programming books about writing an Angular book. Before today I was imagining that I’d do my training/coding work, volunteer at the Eagles, write a published Angular book and continue to grow Angular on Rails. For some reason it wasn’t until after I resigned at the Eagles club that I realized how nuts that was. So now I think I’m probably going to tell the publisher nevermind. So rather than trying to do the Eagles thing, do a bunch of training, and write a published Angular book on top of coding and Angular on Rails, I’m going to say no to most training leads and focus on just coding (because I have to make money somehow) and Angular on Rails (because my #1 career goal is supposedly to create a successful product business). I feel good about this new focus.

Within Angular on Rails, what I’m working on right now is improving the design of the site. I’m working on both the aesthetic aspect of the design as well as the structure of the site. These things are perhaps not the highest priority growth-wise. The reason I’m making design the current top priority is psychological. Right now when I look at I think, what a piece of shit. I’m not proud to show it to people. I can’t point to it and say, “Here’s a site I made that’s a good example of a well-optimized website.” So before I resume my previous top priority of building traffic for Angular on Rails, I first plan to make it look good, and also make it a little more navigable.

Why most freelancing advice doesn’t apply to programmers most of the time

In the business advice I encounter, I’ve noticed certain ideas coming up again and again:

  • It’s better to sell more stuff to existing clients than to go find new clients
  • Repeat business is a great thing and you should try to get it
  • Referrals are very important
  • Testimonials are very important
  • Charge more

I would consider all this very good advice when applied under certain circumstances. However, it seems to me that the vast majority of freelance programmers are not in the right circumstances to apply most of this advice. Let me explain what I mean.

Consulting vs. contracting

A lot of freelance programmers, including myself, call themselves “consultants”. The word “freelancer” has bad connotations, like somebody who’s between jobs or not fully committed. The word “consultant” sounds more professional. But that doesn’t make a difference in the work that’s being done.

Most “consultants” are really contractors. Specifically, most consultants do staff-augmentation contacting. A business has an employee-shaped hole and I fill that employee-shaped hole. I get plugged into the client’s GitHub account and the client’s issue tracker. I attend all the client’s regular meetings. I work roughly the same schedule as the rest of the client’s development team which consists of full-time employees. I’m paid by the hour. Maybe I’m even required to work exactly 40 hours a week. Maybe the only thing that differentiates me from the client’s employees is that the employees have W-2 paperwork and I have 1099 paperwork.

Hopefully I have more flexibility than that, like maybe I work 20ish hours a week instead of 40 and I have a little schedule autonomy. Maybe I’m paid by the day or week instead of by the hour. But the nature of the relationship is still staff augmentation.

So that’s contracting. Now here’s my definition of consulting. The way I define consulting is that the client has a desired outcome of an engagement and you’re hired to help achieve that outcome. In this case the client doesn’t really care how many hours you spend to achieve the outcome (to an extent of course) or what technologies you use (within certain constraints) or any of the stuff that’s so rigidly dictated within staff-aug-style contracting. In this case hourly billing wouldn’t make sense. The compensation goes by the project.

Now let’s talk about why most freelancing advice doesn’t apply to contract programming.

Why “sell more to existing clients” doesn’t work for contracting

If I’m in a staff-aug relationship with a client, I’ve been strongly pigeonholed into a narrow role. I’m seen as a “coder” and a “geek”. I might even be seen as a “wizard” or a “genius” but, in my opinion, in a negative way because programmers have acquired (perhaps deservedly) a reputation for being interpersonally inept geeks who are myopically focused on technical matters to the exclusion of the more pertinent and important business realities. In my experience this is a very hard perception to shake.

In my experience, business owners and other stakeholders aren’t interested at all in getting business-related input from developers. They’ll almost certainly claim to be interested, and even take time to solicit superficial feedback (“Do you guys like the version of the marketing site design with the blue background or gray background better?”) but they aren’t genuinely interested in the developers’ input on these matters. And frankly, they’re probably right 95% of the time not to be interested, because most developers aren’t qualified to comment on business matters. Programmers have a reputation for not being knowledgeable on business because, most of the time, they really aren’t.

So that’s one problem: there’s a perception that I’m a coding machine and that they should use the coding machine to write code. There’s another problem, too, which is that I’ve already arranged with the client that for $X/hr, the client can give me stuff to do and I’ll do it. Let’s say a client is paying me $100/hr or $4000/week for 40 hours a week. It’s going to be pretty tough then to pitch the client on, for example, flying me to their office to train their staff for a fee of $10,000/week. I’ve already demonstrated to the client that my time is worth $100/hr. Now I want them to pay me $250/hr? It’s a pretty tough sell. And it’s weird to come out of nowhere and offer some additional service. Nobody ever does this (in my experience) and on the few occasions that I’ve tried, it hasn’t worked, and only made me feel stupid for trying.

Now let me explain why selling more to existing clients can work much more easily in a true consulting relationship. Let’s a say a client hires me to deliver a training engagement and, during the training, I notice that a couple students are so inept that they shouldn’t really have been allowed to participate in the class in the first place. I can mention this to the client and offer the additional service (for an additional fee) of helping process the applicants. In this case the “upsell” is very welcome because the amount of additional value I’m proposing to provide probably well exceeds the additional fee I’d require. Plus the client already sees me as someone who’s totally qualified to perform the service and naturally fitting in this role. (By the way, the example I just gave isn’t hypothetical. It’s from a real experience I had.)

Why “repeat business” doesn’t work for contracting

When I’m working in a staff-aug relationship, the work doesn’t really consist of discrete projects for the most part. It’s just a continuous stream of features and bugs, some big and some small. And my performance probably isn’t evaluated on a per-project basis but just the general impression of how I’m doing with this continuous stream of features and bugs. If the client likes me, my reward is more work. My reward is I don’t get fired and I get to keep working with the client for another week or month. The “best” scenario is that the client likes me so much that they never fire me and I get to work there for the rest of my life. A thoughtful person might ask how that’s freelancing and my answer would be that it’s fucking not. It’s a fucking bummer is what it is.

I’ve experience the other kind of repeat business and it’s great. When I’m not doing contracting, I’m doing corporate training or some other kind of teaching. A few weeks ago I went and taught a class for a very large company for whom technical training is a new thing. (I taught this class under a training company I’ll call Company A.) After I taught this class, the end client called Company A and told them they’d like to make them their “premier training partner” and the training company told me they want to use me for future classes. When I heard this, it was such a great feeling. It felt like a big win. I’ve also had other teaching clients use me multiple times and it felt like a huge win in those cases as well. I don’t think I’ve ever felt like I’ve “won” by having a staff-aug client simply not fire me. Again, the idea of “repeat business” for staff-aug clients just doesn’t even really apply.

Why referrals don’t work (very well) for contracting

If I teach a one-week class for a client and the client likes it, that client may refer me to other prospective clients. This in fact has happened to me. The situation is a little different with contracting clients.

Let’s say I’m working with a contracting client and the client absolutely loves me. What the client will want to do, of course, is hang onto me for as long as possible. The client won’t refer me to somebody else. Why would they? They want as much of my bandwidth as they can possibly get. What if we stop working together? Well, if I mention to my now former client that I have some availability again, they’ll probably want to hire me again. Why would they send me to somebody else if they can have me themselves? And of course if we parted ways on bad terms, they probably won’t be singing my praises around the neighborhood. So whether the client liked me or didn’t, I’m probably not getting many referrals from them.

When I get a contracting referral, it’s usually not from a past client but a “co-worker” from a previous client engagement. That’s fine, and in you could even say it’s necessary, but there’s a key weakness to these types of referrals in that it’s not a buyer-to-buyer referral. I’ll explain what I mean shortly.

I’m going to keep using examples from my teaching experience because that’s what I know. If I teach a class for a client, that client probably won’t need/want 100% of my available time extending into the indefinite future, which is what a contracting client would want. The client probably just wants somewhere between a few days and a few weeks of my time. So there’s plenty of room for multiple clients to use me without those clients competing too much for my time. And it’s entirely possible for these referrals to be buyer-to-buyer referrals. This is significant because buyers (that is, the people with the decision-making and check-writing authority to hire me), I believe, trust recommendations from other buyers more than they trust recommendations from their subordinates.

It’s also much more natural for me to ask a training client for referrals than a contracting client. At what point, exactly, would I ask a contracting client for referrals? Again, if the contracting client likes me, they’ll want to keep using me, and if not, they probably won’t want to refer me anyway. I guess the only “referrable” scenario I can think of is if the client likes you but goes out of business or gets a new job.

Why testimonials don’t work that well for contracting

As I mentioned earlier, contracting usually doesn’t consist of a series of distinct projects with measurable outcomes but of a steady stream of features and bugs. Not only is the work typically not of a measurable nature, but the work of any one programmer is often blended together with the work of all the other programmers on the team, making it pretty thoroughly impossible to measure the value of any particular programmer’s contribution. Even if the client loves the shit out of you, the kinds of testimonials the client could provide don’t really match up with the kinds of testimonials a freelancer would want. The kind of testimonials you want are “Jason helped us double the conversion rate on our sales page which immediately doubled revenues.” But the kind of testimonials you can get from contracting clients are more like, “Jason is a rock-solid communicator and I knew I could absolutely trust him to run our development team.” The latter kind of testimonial might make me feel good, and it might even help me get more clients in the future, but it’s more of a “character” testimonial, not a “results” testimonial. And in my experience, contracting testimonials are kind of awkward to get, because when do you get them? The only purpose of a testimonial is to help get a new client. So if I try to get the testimonial while you’re still working with a client, it’s kind of weird because from the client’s perspective what am I doing, am I trying to leave? The other option is I can ask for a client’s testimonial after I tell them I don’t want to work together anymore, which is also weird for obvious reasons. And the last scenario is that the client is the one who ends the relationship, in which case a asking for a testimonial would be weirdest of all. I know I might be overthinking it but that’s the way I look at it.

Testimonials for project-based work, on the other hard, are much more natural. Projects pretty much by definition have a beginning and end. If I teach a one-week class for a client, it’s totally natural for me to have a conversation with the client afterward which includes the solicitation of a testimonial.

Why “charge more” can be hard with contracting

Lastly, it’s very common to hear the advice “charge more”. It’s absolutely true that no matter how much you’re charging, you could be charging more. The reason this is true is that no matter how valuable your services are, you could always make them more valuable. There’s a very important nuance to this truth, though: market rates are real. I’ll explain what I mean.

If you’re charging $25/hr for programming, you absolutely can (and should!) raise your rates to $50/hr. You can even double that again to $100/hr and still get work. But good luck charging $900/hr for programming. There’s a line somewhere. I’ve charged $100/hr for plenty of work in the past, and I’ve even charged as much as $150/hr for emergency work or highly specialized work. But I’ve found that if I want to charge a client something like $150/hr or even $120/hr for regular old staff-aug development work, they’re going to tell me that it’s substantially more than they’re paying any of their other team members and they’re going to want me to explain to them, quite understandably, why they should pay me so much more than anyone else. “Because I’m really good” is not a compelling answer.

I’ve discovered that there seem to be a few particular ways to charge better-than-market rates: 1) do very specialized work that’s not readily available anywhere else, 2) charge a “rush rate” for an emergency, 3) charge by the project and offer a service other than programming. That last point is so important that I made it bold and underlined.

There’s a perception in my experience that coding is coding and that good programmers cost between $50 and $120 per hour. This perception is totally wrong (programmer productivity varies not by a factor of 2X or 3X but by a factor of infinity*X because some programmers are so bad that they provide zero or negative value), but that doesn’t mean that the perception doesn’t have real power with real effects. So I’ve come to believe that if I want to escape market rates for programming, I have to offer a service other than programming. Let me talk about what that has meant for me.

The solution

I’m eternally and intensely interested in how to make more money in less time. I raised my freelance rate over time from $50/hr up to $100/hr and, like I’ve said, even up to $120/hr or $150/hr at times. But I’ve discovered a ceiling just above $100/hr that seems really hard to break through. That’s where that force of the market rate perception comes in. Most clients perceive the top of the range to be around $100/hr. I first bumped up against this ceiling in 2014 when I first started trying, unsuccessfully, to make $150/hr my new “official” rate.

For a couple years I desperately wanted to understand how to break through this ceiling that seemed to exist somewhere between $100/hr and $150/hr. Then, in 2016, I heard a podcast episode about technical training and saw it as the potential answer to my question. I didn’t realize that companies regularly pay up to $5,000 a day or $25,000 a week (or more, apparently!) for technical training. So I made it my business to break into training, and I did it. Technical training has made up most of my income so far in 2017. (I’m writing this is June 2017.) I’ve made roughly as much from training in the first five months of 2017 as I did in the whole year of 2016.

So I wouldn’t say that training is the answer but it’s an least an answer. It has worked pretty well for me so far so my plan at this point is to apply the principle of “double down on what works” and just take the training stuff as far as it will go. I’m not charging $5,000 a day yet but I intend to get there. I understand that some consultants charge thousands or even ten thousands for a single one-hour speech, and since training is a form of speaking I imagine that it might be a good stepping stone to even higher fees. But like I said, my plan for now is just to double down on training and see how far I can take it.

May 2017 Angular on Rails Income Report

Here’s every month of Angular on Rails’ sales so far:

2016 August $868
2016 September $1053
2016 October $1580
2016 November $871
2016 December $428
2017 January $371
2017 February $449
2017 March $352
2017 April $735
2017 May $480

And here are the last six months in graph form (I used Gumroad prior to December 2016 so Stripe doesn’t have data for those months):

So May was not as good as April, but better than the months leading up to April. Why wasn’t May as good as April? I don’t exactly know.

I’ve been pretty distracted from Angular on Rails lately. I’ve been doing a lot of training. Last week I taught a class in Amsterdam and the week before that I taught a class in Detroit.

I’m frankly expecting to have to neglect Angular on Rails for about the next 6 weeks. I really hate to do that but the first priority has to be the client work that pays the bills, and I have a lot to do for clients over the next 6 weeks.

Side note: I tried Facebook ads in May. It went well it the sense that I was able to acquire 37 subscribers for about $2 a pop but it went poorly in the sense that none of those 37 subscribers bought anything. I’ll try again later when I can afford to waste some money to get it figured out.

Entrepreneurship Journal, 5/18/2017


I started doing Facebook ads. So far I’ve spent $52.29 for 21 subscribers for an average of $2.49 per subscriber. My average sale for April was $52.52, and about 8% of my subscribers buy something, so I believe that means a subscriber is worth $4.20 to me ($52.52 * 0.08). This means $2.49 per subscriber makes sense. For every 100 subscribers I buy ($249) I’ll make 8 sales, resulting in $420.16 ($52.52 * 8) of revenue and $171 of profit.

This is all assuming that subscribers who came to me via Facebook ads convert the same as subscribers who came to me in other ways. So far none of these 21 subscribers I’ve bought have bought anything from me.

Revenue for May hasn’t been very good so far. I’ve made just $257.25 in sales so far and it’s already the 18th. At this rate I’ll make less than $500 this month, which would be lame. That $257.25 even includes a sale when somebody accidentally bought the book twice, so it’s really more like $207. I’m reminded of this tweet:

We’ll see how things shake out.


I’m in Detroit right now teaching a 5-day class. It’s going well. (By the way, Chris Cornell died here in Detroit last night. Crazy.) Next week I’m teaching a 3-day class in Amsterdam. Then I’m off for two weeks, then I’m teaching a five-week bootcamp in Detroit. Nothing planned after that yet.

I have some potential work in the pipeline. I taught a one-day class last week and the client was happy and wants to do more classes. This is through a training company so I don’t have much control over the sales process. All I can really do is make suggestions to the training company and then wait. I also have some other prospects but they’re much earlier-stage.


I haven’t done any development work in a long time. The soonest I could possibly do any development work is after July 14th when my bootcamp ends. So I guess I will have gone four and a half months without having written any production code, which is totally crazy to me. I’ve been trying to line up some development work in what little extra time I’ve had but nothing has panned out yet. I don’t expect to have any more time between now and July 14th to find something. It actually seems more likely that I’ll line up some training work before any dev work. I kinda hope I find some dev work though because I have a somewhat long vacation planned for August and it would be nice to have some location-independent work to be able to do during the vacation.

How I got started in training

As is so often the case, I have very little time to write this so I will dash it off as quickly as possible.

I got an email today asking a few questions about training. I’ll answer the questions here in case anyone else asks the same questions in the future.

The first question was about training companies. I wasn’t aware of this situation before, but there exist a ton of technical training companies who act as brokers between technical trainers and the end clients. I heard an episode about training on the Freelancers Show where Reuven Lerner recommended to work through training companies first, then go out on your own later. I would second this recommendation.

Here’s how I identified training companies to work with: I made a list of technologies I thought I could teach, then I googled “[technology name] training” or “[technology name] training company”. My list included Angular, Ruby on Rails, Ruby, JavaScript, HTML, CSS, PHP, MySQL, PostgreSQL…you get the picture.

I checked each training company’s website to make sure they offered a least one class I thought I was qualified to teach. Then I emailed the training company and said (roughly), “Hey, I’m an instructor. I teach X and I see you offer X. Want to talk?” The response rate was insane. I think more than half the companies I reach out to respond.

I also keep an Excel spreadsheet where I keep track of who I’ve contacted, when I contacted them, whether they responded, etc.

It seems that most training companies want to have you do something called a test teach before you’re an officially-vetted instructor with them. I found this process to be surprisingly time-consuming, but if you want the rewards, I guess you have to put in some effort.

Some training companies will provide the actual training material for you and some will expect you to provide your own. They usually use the term “courseware” for the material. Some training companies want your fee in the form of an all-inclusive rate. Other training companies just want your day rate exclusive of expenses. I understand market rate for working with training companies in the US to be about $1000/day plus expenses. I understand market rate for working directly with clients in the US to be $3000/day or $5000/day or more. Training companies tend to have big-name clients. I’ve worked for clients like HP, VMware and Deloitte through training companies.

I’ve noticed a commonality among trainers: they seem to have written a book or at least have a lot of technical writing available online. Some trainers get leads directly via their book or blog posts. This is a great situation but it’s a long-term strategy and the lead flow isn’t very easy to control. It’s a little easier to make your own destiny by proactively reaching out to training companies for gigs, although they of course take a hefty cut. Best of all is probably to proactively reach out directly to end clients, although that’s much easier said than done. If I had to guess, I would guess that training companies have sales teams that directly reach out to Fortune 500 companies and pitch the training companies’ services. They have a lot of overhead so they’re probably not waiting around for someone to call them.

Advice for programmers wanting to start a product business

I only have a few minutes to write this right now but I want to get something out there because someone asked me. I might expand it later.

If you’re a programmer and you want to earn some “passive income”, here’s my advice:

Write an e-book. Make that your first business, a business that sells an e-book.

For the e-book topic, find something that lies at the intersection of “narrow enough that I can be the dominant voice on the internet on this topic” and “popular enough that I can actually make a living selling things related to this topic”. I think Angular + Rails is a good example of a combination that lies at this intersection. The best situation is when there’s a lot of demand for information on the topic but not a lot of existing information fulfilling that demand. This was the case with Angular + Rails when I stepped in.

Before you write the book, register an SEO-friendly domain name (like and start writing blog posts there. Write posts that are a) incredibly specific, b) target toward something you believe people are googling for (e.g. “angular rails heroku”) and c) long and definitive. Use WordPress for your blog. I HATE WordPress but it really is the best tool for the job. Use WP Engine to host your WordPress blog.

As part of your site setup, register a Drip account, set up an opt-in form in Drip, then drop that form into your WordPress site so that you get an opt-in form on every page. Offer a lead magnet that you’ll give people in exchange for giving you their email address. Call it your “Free Guide to Getting Started with “.

Once you have a few hundred people on your list, use Gumroad and a Jeff Walker-style launch to pre-sell your e-book. Sell it for $49. Offer to deliver it in two months. If enough people buy (for me, “enough” was just seven people), write the book and deliver it. Do another Jeff Walker-style launch when the book is done.

If your launch goes well, turn your book into a video series and then launch that (again, Jeff Walker-style). Sell the video product for $99.

What comes next? I don’t know. I’ve gone through the preceding steps myself and I’ve made an average of a little over $700/mo for the first 9 months that I’ve made money on my e-book and video package. I can’t tell you what to do next because I myself haven’t done the next thing yet. My plan at this point is to focus on traffic and keep cranking up traffic until I get a sign that I should chance focus to something else.