Self-education
— Last updated on Oct 31, 2021
This page records everything I’ve studied, learned or practiced since I left formal education in 2009.
If you want to chat about my experiences, or if there’s a book or course you’d love to recommend, get in touch.
2021
- Refreshed my advanced SQL skills with specific focus on PostgreSQL.
- Taught myself intermediate TypeScript.
- Taught myself intermediate NestJS.
- Taught myself intermediate SvelteKit.
- Taught myself advanced PostgreSQL.
- Taught myself advanced Google Apps Script.
- Used Dart, Svelte, Sapper, and Tailwind CSS to build the MVP and first production versions of my new SaaS product for YouTube content owners, Observant.
- Used JavaScript, Svelte, SvelteKit, PostgreSQL and Tailwind CSS to build the second production version of my new SaaS product for YouTube content owners, Observant.
- Used TypeScript, NestJS, Svelte, SvelteKit, PostgreSQL and Tailwind CSS to build the MVP and first production versions of a Telegram community paywall platform, Levellr.
- Used JavaScript, SvelteKit, PostgreSQL and Tailwind CSS to build a course teaching SQL to everyday developers, SQL for Humans.
- Used Google Apps Script for various consulting work.
- Re-read JavaScript: The Good Parts by Douglas Crockford.
- Read Programming TypeScript by Boris Cherny.
2020
- Taught myself intermediate-level Svelte and Sapper.
- Taught myself how to be proficient with Tailwind CSS.
- Taught myself intermediate-level Go.
- Studied Go via Exercism.io, completing the Go Track and engaging in several hours of mentoring to improve my code quality.
- Studied Tech Writing 102, an internal course at Google.
- Used JavaScript (mostly via Svelte and Sapper) to build the MVP of Exam Copilot.
- Used Dart and Flutter to continue to add features to Spell Tracker.
- Used Dart and Aqueduct to continue to work on the backend for Spell Tracker.
- Used Typescript to prototype a browser clicker game, Humanitarium.
- Used Svelte and Sapper to prototype a video game matchmaking app, LFG.
- Read Traction by Gabriel Weinberg and Justin Mares.
- Read Atomic Habits by James Clear.
- Read 14 Habits of Highly Productive Developers by Zeno Rocha.
- Read Zero to Sold by Arvid Kahl.
- Read Lifespan by David Sinclair.
- Read Breakfast is a Dangerous Meal by Terence Kealey.
- Re-read Deep Work by Cal Newport.
- Re-read The Mom Test by Rob Fitzpatrick.
2019
- Taught myself Aqueduct, a backend webapp framework for Dart.
- Taught myself basic Docker and Kubernetes (k8s).
- Taught myself basic devops and server management.
- Used Dart and Aqueduct to build a backend for Spell Tracker.
- Used Dart and Flutter to continue to add features to Spell Tracker.
- Used Go, HTML, JavaScript and CSS to migrate my personal site to Hugo.
- Used Dart to build a client library for ChartMogul.
- Deployed the Spell Tracker backend to Google Cloud Platform (GCP) using k8s.
- Migrated the Spell Tracker backend from GCP to Linode using vanilla Docker.
- Read Deep Work by Cal Newport.
- Read Company of One by Paul Jarvis.
2018
- Studied Haskell 101, an internal course at Google.
- Studied Rust 101, an internal course at Google.
- Taught myself expert-level Dart, a strongly-typed client-optimized language for fast apps on any platform.
- Taught myself intermediate-level Flutter, a Dart-based cross-platform UI framework.
- Taught myself how to incorporate a limited company, and started Caster Level Limited.
- Used Flutter to continue to add features to Spell Tracker.
- Used HTML, JS and CSS to build websites for Spell Tracker and Caster Level.
- Read The Personal MBA by Josh Kaufman.
- Read Never Split the Difference by Chris Vos.
- Read The Mom Test by Rob Fitzpatrick.
- Read Writing An Interpreter In Go by Thorsten Ball.
2017
- Studied Tech Writing 101, an internal course at Google.
- Taught myself basic Dart, a strongly-typed client-optimized language for fast apps on any platform.
- Taught myself basic Flutter, a Dart-based cross-platform UI framework.
- Used Dart and Flutter to rebuild Spell Tracker as a native mobile app for Android and iOS. Launched on both stores.
- Read The Power of Habit by Charles Duhigg.
2016
- Studied Machine Learning at Stanford University (via Coursera). Learned about supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks); unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning); and best practices in machine learning (bias/variance theory; innovation process in machine learning and AI).
- Studied the Machine Learning Crash Course, an internal course at Google.
- Studied [Stuart Diamond’s Getting More Negotiation Framework] via an in-person workshop at Google.
- Taught myself basic Go.
- Taught myself basic Typescript.
- Taught myself basic Angular.
- Taught myself basic WebGL.
- Used Angular.JS and Ionic to build the first version of Spell Tracker as a passion project.
- Used Angular.JS to build Tegmark, a webapp to render planets using d3.js.
- Used vanilla Javascript to rebuild Tegmark and replace d3.js with WebGL.
- Used Go, Typescript, and Angular to build a prototype of Starlines, a realtime browser game with a backend and web socket compatible REST API.
- Tried and failed to learn basic Rust.
- Read Getting More by Stuart Diamond.
2015
- Taught myself advanced SQL and data pipeline technologies at Google.
- Taught myself Angular.JS to build basic webapps.
- Used Javascript to rewrite Fistbump.
- Used Angular.JS to write a frontend for an internal tool at YouTube.
- Used Angular.JS to write a frontend for Murder She Generated.
- Read Smarter Investing by Tim Hale.
2014
- Studied Functional Programming Principles in Scala at École Polytechnique Fédérale de Lausanne (via Coursera). Learned intermediate functional programming techniques and introductory Scala.
- Taught myself basic and intermediate SQL and data analysis techniques at Google.
- Read The Structure and Interpretation of Computer Programs (SICP).
2013
- Studied Programming Languages at University of Washington (via Coursera). Learned functional programming, recursion and other CompSci topics via ML, Racket, and Ruby.
- Studied Startup Engineering at CS184 from Stanford University (via Coursera). Became familiar with topics including from DCVS, HTML/CSS/JS, wire-framing, market research, Node.JS, Postgres and basic devops.
- Used Ruby to rewrite Sundial and deploy it on Heroku.
- Used Ruby to write Grokily, a REST API to conjugate Norwegian verbs.
- Used Ruby, HTML and CSS to migrate my personal site to Octopress.
- Read The Lean Startup by Eric Ries.
- Read JavaScript: The Good Parts by Douglas Crockford.
2012
- Studied Codecademy — free online courses I used to re-learn HTML5, CSS and JS.
- Taught myself basic Ruby and Ruby on Rails using Michael Hartl’s Ruby on Rails tutorial.
- Used Ruby to write a prototype for Oh!vents.
- Read Start Small Stay Small by Rob Walling.
2011
- Taught myself basic Javascript.
- Used PHP to build the first version of Fistbump.
2010
- Taught myself basic Java.
- Used Java to build the first version of Sundial and deploy it on Google AppEngine.
2009
- Taught myself basic Django, a Python web-app framework.
- Continued to teach myself the latest HTML and CSS techniques.
- Used PHP, HTML and CSS to rebuild my personal site.
- Used PHP, HTML and CSS to rebuild BritishBonus (now defunct).