Unit Testing: Principles, Practices, and Patterns


Vladimir Khorikov - 2019
    You’ll learn to spot which tests are performing, which need refactoring, and which need to be deleted entirely! Upgrade your testing suite with new testing styles, good patterns, and reliable automated testing.

Deep Learning


Ian Goodfellow - 2016
    Because the computer gathers knowledge from experience, there is no need for a human computer operator to formally specify all the knowledge that the computer needs. The hierarchy of concepts allows the computer to learn complicated concepts by building them out of simpler ones; a graph of these hierarchies would be many layers deep. This book introduces a broad range of topics in deep learning.The text offers mathematical and conceptual background, covering relevant concepts in linear algebra, probability theory and information theory, numerical computation, and machine learning. It describes deep learning techniques used by practitioners in industry, including deep feedforward networks, regularization, optimization algorithms, convolutional networks, sequence modeling, and practical methodology; and it surveys such applications as natural language processing, speech recognition, computer vision, online recommendation systems, bioinformatics, and videogames. Finally, the book offers research perspectives, covering such theoretical topics as linear factor models, autoencoders, representation learning, structured probabilistic models, Monte Carlo methods, the partition function, approximate inference, and deep generative models.Deep Learning can be used by undergraduate or graduate students planning careers in either industry or research, and by software engineers who want to begin using deep learning in their products or platforms. A website offers supplementary material for both readers and instructors.

The Society of Mind


Marvin Minsky - 1985
    Mirroring his theory, Minsky boldly casts The Society of Mind as an intellectual puzzle whose pieces are assembled along the way. Each chapter -- on a self-contained page -- corresponds to a piece in the puzzle. As the pages turn, a unified theory of the mind emerges, like a mosaic. Ingenious, amusing, and easy to read, The Society of Mind is an adventure in imagination.

Change by Design: How Design Thinking Transforms Organizations and Inspires Innovation


Tim Brown - 2009
    The reality is that most innovations come from a process of rigorous examination through which great ideas are identified and developed before being realized as new offerings and capabilities.This book introduces the idea of design thinking‚ the collaborative process by which the designer′s sensibilities and methods are employed to match people′s needs not only with what is technically feasible and a viable business strategy. In short‚ design thinking converts need into demand. It′s a human−centered approach to problem solving that helps people and organizations become more innovative and more creative.Design thinking is not just applicable to so−called creative industries or people who work in the design field. It′s a methodology that has been used by organizations such as Kaiser Permanente to icnrease the quality of patient care by re−examining the ways that their nurses manage shift change‚ or Kraft to rethink supply chain management. This is not a book by designers for designers; this is a book for creative leaders seeking to infuse design thinking into every level of an organization‚ product‚ or service to drive new alternatives for business and society.

Developing Products in Half the Time: New Rules, New Tools


Preston G. Smith - 1991
    Rather than pursuing development speed at any price, the authors emphasize subjecting time-to-market decisions to the same hard-nosed business logic used for other management decisions. "Developing Products" is unique in providing tools for trading off schedule against other business objectives. It integrates powerful methods to manage risk and use resources effectively with proven techniques to accelerate product development.

The Paradox of Choice: Why More Is Less


Barry Schwartz - 2004
    Whether we're buying a pair of jeans, ordering a cup of coffee, selecting a long-distance carrier, applying to college, choosing a doctor, or setting up a 401K, everyday decisions have become increasingly complex due to the overwhelming abundance of choice with which we are presented. In The Paradox of Choice, Barry Schwartz explains why too much of a good thing has proven detrimental to our psychological and emotional well-being. In accessible, engaging, and anecdotal prose, Schwartz explains how a culture that thrives on the availability of constantly evolving options can also foster profound dissatisfaction and self-blame in individuals, which can lead to a paralysis in decision making and, in some cases, depression. With the latest studies on how we make choices in our personal and professional lives, Schwartz offers practical advice on how to focus on the right choices, and how to derive greater satisfaction from choices that we do make.

Java Software Solutions: Foundations of Program Design


John Lewis - 1997
     This new edition has an earlier evolution of object concepts, developed in a way that capitalizes on the power of objects without overwhelming beginning programmers. It includes all new Java 5 topics, including Scanner class, enumerated types, autoboxing, variable length parameter lists, the enhanced for loop, and generic types. This is in depth coverage on GUI applications. This book is appropriate for beginning programmers who want to learn to program with Java as well as experienced programmers who want to add Java to their skill-set.

