
Creating a Video Course Hosting Platform to Learn Go
with Nick Janetakis and Jon Calhoun
Running in Production · Nick Janetakis
August 3, 20201h 20m
Show Notes
In this episode of Running in Production, Jon Calhoun talks about building his video course platform with Golang. It’s hosted on a single DigitalOcean droplet and has been up and running in production since 2016.
Jon covers keeping it simple with a monolithic app that was rewritten a few times, using SQLite as his main database even with 15,000+ active users and spending his innovation tokens wisely.
Topics Include
- 1:28 – Creating a custom platform lets Jon come up with new blog post / course ideas
- 4:51 – It has roughly 15,000 active users and he built 2 separate platforms initially
- 11:02 – Motivation for using Golang and figuring out when to add new features
- 13:17 – Using Gumroad licenses to handle course access for users
- 15:19 – It’s a monolithic app that was rewritten a few times to be ~15k LOC
- 25:09 – Sweating over hello world requests per second benchmarks isn’t worth it
- 28:24 – Server rendered templates using Golang’s template package + gotchas
- 33:46 – Using TailwindCSS with PostCSS and Vimeo / YouTube for the videos
- 36:56 – Using Golang’s built in web server and SQLite as a primary database
- 39:00 – Only tracking stats about users that Jon plans to act on
- 43:01 – Caddy sits in front of the Golang web server and deals with SSL certificates
- 44:57 – Docker is being used in the React / PostgreSQL code update
- 49:13 – Working with DigitalOcean block storage volumes and Spaces (S3-like object store)
- 55:23 – The single $5 / month server is running Ubuntu 14.04 LTS and was set up manually
- 59:11 – The deploy process from development to production
- 1:04:25 – Spend your innovation tokens wisely
- 1:06:22 – How Jon assembles his courses with data structures in his source code
- 1:12:24 – Daily backups of the droplet and how Jon deals with logging / errors / email
- 1:18:09 – Best tips? Start simple and really stick to it
- 1:19:13 – Jon is on Twitter at @joncalhoun and check out his site at https://www.calhoun.io/
Links
📄 References
- https://github.com/heartcombo/devise
- https://github.com/gorilla
- https://gobuffalo.io/en/
- https://mcfunley.com/choose-boring-technology