The Storytelling Animal: How Stories Make Us Human


Jonathan Gottschall - 2012
    We spin fantasies. We devour novels, films, and plays. Even sporting events and criminal trials unfold as narratives. Yet the world of story has long remained an undiscovered and unmapped country. It’s easy to say that humans are “wired” for story, but why?In this delightful and original book, Jonathan Gottschall offers the first unified theory of storytelling. He argues that stories help us navigate life’s complex social problems—just as flight simulators prepare pilots for difficult situations. Storytelling has evolved, like other behaviors, to ensure our survival.Drawing on the latest research in neuroscience, psychology, and evolutionary biology, Gottschall tells us what it means to be a storytelling animal. Did you know that the more absorbed you are in a story, the more it changes your behavior? That all children act out the same kinds of stories, whether they grow up in a slum or a suburb? That people who read more fiction are more empathetic?Of course, our story instinct has a darker side. It makes us vulnerable to conspiracy theories, advertisements, and narratives about ourselves that are more “truthy” than true. National myths can also be terribly dangerous: Hitler’s ambitions were partly fueled by a story.But as Gottschall shows in this remarkable book, stories can also change the world for the better. Most successful stories are moral—they teach us how to live, whether explicitly or implicitly, and bind us together around common values. We know we are master shapers of story. The Storytelling Animal finally reveals how stories shape us.

Domain-Driven Design: Tackling Complexity in the Heart of Software


Eric Evans - 2003
    "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric has lots of interesting stories, and he has a way with words. I see this book as essential reading for software developers--it is a future classic." --Ralph Johnson, author of Design Patterns "If you don't think you are getting value from your investment in object-oriented programming, this book will tell you what you've forgotten to do. "Eric Evans convincingly argues for the importance of domain modeling as the central focus of development and provides a solid framework and set of techniques for accomplishing it. This is timeless wisdom, and will hold up long after the methodologies du jour have gone out of fashion." --Dave Collins, author of Designing Object-Oriented User Interfaces "Eric weaves real-world experience modeling--and building--business applications into a practical, useful book. Written from the perspective of a trusted practitioner, Eric's descriptions of ubiquitous language, the benefits of sharing models with users, object life-cycle management, logical and physical application structuring, and the process and results of deep refactoring are major contributions to our field." --Luke Hohmann, author of Beyond Software Architecture "This book belongs on the shelf of every thoughtful software developer." --Kent Beck "What Eric has managed to capture is a part of the design process that experienced object designers have always used, but that we have been singularly unsuccessful as a group in conveying to the rest of the industry. We've given away bits and pieces of this knowledge...but we've never organized and systematized the principles of building domain logic. This book is important." --Kyle Brown, author of Enterprise Java(TM) Programming with IBM(R) WebSphere(R) The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process. Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development. Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis--refactoring not just the code but the model underlying the code--in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.Specific topics covered include:Getting all team members to speak the same language Connecting model and implementation more deeply Sharpening key distinctions in a model Managing the lifecycle of a domain object Writing domain code that is safe to combine in elaborate ways Making complex code obvious and predictable Formulating a domain vision statement Distilling the core of a complex domain Digging out implicit concepts needed in the model Applying analysis patterns Relating design patterns to the model Maintaining model integrity in a large system Dealing with coexisting models on the same project Organizing systems with large-scale structures Recognizing and responding to modeling breakthroughs With this book in hand, object-oriented developers, system analysts, and designers will have the guidance they need to organize and focus their work, create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.

Finite and Infinite Games: A Vision of Life as Play and Possibility


James P. Carse - 1986
    Infinite games are more mysterious -- and ultimately more rewarding. They are unscripted and unpredictable; they are the source of true freedom.In this elegant and compelling work, James Carse explores what these games mean, and what they can mean to you. He offers stunning new insights into the nature of property and power, of culture and community, of sexuality and self-discovery, opening the door to a world of infinite delight and possibility."An extraordinary little book . . . a wise and intimate companion, an elegant reminder of the real."-- Brain/Mind Bulletin