Imagine: How Creativity Works


Jonah Lehrer - 2012
    Shattering the myth of muses, higher powers, even creative “types,” Jonah Lehrer demonstrates that creativity is not a single gift possessed by the lucky few. It’s a variety of distinct thought processes that we can all learn to use more effectively.Lehrer reveals the importance of embracing the rut, thinking like a child, daydreaming productively, and adopting an outsider’s perspective (travel helps). He unveils the optimal mix of old and new partners in any creative collaboration, and explains why criticism is essential to the process. Then he zooms out to show how we can make our neighborhoods more vibrant, our companies more productive, and our schools more effective.You’ll learn about Bob Dylan’s writing habits and the drug addictions of poets. You’ll meet a Manhattan bartender who thinks like a chemist, and an autistic surfer who invented an entirely new surfing move. You’ll see why Elizabethan England experienced a creative explosion, and how Pixar’s office space is designed to spark the next big leap in animation.Collapsing the layers separating the neuron from the finished symphony, Imagine reveals the deep inventiveness of the human mind, and its essential role in our increasingly complex world. http://www.jonahlehrer.com/

xUnit Test Patterns: Refactoring Test Code


Gerard Meszaros - 2003
    An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge. xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable--and far more cost-effective. Loaded with information, this book feels like three books in one. The first part is a detailed tutorial on test automation that covers everything from test strategy to in-depth test coding. The second part, a catalog of 18 frequently encountered "test smells," provides trouble-shooting guidelines to help you determine the root cause of problems and the most applicable patterns. The third part contains detailed descriptions of each pattern, including refactoring instructions illustrated by extensive code samples in multiple programming languages. Topics covered includeWriting better tests--and writing them faster The four phases of automated tests: fixture setup, exercising the system under test, result verification, and fixture teardown Improving test coverage by isolating software from its environment using Test Stubs and Mock Objects Designing software for greater testability Using test "smells" (including code smells, behavior smells, and project smells) to spot problems and know when and how to eliminate them Refactoring tests for greater simplicity, robustness, and execution speed This book will benefit developers, managers, and testers working with any agile or conventional development process, whether doing test-driven development or writing the tests last. While the patterns and smells are especially applicable to all members of the xUnit family, they also apply to next-generation behavior-driven development frameworks such as RSpec and JBehave and to other kinds of test automation tools, including recorded test tools and data-driven test tools such as Fit and FitNesse.Visual Summary of the Pattern Language Foreword Preface Acknowledgments Introduction Refactoring a Test PART I: The Narratives Chapter 1 A Brief Tour Chapter 2 Test Smells Chapter 3 Goals of Test Automation Chapter 4 Philosophy of Test Automation Chapter 5 Principles of Test Automation Chapter 6 Test Automation Strategy Chapter 7 xUnit Basics Chapter 8 Transient Fixture Management Chapter 9 Persistent Fixture Management Chapter 10 Result Verification Chapter 11 Using Test Doubles Chapter 12 Organizing Our Tests Chapter 13 Testing with Databases Chapter 14 A Roadmap to Effective Test Automation PART II: The Test Smells Chapter 15 Code Smells Chapter 16 Behavior Smells Chapter 17 Project Smells PART III: The Patterns Chapter 18 Test Strategy Patterns Chapter 19 xUnit Basics Patterns Chapter 20 Fixture Setup Patterns Chapter 21 Result Verification Patterns Chapter 22 Fixture Teardown Patterns Chapter 23 Test Double Patterns Chapter 24 Test Organization Patterns Chapter 25 Database Patterns Chapter 26 Design-for-Testability Patterns Chapter 27 Value Patterns PART IV: Appendixes Appendix A Test Refactorings Appendix B xUnit Terminology Appendix C xUnit Family Members Appendix D Tools Appendix E Goals and Principles Appendix F Smells, Aliases, and Causes Appendix G Patterns, Aliases, and Variations Glossary References Index "

Scalability Rules: 50 Principles for Scaling Web Sites


