- Amit has a great explanation of A* algorithm with visualizations
- A great primer on design of reliable, scalable systems.
- Build your own X for many values of X.
- Aphyr (of Jepsen fame) teaches a class on distributed systems with notes online
- Jimmy Bogard has some good series:
- implementing resilient workflows when coordinating multiple services.
- resiliency built around loose coupling.
- A great TypeScript project starter
- Seth Robertson has a fantastic, choose-your-own-adventure tutorial on modifying your Git history.
- AsyncGuidance has a bunch of gotchas and error scenarios juxtaposed against best practices for async programming.
- Software Design and Architecture in Haskell is a curated collection of links to resources about building real software in Haskell.
- System Design Primer is an overview of system design considerations and patterns.
- System Design 101 is a dense cheat sheet for system design patterns and considerations.
- Encryption and Security Tutorial is 973 slides worth of discussion of encryption. There's a lot there.
- OpenSSL PKI Tutorial will walk through the entire lifecycle of managing PKI using OpenSSL.
- You're Doing It Wrong describes how optimizing algorithms to be virtual-memory-aware can result in 10x speed improvement over algorithms that are theoretically-algorithmically-more-efficient
- SageDB: A Learned Database System describes a database that learns about its data to improve performance.
- Martin Fowler's Accounting Patterns book describes an event-oriented architecture for dealing with common patterns encountered when implementing accounting systems (where "accounting" is defined pretty broadly).
- Modern B-Tree Techniques describes modern features, capabilities, and techniques for implementing or augmenting B-Trees
- The Design and Implementation of Modern Column-Oriented Databases looks at how column-oriented databases are built under the hood.
- What Every Programmer Should Know About Memory is an in-depth look at how memory works and implications for software design.
- Sorting in the Presence of Branch Prediction and Caches explores the implications of modern CPU architectures for common sorting algorithms.
- One of Ayende's employees wrote a great low-level writeup about the performance impact of exceptions in tight loops.
- Adrian Colyer's consensus paper write-ups are great for understanding distributed consensus:
- "Distributed consensus revised" paper
- Can't we all just agree? ten-part series
- Brendan Gregg has a great list of article links about understanding system and application performance on Linux. (He's the author of many of the articles linked and tools discussed.)
- Everything You Ever Wanted to Know About Terminals is a VERY detailed walkthrough of how to do advanced terminal-mode programming without using things like ncurses.
- MIT's Structure and Interpretation of Computer Programs is available for free online.
- How to Build a Highly Available System Using Consensus is a discussion of how to use consensus for distributed and fault-tolerant systems.
- Alex Komoroske has a great presentation on how organizational dysfunction occurs and how to combat it, with bonus chatter about how cool slime molds are.
- Art of Readme describes how to write and structure a good readme. (I'm a big fan of the suggestion to put usage and API above installation!)
- How Complex Systems Fail should be required reading for everyone working with complex systems. It's articulate and insightful and incredibly useful.
- Hacker Laws: "laws" about computing.
- Chris Kelly's list of must-read book: a good list of high-quality books for IC's and managers in the software domain
- BuildList.org: A directory of on-demand manufacturers for your creative projects.
- Awesome-Rust-MachineLearning: A list of machine learning and AI libraries for / in Rust.
- Awesome Falsehoods is a curated collection of lists of falsehoods that programmers believe. It's very informative.
- Awesome CRDT is a curated collection of articles, papers, blog posts, tutorials, and libraries about CRDTs.
- Data-Oriented Design Resources is a collection of links and reading about how to design your code -- and change your thinking -- around data and its performance implications as a first-class concern.
- Awesome Workflow Engines is a curated list of open-source workflow engines.
- Awesome is a collection of "awesome lists" similar to the ones above.
- Awesome Lists is a github topic containing links to "awesome lists". Kinda like the item immediately above, but curated by the community instead of a single user.
- Java Design Patterns is a list of design patterns with implementations in Java.
- Dr. Jeff Huang has compiled a list of the "best paper" award-winning papers from thirty different industry and academic CS and SE conferences for the last 24 years. If you want to read the cream of the crop in conference papers, this is the first place to go.
- Lorin Hochstein has compiled maybe the most comprehensive list of resources for resilience engineering on the Web.
- The Textures Archive has a bunch of free background textures for building games, websites, apps, or just playing around.
- Itch.io has as large repository of free and low-cost graphics assets for games (mostly tile- and sprite-focused).
- Scott Hanelman's tools list
- The Billion Taxi Ride Dataset contains ride information for over a billion taxi and other for-hire-vehicle rides, and is open data.
- Open Source Society University Computer Science curriculum
- 100+ Free Programming Books
- Word lists for Scrabble (or whatever you might want a word list for)
- Ayende's blog is a gold mine of information about developing professional software in C#, performance optimization, and concurrency.
- Rands in Repose for management tips in a software engineering context.
- Fabulous Adventures in Coding is the blog of Eric Lippert, formerly of the C# compiler team. It's chock-full of static analysis goodness.
- Jepsen tracks behavior of databases against CAP theorem guarantees. Seeing detailed analysis of how systems break under pressure is super-informative about how hard distributed databases are.
- Adrian Colyer runs the morning paper, where he reads and writes a summary of one technology or CS paper per day. This is maybe the best resource available for staying abreast of the state of the art in CS and software engineering, albeit mostly on the academic side.
- Frank McSherry is a researcher and now entrepreneur who's done pioneering work in streaming computations in the form of timely dataflow at Microsoft, and Differential Dataflow. His blog is a gold mine of information about streaming computations.