Getting Gamers: The Psychology of Video Games and Their Impact on the People Who Play Them


Jamie Madigan - 2015
    They can be addicting. They are available almost anywhere you go and are appealing to people of all ages. They can eat up our time, cost us money, even kill our relationships. But it's not all bad! This book will show that rather than being a waste of time, video games can help us develop skills, make friends, succeed at work, form good habits, and be happy. Taking the time to learn what's happening in our heads as we play and shop allows us to approach games and gaming communities on our own terms and get more out of them. With sales in the tens of billions of dollars each year, just about everybody is playing some kind of video game whether it's on a console, a computer, a web browser, or a phone. Much of the medium's success is built on careful (though sometimes unwitting) adherence to basic principles of psychology. This is something that's becoming even more important as games become more social, interactive, and sophisticated. This book offers something unique to the millions of people who play or design games: how to use an understanding of psychology to be a better part of their gaming communities, to avoid being manipulated when they shop and play, and to get the most enjoyment out of playing games. With examples from the games themselves, Jamie Madigan offers a fuller understanding of the impact of games on our psychology and the influence of psychology on our games.

Patterns of Enterprise Application Architecture


Martin Fowler - 2002
    Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned. Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology--from Smalltalk to CORBA to Java to .NET--the same basic design ideas can be adapted and applied to solve common problems. With the help of an expert group of contributors, Martin distills over forty recurring solutions into patterns. The result is an indispensable handbook of solutions that are applicable to any enterprise application platform. This book is actually two books in one. The first section is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book's lessons. The next section, the bulk of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information, as well as detailed code examples in Java or C#. The entire book is also richly illustrated with UML diagrams to further explain the concepts. Armed with this book, you will have the knowledge necessary to make important architectural decisions about building an enterprise application and the proven patterns for use when building them. The topics covered include - Dividing an enterprise application into layers - The major approaches to organizing business logic - An in-depth treatment of mapping between objects and relational databases - Using Model-View-Controller to organize a Web presentation - Handling concurrency for data that spans multiple transactions - Designing distributed object interfaces

Style: Toward Clarity and Grace


Joseph M. Williams - 1981
    A logical, expert, easy-to-use plan for achieving excellence in expression, Style offers neither simplistic rules nor endless lists of dos and don'ts. Rather, Joseph Williams explains how to be concise, how to be focused, how to be organized. Filled with realistic examples of good, bad, and better writing, and step-by-step strategies for crafting a sentence or organizing a paragraph, Style does much more than teach mechanics: it helps anyone who must write clearly and persuasively transform even the roughest of drafts into a polished work of clarity, coherence, impact, and personality."Buy Williams's book. And dig out from storage your dog-eared old copy of The Elements of Style. Set them side by side on your reference shelf."—Barbara Walraff, Atlantic"Let newcoming writers discover this, and let their teachers and readers rejoice. It is a practical, disciplined text that is also a pleasure to read."—Christian Century"An excellent book....It provides a sensible, well-balanced approach, featuring prescriptions that work."—Donald Karzenski, Journal of Business Communication"Intensive fitness training for the expressive mind."—Booklist(The college textbook version, Style: Ten Lessons in Clarity and Grace, 9th edition, is available from Longman. ISBN 9780321479358.)

Joel on Software


Joel Spolsky - 2004
    For years, Joel Spolsky has done exactly this at www.joelonsoftware.com. Now, for the first time, you can own a collection of the most important essays from his site in one book, with exclusive commentary and new insights from joel.

Effective Java


