Best of
Software

1

Kubernetes in Action, Second Edition


Marko Luksa
    Kubernetes in Action, Second Edition is a fully-updated and comprehensive guide to developing and running applications in a Kubernetes environment.Kubernetes is an essential tool for anyone deploying and managing cloud-native applications. It lays out a complete introduction to container technologies and containerized applications along with practical tips for efficient deployment and operation. This revised edition of the bestselling Kubernetes in Action contains new coverage of the Kubernetes architecture, including the Kubernetes API, and a deep dive into managing a Kubernetes cluster in production. In Kubernetes in Action, Second Edition, you'll start with an overview of how Docker containers work with Kubernetes and move quickly to building your first cluster. You'll gradually expand your initial application, adding features and deepening your knowledge of Kubernetes architecture and operation. As you navigate this comprehensive guide, you'll also appreciate thorough coverage of high-value topics like monitoring, tuning, and scaling. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

The Rust Programming Language


Steve Klabnik
    This is the undisputed go-to guide to Rust, written by two members of the Rust core team, with feedback and contributions from 42 members of the community. The book assumes that you’ve written code in another programming language but makes no assumptions about which one, meaning the material is accessible and useful to developers from a wide variety of programming backgrounds.Known by the Rust community as "The Book," The Rust Programming Language includes concept chapters, where you’ll learn about a particular aspect of Rust, and project chapters, where you’ll apply what you’ve learned so far to build small programs.The Book opens with a quick hands-on project to introduce the basics then explores key concepts in depth, such as ownership, the type system, error handling, and fearless concurrency. Next come detailed explanations of Rust-oriented perspectives on topics like pattern matching, iterators, and smart pointers, with concrete examples and exercises--taking you from theory to practice.The Rust Programming Language will show you how to: Grasp important concepts unique to Rust like ownership, borrowing, and lifetimes Use Cargo, Rust’s built-in package manager, to build and maintain your code, including downloading and building dependencies Effectively use Rust’s zero-cost abstractions and employ your ownYou’ll learn to develop reliable code that’s speed and memory efficient, while avoiding the infamous and arcane programming pitfalls common at the systems level. When you need to dive down into lower-level control, this guide will show you how without taking on the customary risk of crashes or security holes and without requiring you to learn the fine points of a fickle toolchain.You’ll also learn how to create command line programs, build single- and multithreaded web servers, and much more.The Rust Programming Language fully embraces Rust’s potential to empower its users. This friendly and approachable guide will help you build not only your knowledge of Rust but also your ability to program with confidence in a wider variety of domains.

Professor Frisby's Mostly Adequate Guide to Functional Programming


Brian Lonsdorf
    We'll use the world's most popular functional programming language: JavaScript. Some may feel this is a poor choice as it's against the grain of the current culture which, at the moment, feels predominately imperative. However, I believe it is the best way to learn FP for several reasons:You likely use it every day at work.This makes it possible to practice and apply your acquired knowledge each day on real world programs rather than pet projects on nights and weekends in an esoteric FP language.We don't have to learn everything up front to start writing programs.In a pure functional language, you cannot log a variable or read a DOM node without using monads. Here we can cheat a little as we learn to purify our codebase. It's also easier to get started in this language since it's mixed paradigm and you can fall back on your current practices while there are gaps in your knowledge.The language is fully capable of writing top notch functional code.We have all the features we need to mimic a language like Scala or Haskell with the help of a tiny library or two. Object-oriented programming currently dominates the industry, but it's clearly awkward in JavaScript. It's akin to camping off of a highway or tap dancing in galoshes. We have to bind all over the place lest this change out from under us, we don't have classes[^Yet], we have various work arounds for the quirky behavior when the new keyword is forgotten, private members are only available via closures. To a lot of us, FP feels more natural anyways.That said, typed functional languages will, without a doubt, be the best place to code in the style presented by this book. JavaScript will be our means of learning a paradigm, where you apply it is up to you. Luckily, the interfaces are mathematical and, as such, ubiquitous. You'll find yourself at home with swiftz, scalaz, haskell, purescript, and other mathematically inclined environments.

37 Things One Architect Knows


Gregor Hohpe
    

Advanced Web Application Architecture