Martin L. Abbott - 2011
    It's an essential read for anyone dealing with scaling an online business."--Chris Lalonde, VP, Technical Operations and Infrastructure Architecture, Bullhorn "Abbott and Fisher again tackle the difficult problem of scalability in their unique and practical manner. Distilling the challenges of operating a fast-growing presence on the Internet into 50 easy-to understand rules, the authors provide a modern cookbook of scalability recipes that guide the reader through the difficulties of fast growth."--Geoffrey Weber, Vice President, Internet Operations, Shutterfly "Abbott and Fisher have distilled years of wisdom into a set of cogent principles to avoid many nonobvious mistakes."--Jonathan Heiliger, VP, Technical Operations, Facebook "In "The Art of Scalability," the AKF team taught us that scale is not just a technology challenge. Scale is obtained only through a combination of people, process, "and "technology. With "Scalability Rules," Martin Abbott and Michael Fisher fill our scalability toolbox with easily implemented and time-tested rules that once applied will enable massive scale."--Jerome Labat, VP, Product Development IT, Intuit "When I joined Etsy, I partnered with Mike and Marty to hit the ground running in my new role, and it was one of the best investments of time I have made in my career. The indispensable advice from my experience working with Mike and Marty is fully captured here in this book. Whether you're taking on a role as a technology leader in a new company or you simply want to make great technology decisions, "Scalability Rules "will be the go-to resource on your bookshelf."--Chad Dickerson, CTO, Etsy ""Scalability Rules "provides an essential set of practical tools and concepts anyone can use when designing, upgrading, or inheriting a technology platform. It's very easy to focus on an immediate problem and overlook issues that will appear in the future. This book ensures strategic design principles are applied to everyday challenges."--Robert Guild, Director and Senior Architect, Financial Services "An insightful, practical guide to designing and building scalable systems. A must-read for both product-building and operations teams, this book offers concise and crisp insights gained from years of practical experience of AKF principals. With the complexity of modern systems, scalability considerations should be an integral part of the architecture and implementation process. Scaling systems for hypergrowth requires an agile, iterative approach that is closely aligned with product features; this book shows you how."--Nanda Kishore, Chief Technology Officer, ShareThis "For organizations looking to scale technology, people, and processes rapidly or effectively, the twin pairing of "Scalability Rules "and "The Art of Scalability "are unbeatable. The rules-driven approach in "Scalability Rules "makes this not only an easy reference companion, but also allows organizations to tailor the Abbott and Fisher approach to their specific needs both immediately and in the future!"--Jeremy Wright, CEO, BNOTIONS.ca and Founder, b5media 50 Powerful, Easy-to-Use Rules for Supporting Hypergrowth in Any Environment "Scalability Rules" is the easy-to-use scalability primer and reference for every architect, developer, web professional, and manager. Authors Martin L. Abbott and Michael T. Fisher have helped scale more than 200 hypergrowth Internet sites through their consulting practice. Now, drawing on their unsurpassed experience, they present 50 clear, proven scalability rules-and practical guidance for applying them. Abbott and Fisher transform scalability from a "black art" to a set of realistic, technology-agnostic best practices for supporting hypergrowth in nearly any environment, including both frontend and backend systems. For architects, they offer powerful new insights for creating and evaluating designs. For developers, they share specific techniques for handling everything from databases to state. For managers, they provide invaluable help in goal-setting, decision-making, and interacting with technical teams. Whatever your role, you'll find practical risk/benefit guidance for setting priorities-and getting maximum "bang for the buck." - Simplifying architectures and avoiding "over-engineering"- Scaling via cloning, replication, separating functionality, and splitting data sets- Scaling out, not up- Getting more out of databases without compromising scalability- Avoiding unnecessary redirects and redundant double-checking- Using caches and content delivery networks more aggressively, without introducing unacceptable complexity- Designing for fault tolerance, graceful failure, and easy rollback- Striving for statelessness when you can; efficiently handling state when you must- Effectively utilizing asynchronous communication- Learning quickly from mistakes, and much more

Race After Technology: Abolitionist Tools for the New Jim Code


