I'm second-career web developer (writing mostly Ruby) since 2022, meaning I didn't get a computer science degree. So this list is me catching up.
- Networking / the Web
- Hardware systems
- Operating systems
- Linux / command line
- Concurrency / distributed systems
- Database internals
- Compilers
- Math / logic
- Data structures and algorithms
- Software architecture
- Performance
- Low-level programming
- HTTP:
- Networking:
- High Performance Browser Networking
- Computer Networking : Principles,Protocols and Practice
- π²Computer Networking: A Top-Down Approach
- Jesse Storimer - Working with TCP Sockets
- Beej's Guide to Network Programming
- Experiment with CDNs or reverse proxies (e.g. Nginx, Varnish, HAProxy, Cloudflare) to understand caching, TLS termination, load balancing, and security filtering (rate limiting, WAF, etc.).
- Security:
- π²Grokking Web Application Security and the free accompanying site Hacksplaining
- PortSwigger - web security exercises
- Browsers:
- π²Code: The Hidden Language of Computer Hardware and Software
- NandGame and solutions: 1, 2, 3
- From Nand to Tetris: Part 1, Part 2
- Circuit sandboxes:
- CS61C: Great Ideas in Computer Architecture and 2020 lectures or 2014 lectures
- Computer Organization and Design
- Dive into Systems
- What Every Programmer Should Know About Memory
- What's new in CPUs since the 80s?
- π²Digital Design and Computer Architecture
- π²Computer Systems: A Programmer's Perspective
- Operating Systems: Three Easy Pieces
- CS612: Operating Systems and System Programming and lectures
- xv6, a simple Unix-like teaching operating system (MIT course)
- Lions' Commentary on UNIX 6th Edition and source code
- Linux Journey
- Sundeep Agarwal - Linux Command Line Computing
- The Linux Command Line
- The Art of Command Line
- Sundeep Agarwal - "Linux CLI and shell scripting" list
- Julia Evans - Your Linux Toolbox
- π²Efficient Linux at the Command Line
- π²How Linux Works
- π²Julia Evans - Bite Size zine pack
- π²Wicked Cool Shell Scripts
- π²Foundations of Scalable Systems
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Distributed Systems
- On Transactional Concurrency Control
- Gossip Glomers (distibuted systems challenges)
- How does a relational database work?
- CS186: Introduction to Database Systems and lectures
- Architecture of a Database System
- π²Database Internals
- Transaction Processing
- Readings in Database Systems
- PGTune
- Postgres Playground
- Yeah, Postgres can do that
- Introduction to PostgreSQL Indexes
- The Internals of PostgreSQL
- PostgreSQL docs
- π²The Art of PostgreSQL
- π²PostgreSQL Query Optimization: The Ultimate Guide to Building Efficient Queries
- π²Build a Database Server
- π²Build Your Own Database From Scratch in Go
- Build Your Own Redis with C/C++
- Build Redis from scratch
- Destroy All Software - A Compiler from Scratch
- Writing a compiler in Ruby, bottom up and related resources at the bottom of that page
- Let's make a Teeny Tiny compiler
- Stanford: SOE-YCSCS1 Compilers
- Structure and Interpretation of Computer Programs
- π²Crafting Interpreters
- π²Build Your Own Compiler from Scratch
- π²Logic for Programmers
- π²Math for Programming
- π²Concrete Mathematics: A Foundation for Computer Science
- π²Coding The Matrix: Linear Algebra Through Computer Science Applications
- π²Data Structures and Algorithms in Java along with VisuAlgo
- Maybe this instead: π²A Common-Sense Guide to Data Structures and Algorithms
- Or: π²Algorithms Unlocked
- Algorithmic Thinking (examples in C)
- Codeintuition
- π²Practical Analysis of Algorithms
- π²The Algorithm Design Manual plus lecture videos
- π²Algorithm Design
- Maybe this instead: π²Algorithms
- Or: π²Introduction to Algorithms
- Tech Interview Handbook
- π²Beyond Cracking the Coding Interview (preview csolutions for free at interviewing.io)
- π²Elements of Programming Interviews
- Ruby solutions: 1, 2, 3, 4, 5
- Algorithms Ruby gem that is included in the LeetCode environment.
- NeetCode 250
- Grind75
- 14 Patterns to Ace Any Coding Interview Question
- 20 Essential Coding Patterns to Ace Your Next Coding Interview
- Coding Interview Patterns
- AlgoMonster - Patterns
- LeetCode Patterns
- π²Grokking the Coding Interview: Patterns for Coding Questions
- An interview algorithms tier list
- Another algorithms tier list
- Other resource lists: 1, 2, 3
See my list Learn C.
- Ziglings
- Zen of Zig
- zig.guide
- Learning Zig
- Introduction to Zig: a project-based book
- Zig Cookbook
- π²Systems Programming with Zig
- Working with Strings in Zig
- Karl Seguin's blog
- Look into other "better C" languages besides Zig: Odin, Beef, V, Jai, C3, MiniLang, and others (minus the C++ replacements like Rust, which are too complex for my purposes)
- Starting FORTH or Easy Forth
- Thinking Forth
- Implementing a Forth
- Minimal FORTH interpreters: 1, 2
- Fitting a Forth in 512 bytes
- Design Decisions in the Forth Kernel
- Threaded Interpretive Languages: Their Design and Implementation
- Factor if I want to explore a "high-level FORTH"