Joshua Bloch - 2001
    The principal enhancement in Java 8 was the addition of functional programming constructs to Java's object-oriented roots. Java 7, 8, and 9 also introduced language features, such as the try-with-resources statement, the diamond operator for generic types, default and static methods in interfaces, the @SafeVarargs annotation, and modules. New library features include pervasive use of functional interfaces and streams, the java.time package for manipulating dates and times, and numerous minor enhancements such as convenience factory methods for collections. In this new edition of Effective Java, Bloch updates the work to take advantage of these new language and library features, and provides specific best practices for their use. Java's increased support for multiple paradigms increases the need for best-practices advice, and this book delivers. As in previous editions, each chapter consists of several "items," each presented in the form of a short, standalone essay that provides specific advice, insight into Java platform subtleties, and updated code examples. The comprehensive descriptions and explanations for each item illuminate what to do, what not to do, and why. Coverage includes:Updated techniques and best practices on classic topics, including objects, classes, methods, libraries, and generics How to avoid the traps and pitfalls of commonly misunderstood subtleties of the platform Focus on the language and its most fundamental libraries, such as java.lang and java.util

Game Programming Gems


Mark DeLoura - 2000
    But instead of spending hours and hours trying to develop your own answers, now you can find out how the pros do it! Game Programming Gems is a hands-on, comprehensive resource packed with a variety of game programming algorithms written by experts from the game industry and edited by Mark DeLoura, former software engineering lead for Nintendo of America, Inc. and now the newly appointed editor-in-chief of Game Developer magazine. From animation and artificial intelligence to Z-buffering, lighting calculations, weather effects, curved surfaces, mutliple layer Internet gaming, to music and sound effects, all of the major techniques needed to develop a competitive game engine are covered. Game Programming Gems is written in a style accessible to individuals with a range of expertise levels. All of the source code for each algorithm is included and can be used by advanced programmers immediately. For aspiring programmers, there is a detailed tutorial to work through before attempting the code, and suggestions for possible modifications and optimizations are included as well.

Prisoner's Dilemma: John von Neumann, Game Theory, and the Puzzle of the Bomb


William Poundstone - 1992
    Though the answers may seem simple, their profound implications make the prisoner's dilemma one of the great unifying concepts of science. Watching players bluff in a poker game inspired John von Neumann--father of the modern computer and one of the sharpest minds of the century--to construct game theory, a mathematical study of conflict and deception. Game theory was readily embraced at the RAND Corporation, the archetypical think tank charged with formulating military strategy for the atomic age, and in 1950 two RAND scientists made a momentous discovery.Called the prisoner's dilemma, it is a disturbing and mind-bending game where two or more people may betray the common good for individual gain. Introduced shortly after the Soviet Union acquired the atomic bomb, the prisoner's dilemma quickly became a popular allegory of the nuclear arms race. Intellectuals such as von Neumann and Bertrand Russell joined military and political leaders in rallying to the preventive war movement, which advocated a nuclear first strike against the Soviet Union. Though the Truman administration rejected preventive war the United States entered into an arms race with the Soviets and game theory developed into a controversial tool of public policy--alternately accused of justifying arms races and touted as the only hope of preventing them.A masterful work of science writing, Prisoner's Dilemma weaves together a biography of the brilliant and tragic von Neumann, a history of pivotal phases of the cold war, and an investigation of game theory's far-reaching influence on public policy today. Most important, Prisoner's Dilemma is the incisive story of a revolutionary idea that has been hailed as a landmark of twentieth-century thought.

Game Coding Complete


Mike McShaffry - 2003
    The best description of the first edition comes from two Amazon reviewers; the first proclaiming, "I got the same feeling of enlightenment when reading this one as I did all those years ago when I read the classic book "Code Complete" and the second stating "This is the first game book I have read that I was sorry when I got to the end because there wasn't any more."For Game Coding Complete, Second Edition, McShaffry returns with many more of his highly popular, shoot-from the hips war stories and expert game programming insight that only a real insider could provide. McShaffry uses his experience as a leading programmer for Origin Systems, Microsoft, and Ion Storm a division of Eidos, to illustrate real-world techniques and solutions, including examples from his recent work on the major game, Thief Deadly Shadows. Game Coding Complete, Second Edition takes programmers through the complete process of developing a professional quality game using hundreds of insider tricks and techniques developed and perfect by the author from over a decade of game development experience. It covers a range of topics that will appeal to the most discriminating programmers such as key "gotcha" issues that could trip up even veteran programmers. The new edition features expanded coverage of 3D programming, several new chapters on game interface design, game audio, game scripting, game engine technology, code optimization, production and scheduling, plus it now includes a CD-ROM packed with valuable source code and game development tools. The appendix offers solid advice on starting your own game company. The C++ language is used to explain specific programming concepts with added discussion of development with C# and Managed DirectX programming.

