Lachlan Miller

Reflecting on a Year of Content Creation

In 2020, I decided to start taking content creation more seriously. This post will detail my content creation journey, which started in 2017. I will share the different things I tried, what I learned, and how much I made.


I’ve been posting content online since mid 2017, when I started writing on Medium, which was the place to post content at the time, where I main wrote about JavaScript and Vue.js.

Around this time I also started contributing to Avoriaz, which later became Vue Test Utils. Since there were not many articles about how to test Vue components, I started writing some on my Medium blog.

After a while, I had quite a few articles about Vue testing. To make it easier for people to navigate them, I put them into a small book which I named The Vue Testing Handbook. This was around mid 2018.

After this, I continued to write articles about whatever I was interested in at the time - mainly testing. I try to write about topics not many people are covering - there is a huge amount of beginner material, like “how to Hello World with XYZ framework” but not nearly enough advanced content.


In 2018 I dicovered Destroy All Software. I loved the speed and brevity of Gary’s presentations, as well as his focus on advanced concepts. It was a breath of fresh air among the endless “Hello World” style videos on YouTube and posts on Medium.

I also did a couple of courses on Udemy during 2018 - a React one, since I started a new job with React, and another on Redux. Udemy has some great content - you just need to search. Most of the courses I took were between $15 and $45. Some of those courses had 1000s of students - even at $10 each, those people were making tons of moeny!? I wondered if I could do that.

Around this time checked the Google Analytics for my Vue Testing Handbook. It had a ton of traffic! It got around 100k views in 2018:

2018 views on my book

2018 traffic for the Vue Testing Handbook

This felt awesome - people were finding my content useful! I continued to add content and improve it as I saw fit. Since I was one of the main contributors to Vue Test Utils, I had a good idea of the problems people were facing, which helped drive a lot of the content.


2019 saw a huge spike in traffic to my book:

2019 biews on my book

2019 traffic for the Vue Testing Handbook

You can see where I broke Google Analytics in November when I bumped the dependencies. Since I had a lot of traffic, I tried putting a small advertisement in the top right hand corner of the book with Carbon Ads. Even with 100k views / month, I only got around $15. I have no idea if this is normal or due to heavy use of adblockers by developers, but I was sure I could make more than $15 a month with this much traffic.

Around this time Evan announced plans for Vue 3. I had the idea to make a course. I didn’t want it to be for beginners, there are TONS of those out there already. I decided it would be more advanced and focus on TypeScript and the Composition API (Vue 3’s flagship features) and testing with Vue Test Utils, the library which I maintain.


I had just finished reading The Lean Startup and decided to follow it’s philosophy. I made a little graphic and stuck it on my book with a link to my course’s website. There wasn’t anything there yet other than a few dot points about the course I was going to make and a form to let people submit their email. I got about 100 email registration in the first month - validation successful.

There were a few blockers on making my course:

  1. Vue 3 was not released.
  2. I was not good at screencasting.
  3. Vue Test Utils for Vue 3 did not exist.

Evan and the rest of the team were working on (1), so that was fine.

Learning to Screencast

Regarding (2) - I decided I could practice and drive traffic at the same time. I created a new 10m - 20m screencast every week for almost 6 months, and wrote an accompanying blog post. You can see the screencasts here. To see if people would pay for my content, I made it a $20, one off payment. I really dislike the subscription model for educational content - it just seems silly. Why should I need to pay a recurring payment for a course? WTF? This is why I like Udemy - the model is good for consumers. One off payments are good.

I posted this opinion on Twitter and got beaten to a pulp - mainly by people running subscription platforms, lol. I don’t care what anyone says, I don’t want a recurring fee to take a one off course, and neither does anyone else.

Anyway, some people paid for the screencasts. Since I was mainly using it to drive traffic and learn to screencast, the goal was not to turn a profit. I made the most recent few free, and the rest cost. So if you visited my site each week, you could watch all the content as it came out without paying.

Either way, some people found the content useful and paid for it. Further validation people enjoyed my content AND were willing to pay. And I was getting better at screencasting.

