How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
This title documents a convergence of programming techniques - generic programming, template metaprogramming, object-oriented programming and design patterns. It describes the C++ techniques used in generic programming and implements a number of industrial strength components.
Alfred V. Aho
Compilers: Principles, Techniques and Tools, known to professors, students, and developers worldwide as the "Dragon Book," is available in a new edition. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development.
Ralph Kimball, Margy Ross
Ralph Kimball invented a data warehousing technique called ?dimensional modelling? and popularised it in his first Wiley bestseller The Data Warehouse Toolkit. Since then dimensional modelling has become the most widely accepted technique for data warehouse design. Since the first edition, Kimball has improved on his earlier techniques and created many new ones. In this second edition, he provides a comprehensive collection of all of them, from basic to advanced, and strategies for optimising data warehouse design for common business applications. He includes examples for retail sales, inventory management, procurement, orders and invoices, customer relationship management, accounting, financial services, telecommunication and utilities, health care, insurance and more. He also presents unique modelling techniques for e-commerce and shows strategies for optimising performance. A companion Web site provides updates on dimensional modelling techniques, links to related sites and source code where appropriate.
Covers mathematical concepts that are needed to develop 3D game programming and graphics.
Peter Shirley, Michael Ashikhmin, Steve Marschner
With contributions by Michael Ashikhmin, Michael Gleicher, Naty Hoffman, Garrett Johnson, Tamara Munzner, Erik Reinhard, Kelvin Sung, William B. Thompson, Peter Willemsen, Brian Wyvill. The third edition of this widely adopted text gives students a comprehensive, fundamental introduction to computer graphics. The authors present the mathematical foundations of computer graphics with a focus on geometric intuition, allowing the programmer to understand and apply those foundations to the development of efficient code. New in this edition: Four new contributed chapters, written by experts in their fields: Implicit Modeling, Computer Graphics in Games, Color, Visualization, including information visualization Revised and updated material on the graphics pipeline, reflecting a modern viewpoint organized around programmable shading. Expanded treatment of viewing that improves clarity and consistency while unifying viewing in ray tracing and rasterization. Improved and expanded coverage of triangle meshes and mesh data structures. A new organization for the early chapters, which concentrates foundational material at the beginning to increase teaching flexibility.
Kouichi Matsuda, Rodger Lea
Mark A. DeLoura
For the countless tasks involved in creating a game engine there are an equal number of possible solutions. 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.
The latest volume in the Game Programming Gems series, a valuable reference for game developers presents articles that cover a variety of topics, techniques, issues, and skills in the field of game programming, including general programming, artificial intelligence, mathematics and physics, graphics, networking and multiplayer, audio, and scripting and data-driven systems, along with a CD containing relevant code and demos. Original. (Intermediate)
Game Programming Gems 6 is the latest ALL new volume in this critically acclaimed series. Filled with insights from game industry pros, this volume provides faster, better, tools and techniques for making the best games possible. These techniques have been used in today?s most successful games and will help solve many of the challenges facing the development team. Not only do they help the team avoid redundancy and save valuable programming hours, but they push the team to approach problems from a new perspective and develop their own tools to prevent future issues. As with all previous volumes, the core areas of graphics, programming, networking, AI, physics, and audio are thoroughly covered and in this volume, new coverage of game testing, wireless gaming, and scripting has also been added. Game Programming Gems 6 is an indispensable resource that every developer must have on their shelves!
M. Bertero, P. Boccacci
This is a graduate textbook on the principles of linear inverse problems, methods of their approximate solution, and practical application in imaging. The level of mathematical treatment is kept as low as possible to make the book suitable for a wide range of readers from different backgrounds in science and engineering. Mathematical prerequisites are first courses in analysis, geometry, linear algebra, probability theory, and Fourier analysis. The authors concentrate on presenting easily implementable and fast solution algorithms. With examples and exercised throughout, the book will provide the reader with the appropriate background for a clear understanding of the essence of inverse problems (ill-posedness and its cure) and, consequently, for an intelligent assessment of the rapidly growing literature on these problems.
Everything you need to know about developing hardware-accelerated 3D graphics with WebGL! As the newest technology for creating 3D graphics on the web, in both games, applications, and on regular websites, WebGL gives web developers the capability to produce eye-popping graphics. This book teaches you how to use WebGL to create stunning cross-platform apps. The book features several detailed examples that show you how to develop 3D graphics with WebGL, including explanations of code snippets that help you understand the why behind the how. You will also develop a stronger understanding of WebGL development from coverage that: •Provides a comprehensive overview of WebGL and shows how it relates to other graphics-related technologies •Addresses important topics such as the WebGL graphics pipeline, 3D transformations, texturing and lighting •Teaches you how to write vertex shaders and fragment shaders for WebGL •Includes a lot of useful guidelines, tips, and tricks for WebGL performance optimizations Professional WebGL Programming is the first book on the market to delve into this fascinating topic and it puts you on your way to mastering the possibilities that exist with WebGL.
Want to create sophisticated games and graphics-intensive apps? Learn OpenGL ES gets you started immediately with OpenGL ES. After mastering the basics of OpenGL ES itself, you will quickly find yourself writing and building game apps, without having to learn about object oriented programming techniques. This book demonstrates the use of a powerful open-source modeling tool, Blender. You will be guided, step by step, through the development of Tank Fence, a dynamic, interactive 3D game. Along the way you'll gain skills in building apps with Eclipse and the Android SDK or NDK, rendering graphics using hardware acceleration, and multithreading for performance and responsiveness. iOS developers will also find this book's information invaluable when writing their apps. You'll learn everything you need to know about: Creating simple, efficient game UIs Designing the basic building blocks of an exciting, interactive 3D game Pulling all the elements together with Blender, a powerful open-source tool for modeling, animation, rendering, compositing, video editing, and game creation Taking the next big step using custom and inbuilt functions, texturing, shading, light sources, and more Refining your mobile game app through collision detection, player-room-obstacle classes, and storage classes Doing all this efficiently on mobile devices with limited resources and processing What you’ll learn How to install and use OpenGL ES 2.0 on Android GLSL ES Fundamentals State Management Modeling 3D Objects Using Blender Using the Perl Mesh Parser Vertex Buffer Objects Using Color Masks sampler2D and samplerCube Uniforms Multi-Texturing Lambert Illumination Model Implementing the Lighting Equation Design, write, and build Tank Fence, an interactive 3D game Who this book is for Learn OpenGL ES is ideal for mobile game and interactive app developers who want to know more about the OpenGL ES engine and and use it to build more sophisticated, graphically-rich games and other apps. While the code is developed on Android, iOS developers will also find this book invaluable. Table of Contents1. Why OpenGL ES? 2. UI for games: Keep it simple 3. First Steps: Mobile Game App Development 4. 3D Modeling 5. Functions, Shading, Light Source and Objects 6. Carrying Further: Collision Detection
William H. Press
The example books published as part of the Numerical Recipes second edition series contain source programs that exercise and demonstrate all of the Numerical Recipes subroutines. Each example program contains comments and is prefaced by a short description of what it does. The books contain all of the old material from the original edition as well as new material from the second edition. They will be valuable for readers who wish to incorporate procedures and subroutines into their own source programs. They are available in both FORTRAN and C.
"Game Programming Gems 4" is an all new volume in this must-have series. It is filled with ready-to-use expert techniques, ideas, and solutions for game developers, and includes many innovative solutions that have been used successfully in commercial projects.
The journey continues with this ALL NEW volume in the Game Programming Gems series! As with the first two volumes, a dynamic group of some of the best game programmers in the industry have generously joined together to share their insights and techniques. Their ready-to-use ideas, tips, and solutions, will help save hours of programming time, prevent redundancy, and leave you with more time to add cutting-edge features to your own games. Covering all the key areas of game development, this invaluable resource delves deep into the problems often encountered by programmers, and provides practical, valid solutions. Each section is edited by an expert in the field to ensure that the ideas are original, accurate, and useful for a variety of game development projects. In addition to covering Mathematics, Graphics, General Programming, Audio, and Artificial Intelligence, Game Programming Gems 3 also includes an all new section on Network and Multiplayer games. This is a must-have reference, and series, for every game developer. If you are just getting started, this book offers a true cross-section of the challenges youll face, and provides a variety of additional references to help you find all the resources you need to advance your skills and knowledge. If youre an expert already, youll find new ideas and techniques to help save plenty of valuable programming time.
D. Subbaram Naidu
The theory of optimal control systems has grown and flourished since the 1960's. Many texts, written on varying levels of sophistication, have been published on the subject. Yet even those purportedly designed for beginners in the field are often riddled with complex theorems, and many treatments fail to include topics that are essential to a thorough grounding in the various aspects of and approaches to optimal control. Optimal Control Systems provides a comprehensive but accessible treatment of the subject with just the right degree of mathematical rigor to be complete but practical. It provides a solid bridge between "traditional" optimization using the calculus of variations and what is called "modern" optimal control. It also treats both continuous-time and discrete-time optimal control systems, giving students a firm grasp on both methods. Among this book's most outstanding features is a summary table that accompanies each topic or problem and includes a statement of the problem with a step-by-step solution. Students will also gain valuable experience in using industry-standard MATLAB and SIMULINK software, including the Control System and Symbolic Math Toolboxes. Diverse applications across fields from power engineering to medicine make a foundation in optimal control systems an essential part of an engineer's background. This clear, streamlined presentation is ideal for a graduate level course on control systems and as a quick reference for working engineers.