Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I gross just under $10K per month from http://www.letscodejavascript.com, a subscription-based JavaScript screencast for professional developers [1]. It's a full-time job: I put out two new episodes every week, plus a "special" every month that takes quite a bit more effort. That leaves me with about half my time for developing the business. I'm bootstrapping this, so it's just me. I don't plan to hire any employees until there's more money coming in. (I also make a few hundred a month from royalties on my book [2], which is truly passive.)

I've talked about Let's Code JavaScript on HN before; check out the previous thread [3] for some details about how I started and market the site.

Since simonswords82 was so generous with details about his business, I'll do the same. About 2% of the visitors to the site sign up for the free trial. That seems poor, although I don't have a lot of insight as to what the number "should" be. I do require a credit card in order to sign up for the trial. The trial automatically converts to a subscription after seven days.

About 70% of trial subscribers convert to a paid subscription. This seems pretty good to me, although I'd of course be happier if it was higher. Once they've subscribed, I lose about 25% of subscribers in the first month, and then the number drops asymptotically down to about 5% (of the initial total) per month. I'm reasonably happy with this as well. It's poor by the standards of a SaaS, where a churn rate of 1-2% is doable, but I think it's pretty good for a content site.

My most recent push was an inbound marketing campaign: I took one of my monthly specials and turned it into a dedicated site on object-oriented JavaScript [4]. That was very successful; it nearly doubled traffic in the first month (from 2,800 uniques in the previous month to 5,400) and looks like it will permanently add about 1,500 uniques per month. Trial rates went down slightly as a result, but overall subscriptions went up.

The biggest challenge for me is having lots of things I'd like to pursue, but not enough time to do them all. The Object Playground inbound marketing campaign was successful, but a lot of work. I recently released another special that might make a good inbound campaign (on large-scale JavaScript fundamentals: modularity and automated cross-browser unit testing), but I'm not sure it's worth the time it would take to create a marketing site for it on the scale of Object Playground.

For now I'm focusing on A/B testing various ideas for improving conversion. It takes less effort and potentially has longer-term impact. So far, I've improved the subscribe page [5] by adding testimonials and a better design. Next, I'll probably provide more opportunities for people to preview the series without signing up, as well as more obvious calls to action on the video pages. I also have some other plans in the works that I can't talk about yet. :-)

[1] My screencast is Let's Code: Test-Driven JavaScript, a series for professional JavaScript developers. It's available at http://www.letscodejavascript.com. I'd love to hear your feedback.

[2] My book is The Art of Agile Development. It's been out for over five years now, so it's nice to still be getting royalties from it.

[3] I talked about my experiences launching and marketing the screencast here: https://news.ycombinator.com/item?id=6038226

[4] My recent inbound marketing campaign was Object Playground, a tutorial and visualizer for object-oriented JavaScript: http://www.objectplayground.com.

[5] The Let's Code JavaScript subscribe page is at http://www.letscodejavascript.com/v3/subscribe.



Your demo video is stuttering and unwatchable. I'm guessing it's getting hammered from this post.

The site looks really nice, and appears to have really great content. Signup achieved.


Wow. Oh, wow.

I just discovered that my demo video is recorded at too high a bitrate. It's at 2.8Mbit/s, compared to 1.3-1.8Mbit/s for subscriber videos. That's probably because I used my standard screencast encoding settings (which are set nice and high) for a video that has a lot more motion than my standard screencast.

Fixing this alone will probably do wonders for my conversion rate.

Thanks a million to tankbot for starting the conversation rolling and to alecthomas for helping me to troubleshoot it over email.


So, for anyone following this saga...

In researching this issue, I found recommendations that 2.5mbps is probably the most you should plan for in North America. I'm not sure how accurate or current that recommendation is, but since I was seeing problems at 2.8mbps, it seems reasonable. (It also might explain why I have such a large proportion of international subscribers.) That said, I'd really love to get my bitrate below 2.0mbps, because that's what my actual videos come in at.

I went into my video export settings and fiddled (and fiddled, and fiddled) and ended up finding a compromise that gave me 1.94mbps at the cost of slightly-visible artifacting during transitions. [1] Bingo! Uploaded, deployed, done.