Screencasts revenue

Screencast Revenue

Here’s a typical example of my screencasts:

Building a Spreadsheet Engine and UI Layer with TypeScript and Vue.js 3

Building a Brand

I also started to share my content on the Vue.js subreddit. I post there most days anyway, answering questions and helping people out - I think it’s important that I do this, so I don’t just seem like someone who shares their content and doesn’t actually participate in the community.

My Reddit profile

Sharing content on Reddit

I also started posting on Twitter. I didn’t like Twitter much before, I don’t like it much now, but a lot of developers hang out there and it’s a great way to build a brand. Building a brand is super important if you want to get into content creation, as I learned from Kent C Dodds, who is a prolific blogger and Gary Bernhardt who presents at conferences.

Building Vue Test Utils for Vue.js 3

Another blocker on making my course was I needed to build the testing library I had written my book about, Vue Test Utils, for Vue 3. This was actually pretty challenging, since the Vue 3 internals are really different from Vue 2, and a lot of the hacks in Vue Test Utils v1 would not work in Vue Test Utils v2. I basically built the features for the library as I needed them for my course.

Course Pre-release

I recorded about 4-5 lectures every week on Sunday for a few months. The course had 6 modules, and after I finished 4 I decided to let people buy the content. I also made the first 7 lectures free. I let people know via Reddit as well as emailing everyone who’d signed up (around 500 people).

Course Sales

Course Sales on my Website

You can see two spikes in sales - pre-release (June) and the full release (July). Around 70 people purchased the course on my site for a total of $3000 USD in sales. This was really exciting to me - the fact people are willing to pay to listen to me talk about coding is thrilling. I still can’t believe I get paid to code all day.

I decided to self publish. I am not sure this was a bad decision, but it was a LOT of extra work. I had to build a website with authentication, set up Stripe, host my content on Vimeo … this took a lot of time and effort I could have spent on other things, like producing my course.

Marketing is also challenging - I don’t want to spam people, so I try to keep emails to a minimum, and always include something free (like some new screencasts).

I decided to publish my course on Udemy, too, at the same price. One of the challenges I had with self publishing is purchasing power parity - while people in rich countries can easily pay $50 for a course, many people cannot afford this amount. Udemy had tiered pricing based on country, which is nice. I want my content to be available to as many people as possible.

Udemy is less profitable, but also takes WAY less overhead - no website to manage, no video hosting to mess around with.

Course Sales on Udemy

Course Sales on Udemy

The average sale price is around $18, as opposed to $40 on my website. I think this is a good trade off, though - I only spend 1-2 hours a month answering questions on Udemy, and 0 time maintaining infrastructure.

Making Another Course

I learned a LOT from making my first course:

  • Don’t spend too much time re-recording videos - they will never be perfect. Make them good, but don’t obsess.
  • Marketing is important. Start it early, even before you have any content.
  • Personal brand is important.
  • Stand out. Do something different. Unless you are the king of your niche. My niche is testing Vue.js components.

I decided to put this into action and try making a crash course for Vue.js 3. Since Vue 3 was just coming out, there were not many courses yet.

My first course took me around 4 months to complete. The second only took around 6 weeks! This was mainly due to getting better at screencasting. I made this one $30 on both my website and Udemy, to see which did better.

Crash Course Sales on my site

Vue.js Crash Course Sales on My Website

Crash Course Sales on my Udemy

Vue.js Crash Course Sales on Udemy

Udemy is king when it comes to beginner content. And yes - 13000 enrollments.

I made the course free the same day Vue.js 3 was officially released - around 12k people enrolled in the course. The tweet went viral! I could refresh the page and watch enrollments jump by 10 every time. If this had been my own site, and not Udemy, it would certainly have crashed under the load.

Lesson learned - free stuff is the best marketing.

New Website, Writing a Book

One of the problems with making courses is it is difficult to revise them. Vue.js 3 had a few minor breaking changes in the early days, and I had to re-record several lectures.

