Designing Data-Intensive Applications


Martin Kleppmann - 2015
    Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and maintainability. In addition, we have an overwhelming variety of tools, including relational databases, NoSQL datastores, stream or batch processors, and message brokers. What are the right choices for your application? How do you make sense of all these buzzwords?In this practical and comprehensive guide, author Martin Kleppmann helps you navigate this diverse landscape by examining the pros and cons of various technologies for processing and storing data. Software keeps changing, but the fundamental principles remain the same. With this book, software engineers and architects will learn how to apply those ideas in practice, and how to make full use of data in modern applications. Peer under the hood of the systems you already use, and learn how to use and operate them more effectively Make informed decisions by identifying the strengths and weaknesses of different tools Navigate the trade-offs around consistency, scalability, fault tolerance, and complexity Understand the distributed systems research upon which modern databases are built Peek behind the scenes of major online services, and learn from their architectures

Film Directing Shot by Shot: Visualizing from Concept to Screen


Steven D. Katz - 1991
    Aspiring directors, cinematographers, editors, and producers, many of whom are now working professionals, learned the craft of visual storytelling from Shot by Shot, the most com-plete source for preplanning the look of a movie.The book contains over 800 photos and illustrations, and is by far the most comprehensive look at shot design in print, containing storyboards from movies such as Citizen Kane, Blade Runner, Dead-pool, and Moonrise Kingdom. Also introduced is the concept of A, I, and L patterns as a way to sim-plify the hundreds of staging choices facing a director in every scene.Shot by Shot uniquely blends story analysis with compositional strategies, citing examples then il-lustrated with the storyboards used for the actual films. Throughout the book, various visual ap-proaches to short scenes are shown, exposing the directing processes of our most celebrated au-teurs — including a meticulous, lavishly illustrated analysis of Steven Spielberg’s scene design for Empire of the Sun.

Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability


Steve Krug - 2000
    And it’s still short, profusely illustrated…and best of all–fun to read.If you’ve read it before, you’ll rediscover what made Don’t Make Me Think so essential to Web designers and developers around the world. If you’ve never read it, you’ll see why so many people have said it should be required reading for anyone working on Web sites.

Think Stats


Allen B. Downey - 2011
    This concise introduction shows you how to perform statistical analysis computationally, rather than mathematically, with programs written in Python.You'll work with a case study throughout the book to help you learn the entire data analysis process—from collecting data and generating statistics to identifying patterns and testing hypotheses. Along the way, you'll become familiar with distributions, the rules of probability, visualization, and many other tools and concepts.Develop your understanding of probability and statistics by writing and testing codeRun experiments to test statistical behavior, such as generating samples from several distributionsUse simulations to understand concepts that are hard to grasp mathematicallyLearn topics not usually covered in an introductory course, such as Bayesian estimationImport data from almost any source using Python, rather than be limited to data that has been cleaned and formatted for statistics toolsUse statistical inference to answer questions about real-world data

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.

Structure and Interpretation of Computer Programs


Harold Abelson - 1984
    This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

Design Patterns: Elements of Reusable Object-Oriented Software


Erich Gamma - 1994
    Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently. Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.

The Proteus Paradox: How Online Games and Virtual Worlds Change Us—And How They Don't


Nick Yee - 2014
    Yet inhabitants of virtual worlds rarely achieve this liberty, game researcher Nick Yee contends. Though online games evoke freedom and escapism, Yee shows that virtual spaces perpetuate social norms and stereotypes from the offline world, transform play into labor, and inspire racial scapegoating and superstitious thinking. And the change that does occur is often out of our control and effected by unparalleled—but rarely recognized—tools for controlling what players think and how they behave. Using player surveys, psychological experiments, and in-game data, Yee breaks down misconceptions about who plays fantasy games and the extent to which the online and offline worlds operate separately. With a wealth of entertaining and provocative examples, he explains what virtual worlds are about and why they matter, not only for entertainment but also for business and education. He uses gaming as a lens through which to examine the pressing question of what it means to be human in a digital world. His thought-provoking book is an invitation to think more deeply about virtual worlds and what they reveal to us about ourselves.

Automate the Boring Stuff with Python: Practical Programming for Total Beginners


Al Sweigart - 2014
    But what if you could have your computer do them for you?In "Automate the Boring Stuff with Python," you'll learn how to use Python to write programs that do in minutes what would take you hours to do by hand no prior programming experience required. Once you've mastered the basics of programming, you'll create Python programs that effortlessly perform useful and impressive feats of automation to: Search for text in a file or across multiple filesCreate, update, move, and rename files and foldersSearch the Web and download online contentUpdate and format data in Excel spreadsheets of any sizeSplit, merge, watermark, and encrypt PDFsSend reminder emails and text notificationsFill out online formsStep-by-step instructions walk you through each program, and practice projects at the end of each chapter challenge you to improve those programs and use your newfound skills to automate similar tasks.Don't spend your time doing work a well-trained monkey could do. Even if you've never written a line of code, you can make your computer do the grunt work. Learn how in "Automate the Boring Stuff with Python.""

Fundamentals of Software Architecture: An Engineering Approach


Mark Richards - 2020
    Until now. This practical guide provides the first comprehensive overview of software architecture's many aspects. You'll examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.Authors Neal Ford and Mark Richards help you learn through examples in a variety of popular programming languages, such as Java, C#, JavaScript, and others. You'll focus on architecture principles with examples that apply across all technology stacks.

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.

The Legend of Zelda: Hyrule Historia


NintendoHeidi Plechl - 2011
    This handsome hardcover contains never-before-seen concept art, the full history of Hyrule, the official chronology of the games, and much more! Starting with an insightful introduction by the legendary producer and video-game designer of Donkey Kong, Mario, and The Legend of Zelda, Shigeru Miyamoto, this book is crammed full of information about the storied history of Link's adventures from the creators themselves! As a bonus, The Legend of Zelda: Hyrule Historia includes an exclusive comic by the foremost creator of The Legend of Zelda manga - Akira Himekawa!

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.

High Score!: The Illustrated History of Electronic Games


Rusel DeMaria - 2002
    Featuring hundreds of interviews with game creators and thousands of never-before-seen photos from the early days, this book honors the games that have captivated youngsters and the young-at-heart for more than 30 years--making this the ultimate tribute to electronic games.

3D Math Primer for Graphics and Game Development


Fletcher Dunn - 2002
    The Authors Discuss The Mathematical Theory In Detail And Then Provide The Geometric Interpretation Necessary To Make 3D Math Intuitive. Working C++ Classes Illustrate How To Put The Techniques Into Practice, And Exercises At The End Of Each Chapter Help Reinforce The Concepts. This Book Explains Basic Concepts Such As Vectors, Coordinate Spaces, Matrices, Transformations, Euler Angles, Homogenous Coordinates, Geometric Primitives, Intersection Tests, And Triangle Meshes. It Discusses Orientation In 3D, Including Thorough Coverage Of Quaternions And A Comparison Of The Advantages And Disadvantages Of Different Representation Techniques. The Text Describes Working C++ Classes For Mathematical And Geometric Entities And Several Different Matrix Classes, Each Tailored To Specific Geometric Tasks. Also Included Are Complete Derivations For All The Primitive Transformation Matrices.