Well, not entirely done. I'm still using my old settings for most videos, because it doesn't have any visible compression artifacts at all, at least not until you get out the magnifying glass. (I can get away with such high quality because, although my screencasts have more transitions and motion than average, they're still mostly unchanging text.) But I don't want to run into this problem again. It's embarrassing. And I like killing problems dead. DEAD!

So I modified my deploy script to run `ffprobe` and pull out the bitrate for each new video. If it exceeds 1750kbps, I get a warning. And if it exceeds 2000kbps, the script fails. [2] That'll do it.

Of course, the real root cause here is that I don't have visibility into client-side performance issues. Eventually, I'd like to modify the client-side code to report back playback experience. That would have detected this problem much sooner, and it will protect me against CDN/network issues as well, which are particularly hard for me to get visibility into.

Thanks again to tankbot and alecthomas for helping me find this problem.

[1] The settings I ended up with, in case you're curious:

Video encoding: H.264; 24 frames per second; 2250kbps max bit rate; "High" quality; Single-pass

Audio encoding: AAC; 44.1KHz audio (mono); "Normal" quality; 64kbps audio bit rate

[2] These thresholds are pretty conservative, and I'll increase them if necessary. I like starting with low thresholds because it gives me more visibility into what's going on, at the cost of requiring me to be a bit more hands-on until I get things dialed in.


it would be awesome if you could share some details about your screencast setup.


Glad to help a fellow Portlander! :o)


Thanks! I have the videos on a geo-balanced CDN which is well overprovisioned, so it should be okay. I just tried it myself and everything seemed fine. Of course, because it's geo-balanced, there could be a problem I'm not seeing. If anybody else has problems, could you let me know?


It's unwatchable for me too. It appears to be buffering fine (I see the gray buffering bar quite a bit ahead), but just stalls and stutters quite a lot.


Hmmm... that's disturbing. It's stuff like this that keeps me up at night: not things breaking, but things breaking without me knowing. Thanks for chiming in. I've sent you an email to follow up.

If anybody else sees this issue, and you're willing to take a few minutes to help me troubleshoot it, please let me know. james@letscodejavascript.com . Thanks!


I should clarify that the video quality was fine, but it would pause for buffering often at the beginning. Once I made it a few minutes in this cleared up. I'm in the Pacific Northwest, USA if that helps with troubleshooting.


Thanks. I'm the Pacific NW as well (Portland), so we're probably hitting the same server. I'd guess the CDN had to adjust to the sudden influx of traffic. Let me know if you have any more problems (james@letscodejavascript.com) and we can dig into it further.


The website is working fine for me. Also, the videos convinced me to try the free trial.


I'm a PHP developer that's been looking to become better at JS. Right now I'm at the level where I basically can write some simple JS to do what I want, most of the time, but the code is a mess of spaghetti.

I am also a huge testing fanatic, and absolutely love that you're teaching using TDD from the first episode!

Consider me signed up and a paying customer!


My answer to the main question here is related to yours, since your a testing fanatic ;)

My company does web dev and consulting, but we struggled with how to manage long-term support. So we developed an automated html5 testing platform and started writing custom UX tests for our clients' applications. This way, if they continue to develop new features or whatever, they have a way of quickly checking for breakages. It works so well that we've now opened it up as a service we offer outside of our development projects.

We get a little bit of cash for writing the tests, and a little bit of cash for hosting/maintenance/updates.

Here's a link: http://html5testing.co/


That's pretty cool. Are you looking for developers, or ?

What do you use to drive the tests? I'm most familiar with Behat.


We're actively looking for test writers at the moment, but we also throw consideration to every dev resume that comes our way for our consulting projects.

I'm not familiar with Behat. We're using Node.js.


Thanks!


Which conversion step do you think it would be easiest to improve upon? I'm curious, because increasing the rate of free trial signups by 30%, from 2% to 2.6% (which seems like a modest increase), would result in the same number of subscribers as if you were to manage to increase trail-to-paid conversions by the same 30%, from 70% to 91% (which seems like a much more difficult feat).

