The Pragmatic Programmer: From Journeyman to Master


Andy Hunt - 1999
    It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and you'll learn how toFight software rot; Avoid the trap of duplicating knowledge; Write flexible, dynamic, and adaptable code; Avoid programming by coincidence; Bullet-proof your code with contracts, assertions, and exceptions; Capture real requirements; Test ruthlessly and effectively; Delight your users; Build teams of pragmatic programmers; and Make your developments more precise with automation. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, The Pragmatic Programmer illustrates the best practices and major pitfalls of many different aspects of software development. Whether you're a new coder, an experienced programmer, or a manager responsible for software projects, use these lessons daily, and you'll quickly see improvements in personal productivity, accuracy, and job satisfaction. You'll learn skills and develop habits and attitudes that form the foundation for long-term success in your career. You'll become a Pragmatic Programmer.

Programming Game AI by Example


Mat Buckland - 2004
    Techniques covered include state- and goal-based behavior, inter-agent communication, individual and group steering behaviors, team AI, graph theory, search, path planning and optimization, triggers, scripting, scripted finite state machines, perceptual modeling, goal evaluation, goal arbitration, and fuzzy logic.

Trigger Happy: Videogames and the Entertainment Revolution


Steven Poole - 2000
    Thirty years after the invention of the simplest of games, more videogames are played by adults than children. This revolutionary book is the first-ever academically worthy and deeply engaging critique of one of today's most popular forms of play: videogames are on track to supersede movies as the most innovative form of entertainment in the new century.

Getting Real: The Smarter, Faster, Easier Way to Build a Web Application


37 Signals - 2006
    At under 200 pages it's quick reading too. Makes a great airplane book.

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.

Artificial Intelligence for Games (The Morgan Kaufmann Series in Interactive 3D Technology)


Ian Millington - 2006
    The commercial success of a game is often dependent upon the quality of the AI, yet the engineering of AI is often begun late in the development process and is frequently misunderstood. In this book, Ian Millington brings extensive professional experience to the problem of improving the quality of AI in games. A game developer since 1987, he was founder of Mindlathe Ltd., at the time the largest specialist AI company in gaming. Ian shows how to think about AI as an integral part of game play. He describes numerous examples from real games and explores the underlying ideas through detailed case studies. He goes further to introduce many techniques little used by developers today. The book's CD-ROM contains a library of C++ source code and demonstration programs, and provides access to a website with a complete commercial source code library of AI algorithms and techniques. * A comprehensive, professional tutorial and reference to implement true AI in games.* Walks through the entire development process from beginning to end.* Includes over 100 pseudo code examples of techniques used in commercial games, case studies for all major genres, a CD-ROM and companion website with extensive C++ source code implementations for Windows, and source code libraries for Linux and OS X available through the website.

Beautiful Code: Leading Programmers Explain How They Think


Andy OramLincoln Stein - 2007
    You will be able to look over the shoulder of major coding and design experts to see problems through their eyes.This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to break rules. Beautiful Code is an opportunity for master coders to tell their story. All author royalties will be donated to Amnesty International.

The Ultimate History of Video Games: From Pong to Pokemon - The Story Behind the Craze That Touched Our Lives and Changed the World


Steven L. Kent - 2001
    The Ultimate History of Video Games reveals everything you ever wanted to know and more about the unforgettable games that changed the world, the visionaries who made them, and the fanatics who played them. From the arcade to television and from the PC to the handheld device, video games have entraced kids at heart for nearly 30 years. And author and gaming historian Steven L. Kent has been there to record the craze from the very beginning.This engrossing book tells the incredible tale of how this backroom novelty transformed into a cultural phenomenon. Through meticulous research and personal interviews with hundreds of industry luminaries, you'll read firsthand accounts of how yesterday's games like Space Invaders, Centipede, and Pac-Man helped create an arcade culture that defined a generation, and how today's empires like Sony, Nintendo, and Electronic Arts have galvanized a multibillion-dollar industry and a new generation of games. Inside, you'll discover:·The video game that saved Nintendo from bankruptcy ·The serendipitous story of Pac-Man's design ·The misstep that helped topple Atari's $2 billion-a-year empire·The coin shortage caused by Space Invaders ·The fascinating reasons behind the rise, fall, and rebirth of Sega ·And much more! Entertaining, addictive, and as mesmerizing as the games it chronicles, this book is a must-have for anyone who's ever touched a joystick.

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

HTML5 for Web Designers


