- Section 1: Software Architecture Mindmap
- Section 2: Software Architecture Reference
- Section 3: Computer Science Papers
- Section 4: Data Science (ML/NN)
- Section 5: Terminology and Comparisons
Software terminologies and concepts, software architecture overview
Summarized the keywords and solutions have faced in my learning and experience.
- Full Version
Software_Architecture_Mindmap.png
Three main pillars upon software architecture
-
Modern Application Development
-
Cloud Computing (AWS/Azure/GCP)
-
Data Science (ML/NN)
and
Numerous technologies and methodologies.
ⓒ 2022. (https://github.com/kimtth) all rights reserved.
This mindmap created by https://app.mindmapmaker.org/
- System Design 101: ByteByteGo
- Awesome Lists: 😎 Awesome lists about all kinds of interesting topics /
awesome.re
/ github topic - Awesome Software Architecture (simskij)
- Awesome Software Architecture: A curated list of awesome articles, videos, and other resources to learn and practice software architecture, patterns, and principles
- Software Architecture Books: A comprehensive list of books on Software Architecture
- System Design: Learn how to design systems at scale and prepare for system design interviews
- Microsoft .NET Application Architecture - Reference Apps
- Software Architecture Books
- System Design Fight Club
- System Design - Neo Kim
- Awesome System Design Resources
- Awesome Low Level Design (LLD) / Object Oriented Design (OOD)
- InfoQ: News and Articles
- Dzone: RefCards and Trend Reports
- Thoughtworks: Technology Radar
- Microsoft Learn: Documentation and Code samples
- Trendshift: GitHub Trending repositories
- Design Gurus: Portal For Tech Interviews
- System Design Blueprint: The Ultimate Guide
- InfoQ minibooks: Architectures You’ve Always Wondered About .. 2021 / 2023 / 2024 /2025 / Cell-Based Architecture
- Building a scalable authorization system
- Mastering RAG
- Mastering AI Agents
- Agentic Architectures for Retrieval-intensive Applications
-
Expand
🔹
Latency
is the response time of your application, usually expressed in milliseconds🔹
Throughput
is how many transactions per second or minute your application can handle🔹
Errors
is usually measured in a percent of🔹
Saturation
is the ability of your application to use the available CPU and Memory
- Let’s Build A Simple Interpreter
- Let’s Build A Web Server
- Web Browser Engineering: Building a basic but complete web browser from scratch
- Curated list of project-based tutorials
- Master programming by recreating your favorite technologies from scratch
- Build frontend applications at scale
- Writing an Operating System in 1,000 Lines: ref
- minimal GPT
- PyTorch internals
- AWS to Azure services comparison
- Google Cloud to Azure services comparison
- Compare AWS and Azure services to Google Cloud
- Microsoft Azure Developer's Cheat Sheet: Every product, feature and service in the Azure family
- Azure Cloud Adoption Framework :CAF: organization-wide adoption guidance
- Azure Well-architected Framework :WAF: workload-focussed design and continuous improvement guidance
- Azure Architecture Center :AAC: architecture patterns and reference architectures
Expand
🔹 Abstractly speaking, a landing zone helps you plan for and design an Azure deployment, by conceptualizing a designated area for placement and integration of resources.
There are two types of landing zones:
1. `platform landing zone`: provides centralized enterprise-scale foundational services for workloads and applications.
2. `application landing zone`: provides services specific to an application or workload.
- Kaggle Solutions and Ideas: Collection of Kaggle Solutions and Ideas
- Best-of Machine Learning with Python: A ranked list of awesome machine learning Python libraries. Updated weekly.
- freeCodeCamp: Learn to code for free. youtube
- Ultimate Collection of 60 YouTube Courses for 21 Programming Languages
- Computer Science courses with video lectures
- Introduction to CUDA Programming for Python Developers
- AI by Hand
- Software Industry Statistics: Statista Industry Insight
- Gartner Top Strategic Technology Trends 2024
- MAD (ML/AI/Data) Landscape
- Hype Cycle for Emerging Technologies 2024
- Microsoft Digital Defense Report
- Substack Leaderboard: Newsletter
- daily.dev: Personalized news feed
- Algorithm Visualizer: Interactive algorithm visualization
- Netron: Neural network visualizer
- Hello Algo: Algorithm tutorials
- Wikipedia: List of Algorithms: Comprehensive algorithm reference
- OOP Design Patterns: Object-oriented design patterns explained
- Dev Encyclopedia: Encyclopedia for developers (GitHub)
- Data Engineering Wiki: Data engineering resources and guides
- Semantic Scholar: AI-powered academic search engine
- Liner: AI research tool for highlighting and annotating
- Litmaps: Visualize relationships between research papers
- Connected Papers: Explore connected academic papers
- Ask R Discovery: AI-powered paper discovery tool
- scite_: Smart citation analysis and discovery
- Excalidraw: Hand-drawn style diagrams
- Eraser.io: Diagramming as code
- PlantUML: UML diagrams
- GraphViz: Graph visualization
- Mermaid Diagram: Diagramming and charting tool
- Robin Wieruch Blog: React.js, Next.js, TypeScript, JavaScript libraries, and trends
- Best Kubernetes Tools: Curated Kubernetes tools by Bluelight Consulting
- PostgreSQL Wiki: Don't Do This: Common PostgreSQL pitfalls
- Power BI DAX Patterns: Patterns and best practices for Power BI DAX
- AWS Architecture Blog
- Azure Architecture Blog
- GCP Cloud Blog
- Netflix TechBlog
- Uber Blog
- The Cloudflare Blog
- Engineering at Meta
- LinkedIn Engineering
- Stripe Blog: Engineering
- Discord Blog: Engineering & Developers
- Slack Engineering
- 79 Engineering Blogs To Level Up Your System Design Skills
- How to Architect Software for a Greener Future
- Generative Search: Practical Advice for Retrieval Augmented Generation (RAG)
- What are the Greenest Programing Languages?
- Frugal Architect Handbook
- .NET Developer Roadmap
- Celebrate 50 years of Microsoft with the company's original source code: Altair Basic
- A periodic table for machine learning
-
General
- The Pragmatic Programmer by David Thomas and Andrew Hunt
- Modern Software Engineering by David Farley
- Code Complete by Steve McConnell
- Software Engineering at Google by Titus Winters, Tom Manshreck, and Hyrum Wright
-
Good Practices
- Clean Code by Uncle Bob Martin
- Head First Design Patterns by Eric Freeman
- Refactoring by Martin Fowler
- Design Patterns by Eric Gamma and Others
-
Data Structures and Algorithms
- Grokking Algorithms by Aditya Bhargava
- Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
- Cracking the Coding Interview by Gayle Laakmann McDowell
-
Data
- Designing Data-Intensive Applications by Martin Kleppman
- Learning SQL by Alan Beaulieu
-
Testing
- Growing Object-Oriented Software, Guided by Tests by Steve Freeman
- Unit Testing Principles, Practices, and Patterns by Vladimir Khorikov
- The Art of Unit Testing by Roy Osherove
- TDD by Example by Kent Beck
-
Software Architecture
- Fundamentals Of Software Architecture by Mark Richards and Neil Ford
- Clean Architecture by Uncle Bob Martin
- Software Architecture: The Hard Parts by Neal Ford, Mark Richards, Pramod Sadalage, and Zhamak Dehghani
- Domain-Driven Design Quickly by Abel Avram and Floyd Marinescu
- A Philosophy of Software Design by John Ousterhout
- System Design Interview by Alex Xu
- Domain-Driven Design by Eric Evans
-
Distributed Systems
- Understanding Distributed Systems by Roberto Vitillo
- Designing Distributed Systems by Brendan Burns
-
DevOps
- DevOps Handbook by Gene Kim, Patrick Debois, John Willis, and Jez Humble
- Continuous Delivery by Jez Humble and David Farley
- Accelerate by Nicole Forsgren, Jez Humble, and Gene Kim
-
Machine Learning
- The Hundred-Page Machine Learning Book by Andriy Burkov
- Designing Machine Learning Systems by Chip Huyen
- On the Criteria To Be Used in Decomposing Systems into Modules (1972): D.L. Parnas
- An Axiomatic Basis for Computer Programming (1969): C.A.R. Hoare
- Time, Clocks, and the Ordering of Events in a Distributed System (1978): L. Lamport
- Out of the Tar Pit (2006): B. Moseley, P. Marks
- Dynamo: Amazon’s Highly Available Key-value Store (2007): G. DeCandia et al.
- MapReduce: Simplified Data Processing on Large Clusters (2004): J. Dean, S. Ghemawat
- A Note On Distributed Computing (1994): J. Waldo, G. Wyant, A. Wollrath, S. Kendall
- A Metrics Suite for Object-Oriented Design (1994): S.R. Chidamber
- A Relational Model of Data for Large Shared Data Banks (1969): E.F. Codd
- Why Functional Programming Matters (1990): J. Hughes
- Transmission Control Protocol (1981): J. Postel | A TCP/IP Tutorial (1991): a tutorial on the TCP/IP protocol
- Here's a reading list of 70+ Distributed Systems papers mostly from conferences in just last 2 years! 70+ Distributed Systems papers [Jan 2024]
- ref [May 2024]
- Dynamo: Amazon’s Highly Available Key Value Store
- Google File System: Insights into a highly scalable file system
- Scaling Memcached at Facebook: A look at the complexities of caching
- BigTable: The design principles behind a distributed storage system
- Borg: Large Scale Cluster Management at Google
- Cassandra: A look at the design and architecture of a distributed NoSQL database
- Attention Is All You Need: Into a new deep learning architecture known as the transformer
- Kafka: Internals of the distributed messaging platform
- FoundationDB: A look at how a distributed database works
- Amazon Aurora: How Amazon provides high availability and performance
- Spanner: Design and architecture of Google’s globally distributed database
- MapReduce: A detailed look at how MapReduce enables parallel processing of massive volumes of data
- Shard Manager: Understanding the generic shard management framework
- Dapper: Insights into Google’s distributed systems tracing infrastructure
- Flink: A detailed look at the unified architecture of stream and batch processing
- A Comprehensive Survey on Vector Databases
- Zanzibar: A look at the design, implementation, and deployment of a global system for managing access control lists at Google
- Monarch: Architecture of Google’s in-memory time series database
- Thrift: Explore the design choices behind Facebook’s code-generation tool
- Bitcoin: The ground-breaking introduction to the peer-to-peer electronic cash system
- WTF - Who to Follow Service at Twitter: Twitter’s (now X) user recommendation system
- MyRocks: LSM-Tree Database Storage Engine
- GoTo Considered Harmful
- Raft Consensus Algorithm: Learn about the more understandable consensus algorithm
- Time Clocks and Ordering of Events: The extremely important paper that explains the concept of time and event ordering in a distributed system
Free eBooks for ML, Data Science & AI > ref
- Deep Learning – Ian Goodfellow, Yoshua Bengio, Aaron Courville
- Dive into Deep Learning – Aston Zhang et al.
- The Hundred-Page Machine Learning Book – Andriy Burkov
- Machine Learning Yearning – Andrew Ng
- Understanding Machine Learning – Shai Shalev-Shwartz, Shai Ben-David
- Machine Learning for Humans – Vishal Maini, Samer Sabri
- Approaching (Almost) Any ML Problem – Abhishek Thakur
- Machine Learning For Dummies – Judith Hurwitz, Daniel Kirsch
- Hands-On Machine Learning with R – Boehmke & Greenwell
- Machine Learning Engineering – Andriy Burkov
- Mathematics for Machine Learning – Deisenroth, Faisal, Ong
- The Elements of Statistical Learning – Friedman, Tibshirani, Hastie
- An Introduction to Statistical Learning – James et al.
- Pattern Recognition and ML – Christopher Bishop
- Information Theory, Inference, and Learning Algorithms – David J. C. MacKay
- Algebra, Topology, Calculus & Optimization for CS/ML – Jean Gallier
- Mathematical Methods for CV, Robotics, Graphics – Stanford
- Math Foundations for Computer Science – Stanford CS103
- @mathtalent Lecture Notes – Math-focused CS notes
- Algorithms for Artificial Intelligence – Moss
- Probabilistic ML: An Introduction – Kevin P. Murphy
- Probabilistic ML: Advanced Topics – Kevin P. Murphy
- Applied Causal Inference – Uday Kamath et al.
- Reinforcement Learning: An Introduction – Sutton & Barto
- Deep Learning on Graphs – Yao Ma & Jiliang Tang
- Speech and Language Processing – Jurafsky & Martin
- Natural Language Processing with Python – Bird, Klein, Loper
- Computer Vision: Models, Learning, and Inference – Simon J.D. Prince
- Interpretable Machine Learning – Christoph Molnar
- ML Interpretability – Patrick Hall & Navdeep Gill
- Automated Machine Learning – Frank Hutter et al.
- Feature Engineering and Selection – Max Kuhn & Kjell Johnson
- Deep Learning Interviews – Shlomo Kashani, Amir Ivry
- Boosting: Foundations and Algorithms – Schapire & Freund
- A Brief Introduction to ML for Engineers – Osvaldo Simeone
- Machine Learning for Beginners – Microsoft
- The Data Engineering Handbook
- Virgilio – Data Science Curriculum
- Open Source Data Science Masters
- Python Data Science Handbook
- Data Science Python Notebooks
- Awesome Data Science
- Awesome Machine Learning
- Deep Learning Book (MIT)
- fastai Book (fastbook)
- Mathematics for Machine Learning
- labml.ai – Deep Learning Paper Implementations
- Deep Learning Models by Rasbt
- Machine Learning Tutorials
- Machine Learning ZoomCamp
- Applied ML – Papers & Blogs
- Awesome Production Machine Learning
- Data Science Project Template (Cookiecutter)
- 365 Data Science Flashcards
- openpilot – Driver Assistance System
- See Glossary.md: an overview of key terminology, definitions, and comparisons between related concepts.