Designing Virtual Worlds


Richard Bartle - 2003
    It's a tour de force of VW design, stunning in intellectual scope, spanning the literary, economic, sociological, psychological, physical, technological, and ethical underpinnings of design, while providing the reader with a deep, well-grounded understanding of VW design principles. It covers everything from MUDs to MOOs to MMORPGs, from text-based to graphical VWs.Designing Virtual Worlds brings a rich, well-developed approach to the design concepts behind virtual worlds. It is grounded in the earliest approaches to such designs, but the examples discussed in the book run the gamut from the earliest MUDs to the present-day MMORPG games mentioned above. It teaches the reader the actual, underlying design principles that many designers do not understand when they borrow or build from previous games. There is no other design book on the market in the area of online games and virtual worlds that provides the rich detail, historical context, and conceptual depth of Designing Virtual Worlds.

The Medium is the Massage


Marshall McLuhan - 1967
    Using a layout style that was later copied by Wired, McLuhan and coauthor/designer Quentin Fiore combine word and image to illustrate and enact the ideas that were first put forward in the dense and poorly organized Understanding Media. McLuhan's ideas about the nature of media, the increasing speed of communication, and the technological basis for our understanding of who we are come to life in this slender volume. Although originally printed in 1967, the art and style in The Medium is the Massage seem as fresh today as in the summer of love, and the ideas are even more resonant now that computer interfaces are becoming gateways to the global village.

Seductive Interaction Design: Creating Playful, Fun, and Effective User Experiences


Stephen P. Anderson - 2011
    Anderson takes a fresh approach to designing sites and interactions based on the stages of seduction. This beautifully designed book examines what motivates people to act.Topics include: AESTHETICS, BEAUTY, AND BEHAVIOR: Why do striking visuals grab our attention? And how do emotions affect judgment and behavior? PLAYFUL SEDUCTION: How do you create playful engagements during the moment? Why are serendipity, arousal, rewards, and other delights critical to a good experience? THE SUBTLE ART OF SEDUCTION: How do you put people at ease through clear and suggestive language? What are some subtle ways to influence behavior and get people to move from intent to action? THE GAME OF SEDUCTION: How do you continue motivating people long after the first encounter? Are there lessons to be gained from learning theories or game design? Principles from psychology are found throughout the book, along with dozens of examples showing how these techniques have been applied with great success. In addition, each section includes interviews with influential web and interaction designers.

Hands-On Machine Learning with Scikit-Learn and TensorFlow


Aurélien Géron - 2017
    Now that machine learning is thriving, even programmers who know close to nothing about this technology can use simple, efficient tools to implement programs capable of learning from data. This practical book shows you how.By using concrete examples, minimal theory, and two production-ready Python frameworks—Scikit-Learn and TensorFlow—author Aurélien Géron helps you gain an intuitive understanding of the concepts and tools for building intelligent systems. You’ll learn how to use a range of techniques, starting with simple Linear Regression and progressing to Deep Neural Networks. If you have some programming experience and you’re ready to code a machine learning project, this guide is for you.This hands-on book shows you how to use:Scikit-Learn, an accessible framework that implements many algorithms efficiently and serves as a great machine learning entry pointTensorFlow, a more complex library for distributed numerical computation, ideal for training and running very large neural networksPractical code examples that you can apply without learning excessive machine learning theory or algorithm details