97 Things Every SRE Should KnowSite reliability engineering (SRE) is more relevant than ever. Knowing how to keep systems reliable has become a critical skill. With this practical book, newcomers and old hats alike will explore a broad range of conversations happening in SRE. You'll get actionable advice on several topics, including how to adopt SRE, why SLOs matter, when you need to upgrade your incident response, and how monitoring and observability differ.
Editors Jaime Woo and Emil Stolarsky, co-founders of Incident Labs, have collected 97 concise and useful tips from across the industry, including trusted best practices and new approaches to knotty problems. You'll grow and refine your SRE skills through sound advice and thought-provokingquestions that drive the direction of the field.
Some of the 97 things you should know:
"Test Your Disaster Plan" - Tanya Reilly
"Integrating Empathy into SRE Tools" - Daniella Niyonkuru
"The Best Advice I Can Give to Teams" - Nicole Forsgren
"Where to SRE" - Fatema B ...
Learning Domain-Driven DesignBuilding software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.
Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company.
With this book, you'll learn how to: Analyze a company's business domain to learn how the system you're building fits its competitive strategy; Use DDD's strategic and tactic ...
Notes on Randomized AlgorithmsLecture notes for the Yale Computer Science course CPSC 469/569 Randomized Algorithms. Suitable for use as a supplementary text for an introductory graduate or advanced undergraduate course on randomized algorithms. Discusses tools from probability theory, including random variables and expectations, union bound arguments, concentration bounds, applications of martingales and Markov chains, and the Lovasz Local Lemma. Algorithmic topics include analysis of classic randomized algorithms such as Quicksort and Hoare's FIND, randomized tree data structures, hashing, Markov chain Monte Carlo sampling, randomized approximate counting, derandomization, quantum computing, and some examples of randomized distributed algorithms. ...
Understanding the DOMJavaScript is the de facto programming language of the web, but the language itself does not include any built-in method for working with input/output (I/O), such as graphics display and sound. Instead, the web browser provides an API for accessing the HTML document in a tree structure known as the Document Object Model (DOM). The combination of JavaScript and the DOM is what allows us to create interactive, dynamic websites.
Many modern frameworks, such as React, Vue, and Svelte abstract away much of the DOM from the developer, but frameworks also use the DOM under the hood. The JavaScript library jQuery was also created to make working with the DOM easier, but the modern development practice is to work with the DOM directly. In order to be a proficient web developer, having a deep understanding of what the DOM is and how to work with it is essential. The goal of this book is to provide a base understanding of the DOM as well as expl ...
97 Things Every Scrum Practitioner Should KnowImprove your understanding of Scrum through the proven experience and collected wisdom of experts around the world. Based on real-life experiences, the 97 essays in this unique book provide a wealth of knowledge and expertise from established practitioners who have dealt with specific problems and challenges with Scrum.
You'll find out more about the rules and roles of this framework, as well as tactics, strategies, specific patterns to use with Scrum, and stories from the trenches. You'll also gain insights on how to apply, tune, and tweak Scrum for your work. This guide is an ideal resource for people new to Scrum and those who want to assess and improve their understanding of this framework.
- "Scrum Is Simple. Just Use It As Is.," Ken Schwaber
- "The 'Standing Meeting,'" Bob Warfield
- "Specialization Is for Insects," James O. Coplien
- "Scrum Events Are Rituals to Ensure Good Harvest," Jasper Lamers
- "Servant Leadership Starts from Within," Bob Galen
- "Agile ...
Architecture Patterns with PythonAs Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are taking an interest in high-level software design patterns such as hexagonal/clean architecture, event-driven architecture, and the strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward.
With this hands-on guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity - and get the most value out of their test suites.
Each pattern is illustrated with concrete examples in beautiful, idiomatic Python, avoiding some of the verbosity of Java and C# syntax. Patterns include: Dependency inversion and its links to ports and adapters (hexagonal/clean architecture); Domain-driven design's distinction between Entities, Value Objects, and Aggregates; Repository and Unit of Work patterns for persistent storag ...
97 Things Every Engineering Manager Should KnowTap into the wisdom of experts to learn what every engineering manager should know. With 97 short and extremely useful tips for engineering managers, you'll discover new approaches to old problems, pick up road-tested best practices, and hone your management skills through sound advice.
Managing people is hard, and the industry as a whole is bad at it. Many managers lack the experience, training, tools, texts, and frameworks to do it well. From mentoring interns to working in senior management, this book will take you through the stages of management and provide actionable advice on how to approach the obstacles you'll encounter as a technical manager.
A few of the 97 things you should know:
- "Three Ways to Be the Manager Your Report Needs" by Duretti Hirpa
- "The First Two Questions to Ask When Your Team Is Struggling" by Cate Huston
- "Fire Them!" by Mike Fisher
- "The 5 Whys of Organizational Design" by Kellan Elliott-McCrea
- "Career Conversations" by Raquel VĂ© ...
Wordpress Development Quick Start GuideWordPress is the most used CMS in the world and is the ideal way to share your knowledge with a large audience or build a profitable business. Getting started with WordPress development has often been a challenge for novice developers, and this book will help you find your way.
This book explains the components used in WordPress development, when and where to use them, and why you should be using each component in specific scenarios. You begin by learning the basic development setup and coding standards of WordPress. Then you move into the most important aspects of the theme and plugin development process. Here you will also learn how themes and plugins fit into the website while learning about a range of techniques for extending themes and plugins.
With the basics covered, we explore many of the APIs provided by WordPress and how we can leverage them to build rapid solutions. Next, we move on to look at the techniques for capturing, processing, and displaying user data when inte ...
Code with the Wisdom of the CrowdMob Programming is a natural extension of the popular Pair Programming concept and is not restricted to a specific programming language or technology. It can be used by anyone who develops software, including dev leads, software developers, and agile coaches. When you have more people working on a bug or feature, you get fewer dependencies on individuals and overall increased learning for everyone involved. With more eyes on the code, you'll find you develop better solutions with fewer defects.
Set up your team for success by introducing Mob Programming in a way that benefits them. Create a good first Mobbing experience for your team with a template that avoids the common traps beginners may fall into. Master a collaborative and empathic mindset to help optimize the Mobbing experience. Learn how to make adjustments when things go wrong. Adapt your mobbing to different types of development tasks. Get management buy-in for your Mobbing experiment by demonstrating the benefits. Discove ...
Deep Belief Nets in C++ and CUDA C: Volume 2Discover the essential building blocks of a common and powerful form of deep belief net: the autoencoder. You'll take this topic beyond current usage by extending it to the complex domain for signal and image processing applications. Deep Belief Nets in C++ and CUDA C: Volume 2 also covers several algorithms for preprocessing time series and image data. These algorithms focus on the creation of complex-domain predictors that are suitable for input to a complex-domain autoencoder. Finally, you'll learn a method for embedding class information in the input layer of a restricted Boltzmann machine. This facilitates generative display of samples from individual classes rather than the entire data distribution. The ability to see the features that the model has learned for each class separately can be invaluable.
At each step this book provides you with intuitive motivation, a summary of the most important equations relevant to the topic, and highly commented code for threaded computatio ...
Component-Based Rails ApplicationsAs Rails applications grow, even experienced developers find it difficult to navigate code bases, implement new features, and keep tests fast. Components are the solution, and Component-Based Rails Applications shows how to make the most of them.
Writing for programmers and software team leads who are comfortable with Ruby and Rails, Stephan Hagemann introduces a practical, start-to-finish methodology for modernizing and restructuring existing Rails applications.
One step at a time, Hagemann demonstrates how to revamp Rails applications to exhibit visible, provably independent, and explicitly connected parts - thereby simplifying them and making them far easier for teams to manage, change, and test. Throughout, he introduces design concepts and techniques you can use to improve applications of many kinds, even if they weren't built with Rails or Ruby.
Learn how components clarify intent, improve collaboration, and simplify innovation and maintenance; Create a full Rails applic ...