├── .gitignore ├── topics ├── cloud_platforms │ ├── _.md │ └── aws.md ├── libraries_and_frameworks │ ├── _.md │ └── django.md ├── languages │ ├── _.md │ ├── c.md │ ├── javascript.md │ ├── python.md │ └── shell.md ├── computer_science │ ├── data_structures_and_algorithms.md │ ├── computer_networks.md │ ├── _.md │ ├── computer_architecture.md │ ├── theory_of_computation.md │ └── ai_and_ml.md ├── operating_systems │ ├── _.md │ ├── linux.md │ └── unix.md ├── math │ ├── probability_theory.md │ └── linear_algebra.md ├── software_development │ ├── _.md │ ├── concurrent_programming.md │ ├── web_development.md │ └── system_design.md ├── tools_and_other_software │ ├── docker.md │ └── git.md └── databases │ ├── postgres.md │ └── _.md ├── .github └── ISSUE_TEMPLATE │ └── new-resource.md ├── README.md └── LICENSE /.gitignore: -------------------------------------------------------------------------------- 1 | /.vscode/ 2 | /.obsidian/ 3 | 4 | # You can put here any stuff that you don't want to push 5 | /my/ 6 | -------------------------------------------------------------------------------- /topics/cloud_platforms/_.md: -------------------------------------------------------------------------------- 1 | Name: Cloud platforms 2 | Status: published 3 | 4 | ## Description 5 | 6 | Links: [Cloud computing (Wikipedia)](https://en.wikipedia.org/wiki/Cloud_computing), [Cloud-computing comparison (Wikipedia)](https://en.wikipedia.org/wiki/Cloud-computing_comparison), [Cloud-native computing (Wikipedia)](https://en.wikipedia.org/wiki/Cloud-native_computing), [Cloud Native Computing Foundation](https://www.cncf.io/). 7 | 8 | ## Resources 9 | 10 | -------------------------------------------------------------------------------- /topics/libraries_and_frameworks/_.md: -------------------------------------------------------------------------------- 1 | Name: Libraries and frameworks 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [RealWorld example apps](https://github.com/gothinkster/realworld) 9 | free • resource 10 | See how the exact same Medium.com clone is built using different frontend and backend technologies. If you want to learn how React, Angular, Vue.js, Express, ASP.NET Core, Django, and other frameworks are used in real-world projects, you may find this resource interesting. 11 | -------------------------------------------------------------------------------- /topics/languages/_.md: -------------------------------------------------------------------------------- 1 | Name: Languages 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Build your own X](https://github.com/codecrafters-io/build-your-own-x) 9 | free • resource 10 | The best way to learn a programming language is to build something with it. This repo collects step-by-step guides for recreating common day technologies such as blockchain, databases, frameworks, shells, and web servers in different languages. 11 | 12 | [Seven Languages in Seven Weeks](https://pragprog.com/titles/btlang/seven-languages-in-seven-weeks/) 13 | free • book • by Bruce Tate • 2010-10-01 14 | This book is a hands-on tour on Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby. You’ll broaden your perspective of programming by examining these languages side-by-side. You’ll learn something new from each, and best of all, you’ll learn how to learn a language quickly. 15 | 16 | 17 | -------------------------------------------------------------------------------- /topics/computer_science/data_structures_and_algorithms.md: -------------------------------------------------------------------------------- 1 | Name: Data structures and algorithms 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Introduction to Algorithms, 4th edition](https://www.amazon.com/Introduction-Algorithms-fourth-Thomas-Cormen-ebook/dp/B09XJBVNQR) 9 | paid • book • by Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein • 2022-04-07 10 | Few CS students don't have the [CLRS](https://en.wikipedia.org/wiki/Introduction_to_Algorithms) book on their bookshelf. It's a comprehensive text covering the fundamentals of algorithms: asymptotic analysis, recurrences, sorting, graph algorithms, dynamic programming, basic and advanced data structures such as hash tables and B-trees. 11 | 12 | [The Art of Computer Programming](https://www-cs-faculty.stanford.edu/~knuth/taocp.html) 13 | paid • book • by Donald Knuth • 2022-10-01 14 | A masterpiece work of Donald Knuth conceived back in 1962. Now it's four published volumes that cover a vast number of algorithms in great depth. It's advanced but self-contained. 15 | -------------------------------------------------------------------------------- /topics/operating_systems/_.md: -------------------------------------------------------------------------------- 1 | Name: Operating systems 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) 9 | free • book • Remzi Arpaci-Dusseau, Andrea Arpaci-Dusseau • 2018-08-01 10 | This book is the best introduction to the world of operating systems. It is centered around three conceptual pieces of an OS: virtualization, concurrency, and persistence. In understanding the conceptual, you'll learn the practical, including how real operating systems schedule CPU, manage memory, and store files persistently. The clear writing, well-thought structure, and exercises make this book a true gem. 11 | 12 | [Modern Operating Systems, 5th edition](https://www.amazon.com/dp/013359162X/) 13 | paid • book • Andrew Tanenbaum, Herbert Bos • 2022-05-29 14 | This book evolved from famous [Operating Systems: Design and Implementation](https://www.amazon.com/-/en/Andrew-S-Tanenbaum/dp/0131429388), which focused on [MINIX](https://en.wikipedia.org/wiki/Minix) and inspired young Linus Torvalds to create Linux. It's the most comprehensive take on the subject that covers all components of a modern OS with relevant examples from Linux and Windows. 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-resource.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New resource 3 | about: Suggest a new resource 4 | title: Add {topic_name} resource {resource_title} 5 | labels: new resource 6 | assignees: '' 7 | 8 | --- 9 | 10 | 15 | 16 | **Topic** 17 | 18 | 19 | **Resource title** 20 | 21 | 22 | **Resource link** 23 | 24 | 25 | **Available for free** 26 | yes 27 | no 28 | 29 | **Resource type** 30 | article 31 | book 32 | video 33 | course 34 | other resource 35 | 36 | **Is series** 37 | yes 38 | no 39 | 40 | **Authors** 41 | 42 | 43 | **Last update** 44 | 45 | 46 | **Description** 47 | -------------------------------------------------------------------------------- /topics/computer_science/computer_networks.md: -------------------------------------------------------------------------------- 1 | Name: Computer networks 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Computer Networks, 6th edition](https://www.pearson.com/en-us/subject-catalog/p/computer-networks/P200000003188/9780137523214) 9 | paid • book • by Andrew Tanenbaum, David Wetherall, Nick Feamster • 2021-07-14 10 | This book is a classic introduction to computer networks that follows a bottom-up approach: from the basics of information transmission to Ethernet and Wi-Fi to TCP/IP and the Internet. 11 | 12 | [Computer Networking: A Top-Down Approach, 8th Edition](https://www.pearson.com/en-us/subject-catalog/p/computer-networking/P200000003334/9780135928615) 13 | paid • book • by James Kurose, Keith Ross • 2020-07-24 14 | This book presents an alternative top-down approach to studying computer networks. It puts emphasis on network applications and the Internet, which should resonate better with software people. As a bonus, it's accompanied by [freely available resources](http://gaia.cs.umass.edu/kurose_ross/lectures.php) that include video lectures, notes, exercises, and assignments. 15 | 16 | [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/html/) 17 | free • book • by Brian “Beej Jorgensen” Hall • 2020-11-01 18 | This is a classic book on socket programming in C. You'll learn about the socket API – the interface that operating systems provide to communicate over the Internet – and how to use it to implement simple client-server protocols. 19 | -------------------------------------------------------------------------------- /topics/math/probability_theory.md: -------------------------------------------------------------------------------- 1 | Name: Probability theory 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Introduction to Probability Theory](https://www.amazon.com/-/en/Paul-Gerhard-Hoel/dp/039504636X) 9 | paid • book • series • by Paul Hoel, Sidney Port, Charles Stone • 1971-01-01 10 | This is a concise introductory textbook on probability. It presents axiomatic definitions of probability and probability spaces and covers main topics including random variables, discrete and continuous probability distributions, limit theorems, and generating functions. This book is perfect as a fast-paced introduction or as a quick reference to recall certain topics. There are also [Volume 2](https://www.amazon.com/Introduction-Statistical-Theory-Houghton-Mifflin-Statistics/dp/0395046378) and [Volume 3](https://www.amazon.com/Introduction-stochastic-processes-Houghton-statistics/dp/0395120764) , which cover statistics and stochastic processes respectively. 11 | 12 | [Probability, 3rd edition](https://link.springer.com/book/10.1007/978-0-387-72206-1) 13 | paid • book • series • by Albert Shiryaev • 2016-01-01 14 | Probability is a mathematical concept, and this book helps you see what it really is. The text is comprehensive and rigorous, with a focus on theory. The [first volume](https://link.springer.com/book/10.1007/978-0-387-72206-1) starts with elementary probability and helps you build an intuition for key concepts. Then it presents probability axioms and develops the measure-theoretic foundations of probability theory. The [second volume](https://link.springer.com/book/10.1007/978-0-387-72208-5) goes deeper into the theory of stochastic processes including martingales and Markov chains. 15 | -------------------------------------------------------------------------------- /topics/computer_science/_.md: -------------------------------------------------------------------------------- 1 | Name: Computer science 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Teach Yourself Computer Science](https://teachyourselfcs.com/) 9 | free • resource • by Oz Nova, Myles Byrne • 2020-01-01 10 | This is a guide to computer science for self-taught engineers. It lists the most essential subjects and the best books and video lectures to learn them – you'll know what to learn, why, and how. Unlike other similar guides and lists, this one is very focused and covers only the subjects believed to be required for all software engineers. 11 | 12 | [Open Source Society University](https://github.com/ossu/computer-science) 13 | free • resource 14 | This is a CS curriculum composed of open courses from top universities. It aims to help self-learners to get a freely available equivalent of a world-class CS degree. The topics include fundamentals like programming, math, and computer architecture as well as more advanced subjects like theory of computation and functional programming. Even if you don't plan to spend two years going through the entire curriculum, you may still find some courses recommendations valuable. 15 | 16 | [The Computer Science Book](https://thecomputersciencebook.com/book/) 17 | free • book • by Tom Johnson • 2020-01-01 18 | This is an "introduction to computer science in one book". It will guide your through fundamental CS topics that are likely to be relevant for your software engineering job – things like algorithms and data structures, computer architecture, networking, and distributed systems. The text finds a nice balance of breadth and depth and is written in good plain English. And you don't have to read it chapter-by-chapter – the topics are quite self-contained. 19 | 20 | 21 | -------------------------------------------------------------------------------- /topics/math/linear_algebra.md: -------------------------------------------------------------------------------- 1 | Name: Linear algebra 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Linear Algebra MIT course](https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/) 9 | free • course • by Gilbert Strang • 2010-03-01 10 | This is a basic course on matrix theory and linear algebra with emphasis on topics that will be useful in other disciplines, including systems of equations, vector spaces, determinants, eigenvalues, similarity, and positive definite matrices. Some may find the presentation style too informal, but these lectures are superb for building geometric intuition and seeing the beauty and usefulness of linear algebra. 11 | 12 | [Linear Algebra: A Modern Introduction 4th edition](https://www.amazon.com/Linear-Algebra-Introduction-David-Poole/dp/1285463242) 13 | paid • book • by David Poole • 2014-01-08 14 | This textbook is a comprehensive introduction to all major linear algebra topics including vectors, matrices, systems of linear equations, eigenvalues and eigenvectors, vector spaces, and inner product spaces. It explains the concepts in plain English but also provides excellent geometric interpretations with pictures and rigorous proofs. A key feature is numerous examples on how linear algebra concepts are applied to solving problems in applied mathematics, physics, computer science, and other fields. If you want to pick up just one book to learn linear algebra, this textbook with over 2000 exercises is a perfect choice. 15 | 16 | [Linear Algebra Done Right, 3rd edition](https://link.springer.com/book/10.1007/978-3-319-11080-6) 17 | paid • book • by Sheldon Axler • 2014-12-18 18 | This textbook is a concise, clearly presented algebraic take on the subject. It gives little attention to the geometric and numerical sides of linear algebra and instead focuses on abstract vector spaces and linear maps. It assumes no prior knowledge, but it will be best as your second exposure to linear algebra. 19 | -------------------------------------------------------------------------------- /topics/computer_science/computer_architecture.md: -------------------------------------------------------------------------------- 1 | Name: Computer architecture 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Code: The Hidden Language of Computer Hardware and Software, 2nd Edition](https://www.codehiddenlanguage.com/Chapter00/) 9 | paid • book • by Charles Petzold • 2022-08-07 10 | This book is the best introduction to the world of computers. It starts with simple concepts and builds a very deep understanding of how computers work: from 0s and 1s to electricity to logical gates to circuits and CPUs. It's a great read for audiences of all levels. 11 | 12 | [Computer Organization and Design RISC-V Edition](https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-820331-6) 13 | paid • book • by David Patterson, John Hennessy • 2020-12-11 14 | This is the best book on the fundamentals of computer architecture and how modern computers work. The primary audience is software engineers who want to better understand hardware-software interaction and hardware designers making their first steps. 15 | 16 | [Structured Computer Organization, 6th edition](https://www.pearson.com/en-us/subject-catalog/p/structured-computer-organization/P200000003183/9780137618446) 17 | paid • book • by Andrew Tanenbaum • 2021-08-01 18 | If you're a fan of Andrew Tanenbaum's books and structured approach to learning, this is the book for you. It's a decent alternative to Computer Organization and Design. 19 | 20 | [Computer Architecture: A Quantitative Approach, 6th edition](https://www.amazon.com/Computer-Architecture-Quantitative-Approach-Kaufmann/dp/0128119055) 21 | paid • book • by David Patterson, John Hennessy • 2017-12-07 22 | This is a classic text on computer architecture. While Computer Organization and Design contains introductory material, this book is intended for advance readers working in the field. But anyone should consider using it as a reference when going deep intro some particular topic. 23 | -------------------------------------------------------------------------------- /topics/software_development/_.md: -------------------------------------------------------------------------------- 1 | Name: Software development 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [The Architecture of Open Source Applications](http://aosabook.org/en/index.html) 9 | free • book • series • 2016-07-29 10 | This is a book in four parts in which the authors of open source applications explain how their software is structured. Volume 1 and Volume 2 include chapters on the design of LLVM, Bash, GHC, nginx, PyPy, and other popular projects. The third book focuses on building performant applications. The 500 Lines or Less book is about design decisions that programmers make when they are building something new from scratch. 11 | 12 | [The Pragmatic Programmer, 20th Anniversary Edition](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/) 13 | paid • book • by David Thomas, Andrew Hunt • 2019-09-01 14 | This book is a collection of common sense advice on the process of software development. It covers a wide range of topics from coding tips to team communication to project management to career guidance. The first edition was published in 1999 and became one of the most influential books in the industry. Two years later the authors summarized their views in the even more impactful [Agile Manifesto](https://agilemanifesto.org/). The new edition offers a fresh look at the modern development landscape. It's a light and enjoyable read. And although you may find some tips obvious and others arguable or even wrong, you'll get a lot of food for thought. This is a book for programmers that seek to improve their craft. 15 | 16 | [Increment Magazine](https://increment.com/issues/) 17 | free • article • series • by Stripe • 2021-11-01 18 | Increment is a print and digital magazine about how teams build and operate software systems at scale. The articles are written by the Stripe team and industry experts. There are 19 published issues so far, each being focused on a particular topic: Cloud, Mobile, Frontend, Software Architecture, and so on. 19 | -------------------------------------------------------------------------------- /topics/software_development/concurrent_programming.md: -------------------------------------------------------------------------------- 1 | Name: Concurrent programming 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Concurrency** is the ability of a program to deal with multiple things simultaneously. For example, a browser that downloads files while rendering pages and doing million other things at the same time is a highly concurrent program. Concurrent computations may happen at the same physical time – this is called **parallelism** – it improves overall speed of execution. Concurrent computations can also happen in an interleaved manner: a CPU runs one task for some time, then runs another task, then continues with the first one from where it stopped. Programs use this approach to improve responsiveness and to do more things simultaneously than the number of available CPU cores. 7 | 8 | Links: [Concurrency (Wikipedia)](https://en.wikipedia.org/wiki/Concurrency_(computer_science)), [Concurrent computing (Wikipedia)](https://en.wikipedia.org/wiki/Concurrent_computing). 9 | 10 | ## Resources 11 | 12 | [Seven Concurrency Models in Seven Weeks](https://pragprog.com/titles/pb7con/seven-concurrency-models-in-seven-weeks/) 13 | paid • book • by Paul Butcher • 2014-07-01 14 | This book is an excellent survey of different approaches to concurrency and parallelism: traditional threads and locks, functional programming, Clojure's separation of identity and state, the actor model, Communicating Sequential Processes (CSP), data parallelism, and the Lambda Architecture. 15 | 16 | [Java Concurrency in Practice](https://www.amazon.com/dp/0321349601) 17 | paid • book • by Brian Goetz, Tim Peierls, Joshua Bloch, and others • 2006-05-09 18 | This book is the best guide on concurrent programming with threads. It covers threads-and-locks fundamentals, concurrent collections, the producer-consumer pattern, and thread pools among other things, and gives a lot of practical advice on how to design, test, and debug multithreaded programs. Despite being focused on Java 5, the content applies to any other language and remains very much relevant today. 19 | -------------------------------------------------------------------------------- /topics/computer_science/theory_of_computation.md: -------------------------------------------------------------------------------- 1 | Name: Theory of computation 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Theory of computation** studies the fundamental capabilities and limitations of computers. It's concerned with three main questions: 7 | 8 | 1. What is computation? 9 | 2. What can and cannot be computed? 10 | 3. How difficult is it to compute something? 11 | 12 | These questions are explored in three corresponding branches of the theory of computation: automata theory, computability, and complexity. 13 | 14 | Links: [Theory of computation (Wikipedia)](https://en.wikipedia.org/wiki/Theory_of_computation). 15 | 16 | ## Resources 17 | 18 | [Introduction to the Theory of Computation, 3rd edition](https://www.amazon.com/Introduction-Theory-Computation-Michael-Sipser/dp/113318779X) 19 | paid • book • by Michael Sipser • 2012-07-27 20 | This book covers all three major branches of the theory of computation: automata theory and languages, computability, and complexity. You'll learn about seminal results on finite automata and context-free languages, Turing machines and decidability, P and NP and other computational classes. It's rigorous, accessible, and fun – a must read. 21 | 22 | [The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine](http://www.theannotatedturing.com/) 23 | paid • book • by Charles Petzold • 2008-06-16 24 | In 1937 Alan Turing published a paper titled "On Computable Numbers" in which he introduced Turing Machines – a computational model that captured the notion of "effective computation". Using this model, Turing showed that there are problems computers cannot solve. In this book Charles Petzold presents the original Turing's paper with his commentary and the mathematical and historical background necessary to understand and fully appreciate Turing's influential work. 25 | 26 | [Elements of Automata Theory](https://www.amazon.com/Elements-Automata-Theory-Jacques-Sakarovitch/dp/0521844258) 27 | paid • book • by Jacques Sakarovitch • 2013-09-01 28 | This book is a treatise on finite automata theory. It's 750-page-long, very mathematical, and yet exceptionally well-written text. You'll learn about fundamental notions like rationality and recognizability as well as advanced results about finite automata over different mathematical structures. 29 | -------------------------------------------------------------------------------- /topics/tools_and_other_software/docker.md: -------------------------------------------------------------------------------- 1 | Name: Docker 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Docker** is the most popular [container](https://en.wikipedia.org/wiki/OS-level_virtualization) technology, a set of tools to build, run, and manage containers. 7 | 8 | Containers help developers to distribute and deploy their applications easier. First you create an image – a set of files and metadata that fully describe your app and its environment. This includes an OS distribution, system and app dependencies, and the source code or a compiled binary. The you run containers – isolated processes created from the image. 9 | 10 | Links: [www.docker.com](https://www.docker.com/), [Docker (Wikipedia)](https://en.wikipedia.org/wiki/Docker_(software)), [r/docker](https://www.reddit.com/r/docker/). 11 | 12 | Related topics: [Linux](/topics/linux/). 13 | 14 | ## Resources 15 | 16 | [Docker docs](https://docs.docker.com/) 17 | free • resource 18 | The documentation is great, but you need to know how it's structured to learn about Docker efficiently. [Overview](https://docs.docker.com/get-started/overview/) describes what Docker is. The [Get started](https://docs.docker.com/get-started/) guide walks you through an example of using Docker. Other [Guides](https://docs.docker.com/get-started/overview/) cover different aspects of Docker such as development and CI/CD. [Manuals](https://docs.docker.com/desktop/) show how to use particular tools as such Docker Build and Docker Compose in more detail. And [Reference](https://docs.docker.com/reference/) describes APIs, command line tools, Dockerfile and Compose specifications as fully as possible. 19 | 20 | [Containers From Scratch](https://www.youtube.com/watch?v=8fi7uSYlOdc&t=1s) 21 | free • video • by Liz Rice • 2018-07-18 22 | In this talk Liz Rice shows that containers are really just Linux processes isolated with chroot, namespaces, and cgroups. You'll see how to build a simple container runtime in a few lines of Go. 23 | 24 | [Play with Docker](https://labs.play-with-docker.com) 25 | free • resource • by Marcos Nils, Jonathan Leibiusky 26 | This website provides you with an Alpine Linux VM in your browser that you can use to build and run Docker containers. 27 | 28 | [Play with Docker Classroom](https://training.play-with-docker.com) 29 | free • course • series 30 | Interactive labs and tutorials that help you get hands-on experience using Docker. 31 | -------------------------------------------------------------------------------- /topics/computer_science/ai_and_ml.md: -------------------------------------------------------------------------------- 1 | Name: AI and ML 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [Artificial Intelligence: A Modern Approach, 4th edition](http://aima.cs.berkeley.edu/global-index.html) 9 | paid • book • by Stuart Russell, Peter Norvig • 2020-04-28 10 | The authoritative, most-used AI textbook adopted by over 1500 schools. It explores the full breadth of AI, which encompasses logic and probability; perception, reasoning, learning, and action; fairness, trust, social good, and safety; and applications that range from microelectronic devices to robotic planetary explorers to online services with billions of users. 11 | 12 | [Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 3rd edition](https://www.oreilly.com/library/view/hands-on-machine-learning/9781098125967/) 13 | paid • book • by Aurélien Géron • 2022-10-01 14 | This book is a comprehensive, practical introduction to machine learning with Python. It covers classical ML algorithms including linear regression and classification, SVMs, decision trees, ensembles of models, PCA, and unsupervised learning algorithms. It also covers neural networks, reinforcement learning, and popular deep learning architectures such as CNNs, RNNs, transformers, autoencoders, diffusion models, and GANs. This book is an excellent way to get basic theoretical knowledge and hands-on experience in all major topics of machine learning. 15 | 16 | [Deep Learning with Python, 2nd edition](https://www.manning.com/books/deep-learning-with-python-second-edition) 17 | paid • book • by François Chollet • 2021-10-01 18 | This book is a guide on how to build and train neural networks with Keras and TensorFlow by the author of Keras. You'll get hands-on experience in solving all kinds of ML problems including tabular data classification and regression, text classification, image classification, timeseries forecasting, machine translation, text generation, and image generation. And you'll learn about the fundamental and state-of-the-art deep learning methods to solve those problems: densely connected networks, CNNs, RNNs, transformers, autoencoders, and GANs. This book offers a unique blend of practical advice, deep learning theory, and insights into the nature of intelligence and cognition. 19 | 20 | [Awesome Production Machine Learning](https://github.com/EthicalML/awesome-production-machine-learning) 21 | free • resource • by EthicalML 22 | A curated list of open source libraries and platforms to deploy, monitor, version and scale your machine learning. 23 | -------------------------------------------------------------------------------- /topics/tools_and_other_software/git.md: -------------------------------------------------------------------------------- 1 | Name: Git 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Git** is an open source [version control system](https://en.wikipedia.org/wiki/Version_control) (VSC). It was created in 2005 by Linus Torvalds for development of the Linux kernel. Today Git is a dominant VCS. According to the [Stack Overflow 2022 developer survey](https://survey.stackoverflow.co/2022/#version-control-version-control-system), 93.87% of developers use Git. No other technology is used as widely. 7 | 8 | Links: [git-scm.com](https://git-scm.com/), [Git (Wikipedia)](https://en.wikipedia.org/wiki/Git). 9 | 10 | Related topics: [Linux](/topics/linux/). 11 | 12 | ## Resources 13 | 14 | [Git documentation](https://git-scm.com/doc) 15 | free • resource 16 | Git documentation comes in the form of man pages, so you can browse it [online](https://git-scm.com/docs) or just type `man ` like `man git`. The main types of pages are 1) command and format references such as [`git-init[1]`](https://git-scm.com/docs/git-init) and [`gitignore[5]`](https://git-scm.com/docs/gitignore) and 2) tutorials such as [`gittutorial[7]`](https://git-scm.com/docs/gittutorial) and [`giteveryday[7]`](https://git-scm.com/docs/giteveryday). The [`git[1]`](https://git-scm.com/docs/git) page references all other pages. You'll probably start with [`gittutorial[7]`](https://git-scm.com/docs/gittutorial) . Going through the Git man pages is a rough, fast-paced way to learn Git. For a more detailed introduction, there is also [Git User’s Manual](https://git-scm.com/docs/user-manual). 17 | 18 | [Pro Git book, 2nd edition](https://git-scm.com/book/en/v2) 19 | free • book • by Scott Chacon, Ben Straub 20 | This book is available on Git's website, so it can be considered a part of the documentation. It's a gentle introduction to Git as well as a detailed description of Git's advanced features. The docs describe *what* Git commands do. The book also shows you *how* they are used in the process of software development. 21 | 22 | [Git Cheatsheet](https://ndpsoftware.com/git-cheatsheet.html) 23 | free • resource • by NDP Software 24 | This website presents Git's most used commands and visualizes their place in Git with relation to stash, working tree, index, local and remote repositories. 25 | 26 | [Git from the inside out](https://codewords.recurse.com/issues/two/git-from-the-inside-out) 27 | free • article • by Mary Rose Cook • 2015-03-01 28 | This article explores what happens under the hood when you type Git commands. You'll see that Git stores all files, directories, and commits of a project as objects on the filesystem, and that the states of the repository are represented as the trees of those objects. 29 | -------------------------------------------------------------------------------- /topics/operating_systems/linux.md: -------------------------------------------------------------------------------- 1 | Name: Linux 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Linux** is an open source, [Unix-like](https://en.wikipedia.org/wiki/Unix-like) operating system developed by Linus Torvalds and released in 1991. It implements the core functionality of an operating system – the Linux kernel, which deals with things like process scheduling, memory management, networking and file system functionality and provides low-level APIs, mainly in the form of syscalls. Linux becomes a full-fledged operating system when bundled with an init system, the C standard library, command-line utilities, a package management system, and other software that often comes from the [GNU project](https://en.wikipedia.org/wiki/GNU_Project). These bundles are called Linux distributions and include names like Debian, Ubuntu, Red Hat Enterprise Linux, and Amazon Linux. Today Linux distributions dominate many computing markets: web servers, supercomputers, and embedded systems. Android and Chrome OS are two other popular operating systems based on the Linux kernel. 7 | 8 | Links: [www.kernel.org](https://www.kernel.org/), [Linux (Wikipedia)](https://en.wikipedia.org/wiki/Linux). 9 | 10 | Related topics: [Unix](/topics/unix/), [C](/topics/c/), [Shell](/topics/shell/). 11 | 12 | ## Resources 13 | 14 | [Linux Journey](https://linuxjourney.com/) 15 | free • resource • by Cindy Quach • 2017-01-01 16 | This is a great introductory tutorial on Linux that briefly covers all the important topics including the shell, user management, the filesystem, processes, packages, networking, and much more. Start here if you're new to Linux or looking for an introduction to a particular Linux topic. 17 | 18 | [The Linux Programming Interface](https://man7.org/tlpi/) 19 | paid • book • by Michael Kerrisk • 2010-10-01 20 | This book is the best reference on Linux and Unix programming. It's monumental - 1552 pages covering system calls, library functions, and other Linux interfaces. But it is also an enjoyable read and an excellent resource for learning how various parts of Linux work. 21 | 22 | [Linux Kernel Development, 3rd edition](https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468) 23 | paid • book • by Robert Love • 2010-06-22 24 | If you want to be able to hack on the Linux kernel or just to understand how Linux really works under the hood, this is the book for your. You'll see how Linux implements process scheduling, memory management, system calls, the virtual filesystem, and other OS components. Above all, you'll learn how to work with the Linux source code so you can answer any Linux questions without relying on others' interpretations. Despite the highly advanced topic, it's a fun and accessible read. 25 | -------------------------------------------------------------------------------- /topics/software_development/web_development.md: -------------------------------------------------------------------------------- 1 | Name: Web development 2 | Status: published 3 | 4 | ## Description 5 | 6 | ## Resources 7 | 8 | [MDN Web Docs](https://developer.mozilla.org/en-US/) 9 | free • resource 10 | MDN Web Docs is a comprehensive, well-written and overall the best documentation on web technologies. The [Docs section](https://developer.mozilla.org/en-US/docs/Web) contains references on [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML), [CSS](https://developer.mozilla.org/en-US/docs/Web/CSS), [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript), and [Web APIs](https://developer.mozilla.org/en-US/docs/Web/API/), as well as articles on web development topics such as [accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility), [performance](https://developer.mozilla.org/en-US/docs/Web/Performance), and [security](https://developer.mozilla.org/en-US/docs/Web/Security). [MDN Learning Area](https://developer.mozilla.org/en-US/docs/Learn) introduces beginners to web development in a series of step-by-step guides: from [HTML](https://developer.mozilla.org/en-US/docs/Learn/HTML), [CSS](https://developer.mozilla.org/en-US/docs/Learn/CSS), and [JavaScript](https://developer.mozilla.org/en-US/docs/Learn/JavaScript) to [frontend tools and frameworks](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing) and [server-side programming](https://developer.mozilla.org/en-US/docs/Learn/Server-side). MDN Web Docs is a go-to place to learn about anything web-related, so take time to explore what's in there. 11 | 12 | [Full Stack Open](https://fullstackopen.com/en/) 13 | free • course • by the University of Helsinki 14 | This is a course on modern web development with JavaScript. You'll learn how to develop, test, and deploy single-page applications using React, Redux, React Native, Node.js, MongoDB, GraphQL, and TypeScript. This is an ideal resource for aspiring full stack developers and experienced programers that want to (or have to) get familiar with the JS ecosystem. 15 | 16 | [Full Stack Python](https://www.fullstackpython.com/) 17 | free • book • by Matt Makai 18 | This book covers everything you need to know to create, deploy, and operate Python-powered web applications: Python itself, relational and NoSQL databases, frameworks, frontend development, web servers, monitoring tools, and so on. It does not delve into every topic in depth, but instead provides a list of excellent resources to further explore each topic. 19 | 20 | [RealWorld example apps](https://github.com/gothinkster/realworld) 21 | free • resource 22 | See how the exact same Medium.com clone is built using different frontend and backend technologies. If you want to learn how React, Angular, Vue.js, Express, ASP.NET Core, Django, and other frameworks are used in real-world projects, you may find this resource interesting. 23 | -------------------------------------------------------------------------------- /topics/libraries_and_frameworks/django.md: -------------------------------------------------------------------------------- 1 | Name: Django 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Django** is the most popular and mature Python web framework. It was created by Adrian Holovaty and Simon Willison to power newspaper websites. In 2005 they released it to open source. Today, Django is [one of the most popular web frameworks](https://survey.stackoverflow.co/2022/#section-most-popular-technologies-web-frameworks-and-technologies) that runs thousands of websites including [Instagram](https://www.instagram.com/), [Mozilla](https://www.mozilla.org/en-US/), [National Geographic](https://www.nationalgeographic.com/), and [Disqus](https://disqus.com/). 7 | 8 | Django is a framework with "batteries included". Besides basic functionality like URL routing and HTTP-related utilities, it provides an ORM, database migrations, a template engine, forms validation, authentication system, and much more. Django's killer feature is a built-in admin interface that lets you manage your app's content with a UI. 9 | 10 | Django's "batteries included" approach is the opposite of that taken by micro-frameworks like [Flask](https://flask.palletsprojects.com/en/2.2.x/), which provide only a minimal set of features and leave you to integrate any extra functionality through third-party libraries. One advantage of Django for beginners is that it makes a lot of choices for them. 11 | 12 | Django shines in building full-stack web applications with server side rendering. It wasn't designed for building APIs like [FastAPI](https://fastapi.tiangolo.com/), but [Django REST framework](https://www.django-rest-framework.org/) makes Django a good tool for this job as well. 13 | 14 | Links: [djangoproject.com](https://www.djangoproject.com/), [Django on GitHub](https://github.com/django/django/), [Django (Wikipedia)](https://en.wikipedia.org/wiki/Django_(web_framework)), [Awesome Django](https://github.com/wsvincent/awesome-django), [Web Frameworks for Python](https://wiki.python.org/moin/WebFrameworks). 15 | 16 | Related topics: [Python](/topics/python/). 17 | 18 | ## Resources 19 | 20 | [Django documentation](https://docs.djangoproject.com/) 21 | free • resource 22 | The documentation is so good that you'll hardly need other resources to learn Django. And it's big. The [Getting started guide](https://docs.djangoproject.com/en/4.1/intro/) shows how to build a simple poll app. [Topics](https://docs.djangoproject.com/en/4.1/topics/) cover key parts of Django in more detail. The are also [How-to guides](https://docs.djangoproject.com/en/4.1/howto/) to answer common questions and [API Reference](https://docs.djangoproject.com/en/4.1/ref/) to look up specific settings, commands, functions, and classes. Beware that Topics cover many things you'd expect to find in API Reference. Use [Table of contents](https://docs.djangoproject.com/en/4.1/contents/) and [Index](https://docs.djangoproject.com/en/4.1/genindex/) to navigate around efficiently. 23 | 24 | [Django Styleguide](https://github.com/HackSoftware/Django-Styleguide) 25 | free • resource • by HackSoftware 26 | An opinionated, practical guide on building maintainable Django apps, particularly API services. 27 | -------------------------------------------------------------------------------- /topics/databases/postgres.md: -------------------------------------------------------------------------------- 1 | Name: Postgres 2 | Status: published 3 | 4 | ## Description 5 | 6 | **PostgreSQL** (a.k.a. **Postgres**) is one of the most popular and advanced open-source databases out there. It's a [relational database management system](https://en.wikipedia.org/wiki/Relational_database) (RDBMS) that supports a large part of the SQL standard and offers many modern features. 7 | 8 | All major cloud providers including [AWS](https://aws.amazon.com/rds/postgresql/), [Azure](https://azure.microsoft.com/en-us/products/postgresql/), [Google Cloud](https://cloud.google.com/sql/docs/postgres), [Heroku](https://devcenter.heroku.com/articles/heroku-postgresql), and [Digital Ocean](https://docs.digitalocean.com/products/databases/postgresql/) offer Postgres database as a managed service. 9 | 10 | Links: [www.postgresql.org](https://www.postgresql.org/), [wiki.postgresql.org](https://wiki.postgresql.org/), [PostgreSQL (Wikipedia)](https://en.wikipedia.org/wiki/PostgreSQL), [PostgreSQL (Wikibooks)](https://en.wikibooks.org/wiki/PostgreSQL). 11 | 12 | ## Resources 13 | 14 | [PostgreSQL Documentation](https://www.postgresql.org/docs/current/index.html) 15 | free • resource 16 | Postgres has an excellent documentation. It's large but easy to navigate. [Preface](https://www.postgresql.org/docs/15/preface.html), [Part I](https://www.postgresql.org/docs/15/tutorial.html), and [Part II](https://www.postgresql.org/docs/15/sql.html) introduce you to Postgres and SQL and should be read cover-to-cover. [Part III Server Administration](https://www.postgresql.org/docs/15/admin.html) is worth reading through if you manage your own database server. [Part V Server Programming](https://www.postgresql.org/docs/15/server-programming.html) and [Part VII Internals](https://www.postgresql.org/docs/15/internals.html) are for advanced users to take the most out of Postgres. And there is [Part VI Reference](https://www.postgresql.org/docs/15/reference.html) anytime you need to get info on SQL commands or command-line tools – take a look what's there. 17 | 18 | [PostgreSQL Wiki](https://wiki.postgresql.org/wiki/Main_Page) 19 | free • resource 20 | The wiki complements the docs with FAQ, how-tos, tips and tricks, and useful links related to Postgres. It also serves as a collaboration area for Postgres contributors. Browse [Category:Main](https://wiki.postgresql.org/wiki/Category:Main) to see what's there. 21 | 22 | [PostgreSQL on Wikibooks](https://en.wikibooks.org/wiki/PostgreSQL) 23 | free • book 24 | The PostgreSQL Wikibook gives a compressed summary of Postgres' main features and concepts. It's a good introduction to Postgres for those who are already familiar with other databases. 25 | 26 | [PostgreSQL 14 Internals](https://postgrespro.com/community/books/internals) 27 | free • book • by Egor Rogov 28 | Do you find it hard sometimes to remember transaction guarantees on different isolation levels, to understand which index type to use in a particular case, or to figure out why an SQL query takes so long to execute. You'll be able to answer such questions without ready-made recipes and quick-fix patches if you understand how Postgres works under the hood. This book presents this complicated topic in a very accessible way. 29 | -------------------------------------------------------------------------------- /topics/cloud_platforms/aws.md: -------------------------------------------------------------------------------- 1 | Name: AWS 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Amazon Web Services** (**AWS**) is a cloud computing platform with over 200 services for compute, storage, databases, analytics, and more. AWS pioneered the Infrastructure as a Service (IaaS) market by launching [Simple Storage Service](https://en.wikipedia.org/wiki/Amazon_S3 "Amazon S3") (S3) and [Elastic Compute Cloud](https://en.wikipedia.org/wiki/Amazon_Elastic_Compute_Cloud "Amazon Elastic Compute Cloud") (EC2) in 2006. Now it's the leading cloud provider with [34% market share](https://www.statista.com/chart/18819/worldwide-market-share-of-leading-cloud-infrastructure-service-providers/). 7 | 8 | Links: [aws.amazon.com](https://aws.amazon.com/), [AWS (Wikipedia)](https://en.wikipedia.org/wiki/Amazon_Web_Services), [Timeline of AWS (Wikipedia)](https://en.wikipedia.org/wiki/Timeline_of_Amazon_Web_Services), [Cloud computing (Wikipedia)](https://en.wikipedia.org/wiki/Cloud_computing), [Cloud-computing comparison (Wikipedia)](https://en.wikipedia.org/wiki/Cloud-computing_comparison), [AWS in plain English](https://expeditedsecurity.com/aws-in-plain-english/). 9 | 10 | ## Resources 11 | 12 | [AWS Documentation](https://docs.aws.amazon.com/index.html) 13 | free • resource 14 | The [main docs page](https://docs.aws.amazon.com/index.html) contains guides and API references for every AWS service. More hands-on tutorials are available as [Getting Started guides](https://aws.amazon.com/getting-started/hands-on/). The [General Resources section](https://docs.aws.amazon.com/index.html#general_resources) lists all parts of the documentation. [Getting Started with AWS](https://aws.amazon.com/getting-started/) is the place to start exploring AWS. 15 | 16 | [AWS Training and Certification](https://aws.amazon.com/training/) 17 | free • resource 18 | [AWS Skill Builder](https://aws.amazon.com/training/digital/?cta=tctopbanner) is a collection of online courses developed by AWS. Over [500 courses](https://explore.skillbuilder.aws/learn/catalog?ctldoc-catalog-0=t-_elearning~l-_en) organized into [learning plans](https://explore.skillbuilder.aws/learn/catalog?ctldoc-catalog-0=t-_%22learning_plan%22~l-_en) are available for free. Subscribers can get access to extra content including interactive labs. [AWS Classroom Training](https://aws.amazon.com/training/classroom/) offers virtual and in-person live classes. [Learning by Role](https://aws.amazon.com/training/learn-about/?th=tile&tile=learnabout) is a good way to start exploring AWS Training content. 19 | 20 | [The Open Guide to AWS](https://github.com/open-guides/og-aws) 21 | free • resource 22 | This guide is a collection of links, tips, gotchas, and best practices for AWS. It describes AWS main services in plain English and contains a lot of practical advice on why, when, and how to use them. 23 | 24 | [AWS re:Invent 2019: Scaling up to your first 10 million users](https://www.youtube.com/watch?v=kKjm4ehYiMs) 25 | free • video • by Brian Farnhill, Hong Pham • 2019-12-07 26 | This talk will walk you through the evolution of a typical AWS infrastructure that powers a web application as it grows from one user to thousands and millions of users. You'll learn about which AWS services you should start with, how to scale your app with auto-scaling and workload shifting, and when to go serverless. 27 | -------------------------------------------------------------------------------- /topics/operating_systems/unix.md: -------------------------------------------------------------------------------- 1 | Name: Unix 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Unix** is an operating system developed at AT&T Bell Labs in 1969 by Ken Thompson, Dennis Ritchie, and others. It was designed to be simpler and smaller than contemporary operating systems, yet no less powerful. The goal was achieved, but through its evolution, Unix ceased to exist as a single operating system. Today there is no Unix but many operating systems that have Unix-like design and provide Unix-like interface: macOS, BSD descendants, and numerous Linux distributions. Formally, Unix-like refers to an operating system adhering to the [POSIX](https://en.wikipedia.org/wiki/POSIX) specification. POSIX defines a standard operating system interface and environment, including the C standard library, a command interpreter (or “shell”), and common utility programs. 7 | 8 | Initially AT&T could not turn Unix into a product for legal reasons, so they licensed it to educational institutions and then for commercial use. These AT&T's Unix versions had names like Version 5 Unix (1973) and were distributed together with the source code. Some institutions created their own Unix forks with additional features. One example is Berkeley Software Distribution (BSD). 9 | 10 | In 1983 AT&T was allowed to commercialize Unix. The free exchange of source code has stopped, and the market of Unix versions became fragmented. Richard Stallman founded the GNU Project to create a free, open-source Unix operating system. In 1988 IEEE released the POSIX specification to describe operating system interfaces common to different Unix versions. 11 | 12 | In 1991 Linus Torvalds developed Linux, an open-source Unix kernel implemented from scratch. Linux distributions combined the Linux kernel with GNU tools and libraries and additional software to create Unix-like operating systems for end-users. Today operating systems based on Linux dominate most computing markets: web servers, mobile devices, supercomputers, and embedded systems. Some of the popular names are Debian, Ubuntu, Red Hat Enterprise Linux, Android, and Chrome OS. 13 | 14 | Links: [Unix (Wikipedia)](https://en.wikipedia.org/wiki/Unix), [History of Unix (Wikipedia)](https://en.wikipedia.org/wiki/History_of_Unix), [UNIX Standard](https://www.opengroup.org/membership/forums/platform/unix), [POSIX.1-2017](https://pubs.opengroup.org/onlinepubs/96999). 15 | 16 | Related topics: [C](/topics/c/), [Shell](/topics/shell/), [Linux](/topics/linux/). 17 | 18 | ## Resources 19 | 20 | [The Unix Programming Environment](https://www.amazon.com/Unix-Programming-Environment-Prentice-Hall-Software/dp/013937681X) 21 | paid • book • by Brian Kernighan, Rob Pike • 1983-11-01 22 | Although this book predates all recent Unix developments, it's still an excellent introduction to the Unix world. It covers the basics of the file system, shell programming, common utilities, and system calls. And most importantly, it does the best to convey the Unix motto: "the power of a system comes from the relationship between programs, not programs themselves". 23 | 24 | [Advanced Programming in the UNIX Environment, 3rd edition](https://www.amazon.com/Advanced-Programming-UNIX-Environment-3rd/dp/0321637739) 25 | paid • book • by W. Richard Stevens, Stephen Rago • 2013-05-14 26 | This book is the best reference on Unix programming. It describes the interfaces provided by Unix systems – the system calls and the C standard library functions. Of course, this is what man pages do, but this book also presents examples and rationale, gives a historical context, compares different Unix systems, and overall makes it interesting to explore Unix capabilities. 27 | 28 | [UNIX: A History and a Memoir](https://www.amazon.com/UNIX-History-Memoir-Brian-Kernighan/dp/1695978552) 29 | paid • book • by Brian Kernighan • 2019-10-18 30 | Brian Kernighan joined Bell Labs just before Unix inception and was actively involved in its development. In this book, he tells the story of Unix from its early days to its modern legacy. This is a story of a remarkable working environment, great people, and influential design choices. It helps you better understand why Unix became what it is and why it was such a success. 31 | -------------------------------------------------------------------------------- /topics/languages/c.md: -------------------------------------------------------------------------------- 1 | Name: C 2 | Status: published 3 | 4 | ## Description 5 | 6 | **C** is a general-purpose programming language created in the early 1970s by Dennis Ritchie and Ken Thompson at Bell Labs. The development and success of C is tightly coupled with the that of the [Unix](https://en.wikipedia.org/wiki/Unix) operating system. Thompson created Unix in 1969, and in 1973, together with Ritchie, rewrote Unix from assembly to C. As Unix and later Unix-based operating systems spread, C gained adoption as well. C has been ranked among the top programming languages for decades and continues to be widely used today, primarily in system programming. 7 | 8 | The ability to read and understand C code is a crucial skill for a software developer since C underlies most software systems that we build upon. Notable C codebases include [Linux](https://github.com/torvalds/linux), [Postgres](https://github.com/postgres/postgres), [redis](https://github.com/redis/redis), [nginx](https://github.com/nginx/nginx), and [CPython](https://github.com/python/cpython). 9 | 10 | The C Programming Language book written by Brian Kernighan and Dennis Ritchie in 1978 served as the de facto standard for the language for many years. In 1989 C was first standardized as ANSI C. Later revisions of the standard are maintained by ISO and include C99, C11, and C17. 11 | 12 | The crucial companion to C is the [C standard library](https://en.wikipedia.org/wiki/C_standard_library). It provides macros, type definitions and functions for tasks such as string handling, mathematical computations, input/output processing, memory management, and several other operating system services. It's described by the ISO C standard. It's also described by [POSIX](https://en.wikipedia.org/wiki/POSIX), which makes it an essential part of any Unix-like operating system. 13 | 14 | Links: [C (Wikipedia)](https://en.wikipedia.org/wiki/C_(programming_language)), [C standard library (Wikipedia)](https://en.wikipedia.org/wiki/C_standard_library), [C17 standard](https://files.lhmouse.com/standards/ISO%20C%20N2176.pdf), [r/C_Programming](https://www.reddit.com/r/C_Programming/). 15 | 16 | Related topics: [Unix](/topics/unix/). 17 | 18 | ## Resources 19 | 20 | [The C Programming Language, 2nd edition](https://www.amazon.com/Brian-W-Kernighan/dp/0131103628) 21 | paid • book • by Brian Kernighan, Dennis Ritchie • 1988-03-22 22 | "Don't read any further until you have this book." The first edition, known as K&R, served as the de facto specification for C until the language was standardized. The second edition, with ANSI C updates, continues to be an excellent introduction to C. It covers all of C's essential features and contains readable references on the language and the standard library. Note, however, that you'll need to check other resources for recent C updates and guidance on the design of real-world C programs. Overall, K&R is an exemplar of technical writing produced by two greats in the field. 23 | 24 | [Beej's Guide to C Programming](https://beej.us/guide/bgc/) 25 | free • book • by Brian “Beej Jorgensen” Hall • 2022-07-25 26 | This book is an excellent introduction to C for programmers coming from other languages. It covers all the features of modern C and provides practical advice on how to use them. It also includes a reference on the C standard library, complete with examples. 27 | 28 | [21st Century C, 2nd edition](https://www.oreilly.com/library/view/21st-century-c/9781491904428/) 29 | paid • book • by Ben Klemens • 2014-10-01 30 | This book focuses on the current state of software development using C and covers what other C books don’t – you'll learn how to build, test, debug, and document your C programs and how to take advantage of third-party libraries and modern C features and idioms to write maintainable C code. 31 | 32 | [Expert C Programming](https://www.oreilly.com/library/view/expert-c-programming/0131774298/) 33 | paid • book • by Peter van der Linden • 1994-06-01 34 | This is a book for people who are already writing C programs and want to quickly pick up some of the insights and techniques of experts. It gives a historical perspective, demystifies C's quirks, and contains a lot of practical advice on writing C code. Despite the advanced material, it's an easy and entertaining read. 35 | -------------------------------------------------------------------------------- /topics/software_development/system_design.md: -------------------------------------------------------------------------------- 1 | Name: System design 2 | Status: published 3 | 4 | ## Description 5 | 6 | In software development, **system design** (a.k.a. **systems design**) is the description of a system's architecture, components, and interfaces that aim to meet specific requirements. When you develop a web application, split it into modules, define APIs, choose the data storage and processing stack, wire together cloud services that make up the infrastructure – you are doing system design. 7 | 8 | System design often refers specifically to the design of scalable, distributed systems like Google or Dropbox. As such, the central questions typically considered are what computing and data storage and processing technologies to use and how to wire them together to achieve scalability, availability, and fault tolerance. This touches upon topics studied in the fields of [databases](/topics/databases/) and distributed systems: replication, partitioning, consistency, and consensus. System design is the practical application of those studies that is also concerned with many other topics like networking, security, and cost-effectiveness. 9 | 10 | "How would you design X?" is a popular kind of interview question for software engineering positions. The interviewer may ask to design a service the company has worked on, and that can lead to a fruitful discussion representative of the real working process. Or the interviewer may ask to design a popular service like Twitter to save time on listing the requirements and exercise candidate's system design skills. You'll see a lot of system design resources aimed specifically to grok interview questions. 11 | 12 | With the advent of cloud computing, the knowledge of services offered by cloud providers like [AWS](/topics/aws/) became crucial for system design. Today you probably won't build your own infrastructure and are less likely to host your own services and instead use managed, auto-scalable, and serverless solutions provided by the cloud. To be good at system design, you need less and less fundamental knowledge of distributed systems and more and more understanding of cloud providers' quirks and best practices. 13 | 14 | Related topics: [AWS](/topics/aws/), [Computer networks](/topics/computer-networks/), [Databases](/topics/databases/). 15 | 16 | ## Resources 17 | 18 | [Designing Data-Intensive Applications](https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/) 19 | paid • book • by Martin Kleppmann • 2017-03-01 20 | This book is universally considered a must read for software engineers (and a very enjoyable one). It explores diverse space of technologies for processing and storing data: relational and NoSQL databases, search indexes, message queues, batch and stream processing frameworks, and more. You'll be better at deciding which technologies to use for a particular application and you'll learn how to meet key challenges in the design of distributed systems that arise with replication and partitioning. 21 | 22 | [The Architecture of Open Source Applications](http://aosabook.org/en/index.html) 23 | free • book • series • 2016-07-29 24 | This is a book in four parts in which the authors of open source applications explain how their software is structured. Volume 1 and Volume 2 include chapters on the design of LLVM, Bash, GHC, nginx, PyPy, and other popular projects. The third book focuses on building performant applications. The 500 Lines or Less book is about design decisions that programmers make when they are building something new from scratch. 25 | 26 | [System Design Primer](https://github.com/donnemartin/system-design-primer) 27 | free • resource • by Donne Martin 28 | This repo is a high-level guide to designing large-scale systems and a collections of materials to prepare for a system design interview. It lists main system design topics, provides a system design interview questions with solutions, and contains a lot of useful references for further study. 29 | 30 | [AWS re:Invent 2019: Scaling up to your first 10 million users](https://www.youtube.com/watch?v=kKjm4ehYiMs) 31 | free • video • by Brian Farnhill, Hong Pham • 2019-12-07 32 | This talk will walk you through the evolution of a typical AWS infrastructure that powers a web application as it grows from one user to thousands and millions of users. You'll learn about which AWS services you should start with, how to scale your app with auto-scaling and workload shifting, and when to go serverless. 33 | 34 | [CNCF Landscape](https://landscape.cncf.io/) 35 | free • resource • by CNCF 36 | This is a catalog of widely used and emerging open-source and proprietary technologies for building cloud-native applications – tools for automation & configuration, container runtimes, container orchestration, message brokers, databases, monitoring, CI/CD, and other major components of a modern tech stack. Check out the [CNCF Landscape Guide](https://landscape.cncf.io/guide) for a gentle introduction to each category of tools. 37 | -------------------------------------------------------------------------------- /topics/languages/javascript.md: -------------------------------------------------------------------------------- 1 | Name: JavaScript 2 | Status: published 3 | 4 | ## Description 5 | 6 | **JavaScript** (a.k.a. **JS**) is a programming language developed by Brendan Eich at Netscape in 1995. It was the first programming language that browsers could execute. Together with HTML and CSS, it became the backbone of web development. Today you can compile code written in C, Rust, Go, and many other languages to [WebAssembly](https://webassembly.org/) and run it in a browser, but JavaScript remains the only language that browsers support directly. Because of this multi-decade web dominance, JavaScript tops the [world's most popular programming languages lists](https://survey.stackoverflow.co/2022/#technology-most-popular-technologies). 7 | 8 | During browser wars, there were multiple versions of JavaScript including then popular [JScript](https://en.wikipedia.org/wiki/JScript) adopted by Microsoft. In November 1996 Netscape submitted JavaScript to the [Ecma International](https://en.wikipedia.org/wiki/Ecma_International) organization to write a standard specification for the language. This standardized JavaScript was called [ECMAScript](https://en.wikipedia.org/wiki/ECMAScript). New ECMAScript versions continue to be released on a yearly basis, the latest version being ECMAScript 2022 also known as ES13. 9 | 10 | JavaScript is [known for its quirks](https://www.destroyallsoftware.com/talks/wat), and few JavaScript developers haven't experienced [JavaScript Fatigue](https://auth0.com/blog/how-to-manage-javascript-fatigue/). But the language improved a lot since the early days. It is the language to learn if you're going to do web development. The [Node.js](https://nodejs.org/en/) runtime also makes it a decent choice for server-side programming. 11 | 12 | Links: [JavaScript (Wikipedia)](https://en.wikipedia.org/wiki/JavaScript), [ECMAScript (Wikipedia)](https://en.wikipedia.org/wiki/ECMAScript), [ECMAScript Language Specification](https://tc39.es/ecma262/#sec-intro), [State of JS 2022](https://2022.stateofjs.com/en-US/). 13 | 14 | Related topics: [Web development](/topics/web-development/). 15 | 16 | ## Resources 17 | 18 | [ECMAScript Language Specification](https://tc39.es/ecma262/#sec-intro) 19 | free • resource 20 | This is the authoritative JavaScript standard. It's not an easy read, and you won't learn JavaScript by reading it – the primary audience of the document is language implementers. Nevertheless, it's the place to go to learn about JavaScript intricacies and corner case behavior. Check out [How to Read the ECMAScript Specification](https://timothygu.me/es-howto/) for a gentle introduction to the standard. 21 | 22 | [JavaScript on MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript) 23 | free • resource 24 | MDN Web Docs is the best JavaScript documentation. [MDN Learning Area](https://developer.mozilla.org/en-US/docs/Learn/JavaScript) will introduce you to JavaScript, Web APIs, frontend tools and frameworks, and server-side programming. [Language Overview](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Language_Overview) provides a quick reminder of the core JavaScript features. There is also a much more detailed [JavaScript Guide](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide). Finally, for exhaustive information about language features, see [JavaScript reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference). 25 | 26 | [Eloquent JavaScript, 3rd edition](https://eloquentjavascript.net/) 27 | free • book • by Marijn Haverbeke • 2018-01-01 28 | This book is an introduction to programming using JavaScript. It teaches the basics of the language, browser APIs, and Node.js. Go for this book if you haven't done much JavaScript programming before and want to get a solid, hands-on experience with the language. 29 | 30 | [JavaScript for impatient programmers (ES1–ES2022)](https://exploringjs.com/impatient-js/index.html) 31 | free • book • by Axel Rauschmayer • 2022-01-01 32 | Though not suggested by the name, this is a comprehensive book on modern JavaScript that covers all essential features of the language up to and including ES2022. It's a good book for experienced programmers new to JavaScript and those who want to catch up with the latest JavaScript versions. The author Dr. Axel Rauschmayer has an entire [series of books on JavaScript](https://exploringjs.com/index.html). [Deep JavaScript](https://exploringjs.com/deep-js/index.html) is an advanced book that teaches practical techniques for using the language better and explains how JavaScript works under the hood. 33 | 34 | [Full Stack Open](https://fullstackopen.com/en/) 35 | free • course • by the University of Helsinki 36 | This is a course on modern web development with JavaScript. You'll learn how to develop, test, and deploy single-page applications using React, Redux, React Native, Node.js, MongoDB, GraphQL, and TypeScript. This is an ideal resource for aspiring full stack developers and experienced programers that want to (or have to) get familiar with the JS ecosystem. 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## About 2 | 3 | This repo hosts content for [bestresourcestolearnx.com](https://bestresourcestolearnx.com/). It's the mechanism of collaboration on the project. 4 | 5 | The website is NOT generated automatically from the repo (yet). But it's updated periodically to reflect the changes. Please fill an issue if you notice any major discrepancies. 6 | 7 | ## Project's philosophy 8 | 9 | The goal of the project is to collect best learning resources on IT topics to help people learn more effectively. You need to define what is "best" to do this. One approach would be to use some objective metric like the number of mentions, amazon reviews, and so on. We take another, opinionated approach. 10 | 11 | Each topic is curated by a single person that studies and compares all resources on that topic. This person forms an idea of what the best learning path should look like. The list of recommended resources turns out to be subjective but consistent. 12 | 13 | Anyone is very much welcome to contribute by suggesting resources and any other improvements. The opinionated approach only means that there is someone responsible for the topic who ensures that the suggestions fit the overall picture. 14 | 15 | If you're interested in adding new topics on the website and curating them, let's discuss it! Drop me an email: victor@tenthousandmeters.com. 16 | 17 | ## Content guidelines 18 | 19 | There are no strict rules about the content, but there are some principles that the project follows: 20 | 21 | 1. Any topic can be covered. The only requirement is that it's related to IT and is non-trivial enough so we can provide some value by recommending the resources to learn it. 22 | 2. The topics are organized into the hierarchy. There are many ways to do this. We keep the hierarchy flat (2 levels at the moment). If the topic needs subtopics, it's important enough to be at the top level. 23 | 3. Each topic has a list of resources and a description. The purpose of the topic description is to provide the context for further learning. It may define the topic, give historical background, describe its usage and importance, include links to Wikipedia and other useful places. 24 | 4. Each resource has a description as well. It should tell about resource's content and target audience so learners can quickly determine if the resource suits them. The description may also provide some guidance on how to use the resource (e.g. it's a documentation with a complicated structure). 25 | 5. Different resources target different audiences. Put first resources that are relevant to everyone such as official docs, then general resources for beginners, intermediate and advanced learners, then more specialized resources that cover certain aspects of the topic. 26 | 6. Less is better. Don't add a resource if it does not stand out from those already added. Some reasons to add a resource are: it's better; it's free; it targets a new audience; it's an underrepresented content type, such as a video course. 27 | 28 | ## How to contribute 29 | 30 | If you want to suggest a new resource, just [open an issue](https://github.com/r4victor/brtlx/issues/new?assignees=&labels=new+resource&template=new-resource.md&title=Add+%7Btopic_name%7D+resource+%7Bresource_title%7D). 31 | 32 | If you want to request a new topic, look for an existing issue or [open a new one](https://github.com/r4victor/brtlx/issues/new). 33 | 34 | If you want to cover a new topic yourself, you can start with an issue and then a PR. I'd also like you to drop me an email if you want to become a topic curator to discuss the project: victor@tenthousandmeters.com. 35 | 36 | ## Topics roadmap 37 | 38 | The following is a list of all the topics already covered (✅) and the topics that we plan to cover next (🕓): 39 | 40 | ✅ Languages 41 | * ✅ C 42 | * 🕓 C# 43 | * 🕓 Go 44 | * 🕓 HTML and CSS 45 | * 🕓 Java 46 | * ✅ JavaScript 47 | * ✅ Python 48 | * ✅ Shell 49 | * 🕓 SQL 50 | * 🕓 TypeScript 51 | 52 | ✅ Libraries and frameworks 53 | * 🕓 ASP.NET Core 54 | * ✅ Django 55 | * 🕓 Node.js 56 | * 🕓 React 57 | * 🕓 Ruby on Rails 58 | * 🕓 Spring 59 | 60 | ✅ Tools and other software 61 | * ✅ Docker 62 | * ✅ Git 63 | * 🕓 Kubernetes 64 | 65 | ✅ Databases 66 | * 🕓 MongoDB 67 | * 🕓 MySQL 68 | * ✅ Postgres 69 | 70 | ✅ Operating systems 71 | * ✅ Linux 72 | * 🕓 macOS 73 | * ✅ Unix 74 | 75 | ✅ Cloud platforms 76 | * ✅ AWS 77 | * 🕓 Google Cloud 78 | * 🕓 Microsoft Azure 79 | 80 | ✅ Software development 81 | * ✅ Concurrent programming 82 | * ✅ System design 83 | * ✅ Web development 84 | 85 | ✅ Computer science 86 | * ✅ AI and ML 87 | * 🕓 Blockchain and crypto 88 | * 🕓 Compilers 89 | * ✅ Computer architecture 90 | * ✅ Computer networks 91 | * ✅ Data structures and algorithms 92 | * ✅ Theory of computation 93 | 94 | ✅ Math 95 | * 🕓 Calculus 96 | * ✅ Linear algebra 97 | * ✅ Probability theory 98 | 99 | ## License 100 | 101 | The content is licensed under a 102 | [Creative Commons Attribution 4.0 International License][cc-by]. 103 | 104 | [![CC BY 4.0][cc-by-image]][cc-by] 105 | 106 | [cc-by]: http://creativecommons.org/licenses/by/4.0/ 107 | [cc-by-image]: https://i.creativecommons.org/l/by/4.0/88x31.png 108 | -------------------------------------------------------------------------------- /topics/languages/python.md: -------------------------------------------------------------------------------- 1 | Name: Python 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Python** is a high-level, general-purpose programming language designed by Guido van Rossum and released in 1991. Today, it's [one of the most popular programming languages in the world](https://survey.stackoverflow.co/2022/#technology-most-popular-technologies). The main reasons for its popularity are Python's intuitive syntax and a rich ecosystem of libraries that make it a good fit for both beginners and professional developers. 7 | 8 | Python excels at task automation, data science, and web development. But it can be used in almost any domain. As the saying goes, "Python is the second best language for everything". 9 | 10 | Python follows a traditional lineage of C-like languages. It stands out in that it reads more like English: whitespace indentation is used instead of curly brackets to delimit blocks and the number of syntactic elements is kept at minimum. It's an interpreted, dynamically-typed language with automatic garbage collection like other scripting languages such as JavaScript, Ruby, and PHP. It supports multiple programming paradigms with full-fledged [OOP](https://en.wikipedia.org/wiki/Object-oriented_programming) and basic functional programming capabilities. 11 | 12 | **CPython** is the Python reference implementation, the interpreter that you download from [python.org](https://www.python.org/). While there are other implementations like [MicroPython](https://micropython.org/) and [PyPy](https://www.pypy.org/), CPython runs most of the Python code out there. Python has no specification – the language is defined by what CPython does. That's why CPython is called a *reference* implementation. 13 | 14 | Links: [python.org](https://www.python.org/), [CPython on GitHub](https://github.com/python/cpython), [Python (Wikipedia)](https://en.wikipedia.org/wiki/Python_(programming_language)), [r/Python](https://www.reddit.com/r/Python/), [r/learnpython](https://www.reddit.com/r/learnpython), [Awesome Python](https://github.com/vinta/awesome-python). 15 | 16 | Related topics: [Django](/topics/django/). 17 | 18 | ## Resources 19 | 20 | [Python documentation](https://docs.python.org/3/) 21 | free • resource 22 | The [Tutorial](https://docs.python.org/3/tutorial/index.html) lets you pick up Python quickly if you've been programming in other languages. The [Language Reference](https://docs.python.org/3/reference/index.html) describes Python in more structured and complete way. The [Library Reference](https://docs.python.org/3/library/index.html) not only describes standard library modules but also builtins such as functions and data types. 23 | 24 | [Automate the Boring Stuff with Python](https://automatetheboringstuff.com) 25 | free • book • by Al Sweigart • 2019-11-01 26 | This is an excellent practice-oriented Python book suitable for both absolute beginners and more experienced programmers. Besides teaching the basics of programming, it shows you how to apply them in practice: write text-based games, scrape websites, work with spreadsheets, PDFs, docs, and more. If you want to learn how to write useful Python programs as soon as possible, this is the book for you. 27 | 28 | [Think Python, 2nd edition](https://greenteapress.com/wp/think-python-2e/) 29 | free • book • by Allen B. Downey • 2016-01-26 30 | This book is a great, concise introduction to Python and programming in general. In less than 300 pages, it covers enough of Python's constructs and concepts to start writing useful programs. Most importantly, it teaches you problem-solving skills and how to think like a computer scientist. The book features good exercises and guidance to make learning fun and knowledge lasting. Additionally, the author, Allen B. Downey, wrote an entire [collection of excellent free books](https://greenteapress.com/wp/), including [Think Java](http://greenteapress.com/wp/think-java-2e/). 31 | 32 | [Python Distilled](https://www.dabeaz.com/python-distilled/index.html) 33 | paid • book • by David Beazley • 2021-09-21 34 | This book is the best way to pick up Python for experienced programmers coming from other languages. It'll save your time like nothing else. David Beazley masterly distils the core of Python that you need to know to become productive in the language quickly and write good Pythonic code. 35 | 36 | [Fluent Python, 2nd Edition](https://www.oreilly.com/library/view/fluent-python-2nd/9781492056348/) 37 | paid • book • by Luciano Ramalho • 2022-05-01 38 | This is *the* book for practicing Python programmers who want to master the language. You'll see that there is much more to Python than covered in introductory materials. And you'll learn how to use Python's advanced features to make your code more clear, concise, and efficient. 39 | 40 | [Python behind the scenes](https://tenthousandmeters.com/tag/python-behind-the-scenes/) 41 | free • article • series • by Victor Skvortsov • 2021-09-22 42 | This series of blog posts explores how Python is implemented. You'll learn about the CPython compiler, the CPython VM, the implementation of built-in types, async/await, the GIL, and much more. 43 | 44 | [CPython Internals: Your Guide to the Python 3 Interpreter](https://realpython.com/products/cpython-internals-book/) 45 | paid • book • by Anthony Shaw • 2021-05-05 46 | This book will familiarize you with the CPython source code to the point where you'll be able to modify and extend the language. If you want to start contributing to CPython, this is a great place to start. 47 | 48 | [Full Stack Python](https://www.fullstackpython.com/) 49 | free • book • by Matt Makai 50 | This book covers everything you need to know to create, deploy, and operate Python-powered web applications: Python itself, relational and NoSQL databases, frameworks, frontend development, web servers, monitoring tools, and so on. It does not delve into every topic in depth, but instead provides a list of excellent resources to further explore each topic. 51 | 52 | [Awesome Python](https://github.com/vinta/awesome-python) 53 | free • resource • by Vinta Chen 54 | A curated list of awesome Python frameworks, libraries, software, and resources. 55 | -------------------------------------------------------------------------------- /topics/languages/shell.md: -------------------------------------------------------------------------------- 1 | Name: Shell 2 | Status: published 3 | 4 | ## Description 5 | 6 | **Shells** are command interpreters adopted by [Unix-like](https://en.wikipedia.org/wiki/Unix-like) operating systems. The shell is the program that runs in your terminal when you log in. It allows you to execute other programs, handles I/O redirection, performs various expansions, and so on. Shell commands can be run interactively in the terminal or they can be put in a file and run as a script. Although the shell is a programming language with constructs like `if` and `while`, its primary goal is to run, control, and glue together other programs. 7 | 8 | The term *shell* and the idea of a program running other programs was introduced by Louis Pouzin for the [Multics](https://en.wikipedia.org/wiki/Multics) operating system in 1964. In 1971, Ken Thompson implemented the first Unix shell known as the [Thompson shell](https://en.wikipedia.org/wiki/Thompson_shell) (`sh`) that came with the very first version of Unix. In 1979, it was replaced by the Bourne shell (`sh`). Another influential shell was the [C shell](https://en.wikipedia.org/wiki/C_shell) (`csh`) that found its way into the BSD version of Unix in the late 1970s. Different incompatible shells started to arise, so [POSIX](https://en.wikipedia.org/wiki/POSIX) defined features that should be common to all Unix shells. A subset of the [Korn shell](https://en.wikipedia.org/wiki/KornShell) (`ksh`) was used as a basis for the standard. [Bash](https://en.wikipedia.org/wiki/Bash_(Unix_shell)) (`bash`) is a shell for the [GNU Project](https://en.wikipedia.org/wiki/GNU_Project "GNU Project"). It's a default interactive shell on most Linux distributions. Some Linux distributions use [Dash](https://en.wikipedia.org/wiki/Almquist_shell#dash) (`dash`) as a scripting shell. While `bash` extends POSIX, `dash` tries to be as minimal as possible to conform to the standard. The [Z shell](https://en.wikipedia.org/wiki/Z_shell) (`zsh`) is another popular shell, which is default on macOS since Catalina. 9 | 10 | `bash` is the most popular shell for scripting because it's so widely available. But since `bash` is not guaranteed to be present on any Unix-like system, it's a common practice to write scripts using only features defined by POSIX. Which interactive shell to use is more of a matter of personal taste. Both `bash` and `zsh` are popular. You may also like [`fish`](https://en.wikipedia.org/wiki/Fish_(Unix_shell)). New [Oil Shell](https://www.oilshell.org/) aims to turn a shell into a solid programming language. 11 | 12 | Shell scripting has many quirks and legacy features. It's more and more common to see shell scripting being replaced with languages like [Python](/topics/python/). Nevertheless, shell scripts are not going to go anywhere. They work well for invoking other commands and can be executed almost anywhere. 13 | 14 | Links: [Unix shell (Wikipedia)](https://en.wikipedia.org/wiki/Unix_shell), [Comparison of command shells (Wikipedia)](https://en.wikipedia.org/wiki/Comparison_of_command_shells), [List of Unix commands (Wikipedia)](https://en.wikipedia.org/wiki/List_of_Unix_commands), [The Origin of the Shell](https://multicians.org/shell.html), [POSIX Shell & Utilities](https://pubs.opengroup.org/onlinepubs/9699919799/), [ShellCheck](https://github.com/koalaman/shellcheck), [explainshell.com](https://explainshell.com/). 15 | 16 | Related topics: [Unix](/topics/unix/), [Linux](/topics/linux/). 17 | 18 | ## Resources 19 | 20 | [POSIX Shell & Utilities](https://pubs.opengroup.org/onlinepubs/9699919799/) 21 | free • resource • 2018-01-01 22 | This is a POSIX volume that defines the Shell Command Language and utilities that should be present on a Unix system. You won't learn the shell by reading the standard, but the language definition is quite short and readable to be worth checking out. It's the ultimate source of truth on what a POSIX shell is and is not. 23 | 24 | [Bash Reference Manual](https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html) 25 | free • resource 26 | The Bash official manual is a great resource that is worth reading from cover-to-cover. It has an advantage of being always at hand with `man bash`. 27 | 28 | [GNU Coreutils Manual](https://www.gnu.org/software/coreutils/manual/coreutils.html) 29 | free • resource 30 | GNU Coreutils is an implementation of Unix utilities for GNU/Linux distributions. The manual is a nicely structured and detailed description of all the available shell commands. If you want to enlarge your shell vocabulary, this is a perfect resource. 31 | 32 | [Greg's Wiki](https://mywiki.wooledge.org/EnglishFrontPage) 33 | free • resource 34 | This is an indispensable resource for anyone doing shell programming. [BashFAQ](https://mywiki.wooledge.org/BashFAQ) tells how to do certain things in Bash, and [BashPitfalls](https://mywiki.wooledge.org/BashPitfalls) tells what to avoid. [BashSheet](https://mywiki.wooledge.org/BashSheet) condenses all of the Bash syntax and features on a small page. [BashGuide](https://mywiki.wooledge.org/BashGuide) is the best introduction to Bash with lots of examples and practical advice. Although the wiki is devoted to Bash, there is the [Bashism](https://mywiki.wooledge.org/Bashism) page that summarizes Bash-specific features. 35 | 36 | [The Art of Command Line](https://github.com/jlevy/the-art-of-command-line) 37 | free • resource • by Joshua Levy 38 | This repo lists shell features and CLI tools that you need to know to master the command line from basics like job and file management to advanced tips and obscure commands. 39 | 40 | [The Architecture of Open Source Applications: The Bourne-Again Shell](http://aosabook.org/en/index.html) 41 | free • article • by Chet Ramey • 2011-05-11 42 | This is a chapter of the [AOSA book](http://aosabook.org/en/index.html) in which Chet Ramey, the Bash maintainer, explains how Bash works. He gives an overview of the Bash architecture and presents key challenges in the implementation of a real shell. 43 | 44 | [Build Your Own Shell](https://github.com/tokenrove/build-your-own-shell) 45 | free • course • by Julian Squires • 2019-04-13 46 | There are many tutorials on how to build your own toy shell. This one goes further and shows how to implement a real-world, feature-rich shell in multiple stages. 47 | -------------------------------------------------------------------------------- /topics/databases/_.md: -------------------------------------------------------------------------------- 1 | Name: Databases 2 | Status: published 3 | 4 | ## Description 5 | 6 | A **database** is a collection of data organized for the ease of retrieval, update, and management. Software that manages the database and provides access to the data is called a **database management system** (**DBMS**). The term database is often used to refer to a DBMS as well. Databases vary a lot by data model and query language – the ways the data is stored and accessed. The most common types are relational databases ([Postrgres](https://en.wikipedia.org/wiki/PostgreSQL), [MySQL](https://en.wikipedia.org/wiki/MySQL), [SQLite](https://en.wikipedia.org/wiki/SQLite)), document-oriented databases ([MongoDB](https://en.wikipedia.org/wiki/MongoDB), [CouchDB](https://en.wikipedia.org/wiki/Apache_CouchDB), [Couchbase](https://en.wikipedia.org/wiki/Couchbase_Server)), key-value stores ([Redis](https://en.wikipedia.org/wiki/Redis), [Aerospike](https://en.wikipedia.org/wiki/Aerospike_(database))), wide-column databases ([DynamoDB](https://en.wikipedia.org/wiki/Amazon_DynamoDB), [Cassandra](https://en.wikipedia.org/wiki/Apache_Cassandra)), and graph databases ([Neo4j](https://en.wikipedia.org/wiki/Neo4j), [Amazon Neptune](https://en.wikipedia.org/wiki/Amazon_Neptune)). 7 | 8 | Data is at the core of most applications be it an online shop, a social network, a business management system, or some machine learning solution. Key challenges in the application design lie in data management and processing. Thus, knowledge of databases is an essential skill for software engineers. 9 | 10 | First databases appeared in 1960s. Before that time, computers were used primarily as expensive calculators in science and research. Companies were trying to use computers for storing and processing business data, but it was very slow and inconvenient. They had punch cards and magnetic tapes for secondary storage so the data had to be accessed sequentially. In 1960s hard disks became available, which allowed for the development of convenient ways to organize and access data. 11 | 12 | Charles Bachman designed the first DBMS called [Integrated Data Store (IDS)](https://en.wikipedia.org/wiki/Integrated_Data_Store) in 1964. The innovation was that each database record could refer to a list of other records and programmers could navigate between related entities. This data model became known as a network model. Another development of that time was a hierarchical model that limited the network model to a tree-like structure. Its implementation was the [IBM Information Management System (IMS)](https://en.wikipedia.org/wiki/IBM_Information_Management_System). 13 | 14 | Ted Codd proposed his relational model in 1970 where all the data is organized into tuples and relations (or rows and tables). The relational model was simpler than its predecessors. It allowed for a high-level, easy-to-use query language. [Structured Query Language (SQL)](https://en.wikipedia.org/wiki/SQL) was developed by Donald Chamberlin and Raymond Boyce for IBM's early relational DBMS called [System R](https://en.wikipedia.org/wiki/IBM_System_R) soon after Codd's work. By 1984, System R turned into commercially successful [Db2](https://en.wikipedia.org/wiki/IBM_Db2). More SQL databases followed including [Oracle](https://en.wikipedia.org/wiki/Oracle_Database) and [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL). The relational model took over the world and remains dominant to this day. 15 | 16 | People started to question the dominance of SQL databases only in 2000s with the advent of large-scale, real-time, and big data applications. The [NoSQL](https://en.wikipedia.org/wiki/NoSQL) movement gave rise to databases that are designed for distributed environment and offer alternative data models and better scaling properties. Document-oriented databases such as MongoDB became a default choice for many software engineers. 17 | 18 | SQL databases are fighting back with [NewSQL](https://en.wikipedia.org/wiki/NewSQL "NewSQL"). NewSQL is a class of modern relational databases that aim to provide the same scalable performance of NoSQL while still using SQL and maintaining the [ACID](https://en.wikipedia.org/wiki/ACID_(computer_science) "ACID (computer science)") guarantees of a traditional database system. Notable examples are [CockroachDB](https://en.wikipedia.org/wiki/CockroachDB "CockroachDB") and [VoltDB](https://en.wikipedia.org/wiki/VoltDB). This is an exciting time in database development. 19 | 20 | Links: [Database (Wikipedia)](https://en.wikipedia.org/wiki/Database), [Data model (Wikipedia)](https://en.wikipedia.org/wiki/Data_model). 21 | 22 | ## Resources 23 | 24 | [Designing Data-Intensive Applications](https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/) 25 | paid • book • by Martin Kleppmann • 2017-03-01 26 | This book is universally considered a must read for software engineers (and a very enjoyable one). It explores diverse space of technologies for processing and storing data: relational and NoSQL databases, search indexes, message queues, batch and stream processing frameworks, and more. You'll be better at deciding which technologies to use for a particular application and you'll learn how to meet key challenges in the design of distributed systems that arise with replication and partitioning. 27 | 28 | [Readings in Database Systems, 5th edition](http://www.redbook.io/) 29 | free • book • by Peter Bailis, Joseph M. Hellerstein, Michael Stonebraker • 2015-01-01 30 | Also known as the "Red Book", this is a survey of classic and cutting-edge research in the field of data management. It covers historical data models, traditional RDBMS, large-scale dataflow engines, and emerging NoSQL solutions. Each chapter contains a list of "must read" primary sources and a short commentary that introduces the readers to the topic and the selected papers. 31 | 32 | [The Architecture of Open Source Applications: The NoSQL Ecosystem](http://aosabook.org/en/nosql.html) 33 | free • article • by Adam Marcus • 2011-05-11 34 | This is a chapter of the [AOSA book](http://aosabook.org/en/index.html) that explores the vast space of NoSQL databases. You'll learn about different NoSQL approaches for storing and querying data, their pros and cons compared to SQL, and how they scale. 35 | 36 | [Database Systems: The Complete Book, 2nd edition](http://infolab.stanford.edu/~ullman/dscb.html) 37 | paid • book • by Hector Garcia-Molina, Jeff Ullman, Jennifer Widom • 2008-06-08 38 | This is a comprehensive textbook on the theory and implementation of relational databases. Intended for academic audience, it may not be the most practical text. Still, it's a good resource to learn about the relational model and relational algebra in detail. 39 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Attribution 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution 4.0 International Public License 58 | 59 | By exercising the Licensed Rights (defined below), You accept and agree 60 | to be bound by the terms and conditions of this Creative Commons 61 | Attribution 4.0 International Public License ("Public License"). To the 62 | extent this Public License may be interpreted as a contract, You are 63 | granted the Licensed Rights in consideration of Your acceptance of 64 | these terms and conditions, and the Licensor grants You such rights in 65 | consideration of benefits the Licensor receives from making the 66 | Licensed Material available under these terms and conditions. 67 | 68 | 69 | Section 1 -- Definitions. 70 | 71 | a. Adapted Material means material subject to Copyright and Similar 72 | Rights that is derived from or based upon the Licensed Material 73 | and in which the Licensed Material is translated, altered, 74 | arranged, transformed, or otherwise modified in a manner requiring 75 | permission under the Copyright and Similar Rights held by the 76 | Licensor. For purposes of this Public License, where the Licensed 77 | Material is a musical work, performance, or sound recording, 78 | Adapted Material is always produced where the Licensed Material is 79 | synched in timed relation with a moving image. 80 | 81 | b. Adapter's License means the license You apply to Your Copyright 82 | and Similar Rights in Your contributions to Adapted Material in 83 | accordance with the terms and conditions of this Public License. 84 | 85 | c. Copyright and Similar Rights means copyright and/or similar rights 86 | closely related to copyright including, without limitation, 87 | performance, broadcast, sound recording, and Sui Generis Database 88 | Rights, without regard to how the rights are labeled or 89 | categorized. For purposes of this Public License, the rights 90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 | Rights. 92 | 93 | d. Effective Technological Measures means those measures that, in the 94 | absence of proper authority, may not be circumvented under laws 95 | fulfilling obligations under Article 11 of the WIPO Copyright 96 | Treaty adopted on December 20, 1996, and/or similar international 97 | agreements. 98 | 99 | e. Exceptions and Limitations means fair use, fair dealing, and/or 100 | any other exception or limitation to Copyright and Similar Rights 101 | that applies to Your use of the Licensed Material. 102 | 103 | f. Licensed Material means the artistic or literary work, database, 104 | or other material to which the Licensor applied this Public 105 | License. 106 | 107 | g. Licensed Rights means the rights granted to You subject to the 108 | terms and conditions of this Public License, which are limited to 109 | all Copyright and Similar Rights that apply to Your use of the 110 | Licensed Material and that the Licensor has authority to license. 111 | 112 | h. Licensor means the individual(s) or entity(ies) granting rights 113 | under this Public License. 114 | 115 | i. Share means to provide material to the public by any means or 116 | process that requires permission under the Licensed Rights, such 117 | as reproduction, public display, public performance, distribution, 118 | dissemination, communication, or importation, and to make material 119 | available to the public including in ways that members of the 120 | public may access the material from a place and at a time 121 | individually chosen by them. 122 | 123 | j. Sui Generis Database Rights means rights other than copyright 124 | resulting from Directive 96/9/EC of the European Parliament and of 125 | the Council of 11 March 1996 on the legal protection of databases, 126 | as amended and/or succeeded, as well as other essentially 127 | equivalent rights anywhere in the world. 128 | 129 | k. You means the individual or entity exercising the Licensed Rights 130 | under this Public License. Your has a corresponding meaning. 131 | 132 | 133 | Section 2 -- Scope. 134 | 135 | a. License grant. 136 | 137 | 1. Subject to the terms and conditions of this Public License, 138 | the Licensor hereby grants You a worldwide, royalty-free, 139 | non-sublicensable, non-exclusive, irrevocable license to 140 | exercise the Licensed Rights in the Licensed Material to: 141 | 142 | a. reproduce and Share the Licensed Material, in whole or 143 | in part; and 144 | 145 | b. produce, reproduce, and Share Adapted Material. 146 | 147 | 2. Exceptions and Limitations. For the avoidance of doubt, where 148 | Exceptions and Limitations apply to Your use, this Public 149 | License does not apply, and You do not need to comply with 150 | its terms and conditions. 151 | 152 | 3. Term. The term of this Public License is specified in Section 153 | 6(a). 154 | 155 | 4. Media and formats; technical modifications allowed. The 156 | Licensor authorizes You to exercise the Licensed Rights in 157 | all media and formats whether now known or hereafter created, 158 | and to make technical modifications necessary to do so. The 159 | Licensor waives and/or agrees not to assert any right or 160 | authority to forbid You from making technical modifications 161 | necessary to exercise the Licensed Rights, including 162 | technical modifications necessary to circumvent Effective 163 | Technological Measures. For purposes of this Public License, 164 | simply making modifications authorized by this Section 2(a) 165 | (4) never produces Adapted Material. 166 | 167 | 5. Downstream recipients. 168 | 169 | a. Offer from the Licensor -- Licensed Material. Every 170 | recipient of the Licensed Material automatically 171 | receives an offer from the Licensor to exercise the 172 | Licensed Rights under the terms and conditions of this 173 | Public License. 174 | 175 | b. No downstream restrictions. You may not offer or impose 176 | any additional or different terms or conditions on, or 177 | apply any Effective Technological Measures to, the 178 | Licensed Material if doing so restricts exercise of the 179 | Licensed Rights by any recipient of the Licensed 180 | Material. 181 | 182 | 6. No endorsement. Nothing in this Public License constitutes or 183 | may be construed as permission to assert or imply that You 184 | are, or that Your use of the Licensed Material is, connected 185 | with, or sponsored, endorsed, or granted official status by, 186 | the Licensor or others designated to receive attribution as 187 | provided in Section 3(a)(1)(A)(i). 188 | 189 | b. Other rights. 190 | 191 | 1. Moral rights, such as the right of integrity, are not 192 | licensed under this Public License, nor are publicity, 193 | privacy, and/or other similar personality rights; however, to 194 | the extent possible, the Licensor waives and/or agrees not to 195 | assert any such rights held by the Licensor to the limited 196 | extent necessary to allow You to exercise the Licensed 197 | Rights, but not otherwise. 198 | 199 | 2. Patent and trademark rights are not licensed under this 200 | Public License. 201 | 202 | 3. To the extent possible, the Licensor waives any right to 203 | collect royalties from You for the exercise of the Licensed 204 | Rights, whether directly or through a collecting society 205 | under any voluntary or waivable statutory or compulsory 206 | licensing scheme. In all other cases the Licensor expressly 207 | reserves any right to collect such royalties. 208 | 209 | 210 | Section 3 -- License Conditions. 211 | 212 | Your exercise of the Licensed Rights is expressly made subject to the 213 | following conditions. 214 | 215 | a. Attribution. 216 | 217 | 1. If You Share the Licensed Material (including in modified 218 | form), You must: 219 | 220 | a. retain the following if it is supplied by the Licensor 221 | with the Licensed Material: 222 | 223 | i. identification of the creator(s) of the Licensed 224 | Material and any others designated to receive 225 | attribution, in any reasonable manner requested by 226 | the Licensor (including by pseudonym if 227 | designated); 228 | 229 | ii. a copyright notice; 230 | 231 | iii. a notice that refers to this Public License; 232 | 233 | iv. a notice that refers to the disclaimer of 234 | warranties; 235 | 236 | v. a URI or hyperlink to the Licensed Material to the 237 | extent reasonably practicable; 238 | 239 | b. indicate if You modified the Licensed Material and 240 | retain an indication of any previous modifications; and 241 | 242 | c. indicate the Licensed Material is licensed under this 243 | Public License, and include the text of, or the URI or 244 | hyperlink to, this Public License. 245 | 246 | 2. You may satisfy the conditions in Section 3(a)(1) in any 247 | reasonable manner based on the medium, means, and context in 248 | which You Share the Licensed Material. For example, it may be 249 | reasonable to satisfy the conditions by providing a URI or 250 | hyperlink to a resource that includes the required 251 | information. 252 | 253 | 3. If requested by the Licensor, You must remove any of the 254 | information required by Section 3(a)(1)(A) to the extent 255 | reasonably practicable. 256 | 257 | 4. If You Share Adapted Material You produce, the Adapter's 258 | License You apply must not prevent recipients of the Adapted 259 | Material from complying with this Public License. 260 | 261 | 262 | Section 4 -- Sui Generis Database Rights. 263 | 264 | Where the Licensed Rights include Sui Generis Database Rights that 265 | apply to Your use of the Licensed Material: 266 | 267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 | to extract, reuse, reproduce, and Share all or a substantial 269 | portion of the contents of the database; 270 | 271 | b. if You include all or a substantial portion of the database 272 | contents in a database in which You have Sui Generis Database 273 | Rights, then the database in which You have Sui Generis Database 274 | Rights (but not its individual contents) is Adapted Material; and 275 | 276 | c. You must comply with the conditions in Section 3(a) if You Share 277 | all or a substantial portion of the contents of the database. 278 | 279 | For the avoidance of doubt, this Section 4 supplements and does not 280 | replace Your obligations under this Public License where the Licensed 281 | Rights include other Copyright and Similar Rights. 282 | 283 | 284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 | 286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 | 297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 | 307 | c. The disclaimer of warranties and limitation of liability provided 308 | above shall be interpreted in a manner that, to the extent 309 | possible, most closely approximates an absolute disclaimer and 310 | waiver of all liability. 311 | 312 | 313 | Section 6 -- Term and Termination. 314 | 315 | a. This Public License applies for the term of the Copyright and 316 | Similar Rights licensed here. However, if You fail to comply with 317 | this Public License, then Your rights under this Public License 318 | terminate automatically. 319 | 320 | b. Where Your right to use the Licensed Material has terminated under 321 | Section 6(a), it reinstates: 322 | 323 | 1. automatically as of the date the violation is cured, provided 324 | it is cured within 30 days of Your discovery of the 325 | violation; or 326 | 327 | 2. upon express reinstatement by the Licensor. 328 | 329 | For the avoidance of doubt, this Section 6(b) does not affect any 330 | right the Licensor may have to seek remedies for Your violations 331 | of this Public License. 332 | 333 | c. For the avoidance of doubt, the Licensor may also offer the 334 | Licensed Material under separate terms or conditions or stop 335 | distributing the Licensed Material at any time; however, doing so 336 | will not terminate this Public License. 337 | 338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 | License. 340 | 341 | 342 | Section 7 -- Other Terms and Conditions. 343 | 344 | a. The Licensor shall not be bound by any additional or different 345 | terms or conditions communicated by You unless expressly agreed. 346 | 347 | b. Any arrangements, understandings, or agreements regarding the 348 | Licensed Material not stated herein are separate from and 349 | independent of the terms and conditions of this Public License. 350 | 351 | 352 | Section 8 -- Interpretation. 353 | 354 | a. For the avoidance of doubt, this Public License does not, and 355 | shall not be interpreted to, reduce, limit, restrict, or impose 356 | conditions on any use of the Licensed Material that could lawfully 357 | be made without permission under this Public License. 358 | 359 | b. To the extent possible, if any provision of this Public License is 360 | deemed unenforceable, it shall be automatically reformed to the 361 | minimum extent necessary to make it enforceable. If the provision 362 | cannot be reformed, it shall be severed from this Public License 363 | without affecting the enforceability of the remaining terms and 364 | conditions. 365 | 366 | c. No term or condition of this Public License will be waived and no 367 | failure to comply consented to unless expressly agreed to by the 368 | Licensor. 369 | 370 | d. Nothing in this Public License constitutes or may be interpreted 371 | as a limitation upon, or waiver of, any privileges and immunities 372 | that apply to the Licensor or You, including from the legal 373 | processes of any jurisdiction or authority. 374 | 375 | 376 | ======================================================================= 377 | 378 | Creative Commons is not a party to its public 379 | licenses. Notwithstanding, Creative Commons may elect to apply one of 380 | its public licenses to material it publishes and in those instances 381 | will be considered the “Licensor.” The text of the Creative Commons 382 | public licenses is dedicated to the public domain under the CC0 Public 383 | Domain Dedication. Except for the limited purpose of indicating that 384 | material is shared under a Creative Commons public license or as 385 | otherwise permitted by the Creative Commons policies published at 386 | creativecommons.org/policies, Creative Commons does not authorize the 387 | use of the trademark "Creative Commons" or any other trademark or logo 388 | of Creative Commons without its prior written consent including, 389 | without limitation, in connection with any unauthorized modifications 390 | to any of its public licenses or any other arrangements, 391 | understandings, or agreements concerning use of licensed material. For 392 | the avoidance of doubt, this paragraph does not form part of the 393 | public licenses. 394 | 395 | Creative Commons may be contacted at creativecommons.org. 396 | --------------------------------------------------------------------------------