Ruha Benjamin - 2019
    Presenting the concept of the "New Jim Code," she shows how a range of discriminatory designs encode inequity by explicitly amplifying racial hierarchies; by ignoring but thereby replicating social divisions; or by aiming to fix racial bias but ultimately doing quite the opposite. Moreover, she makes a compelling case for race itself as a kind of technology, designed to stratify and sanctify social injustice in the architecture of everyday life.This illuminating guide provides conceptual tools for decoding tech promises with sociologically informed skepticism. In doing so, it challenges us to question not only the technologies we are sold but also the ones we ourselves manufacture.If you adopt this book for classroom use in the 2019-2020 academic year, the author would be pleased to arrange to Skype to a session of your class. If interested, enter your details in this sign-up sheet https: //buff.ly/2wJsvZr

Seeing What Others Don't: The Remarkable Ways We Gain Insights


Gary Klein - 2013
    We also need insights into the everyday things that frustrate and confuse us so that we can more effectively solve problems and get things done. Yet we know very little about when, why, or how insights are formed—or what blocks them. In Seeing What Others Don't, renowned cognitive psychologist Gary Klein unravels the mystery.Klein is a keen observer of people in their natural settings—scientists, businesspeople, firefighters, police officers, soldiers, family members, friends, himself—and uses a marvelous variety of stories to illuminate his research into what insights are and how they happen. What, for example, enabled Harry Markopolos to put the finger on Bernie Madoff? How did Dr. Michael Gottlieb make the connections between different patients that allowed him to publish the first announcement of the AIDS epidemic? What did Admiral Yamamoto see (and what did the Americans miss) in a 1940 British attack on the Italian fleet that enabled him to develop the strategy of attack at Pearl Harbor? How did a “smokejumper” see that setting another fire would save his life, while those who ignored his insight perished? How did Martin Chalfie come up with a million-dollar idea (and a Nobel Prize) for a natural flashlight that enabled researchers to look inside living organisms to watch biological processes in action?Klein also dissects impediments to insight, such as when organizations claim to value employee creativity and to encourage breakthroughs but in reality block disruptive ideas and prioritize avoidance of mistakes. Or when information technology systems are “dumb by design” and block potential discoveries. Both scientifically sophisticated and fun to read, Seeing What Others Don't shows that insight is not just a “eureka!” moment but a whole new way of understanding.

Interviewing Users: How to Uncover Compelling Insights


Steve Portigal - 2013
    Everyone can ask questions, right? Unfortunately, that's not the case. Interviewing Users provides invaluable interviewing techniques and tools that enable you to conduct informative interviews with anyone. You'll move from simply gathering data to uncovering powerful insights about people.Interviewing Users will explain how to succeed with interviewing, including:* Embracing how other people see the world* Building rapport to create engaging and exciting interactions* Listening in order to build rapport.With this book, Steve Portigal uses stories and examples from his 15 years of experience to show how interviewing can be incorporated into the design process, helping you learn the best and right information to inform and inspire your design.

Make It So: Interaction Design Lessons From Science Fiction


Nathan Shedroff - 2012
    Freed from the rigorous constraints of designing for real users, sci-fi production designers develop blue-sky interfaces that are inspiring, humorous, and even instructive. By carefully studying these "outsider" user interfaces, designers can derive lessons that make their real-world designs more cutting edge and successful.

Willful Blindness: Why We Ignore the Obvious at Our Peril


Margaret Heffernan - 2011
    A distinguished businesswoman and writer, she examines the phenomenon and traces its imprint in our private and working lives, and within governments and organizations, and asks: What makes us prefer ignorance? What are we so afraid of? Why do some people see more than others? And how can we change?We turn a blind eye in order to feel safe, to avoid conflict, to reduce anxiety, and to protect prestige. Greater understanding leads to solutions, and Heffernan shows how--by challenging our biases, encouraging debate, discouraging conformity, and not backing away from difficult or complicated problems--we can be more mindful of what's going on around us and be proactive instead of reactive.Covering everything from our choice of mates to the SEC, Bernard Madoff's investors, the embers of BP's refinery, the military in Afghanistan, and the dog-eat-dog world of subprime mortgage lenders, this provocative book demonstrates how failing to see--or admit to ourselves or our colleagues--the issues and problems in plain sight can ruin private lives and bring down corporations. Heffernan explains how willful blindness develops before exploring ways that institutions and individuals can combat it. In the tradition of Malcolm Gladwell and Nassim Nicholas Taleb, Margaret Heffernan's Willful Blindness, is a tour de force on human behavior that will open your eyes.