- Table View
- List View
Server-Driven Web Apps with htmx
by R. Mark Volkmannhtmx is a library that adds logic and server interaction to HTML; you get the effect of using a front-end SPA framework without writing front-end code. Use any server-side programming language and framework to build server applications with endpoints that simply return snippets of HTML. Dynamically update portions of the current web page from HTTP responses. Add interactivity with JavaScript and libraries such Alpine and _hyperscript. Make your apps more secure by escaping user-supplied content and specifying a Content Security Policy. Go beyond basic HTTP requests with WebSockets and server-sent events. The htmx JavaScript library gives you a new way to craft web applications. The htmx approach differs significantly from that of the currently popular single-page application (SPA) frameworks; rather than write a bunch of JavaScript, you simply annotate HTML elements before you send them to the browser. The resulting code is easier to understand and modify, and because it downloads less to the browser and doesn't need JSON creation and parsing, you'll find it performs better, too. Rethink web application design; write code in any language that simply responds to requests with htmx snippets.Dynamically update portions of the current web page directly from the server.Implement common patterns such as lazy loading, input validation, CSS transitions, active search, optimistic updates, pagination, infinite scroll, polling, and click-to-edit.Add interactivity with JavaScript and libraries such as Alpine and _hyperscript.Use the htmx JavaScript API to simplify DOM operations.Make your web apps more secure: escape user-supplied content, use Subresource Integrity hashes, and enforce a Content Security Policy.Go beyond the basic HTTP request/response pattern with WebSockets and server-sent events.Discover a simpler way to implement web applications that emphasizes web fundamentals.What You Need:A modern web browser and the ability to build and run a local HTTP server using the server-side language and framework of your choice.The code examples are fully compatible with htmx 2.0.
The Stress Equation
by Marcus LagreWorkplace stress is not the weakness of individuals; it's caused by systemic problems. Armed with the insights in this book, you can identify, analyze, and systematically reduce the factors that lead to poor health, low productivity, and personal burnout. This book gives you a framework for understanding stress, and a vocabulary to make it easier to discuss it among colleagues. Stress can be fixed; find out how. The interviewer asks, "How well do you cope with stress?" Your response should be, "Let's fix your environment so we don't have to." Work-related stress is one of the leading causes of mental illness among white-collar workers. It hurts companies, projects, and (most importantly) people! Stress is a burden that's created when teams stop working well. The Stress Equation is a model and a tool to help talk about stress as a systemic issue. By exploring how pressure, complexity, and security interact in software teams, we move focus away from the individual, so that we can talk about stress from a team and organizational perspective. By exploring external factors, we discuss how to solve problems rather than cope with the consequences. Whether you're an individual feeling stressed or a manager who can help, you'll learn the causes of, fixes for, and how to talk about stress. We regulate pressure by how we decide how much work we have to do and when it needs to be finished. Complexity is decided by how we handle our product and organization design. Our security is less about our pay and benefits, and more about the support and trust we feel.Stress should not be a given. Instead, it's a symptom of a diseased organization. With this book, you can begin the healing process.What You Need:No special requirements.
A Common-Sense Guide to Data Structures and Algorithms in JavaScript, Volume 1: Level Up Your Core Programming Skills
by Jay WengrowIf you thought data structures and algorithms were all just theory, you're missing out on what they can do for your JavaScript code. Learn to use Big O notation to make your code run faster by orders of magnitude. Choose from data structures such as hash tables, trees, and graphs to increase your code's efficiency exponentially. With simple language and clear diagrams, this book makes this complex topic accessible, no matter your background. Every chapter features practice exercises to give you the hands-on information you need to master data structures and algorithms for your day-to-day work. Algorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more efficiently, which is particularly important for today's web and mobile apps. Take a practical approach to data structures and algorithms, with techniques and real-world scenarios that you can use in your daily production code. The JavaScript edition uses JavaScript exclusively for all code examples, exercises, and solutions. Use Big O notation to measure and articulate the efficiency of your code, and modify your algorithm to make it faster. Find out how your choice of arrays, linked lists, and hash tables can dramatically affect the code you write. Use recursion to solve tricky problems and create algorithms that run exponentially faster than the alternatives. Dig into advanced data structures such as binary trees and graphs to help scale specialized applications such as social networks and mapping software. You'll even encounter a single keyword that can give your code a turbo boost. Practice your new skills with exercises in every chapter, along with detailed solutions. Use these techniques today to make your JavaScript code faster and more scalable. What You Need: Certain code examples take advantage of recently introduced JavaScript features. Therefore, it's important to use a JavaScript environment that supports ECMAScript 6+ or a newer version.
Programming WebRTC
by Karl StolleyBuild your own video chat application - but that's just the beginning. With WebRTC, you'll create real-time applications to stream any kind of user media and data directly from one browser to another, all built on familiar HTML, CSS, and JavaScript. Power real-time activities like text-based chats, secure peer-to-peer file transfers, collaborative brainstorming sessions - even multiplayer gaming. And you're not limited to two connected users: an entire chapter of the book is devoted to engineering multipeer WebRTC apps that let groups of people communicate in real time. You'll create your own video conferencing app. It's all here. WebRTC is an API exposed in all modern web browsers. After almost a decade of development, the WebRTC specification was finalized, and this book provides faithful coverage of that finalized specification. You'll start by building a basic but complete WebRTC application for video chatting. Chapter by chapter, you'll refine that app and its core logic to spin up new and exciting WebRTC-powered apps that will have your users sharing all manner of data with one another, all in real time. No third-party libraries or heavy downloads are required for you or your users: you'll be writing and strengthening your knowledge of vanilla JavaScript and native browser APIs.You'll learn how to directly connect multiple browsers over the open internet using a signaling channel. You will gain familiarity with a whole set of Web APIs whose features bring WebRTC to life: requesting access to users' cameras and microphones; accessing and manipulating arbitrary user files, right in the browser; and web storage for persisting shared data over the life of a WebRTC call. Like any Web API, WebRTC doesn't enjoy a perfect implementation in any browser. But this book will guide you in writing elegant code to the specification, with backward-compatible fallback code for use in almost all modern browsers.Use WebRTC to build the next generation of web applications that stream media and data in real time, directly from one user to another - all by working in the browser.What You Need:Readers need a text editor, an up-to-date copy of Chrome or Firefox, and a POSIX-style command-line shell. They'll also need to install a little bit of open-source software, especially Node.js. All necessary setup is covered in full in the book's introductory chapter.
High Performance PostgreSQL for Rails: Reliable, Scalable, Maintainable Database Applications
by Andrew AtkinsonBuild faster, more reliable Rails apps by taking the best advanced PostgreSQL and Active Record capabilities, and using them to solve your application scale and growth challenges. Gain the skills needed to comfortably work with multi-terabyte databases, and with complex Active Record, SQL, and specialized Indexes. Develop your skills with PostgreSQL on your laptop, then take them into production, while keeping everything in sync. Make slow queries fast, perform any schema or data migration without errors, use scaling techniques like read/write splitting, partitioning, and sharding, to meet demanding workload requirements from Internet scale consumer apps to enterprise SaaS. Deepen your firsthand knowledge of high-scale PostgreSQL databases and Ruby on Rails applications with dozens of practical and hands-on exercises. Unlock the mysteries surrounding complex Active Record. Make any schema or data migration change confidently, without downtime. Grow your experience with modern and exclusive PostgreSQL features like SQL Merge, Returning, and Exclusion constraints. Put advanced capabilities like Full Text Search and Publish Subscribe mechanisms built into PostgreSQL to work in your Rails apps. Improve the quality of the data in your database, using the advanced and extensible system of types and constraints to reduce and eliminate application bugs. Tackle complex topics like how to improve query performance using specialized indexes. Discover how to effectively use built-in database functions and write your own, administer replication, and make the most of partitioning and foreign data wrappers. Use more than 40 well-supported open source tools to extend and enhance PostgreSQL and Ruby on Rails. Gain invaluable insights into database administration by conducting advanced optimizations - including high-impact database maintenance - all while solving real-world operational challenges. Take your new skills into production today and then take your PostgreSQL and Rails applications to a whole new level of reliability and performance. What You Need: A computer running macOS, Linux, or Windows and WSL2PostgreSQL version 16, installed by package manager, compiled, or running with DockerAn Internet connection
C++ Brain Teasers: Exercise Your Mind
by Anders Schau KnattenC++ is famous for getting all the default behaviors wrong and for sometimes making demons fly out of your nose. Through 25 puzzles, from the useful to the outright weird, we explore some of C++'s most interesting quirks. How does initialization actually work? Do temporaries even exist? Why is `+!!"" ` a valid expression in C++? As you work through each puzzle, you will peel off some of the layers of complexity of C++, getting a fundamental understanding of how the language works. This will help you write better code and recognize issues more easily while debugging. Each puzzle in the book is a complete, seemingly simple C++ program, but can you figure out the output for each, or will the answers stump you? Most of the programs compile and have deterministic, though sometimes surprising, output. Some might, however, have undefined behavior, where anything can happen, including making demons fly out of your nose! Yet others might have unspecified behavior with output that is not completely deterministic; we just know nothing as bad as nasal demons will happen. All puzzles are accompanied by detailed discussions, taking a look under the hood at what exactly is going on to help you understand more about C++'s unexpected behaviors, as well as fundamental concepts like initialization, overload resolution, and implicit conversions. For the non-deterministic cases, we'll explore some typical behaviors one can expect to see in practice, what causes them, and why they shouldn't be relied on. After working through the book, you'll have tools and techniques to help you write better and safer code, and a better understanding of the fundamentals of the language, the background for some of C++'s apparent weirdness, and a better feel for identifying bugs and unsafe code in your own programs. What You Need: The book assumes basic knowledge of C++. If you want to run the programs yourself, you can use either a local C++ compiler or the online compilers at https://godbolt.org.
Effective Go Recipes
by Miki TebekaProgrammers love Go because it is lightweight, easy to work with, and easy to read. Go gives you the benefits of dynamically typed languages (speed of development) while keeping the upsides of strongly typed languages (security and performance). Go is a simple language, but programming in Go is about more than just mastering syntax. There's an art to using Go effectively. Squeeze out the full use of advanced networking and multi-core power for which Go was designed. Save precious coding hours with recipes that help you manage objects, collect garbage, and safely use memory. Tackle Unicode, concurrency, and serialization with ease. All the clean, reusable solutions you need for a wide variety of problems common to Go development. Outfitted with these recipes, your next apps will be more polished and more maintainable than ever. Start out by tackling time and see how the Go time packager provides types that will do most of the heavy lifting for you. Next, work on recipes tailored to the nuances of processing text, like normalizing strings to avoid bugs. From there, whip up some functions on-the-fly and store functions in variables and data structures. Ever wondered why Go seems to be peppered with error handling? Working through the next recipes, you'll discover the benefits, which include more robust code. In the section on HTTP, you'll learn tricks like running multiple HTTP servers on the same port and setting timeouts. With concurrency recipes, you'll limit the number of goroutines to improve performance, give your code awareness of timeouts, and decide when to keep your code sequential instead of making it concurrent. Throughout the book, you'll make Go sizzle following simple recipes and tweaking them to fit your own apps. Using tools like strong typing and concurrency primitives, build a Go codebase that stays maintainable at scale.What You Need:You should know the Go language syntax and have some experience in programming.You will need a Go SDK, a Git client, and for some of the chapters, a C compiler.
C Brain Teasers
by Dan GookinYou thought you knew C, but can you solve 25 puzzles in this popular programming language? Noted C programmer and author Dan Gookin provides a series of pointed questions, puzzles, and problems to keep your C programming skills sharp. Each one will provide insight into various aspects of handling strings, numeric operations, and other activities, giving you techniques to take the best advantage of all C has to offer. Challenge yourself, and get to know some powerful tricks and details for writing better, faster, more accurate C code. Most C programming books present the information sequentially, teaching you the right way to code and only rarely describing what could go wrong. In this book, the goal is to find out what did go wrong - or what potentially goes right. Explore interesting and unusual programming concepts and approaches with small, to-the-point, programs and exercises. Hone your C programming skills and expand your knowledge. By working through the brain teasers in this book, you'll fill in gaps in your knowledge and work with advanced concepts such as pointers and recursion. All of the teaser topics were selected to give you food for thought, explaining the technical details behind each puzzle. Look at a code sample and try to guess what output it will give. Code it yourself and see the result. Is it what you expected? Then read the author's lighthearted explanation of exactly why the language does what it does, and how you can take advantage of it. You'll come away with a much better understanding of how the language works, and how to use it for efficient and effective programming. What You Need: You need to know the basics of coding in C, and have an environment for compiling and executing your C code. Any Windows, MacOS, or Linux system with a C compiler does the job. Use the terminal window for traditional C programming. Or obtain an Integrated Development Enviornment (IDE) such as Visual Studio Code, which contains all the software tools you need: Editor, Compiler, and Output.
JavaScript Brain Teasers
by Faraz K. KelhiniIf you've ever felt the exhilaration of cracking a thorny problem or the joy of witnessing elegant code that challenges your mind, then this book is tailor-made for you. Prepare yourself to dive into a diverse array of mind-bending JavaScript brain teasers. Each puzzle is more than just a code exercise; it's a gateway to unlocking new insights and honing your abilities. As you work through the challenges, you'll learn to think pragmatically, optimize your code for efficiency, and avoid hidden pitfalls that can catch you off guard. What's more - the puzzle format will help you remember what you've learned! Over the years, JavaScript has gained a bit of a reputation for its quirky and unique characteristics. It's important for developers to be aware of these quirks to write more robust and predictable JavaScript code. In this book, we invite you on a journey designed to unveil the intricate nuances and peculiarities that define the language's essence. Learn how to simulate function overloading, embed hidden information within objects, develop self-contained functions capable of maintaining their own local state, generate number sequences using functional programming, handle exotic forms of IIFEs, and prevent loss of precision when dealing with large numbers. Grasp concepts like closures, hoisting, symbols, execution context, event queue, text normalization, and more, one puzzle at a time. Discover how to create your own custom objects that function as shortcuts, accurately calculate the length of emojis and Unicode characters, master the usage of the "this" keyword, leverage bitwise operators, and convert color names to hex notation for universal use across various platforms. Plus, steer clear of those usual traps and blunders that trip up JavaScript developers. Forget passive learning. With JavaScript Brain Teasers, you'll actively engage with code puzzles that require creative thinking and problem-solving, which help you memorize difficult concepts.What You Need:Certain code examples take advantage of recently introduced JavaScript features. Therefore, it's important to use a JavaScript environment that supports ECMAScript 2020 or a newer version. The simplest way to experiment with the examples is use your browser's console. Just make sure your browser is up-to-date.
Agile Retrospectives, Second Edition
by David Horowitz Esther Derby Diana LarsenIn an uncertain and complex world, learning is more important than ever before. In fact, it can be a competitive advantage. Teams and organizations that learn rapidly deliver greater customer value faster and more reliably. Furthermore, those teams are more engaged, more productive, and more satisfied. The most effective way to enable teams to learn is by holding regular retrospectives. Unfortunately, many teams only get shallow results from their retrospectives. This book is filled with practical advice, techniques, and real-life examples that will take retrospectives to the next level--whether your team is co-located, hybrid, or remote. This book will help team leads, scrum masters, and coaches engage their teams to learn, improve, and deliver greater results. For nearly two decades, scrum masters, team leads, and coaches have relied on the first edition of Agile Retrospectivesas an essential resource to facilitate better retrospectives. This edition builds on recent research, reflects the authors' experiences over two decades, and shares wisdom gleaned from the global retrospective community. Find practical advice to level up retrospective skills. Address the challenges of remote and hybrid retrospectives head on. Take advantage of expanded guidance on designing and facilitating retrospectives--based on the questions and concerns of practitioners worldwide. Gain insight into choosing a broad or narrow focus for retrospectives. Explore how to use both objective and subjective data to enable more effective conversations. Learn how to make decisions that stick. Understand the importance of psychological safety and how to foster it in retrospectives. Elevate issues and engage managers in systemic change. Learn from many real-life stories that demonstrate how our advice has impacted retrospectives at organizations around the globe. Finally, find a set of recommended flows that reveal the authors' thought process in designing retrospectives for scenarios teams faced in real life.
Your Code as a Crime Scene, Second Edition
by Adam TornhillJack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you can apply strategies to identify problems in your existing code, assess refactoring direction, and understand how your team influences the software architecture. With its unique blend of criminal psychology and code analysis, Your Code as a Crime Scene arms you with the techniques you need to take on any codebase, no matter what programming language you use. Software development might well be the most challenging task humanity ever attempted. As systems scale up, they also become increasingly complex, expensive to maintain, and difficult to reason about. We can always write more tests, try to refactor, and even fire up a debugger to understand complex coding constructs. That's a great starting point, but you can do so much better. Take inspiration from forensic psychology techniques to understand and improve existing code. Visualize codebases via a geographic profile from commit data to find development hotspots, prioritize technical debt, and uncover hidden dependencies. Get data and develop strategies to make the business case for larger refactorings. Detect and fix organizational problems from the vantage point of the software architecture to remove bottlenecks for the teams. The original Your Code as a Crime Scene from 2014 pioneered techniques for understanding the intersection of people and code. This new edition reflects a decade of additional experience from hundreds of projects. Updated techniques, novel case studies, and extensive new material adds to the strengths of this cult classic. Change how you view software development and join the hunt for better code! What You Need: You need to be comfortable reading code. You also need to use Git (or Subversion, Mercurial or similar version-control tool).
Text Processing with JavaScript
by Faraz K. KelhiniYou might think of regular expressions as the holy grail of text processing, but are you sure you aren't just shoehorning them in where standard built-in solutions already exist and would work better? JavaScript itself provides programmers with excellent methods for text manipulation, and knowing how and when to use them will help you write more efficient and performant code. From extracting data from APIs to calculating word counts and everything in between, discover how to pick the right tool for the job and make the absolute most of it every single time. Whether you're a beginner or an advanced programmer, this up-to-date guide will save you a ton of time when dealing with text. With Text Processing with JavaScript, you'll find a collection of tiny programs, each demonstrating a string manipulation approach in JavaScript. You'll also focus squarely on the practical aspects of text processing with JavaScript - that is, what each technique is designed to accomplish and how to use it in your program. Discover how to extract data from APIs and web pages, apply spelling corrections, convert and format currencies, and remove HTML tags from text. Learn to intersect tables, copy text to the clipboard, extract lists from text, and highlight sentences that contain a specific word. Find duplicate words and fix them automatically, modify a copy of an existing regex literal, match the beginning or end of a string, and remove all comments from JavaScript and HTML files with ease. Match non-ASCII words, calculate the word count of an article in any language, and more. Become a JavaScript expert and master chef of text processing with this collection of hands-on and production-ready recipes.
A Common-Sense Guide to Data Structures and Algorithms in Python, Volume 1: Level Up Your Core Programming Skills
by Jay Wengrowp>If you thought data structures and algorithms were all just theory, you're missing out on what they can do for your Python code. Learn to use Big O notation to make your code run faster by orders of magnitude. Choose from data structures such as hash tables, trees, and graphs to increase your code's efficiency exponentially. With simple language and clear diagrams, this book makes this complex topic accessible, no matter your background. Every chapter features practice exercises to give you the hands-on information you need to master data structures and algorithms for your day-to-day work.Algorithms and data structures are much more than abstract concepts. Mastering them enables you to write code that runs faster and more efficiently, which is particularly important for today's web and mobile apps. Take a practical approach to data structures and algorithms, with techniques and real-world scenarios that you can use in your daily production code. The Python edition uses Python exclusively for all code examples, exercise, and solutions.Use Big O notation to measure and articulate the efficiency of your code, and modify your algorithm to make it faster. Find out how your choice of arrays, linked lists, and hash tables can dramatically affect the code you write. Use recursion to solve tricky problems and create algorithms that run exponentially faster than the alternatives. Dig into advanced data structures such as binary trees and graphs to help scale specialized applications such as social networks and mapping software. You'll even encounter a single keyword that can give your code a turbo boost. Practice your new skills with exercises in every chapter, along with detailed solutions.Use these techniques today to make your Python code faster and more scalable.
From Ruby to Elixir
by Stephen BusseyElixir will change the way you think about programming. Use your Ruby experience to quickly get up to speed so you can see what all of the buzz is about. Go from zero to production applications that are reliable, fast, and scalable. Learn Elixir syntax and pattern matching to conquer the basics. Then move onto Elixir's unique process model that offers a world-class way to go parallel without fear. Finally, use the most common libraries like Ecto, Phoenix, and Oban to build a real-world SMS application. Now's the time. Dive in and learn Elixir. Whether you're a seasoned Ruby developer looking to expand your skill set or a programming beginner looking for a solid foundation in Elixir, this book has what you need to get up to speed quickly. Elixir is a functional language with a fairly small footprint. This makes it easier to learn and put into production than other languages. Plus, it's built on forty-year-old foundations that give your applications rock-solid stability. The first part of this book is all about developing expertise in the language. Learn about the core data types, build application data structures, enumerate over data, and use pattern matching to control the flow of an application. Elixir has an amazing process model that allows for (actually) easy parallel processing. Learn how to tap into this process model so you can leverage that power yourself. The second part of this book builds a real-world application using the most important libraries in a web developer's toolbox. Each library is compared to its similar Ruby library so you'll quickly see similarities and differences. We'll use Ecto, Phoenix, and Oban to build a SMS application powered by Twilio. What are you waiting for? Tap into your Ruby knowledge and start building scalable Elixir applications today. What You Need: You'll need Elixir 1.14+ and Erlang/OTP 24+ installed on a Mac OS X, Linux, or Windows machine.
Programming Ruby 3.3
by Noel Rappin Dave ThomasRuby is one of the most important programming languages in use for web development. It powers the Rails framework, which is the backing of some of the most important sites on the web. The Pickaxe Book, named for the tool on the cover, is the definitive reference on Ruby, a highly-regarded, fully object-oriented programming language. This updated edition is a comprehensive reference on the language itself, with a tutorial on the most important features of Ruby - including pattern matching and Ractors - and describes the language through Ruby 3.3. Would you like to go from first idea to working code much, much faster? Do you currently spend more time satisfying the compiler instead of your clients or end users? Are you frustrated with demanding languages that seem to get in your way instead of helping you get the work done? Are you using Rails and want to dig deeper into the underlying Ruby language? If so, then we've got a language and book for you! Ruby is a fully object-oriented language. The combination of the power of a pure object-oriented language with the convenience of a scripting language makes Ruby a favorite tool of programmers that want to get things done quickly and cleanly. This comprehensive reference manual for Ruby includes a description of the most important standard library modules, built-in classes, and modules. It also includes all the new and changed syntax and semantics introduced through Ruby 3.3, including pattern matching and Ractors, and describes the language through Ruby 3.3. What You Need: This book assumes you have a basic understanding of object-oriented programming. In general, Ruby programmers tend to favor the the command line for running their code, and they tend to use text editors rather than IDEs. Ruby runs on Windows, Linux, and MacOS.
Charged Bodies: People, Power, And Paradox In Silicon Valley
by Thomas MahonAt the heart of Silicon Valley's meteoric rise is a story etched in the lives of those who shaped it and those who were forever transformed by it. Author Tom Mahon provides an insider's perspective on the birth of the semiconductor industry, which sparked the region's transformation from sleepy farmland to the heart and soul of the high-tech revolution. Through twenty-five extended, in-person interviews you'll meet a diverse cast of characters whose goal was to create technology and tools in service to humanity. In the Afterword to this edition, the author questions whether they accomplished their objectives and urges readers to rise up and rethink technology. What did it take to create the atmosphere that transformed rich farmland into the wealthy center of high-tech? Five climates lined up in just the right way. Educational institutions (Stanford and Berkeley); an attractive location with balmy, Mediterranean-like weather; a history of technology development (Federal Telegraph in the early twentieth century); financial risk taking (the gold rush); and a cultural climate near the center of an ideological revolution (the hippie movement). The Santa Clara Valley had them all. In spades. Before personal computers, or the Internet, or social media came *chips*. Inventive minds took advantage of the quad-electron structure and unique properties - insulative and conductive - of silicon to create semiconductors. But Charged Bodies is more than just the story of new technologies emerging from "The Valley of the Heart's Delight." Using an approach like The Canterbury Tales, Tom Mahon captures the spirit of Silicon Valley in the 80s through the stories of the people all around him. The inventors and bankers have their say. But so do a range of other people who lived through that transition. Listen as artists and hackers, detectives and journalists, lawyers and scientists, flappers and philosophers tell the story of Silicon Valley in their own words.
Currently Away
by Bruce TateThe walls were closing in on Bruce and Maggie Tate. Isolation forced on them by the pandemic, combined with America's growing political factionalism, threatened their bonds with community and family. Something had to change. Maggie's surprising answer: buy a boat, learn to pilot it, and embark on the Great Loop. For nine months Bruce and Maggie navigated rivers, coastal waters, lakes, locks, and loss. Against all odds, they conquered the Loop, and along the way found common cause across political divides with new friends while blowing the walls off their world. Bruce and Maggie Tate were spiraling downward. Normally outgoing and cheerful, Maggie was broken down by pandemic isolation. Bruce, facing asthma, heart disease and Covid-related professional issues, was sure that the virus and his comorbidities would kill him. And the plant-based diet he had just started made him wish it would hurry up. Meanwhile, their country seemed to be crumbling into warring factions. That was when Maggie made a life-changing decision. With no experience, knowing little about seafaring, inboard motors, or navigation, she and Bruce and the family dog decided to take on the Great Loop, a six-thousand-mile journey down inland rivers, around the Gulf and Atlantic coasts, and across the Great Lakes. They had to navigate canals and locks, were threatened by dangerous seas, and even had to deal with heartbreaking loss. But along the way, they made new lifelong friends and were forever changed. When, in a time of great divisiveness, two broken people took on the challenge of their lives, against all odds they found common cause across political divides and made themselves whole again.
Ruby on Rails Background Jobs with Sidekiq
by David B. CopelandOne of the best ways to improve your Rails app’s performance is to use background jobs with Sidekiq. While Sidekiq is easy to get set up, you need to do more than just move code around to reap the benefits. In this book, you’ll get solutions to what sort of code should go into a Sidekiq job and how to manage those jobs. You’ll create a Sidekiq configuration that will serve as a solid foundation for your app, including how to be notified when jobs inevitably fail. You’ll then tame alerting fatigue by designing idempotent jobs that can be safely retried in the face of the types of transient failures that are common in networked applications, all without alerting you until action is needed. With that foundation, you’ll get a conceptual framework for general monitoring and alerting around your Sidekiq installation and the Redis database it uses, as well as practical tips for organizing the code around your Sidekiq jobs. You’ll also learn valuable testing strategies for code that uses Sidekiq jobs. In no time at all you’ll build a Rails app using Sidekiq that is efficient, manageable, and sustainable. Using Sidekiq for background jobs is a great way to scale and grow your app. This book will give you a solid, practical foundation for creating resilient, well-tested, self-healing code that uses background jobs. You’ll be able to simulate real-world failure modes and learn how to write idempotent code that can be safely run with Sidekiq. Buy this DRM-free Pragmatic Bookshelf ebook today!Using Sidekiq for background jobs is a great way to scale and grow your app. This book will give you a solid, practical foundation for creating resilient, well-tested, self-healing code that uses background jobs. You’ll be able to simulate real-world failure modes and learn how to write idempotent code that can be safely run with Sidekiq.
From Objects to Functions: Build Your Software Faster And Safer With Functional Programming And Kotlin
by Uberto BarbiniBuild applications quicker and with less effort using functional programming and Kotlin. Learn by building a complete application, from gathering requirements to delivering a microservice architecture following functional programming principles. Learn how to implement CQRS and EventSourcing in a functional way to map the domain into code better and to keep the cost of change low for the whole application life cycle. If you're curious about functional programming or you are struggling with how to put it into practice, this guide will help you increase your productivity composing small functions together instead of creating fat objects. Switching to the functional paradigm isn't easy when you're used to object-oriented programming. You need more than just lambdas and mapping over collections to get a declarative style and disentangle the state from the computations. Use transformations and compositions to help you write less code with better results. Boost your productivity and harness the power of functional programming by creating real-world applications rather than focusing on theoretical concepts. Work through a series of short exercises to find and compose pure functions, and create data structures that work like algebra. Get rid of mutable state in your software to eliminate the main source of bugs. Apply CQRS and EventSourcing patterns to translate stakeholder requirements into functional design and then into code. See how Kotlin's easy-to-learn syntax and functional-friendly approach make it a great option for a pragmatic language that integrates well with existing Java code and libraries. Leverage functional programming to build and deliver robust applications in less time and with fewer defects. What You Need: The code in this book is designed to allow you to build your application from scratch on Windows, Mac and Linux. You will need a recent IDE, we recommend IntelliJ Community Edition, and Kotlin 1.3.x or later.
Functional Programming in Java
by Venkat SubramaniamImagine writing Java code that reads like the problem statement, code that's highly expressive, concise, easy to read and modify, and has reduced complexity. With the functional programming capabilities in Java, that's not a fantasy. This book will guide you from the familiar imperative style through the practical aspects of functional programming, using plenty of examples. Apply the techniques you learn to turn highly complex imperative code into elegant and easy-to-understand functional-style code. Updated to the latest version of Java, this edition has four new chapters on error handling, refactoring to functional style, transforming data, and idioms of functional programming. Don't struggle with the limitations of the imperative style; instead learn to combine object-oriented programming with the functional style to reduce the accidental complexity. Harness the functional programming capabilities of Java to create applications where the program reveals its intentions and your team can quickly understand and modify code to align with changing business requirements. Unlock the power of lambda expressions and the Streams API to turn the oft-written spaghetti code into highly concise, expressive, elegant, and maintainable code. See how Streams make the arduous task of parallelizing code as easy as flipping a switch when superior speed is necessary. Apply design patterns built around lambda expressions, safely manage resource allocations, use memoization, and learn to transform data into different forms, all while honoring immutability, and providing thread safety to leverage lazy evaluation for efficiency and parallel execution for performance. Move beyond the basics, explore the idioms for writing functional programs. Learn to think functionally by refactoring legacy code into the functional style. And, if your code runs aground due to failures, learn to properly handle errors the functional way.Don't drown in theory; instead learn the practical functional programming techniques to create superior Java code.What You Need:Java version 8 or newer.
Effective Haskell
by Rebecca SkinnerPut the power of Haskell to work in your programs, learning from an engineer who uses Haskell daily to get practical work done efficiently. Leverage powerful features like Monad Transformers and Type Families to build useful applications. Realize the benefits of a pure functional language, like protecting your code from side effects. Manage concurrent processes fearlessly. Apply functional techniques to working with databases and building RESTful services. Don't get bogged down in theory, but learn to employ advanced programming concepts to solve real-world problems. Don't just learn the syntax, but dive deeply into Haskell as you build efficient, well-tested programs. Haskell is a pure functional programming language with a rich ecosystem of tools and libraries. Designed to push the boundaries of programming, it offers unparalleled power for building reliable and maintainable systems. But to unleash that power, you need a guide. Effective Haskell is that guide. Written by an engineer who understands how to apply Haskell to the real world and uses it daily to get practical work done, it is your ticket to Haskell mastery.Gain deep understanding of how Haskell deals with IO and the outside world by writing a complete Haskell application that does several different kinds of IO. Reinforce your learnings with practice exercises in every chapter.Write stable and performant code using Haskell's type system, code that is easier to grow and refactor. Leverage the power of pure functional programming to improve collaboration, make concurrency safe and easy, and make large code bases manageable.Implement type-safe web services, write generative tests, design strongly typed embedded domain-specific languages, and build applications that exploit parallelism and concurrency without fear of deadlocks and race conditions. Create and deploy cloud-native Haskell applications. Master the performance characteristics of functional applications to make them run faster and use less memory.Write Haskell programs that solve real-world business problems.What You Need:Intel based Mac, M1 Macs, Linux PC, or Windows with WSL2ghcup (http://www. Haskell.org/ghcup/)An active internet connection will be required for some projects.
Agile Web Development with Rails 7
by Sam Ruby Dave ThomasRails 7 completely redefines what it means to produce fantastic user experiences and provides a way to achieve all the benefits of single-page applications - at a fraction of the complexity. Rails 7 integrates the Hotwire frameworks of Stimulus and Turbo directly as the new defaults, together with that hot newness of import maps. The result is a toolkit so powerful that it allows a single individual to create modern applications upon which they can build a competitive business. The way it used to be. Ruby on Rails helps you produce high-quality, beautiful-looking web applications quickly - you concentrate on creating the application, and Rails takes care of the details. Rails 7 brings many improvements, and this edition is updated to cover the new features and changes in best practices. We start with a step-by-step walkthrough of building a real application, and in-depth chapters look at the built-in Rails features. Follow along with an extended tutorial as you write a web-based store application. Eliminate tedious configuration and housekeeping, seamlessly incorporate JavaScript, send and receive emails, manage background jobs with ActiveJob, and build real-time features using WebSockets and ActionCable. Test your applications as you write them using the built-in unit, integration, and system testing frameworks, internationalize your applications, and deploy your applications easily and securely. Rails 1.0 was released in December 2005. This book was there from the start, and didn't just evolve alongside Rails, it evolved with Rails. It has been developed in consultation with the Rails core team. In fact, Rails itself is tested against the code in this book. What You Need: All you need is a Windows, Mac OS X, or Linux machine to do development on. This book will take you through the steps to install Rails and its dependencies. If you aren't familiar with the Ruby programming language, this book contains a chapter that covers the basics necessary to understand the material in the book.
Practical A/B Testing: Creating Experimentation-driven Products
by Leemay NasseryWhether you're a catalyst for organizational change or have the support you need to create an engineering culture that embraces A/B testing, this book will help you do it right. The step-by-step instructions will demystify the entire process, from constructing an A/B test to breaking down the decision factors to build an engineering platform. When you're ready to run the A/B test of your dreams, you'll have the perfect blueprint.With smart, tactful approaches to orchestrating A/B testing on a product, you'll quickly discover how to reap all the benefits that A/B testing has to offer - benefits that span your users, your product, and your team. Take the reins today, and be the change you want to see in your engineering and product organizations.Develop a hypothesis statement that's backed with metrics that demonstrate if your prediction for the experiment is correct. Build more inclusive products by leveraging audience segmentation strategies and ad-hoc post analysis to better understand the impact of changes on specific user groups. Determine which path is best for your team when deciding whether to go with a third-party A/B test framework or to build the A/B testing platform in-house. And finally, learn how to cultivate an experimentation-friendly culture within your team.Leverage the A/B testing methodology to demonstrate the impact of changes on a product to your users, your key business metrics, and the way your team works together. After all, if you aren't measuring the impact of the changes you make, how will you know if you're truly making improvements?
Creating Software with Modern Diagramming Techniques: Build Better Software With Mermaid
by Ashley PeacockDiagrams communicate relationships more directly and clearly than words ever can. Using only text-based markup, create meaningful and attractive diagrams to document your domain, visualize user flows, reveal system architecture at any desired level, or refactor your code. With the tools and techniques this book will give you, you'll create a wide variety of diagrams in minutes, share them with others, and revise and update them immediately on the basis of feedback. Adding diagrams to your professional vocabulary will enable you to work through your ideas quickly when working on your own code or discussing a proposal with colleagues. Expand your professional vocabulary by learning to communicate with diagrams as easily and naturally as speaking or writing. This book will provide you with the skills and tools to turn ideas into clear, meaningful, and attractive diagrams in mere minutes, using nothing more complicated than text-based markup. You'll learn what kinds of diagrams are suited to each of a variety of use cases, from documenting your domain to understanding how complex code pieces together. Model your software's architecture, creating diagrams focused broadly or narrowly, depending on the audience. Visualize application and user flows, design database schemas, and use diagrams iteratively to design and refactor your application. You'll be able to use technical diagramming to improve your day-to-day workflow. You will better understand the codebase you work in, communicate ideas more effectively and immediately with others, and more clearly document the architecture with C4 diagrams. Manually creating diagrams is cumbersome and time-consuming. You'll learn how to use text-based tools like Mermaid to rapidly turn ideas into diagrams. And You'll learn how to keep your diagrams up to date and seamlessly integrated into your engineering workflow. You'll be better at visualizing and communicating when you add diagrams to your standard vocabulary. What You Need: A Mac or PC A GitHub account
Designing Data Governance from the Ground Up: Six Steps To Build A Data-driven Culture
by Lauren MaffeoBusinesses own more data than ever before, but it's of no value if you don't know how to use it. Data governance manages the people, processes, and strategy needed for deploying data projects to production. But doing it well is far from easy: Less than one fourth of business leaders say their organizations are data driven. In Designing Data Governance from the Ground Up, you'll build a cross-functional strategy to create roadmaps and stewardship for data-focused projects, embed data governance into your engineering practice, and put processes in place to monitor data after deployment. In the last decade, the amount of data people produced grew 3,000 percent. Most organizations lack the strategy to clean, collect, organize, and automate data for production-ready projects. Without effective data governance, most businesses will keep failing to gain value from the mountain of data that's available to them.There's a plethora of content intended to help DataOps and DevOps teams reach production, but 90 percent of projects trained with big data fail to reach production because they lack governance.This book shares six steps you can take to build a data governance strategy from scratch. You'll find a data framework, pull together a team of data stewards, build a data governance team, define your roadmap, weave data governance into your development process, and monitor your data in productionWhether you're a chief data officer or individual contributor, this book will show you how to manage up, get the buy-in you need to build data governance, find the right colleagues to co-create data governance, and keep them engaged for the long haul.