Matthias Noback
    

Laravel Queues in Action


Mohamed Said
    These are challenges I met while building products at Laravel and others collected while supporting the framework users for the past four years.But before the challenges—and because every good technical book includes a crash course—we will explore the key components of a queue system, see how queues are used in Laravel, and understand why we need to use them.Keep GoingI wrote this book with three goals in mind; I wanted it to be:Practical; more code than talk.Short; comprehensive yet concise.Good looking.We studied differential equations in high school, but because we couldn't see any use case for them, they were forgotten minutes after the final exam, right? To fix that, I covered every queue configuration and technique by using it to solve a real-world problem.I also show you the rough edges by hitting them. We'll sit in a flight simulator and let our plane crash before I explain why we crashed and how to avoid that.Regarding the good looking part. You will get the book PDF in two versions; light and dark. I put a lot of effort into making both versions nice to look at. Because I believe a technical book doesn't have to look boring.

Agile Technical Practices Distilled


Pedro Moreira Santos
    The readers will first learn individual practices (TDD, Refactoring, Pair Programming, simple design and more). Afterwards they will focus on principles of Software Design, their relationships and systemic reasons, ending with a business oriented and sociotechnical perspective.

The Complete Guide to Rails Performance


Nate Berkopec
    https://www.railsspeed.com/

Unix Network Programming


W. Richard Stevens
    

Learn Go with tests


Chris James
    

Web Hacking 101


Peter Yaworski
    With few exceptions, existing books are overly technical, only dedicate a single chapter to website vulnerabilities or don't include any real world examples. This book is different.Using publicly disclosed vulnerabilities, Web Hacking 101 explains common web vulnerabilities and will show you how to start finding vulnerabilities and collecting bounties. With over 30 examples, the book covers topics like:HTML InjectionCross site scripting (XSS)Cross site request forgery (CSRF)Open RedirectsRemote Code Execution (RCE)Application Logicand more...Each example includes a classification of the attack, a report link, the bounty paid, easy to understand description and key takeaways. After reading this book, your eyes will be opened to the wide array of vulnerabilities that exist and you'll likely never look at a website or API the same way.

Testing Rails


Josh Steiner
    An effective test suite guides you towards maintainable code. It allows you to make major changes to your application and be confident that everything still works.Testing Rails is a practical approach to learning testing. We'll discuss the tools and processes we use every day at thoughtbot, as well as common anti-patterns and solutions to real world problems with plenty of examples.https://gumroad.com/l/testing-rails/?...

You Don't Know JS Yet: Scope & Closures


Kyle Simpson
    On top of lexical scope, closure empowers functions with memory, preserving variables across calls. Modules leverage scope and closures to encapsulate data and behavior.

Tame The Flow: Hyper-Productive Knowledge-Work Management


Steve Tendon
    Hyper-productive teams and organizations have always existed, both in the business and military fields. Naturally, they are rare statistical outliers. The main focus of this book is how one can build and manage a hyper-productive knowledge-work organization, by taking as a source of inspiration the experience matured in the field of software engineering. Software development organizations — like Microsoft, Google, Oracle; but also high profile open source organizations like Apache, Ubuntu, Drupal and others — can be considered as archetypal knowledge­based organizations, because the totality of artifacts produced by a software business is purely immaterial. Software development organizations were the first one to confront the challenges of completely immaterial processes, entirely based on knowledge. They were also the first organizations to experience the socio-technological impact of information technology (especially the development of computer networks) on their internal work processes and organizational structures. Due to its frantic and exponential pace of innovation, the field of software development also became a testbed for a variety of approaches and methods for managing immaterial knowledge work, typically under the form of software development processes and methodologies. Numerous alternatives evolved over a relatively short period, with a lot of healthy competition in between them; with vehement “holy wars” between proponents of one approach or another; and with many anecdotes about both successes and failures. Valuable insights can be gained by studying the organizational and managerial approaches successfully adopted by the industry that produced the information revolution — that is, those organizations that engage first hand in software development — and then by extrapolating those organizational and managerial processes to the more general case of knowledge­based organizations. Nowadays, the majority of organizations have become knowledge-based. Even the most resilient and traditional "brick­ and ­mortar" businesses are forced to become knowledge­based organizations. For instance, consider the impact of large­scale 3D printing on the construction industry ("Contour Crafting"), where bricks and mortar literally become software. Or nanoscale technologies, where manufacturing at the sub-atomic level becomes software. The key tenet of this book is that organizational hyper-productivity stems from the two Noble Patterns of "Unity of Purpose" and "Community of Trust." The leaders and the top executives of the organization play a critical role in creating the conditions for these patterns to become effective. Management must play an active role in leading the organization towards these conditions. In the case of software (and knowledge) organizations, management will have to gain a deep understanding of the nature of software or knowledge work; and that nature is rooted in empiricism. Top executives already have that understanding; though they might not be aware of it, and – unfortunately – do not act consequently. Management must create the conditions for the development of a learning organization. Financial responsibility must be exercised differently, and in way that is compatible with the empirical nature of knowledge work. Key roles must be nurtured, while each team needs to develop their own shared vision of their purpose. Practical help comes from many sources, and we will look specifically, into like: Kanban, Scrum and the Theory of Constraints. The Theory of Constraints nurtures Unity of Purpose and Community of Trust in many ways. In particular, the Theory of Constraints squarely addresses the need to arrive at common metrics by which all and everybody are driven; and overcomes the structural impediments (rooted in the use of cost accounting and efficiency metrics for management purposes) which are the sources of divergence of purpose and hidden agendas. Kanban and Scrum are widely used in modern knowledge work businesses. The Theory of Constraint can extend them in powerful ways, bringing more predictability of behavior of the system as a whole, as well as of the individuals. Their combination becomes a powerful breeding ground for the development of Unity of Purpose and Community of Trust. Both Kanban and Scrum can be extended with features of the Theory of Constraint, and help creating a hyper-productive organization. The book will present practical ways by which such combination might be realized.

Fullstack React Native


Devin Abbott
    Create beautiful mobile apps with JavaScript and React

Algebra-Driven Design


Sandy Maguire
    A how-to field guide on building leak-free abstractions and algebraically designing real-world applications.https://leanpub.com/algebra-driven-de...

PureScript by Example


Phil Freeman
    "PureScript By Example" will motivate functional programming techniques like maps, folds, type classes and monads by applying them to real-world problems such as form validation, AJAX callbacks and drawing with the canvas.

Powerful Command-Line Applications in Go


Ricardo Gerardi
    

Understanding Redux - 1


Ohans Emmanuel
    No. I don’t think that is it. It is just a tiny 2kb library.Take a look at the Redux community as a beginner, and you’re going to lose your mind fast. There’s NOT just Redux, but a whole lot of other supposed “associated libraries” to build real world apps.If you’ve spent some time doing a bit of research, then you’ve come across them already.There’s Redux, React-Redux, Redux-thunk, Redux-saga, Redux-promise, Reselect, Recompose and many more!As if that’s not enough, there’s also some Routing, Authentication, Server side rendering, Testing, and Bundling sprinkled on it.Gosh! That is overwhelming.This book is different. It covers just Redux, and does it well.What it coversCovers the basics super wellA deep understanding of the core Redux terminologiesHow to refactor an existing React application to use ReduxLearn to set up a Redux project from scratchHow to structure your Redux codeHandling typos and duplicatesSetting up a Redux storeGetting to know the Redux reducer - and why it is called a "reducer"Updating the UI in response to dispatched actionsKeeping a normalized state, and what that really means in plain, approachable language.Build a minimal Skype clone Contains 3 step by step examples, and 9 exercises to reinforce your knowledgeI want this!

Effective Go


Google
    

Software Mistakes and Tradeoffs: How to make good programming decisions


Tomasz Lelek
    You’ll explore real-world scenarios where poor understanding of tradeoffs lead to major problems down the road, to help you make better design decisions. Plus, with a little practice, you’ll be able to avoid the pitfalls that trip up even the most experienced developers.about the technologyCode performance versus simplicity. Delivery speed versus duplication. Flexibility versus maintainability—every decision you make in software engineering involves balancing tradeoffs. Often, decisions that look good at the design stage can prove problematic in practice. This book reveals the questions you need to be asking to make the right decisions for your own software tradeoffs.about the bookSoftware Mistakes and Tradeoffs teaches you how to make better decisions about designing, planning, and implementing applications. You’ll analyze real-world scenarios where the wrong tradeoff decisions were made, and discover what could have been done differently. The book lays out the pros and cons of different approaches and explores evergreen patterns that will always be relevant to software design.You’ll understand the consequences of certain decisions, like how code duplication impacts the coupling and evolution speed of your systems and how simple-sounding requirements can have hidden nuances with respect to date and time information. Discover how to efficiently narrow your optimization scope according to 80/20 Pareto principles and ensure consistency in your distributed systems. You’ll soon be able to apply the author’s hard-won experience to your own projects to pre-empt mistakes and take a more thoughtful approach to decision making.

A Unix shell in Ruby


Jesse Storimer
    In this book you're going to implement a Unix shell in pure Ruby code.

A Brief Course in Modern Math for Programmers


Vlad Petryshev
    The world is changing; we have to change, too. This book is dedicated to covering the issues that until recently were not very popular in software engineering: logic, monoids, algebraic structures, categories, and monads. All these topics are explained in the book, with no assumptions about the reader's educational background, with many examples. Most of the examples and explanations use two popular programming languages, JavaScript and Scala.The book has no theorems and almost no proofs. The purpose of the book is to expand the reader's imagination and to open the gates to the beautiful world of mathematics—at the same time keeping in mind the practical usability of its ideas and notions in our daily coding practice.

Practical Python and OpenCV


Adrian Rosebrock
    Quick start guide to learning the fundamentals of computer vision and image processing using Python and OpenCV.

Structured Computer Organization / Modern Operating Systems (2nd International Edition) / C Programming Language (2nd Revised Edition)


Andrew S. Tanenbaum
    

Microsoft Office Xp: Microsoft Office Specialist


Rachel Biheller Bunin
    Follow along as you cover a series of Skill Sets specific to the Office XP exam. Then test your understanding of each Skill Set by completing the hands-on projects at the end of the book. Target the skills you need to be successful. With this book as your guide, you won't need to study anything extra--it's like getting a peek at the exam before you take it

The Illustrator 9 Wow! Book


Sharon Steuer
    It's packed with lush, four-color images and tips on how the book's featured artists used Illustrator to create them. Clear, helpful instructions and numerous sidebars guide the reader through Illustrator's highlights, from basic to sophisticated techniques. With its layered work environment and its seamless integration with Web and graphics tools such as GoLive, InDesign, Photoshop and LiveMotion, Illustrator is a vital tool for anyone working in the graphics industry.

Computers in Chemical Engineering Education


Brice Carnahan
    

Adobe Dreamweaver CC 2018: The Professional Portfolio


Against The Clock Inc.
    With a heavy emphasis on CSS and HTML5, the projects in this book were developed to teach Dreamweaver’s toolset in the context of modern website design standards. You will learn to: Create, export, and remove site definitions from the Dreamweaver interface. Establish links between the pages of a site, as well as to external sites. Improve search-engine results and screen-reader functionality by defining appropriate page titles, file names, and image attributes. Apply appropriate HTML tags to various elements to create pages with the proper semantic structure. Define site structure with cascading style sheets (CSS) and Dreamweaver templates. Create form objects for collecting user-supplied information. Incorporate video clips and other enhanced elements to web sites. Explore interactive capabilities that are available in HTML5 and CSS3. Add interactivity using JavaScript libraries and jQuery objects. Build responsive pages using the Bootstrap framework.

Programming Pearls (2 Volumes Programming Pearls And More Programming Pearls: Confessions Of A Coder)


Jon L. Bentley
    

The Ultimate Guide to Fundamental Editing


Kent DuFault
    Just Take a Look at Some of What You’ll Discover:* Find out why Presets and Actions are doing you a disservice when attempting fundamental edits.* Learn how to accurately set your saturation levels without overdoing it.* Gain the knowledge to fix Chromatic Aberration (that you may not even know existed in your images).* Discover why the “Exposure” slider should NOT be your go to adjustment!* Learn how to improve your composition with a few fundamental edits-* Train yourself to accurately judge and correct color problems* Recognize what the different types of digital noise are… and how to specifically fix each one.* Discover why you MUST control the contrast in your images.* Learn how to master that mysterious setting called “Clarity”.And so much more! And Remember, all of the fundamental edits are covered in Photoshop, Lightroom and Elements. So it does NOT matter which processing software you prefer!

Functional Design and Architecture


Alexander Granin
    It aims to consolidate all the knowledge about how to create big applications in pure functional manner. This area is not yet covered well, but the community has invented a lot of approaches, and we need to make a comprehensive source of knowledge as it was done for Object-Oriented Programming already.https://graninas.com/functional-desig...

Learning Virtual Reality


Tony Parisi
    Learning Virtual Reality Developing Immersive Experiences And Applications For Desktop

Special Edition Using Adobe(r) Photoshop(r) 7 [With CDROM]


Peter Bauer
    In "Special Edition Using Photoshop 7," authors Peter Bauer and Jeff Foster combine deep technical expertise, Photoshop community involvement, teaching experience, and artistic talent. They offer numerous practical and creative tips to highlight clear explanations of both theory and technique. Full coverage is provided of all new tools and upgraded features in Photoshop 7, including: Macintosh OS X compliance (native mode and carbonized)An integrated image management systemAn improved painting engine for both PC and Mac versionsA more advanced web workflow capabilityAdded editing features

Beginning Visual C++ 5


Ivor Horton
    How? Well, it's not magic, just a great deal of experience, care, and thought about how people learn best. First, we build a solid understanding of the language. Then we teach practical programming skills by applying that knowledge in realistic examples. We go from the basics right to the cutting edge in easy steps. Where most "beginners" books stop, we carry on, giving you the confidence and knowledge to create professional applications you can be proud of.The Wrox PhilosophyOur aim is to make you successful by sharing the knowledge of experienced programmers at every stage in your career."I've been designing, programming and teaching people about computers for over 30 'years. All of the good things I have seen flowed from a deep knowledge of the problem and the tools to deal with it. I want you to succeed at the cutting edge of Windows programming by building on a solid bedrock of C ++ understanding.You'll need the discipline to work through the examples and experiment on your own, and to hang in there with me when things get tough. I'll help you, but you have to want to climb the mountain, and believe that it's worth becoming a real programmer".Who is this book for?This book is for anyone who wants to learn C ++ and Windows programming with Visual C ++ 5 and MFC. Although progress will be easier if you have some experience of a programming discipline, an adept newcomer will also succeed in taming object-oriented programming and writing real Windows applications.What does this book cover?- Contains a complete C ++ tutorial from first principles- Learn how to designand write object-oriented programs- Understand how and why MFC works- Find out how Windows works and how to make it work for you- Discover how to program menus, toolbars and dialogs- Control your program's output to the screen and printer- Create your own ActiveX controls using MFC and ATL- Each concept supported by thorough code examples- Challenging exercises and model solutions in every chapter- Proven teaching methods guarantee success

Backbone.Marionette.js A Gentle Introduction


David Sulc
    The style is the same as in my tutorials: explaining concepts step by step, so you fully understand what is going on, and why we're doing it. This book has great feedback, even from Marionette.js' creator (Derick Bailey):Seriously, why haven’t you bought [this book] yet?— Backbone.Marionette (@marionettejs) May 29, 2013And from Derick's foreword:This is the book that I wanted to write, but never had time to write. It is a complete and thorough introduction to building scalable applications with Marionette.js. Better still, it advocates and demonstrates the same patterns and principles that I use in my own applications. You owe it to yourself to work through all of the exercises in this book, even if you are a seasoned Backbone and Marionette developer. David has done a wonderful job of breaking down the architecture of large Marionette applications, lighting the path for each step of the journey.I've worked really hard to make this a great resource for learning Marionette the "right" way, even for total beginners: you'll gradually discover Marionette components, along with when/why to use them, and how to structure/refactor your code so it stays manageable even for large applications. After you've made it through the book, you'll be comfortable writing a Marionette application on your own.Exercises covering the basic concepts are included (with solutions), so you can check for yourself if you've properly understood the functionality that was covered in a given chapter.Grab your own copy today!