Anyway, I'm sure you know the various scenarios, so my question is: how do you determine where to focus (or how to distribute) your efforts? Of course, the free trial signup rate becomes a limiting factor as your trail-to-paid rate approaches 1, but at this point, where do you see the best opportunity for improvement?


I'm definitely focusing on the free trial signups, for exactly the reason you said.

Here's how I decide what to do next: I have a big 6' folding table in my office that's covered in index cards. On the left-hand side are six columns: what I'm planning to work on this week (the current iteration), the next four weeks of commitments (mostly episode air dates), and any future commitments (such as my Christmas vacation with my family).

On the right hand side, I have five more columns: Attract, Convert, Hygiene, Delight, and Intelligence. Whenever I have an idea for something that I should do, it goes in one of those columns. If an idea column is full (some categories get two columns), then I have to throw out one of the existing cards before I can put a new one in.

All of the columns are full.

Every Monday, I calculate my velocity (Agile/XP-style) based on what I finished the week before. Then I look over my upcoming commitments and move everything that should be done this week into the current iteration. I try to stay about two weeks ahead of The Beast (that is, episode commitments), but I don't always succeed. Still, I have yet to miss an air date.

Then I look at the amount of points remaining and choose an idea from the right-hand half of the table to work on. Sometimes there's one I'm already working on--that goes into a special "On Deck" corner of the table--in which case I just generate story cards from that and slot them into the current iteration. If there's nothing on deck, though, I look over all my existing ideas and pick one.

I pick ideas primarily based on bang-for-buck. Is it relatively easy, do I think it will work, and will it give me useful information even if it doesn't work? But sometimes I pick small things that are bugging me or that I think would be satisfying to work on. Morale's important. And sometimes I choose things that are really big and risky but the time is right to do them.

tl;dr: dart board. ;-)

Here's a picture of the table: http://imgur.com/tmm9TvT


Thanks for the detailed reply! I'm going to experiment with some of the things you mentioned.


hi i was a previous subscriber to your service. i just wanted to say thank you!

the one point i wanted to criticize was the lack of accounts page, not being able to view my billing information or the ability to cancel my account kind of scared me.

other than that your videos were high quality and course content was great.


Thanks! There's an account page now. It still has room to improve—I handle most things manually—but as pg says, do things that don't scale. :-)


Congrats on your service and success, and thanks for sharing. I'm offering training in games development, and your model looks interesting. Do you spend much time editing the videos? It seems like doing that must be a huge effort, even if they are recorded live. Thanks & good luck!


Thanks! Editing is a huge effort. I've gotten it down to a science, and I still spend about 60 minutes editing together a 15-minute video.

Part of the time is spent adding titles, notes, and transitions (such as when I zoom out to show a web page), but the majority of the time is just spent going through the episode with a fine-tooth comb to strip out pauses, ums and other filler, and to speed past necessary but uninteresting work.

The monthly specials take a lot longer. I typically spend a full week on a 15-30 minute video. Sometimes longer. Editing probably takes 2-4 hours and the rest of the time is on scripting/outlining, animations, coding the examples, and so forth.


Congrats and thanks for sharing details about your business. I'm currently building a subscription based medical training video streaming site. May I also ask for details about the technical aspects? Do you use a media streaming service like Wistia? How do you protect your videos from unauthorized access? Do you serve different formats to different devices?

Thanks in advance for answers.


Sure, send me an email (james@letscodejavascript.com) and we can discuss it.


I really like what you are doing, but after seeing what happened to RailsCasts I am a worried what will happen to this business model once it hits 400+ episodes. Hopefully your "other plans" have this part worked out?


I assume the screencast has a limited shelf life, so yes, my "other plans" are about that. Although at this point, I think the problem is more about organizing the content so it's not overwhelming. I'm not worried about running out of material or burning out, at least not for a while.

What happened to RailsCasts?



What happened to RailsCasts after 400+ episodes?


In [3] you wrote that you already had traction from the agile community. Was that just from the book?


I've been involved in the agile community since near the beginning, and I'm fairly well known there. It's partly the book, partly my blog [1], partly speaking at conferences, and partly longevity.

[1] http://www.jamesshore.com




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: