Learn new skills
Great learning materials are rare. This is a collection of gems I’ve encountered over the years, presented as a 90’s style web link list, intended for anyone who wants to learn new skills. Mostly software development-related, aside from the first few.
Money Stuff by Matt Levine
Skill: Finance — learn that everything is securities fraud.
Type of material: Email newsletter
Why is it good: Marvelous writing style. Unpacks recent events in finance with simplicity and wit, often connecting them to larger themes that run through the newsletter over time. Hugely entertaining and educational. Also released as web articles if you don’t want to give out your email.
Learning Music by Ableton
Skill: Composing music
Type of material: Interactive website
Why is it good: Experiment with composing music directly in your browser. No previous experience required. The tutorial begins with simple composing examples and tasks along with teaching basic fundamentals of music.
Machine Learning Coursera Course by Andrew Ng
Skill: Machine Learning — learn how to apply existing machine learning techniques, understand why they work, and how to troubleshoot issues.
Type of material: Videos and coding exercises
Why is it good: Great interplay between lectures and exercises. Clarity of explanations. Introductory scope. Enough math to understand why these methods work, but not too much.
Competitive Programmer’s Handbook by Antti Laaksonen
Skill: Exact algorithms — learn how to invent algorithms for ”code competition” -type problems (problems where exactly-correct answer is required and the main challenge is time or memory complexity).
Type of material: Book
Why is it good: Simplified explanations of many algorithmic techniques and algorithmic problem solving approaches. Unlike most algorithm books, this one is focused on ideas and code, not on the underlying math. This is the ”bible” of Finnish competitive programmers.
Essentials of Metaheuristics by Sean Luke
Skill: Optimization algorithms — learn techniques to find ”good enough” solutions for problems where an exactly-correct solution is not required. Typically used when an exact algorithm would be computationally infeasible and machine learning methods can not be applied. For example, route optimization often falls into this category.
Type of material: Book
Why is it good: A practical approach. Scope. Clarity of explanations. I recommend you to read this book while implementing and testing selected approaches on a real problem as you go along.
Building Effective Agents by Anthropic
Skill: Developing apps on top of LLMs — learn how to choose the right approach (despite the title this is not focused on agents)
Type of material: Blog post
Why is it good: Different approaches are covered and presented well. Based on real world applications. Opinionated against framework complexity.
The Grug Brained Developer by Carson Gross
Skill: Understanding complexity in software development — spoiler: complexity bad
Type of material: Essay
Why is it good: Funny and thought-provoking. Highly opinionated with opinions I strongly agree with.
Introduction to Cryptography by Christof Paar
Skill: Cryptography
Type of material: Videos
Why is it good: Clarity of explanations and visual illustrations. Entertaining presentation style.
The Modern JavaScript Tutorial by Ilya Kantor et al.
Skill: JavaScript language and browser APIs
Type of material: Website (alternatively available as a book)
Why is it good: Comprehensive, neatly organized & well written. Great explanations with illustrative examples. Goes wide and deep into the subject matter. Suitable both as a top-down read and as a place to look up specific topics.