Jeremy Keith - 2010
    It is also the most powerful, and in some ways, the most confusing. What do accessible, content-focused standards-based web designers and front-end developers need to know? And how can we harness the power of HTML5 in today’s browsers?In this brilliant and entertaining user’s guide, Jeremy Keith cuts to the chase, with crisp, clear, practical examples, and his patented twinkle and charm.

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.

I Am Error: The Nintendo Family Computer / Entertainment System Platform


Nathan Altice - 2015
    In the 1987 Nintendo Entertainment System videogame Zelda II: The Adventure of Link, a character famously declared: I AM ERROR. Puzzled players assumed that this cryptic mesage was a programming flaw, but it was actually a clumsy Japanese-English translation of "My Name is Error," a benign programmer's joke. In I AM ERROR Nathan Altice explores the complex material histories of the Nintendo Entertainment System (and its Japanese predecessor, the Family Computer), offering a detailed analysis of its programming and engineering, its expressive affordances, and its cultural significance.Nintendo games were rife with mistranslated texts, but, as Altice explains, Nintendo's translation challenges were not just linguistic but also material, with consequences beyond simple misinterpretation. Emphasizing the technical and material evolution of Nintendo's first cartridge-based platform, Altice describes the development of the Family Computer (or Famicom) and its computational architecture; the "translation" problems faced while adapting the Famicom for the U.S. videogame market as the redesigned Entertainment System; Nintendo's breakthrough console title Super Mario Bros. and its remarkable software innovations; the introduction of Nintendo's short-lived proprietary disk format and the design repercussions on The Legend of Zelda; Nintendo's efforts to extend their console's lifespan through cartridge augmentations; the Famicom's Audio Processing Unit (APU) and its importance for the chiptunes genre; and the emergence of software emulators and the new kinds of play they enabled.

Stylin' with CSS: A Designer's Guide


Charles Wyke-Smith - 2005
    Stylin with CSS teaches you everything you need to know start using CSS in your web development work, from the basics of markup of your content and styling text, through to creating multi-column page layouts without the use of tables. Learn how to create interface components, such as drop-down menus, navigation links, and animated graphical buttons, using only CSS no JavaScript required. Discover how to design code that will work on the latest standard-compliant browsers, while working around the quirks of the older browsers. With a mastery of CSS, your web design capabilities will move to a new level, and everything you need to know to get your started and build your skills is right here in this book. You ll be stylin in no time!"

The Art of Failure: An Essay on the Pain of Playing Video Games


Jesper Juul - 2013
    When we play video games, our facial expressions are rarely those of happiness or bliss. Instead, we frown, grimace, and shout in frustration as we lose, or die, or fail to advance to the next level. Humans may have a fundamental desire to succeed and feel competent, but game players choose to engage in an activity in which they are nearly certain to fail and feel incompetent. So why do we play video games even though they make us unhappy? Juul examines this paradox. In video games, as in tragic works of art, literature, theater, and cinema, it seems that we want to experience unpleasantness even if we also dislike it. Reader or audience reaction to tragedy is often explained as catharsis, as a purging of negative emotions. But, Juul points out, this doesn't seem to be the case for video game players. Games do not purge us of unpleasant emotions; they produce them in the first place. What, then, does failure in video game playing do? Juul argues that failure in a game is unique in that when you fail in a game, you (not a character) are in some way inadequate. Yet games also motivate us to play more, in order to escape that inadequacy, and the feeling of escaping failure (often by improving skills) is a central enjoyment of games. Games, writes Juul, are the art of failure: the singular art form that sets us up for failure and allows us to experience it and experiment with it. "The Art of Failure" is essential reading for anyone interested in video games, whether as entertainment, art, or education.

The Game Maker's Apprentice: Game Development for Beginners


Jacob Habgood - 2006
    This book covers a range of genres, including action, adventure, and puzzle games complete with professional quality sound effects and visuals. It discusses game design theory and features practical examples of how this can be applied to making games that are more fun to play. Game Maker allows games to be created using a simple drag-and-drop interface, so you don't need to have any prior coding experience. It includes an optional programming language for adding advanced features to your games, when you feel ready to do so. You can obtain more information by visiting book.gamemaker.nl. The authors include the creator of the Game Maker tool and a former professional game programmer, so you'll glean understanding from their expertise. The book also includes a DVD containing Game Maker software and all of the game projects that are created in the book—plus a host of professional-quality graphics and sound effects that you can use in your own games.