I had also made my website, Vue.js Course for my original course - the domain name isn’t exactly ideal - you don’t go to a website called Vue.js Course expecting screencasts or blog posts. Also, I realized there is a lot more value than a couple thousand bucks in building my own brand.

I decided to create a new website, one that was more focused on my own brand. I also got a little better at design :)

I also decided to write a book - I had a great time writing the Vue Testing Handbook. Also, books are easier to maintain and update.

To remove the additional work of maintaining a website with a full payment system, I decided to sell my book on Gumroad. It would be focused on design patterns for Vue.js.

In true lean spirit, I slapped together a marketing page and put a banner on the Vue Testing Handbook to let people know about my upcoming book. In total I have around 1000 people on my mailing list now!

I listened to Adam Wathan’s interview on Indie Hackers. One thing that stuck with me something to the meaning of “build excitement - let people know what you are doing”. Every time I wrote a new chapter for my book, I’d sent it out for free to my subscribers.

I got a TON of really useful feedback! Lesson learned again - the best marketing is free content. I also used Twitter to marketing my new blog posts and book. Some people even asked how I was going with the book, and when it would be released! It felt great, but also a bit scary!

It took me two months to write the book. I also started a YouTube channel in parallel. Initially I had the idea to sell some screencasts as part of the package, like Michael Thiessen in his course, Clean Components, which is known to be a great product.

I ended up just posting all the screencasts I made for free on YouTube, and dropped a link to my upcoming book in the description.

The reason for this was two-fold: free content is good marketing, and building an audience on YouTube might be useful eventually. I got around 500 subscribers in 3 months, which is really exciting. Most of my subscribers came from sharing my videos on Reddit or sharing them with my emailing list when sending out free chapters from my book.

I am getting better at screencasting. I am learning to speak clearly, and type while I explaining things. Here’s one of my more recently screencasts:

Launching my Book

I really want to make my book available to as many people as possible, so I implemented purchasing power parity on my marketing page. You get an appropriate price based on your location using this API.

Purchasing Power Parity

Purchasing power parity

Of course this is able to be spoofed - luckily most people are honest, and the base price ($30) is reasonable. I also sent out a $5 discount for all the people in my emailing list.

I sold 68 copies of my book in the first few days!

Book sales

Book sales

Experience and research tells me most of the sales are in the first few weeks - I don’t expect this number to increase much more. I’m still really happy with the result - I wrote my first book, and made around $1400!

I paid a designer on Behance around $150 to get a really cool cover made. I love it. The bird is a Kookabarra - a native Australian bird (I am from Australia).

Book cover

Cover for Design Patterns for Vue.js

Stats and Total Profit

My two goals of content creation were building a stronger personal brand and making some side income.

I accumulated around 620 Twitter follows over 11 months, and 510 YouTube subscribers over 3 months. YouTube is WAY more enjoyable for me, and seems like it’s going better, so I intend to keep making content.

As for profits:

  • Vue.js: The Composition API ($1577 Udemy, $2950 Personal Website) = $4527
  • Vue.js Crash Course ($1393 Udemy, $442 Personal Website) = $1835
  • Design Patterns for Vue.js ($1439 Gumroad)

Total: ~$7800.

Of course there are expenses.

  • Vimeo plus account: $110 / year
  • Hosting (Digital Ocean) around $10 a month: $100 / year
  • Design work for book cover: $150
  • A LOT OF TIME. Probably a 400 hours on content creation alone.

Total: ~$400

Considering how much time I invested in creating my content, I’d estimate my hourly wage at around $15. I learned a huge amount and had a lot of fun - it was definitely worth it! I intend to continue exploring content creation opportunities in the future, mainly focusing on Udemy and YouTube.

I’m really proud of how far I came this year. That said, my content creation journey really started in 2017 with my blog and the Vue Testing Handbook - it’s unlikely I could have seen this success starting from scratch this year.

Conclusion and Final Thoughts

I love making educational content - both video and written. I was also able to use this to build my personal brand, and make a bit of extra money on the side during 2020. I hope to continue building my brand, and hopefully earning some money on the side moving into 2021.

Social and Content Links:

Thumbnail image credit: Jeremy Bishop