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.
W. Richard Stevens, Bill Fenner, Andrew M. Rudoff
* *Previous editions sold over 160,000 units! Second Edition (1998) sold over 53,000 in retail alone! *Updates coverage of programming standards, debugging techniques, and covers Operating Systems including Red Hat 9, Solaris 9, HP-UX, Free BSD 4.8/5.0, AIX 5.x, and Mac OS X. *Bill Fenner (AT/T Labs) and Andrew Rudoff (SUN) carry on the tradition of this great work.
Kathy Sierra, Bert Bates
An interactive guide to the fundamentals of the Java programming language utilizes icons, cartoons, and numerous other visual aids to introduce the features and functions of Java and to teach the principles of designing and writing Java programs.
Written by an expert in the game industry, Christer Ericson's new book is a comprehensive guide to the components of efficient real-time collision detection systems. The book provides the tools and know-how needed to implement industrial-strength collision detection for the highly detailed dynamic environments of applications such as 3D games, virtual reality applications, and physical simulators. Of the many topics covered, a key focus is on spatial and object partitioning through a wide variety of grids, trees, and sorting methods. The author also presents a large collection of intersection and distance tests for both simple and complex geometric shapes. Sections on vector and matrix algebra provide the background for advanced topics such as Voronoi regions, Minkowski sums, and linear and quadratic programming. Of utmost importance to programmers but rarely discussed in this much detail in other books are the chapters covering numerical and geometric robustness, both essential topics for collision detection systems. Also unique are the chapters discussing how graphics hardware can assist in collision detection computations and on advanced optimization for modern computer architectures. All in all, this comprehensive book will become the industry standard for years to come.
Eldad Eilam, Elliot J. Chikofsky
Beginning with a basic primer on reverse engineering-including computer internals, operating systems, and assembly language-and then discussing the various applications of reverse engineering, this book provides readers with practical, in-depth techniques for software reverse engineering. The book is broken into two parts, the first deals with security-related reverse engineering and the second explores the more practical aspects of reverse engineering. In addition, the author explains how to reverse engineer a third-party software library to improve interfacing and how to reverse engineer a competitor's software to build a better product. * The first popular book to show how software reverse engineering can help defend against security threats, speed up development, and unlock the secrets of competitive products * Helps developers plug security holes by demonstrating how hackers exploit reverse engineering techniques to crack copy-protection schemes and identify software targets for viruses and other malware * Offers a primer on advanced reverse-engineering, delving into "disassembly"-code-level reverse engineering-and explaining how to decipher assembly language
In his long-awaited book, Martin Fowler has done for application domain patterns what the Gang of Four [Gamma et al.] have done for general purpose design patterns in their book, Design Patterns: Elements of Reusable Object-Oriented Software. This book is a must have for all analysts and designers doing object-oriented business modeling and business process re-engineering. —Donald G. Firesmith, Knowledge Systems Corporation Fowler shares with you his wealth of object modeling experience and his keen eye for identifying repeating problems and transforming them into reusable models. Analysis Patterns provides a catalogue of patterns that have emerged in a wide range of domains, including trading, measurement, accounting, and organizational relationships.
David Mark, Jeff LaMarche
Are you a programmer looking for a new challenge? Does the thought of building your very own iPhone app make your heart race and your pulse quicken? If so, Beginning iPhone 3 Development: Exploring the iPhone SDK is just the book for you. Updated and revised for iPhone SDK 3, many of the discussions in the original book have been clarified to make some of the more complex topics easier to understand. In addition, all of the projects have been rebuilt from scratch using the SDK 3 templates. Assuming only a minimal working knowledge of Objective-C, and written in a friendly, easy-to-follow style, this book offers a complete soup-to-nuts course in iPhone and iPod touch programming. The book starts with the basics, walking you through the process of downloading and installing Apple's free iPhone SDK, and then stepping you though the creation of your first simple iPhone application. From there, you'll learn to integrate all the interface elements iPhone users have come to know and love, such as buttons, switches, pickers, toolbars, and sliders. You'll master a variety of design patterns, from the simplest single view to complex hierarchical drill-downs. The confusing art of table building will be demystified, and you'll see how to save your data using the iPhone file system. You'll also learn how to save and retrieve your data using SQLite, iPhone's built-in database management system. In addition, you'll also learn about Core Data, an important persistence mechanism that has just been added with SDK 3. And there's much more! You'll learn to draw using Quartz 2D and OpenGL ES, add multitouch gestural support (pinches and swipes) to your applications, and work with the camera, photo library, accelerometer, and built-in GPS. You'll discover the fine points of application preferences and learn how to localize your apps for multiple languages. You can discover more about this book, download source code, and find support forums at the book's companion site, at www.iphonedevbook.com. The iPhone 3 update to the best-selling and most recommended book for iPhone developers Packed full of tricks, techniques, and enthusiasm for the new SDK from a developer perspective The most complete, useful, and up-to-date guide to all things having to do with Apple's iPhone SDK What you’ll learn Everything you need to know to develop your own best-selling iPhone apps Best practices for optimizing your code and delivering great user experiences Who this book is for Anyone who wants to start developing for iPhone and iPod touch What's changed from the first edition of Beginning iPhone Development All code samples have been updated to follow current Apple coding conventions The autorotation code has been updated to use the new single-step fast autorotation instead of the original two-step method A new section has been added introducing Core Data, covering basic principles and showing how to build a simple Core Data application All the table view-related chapters have been updated to use table view cell styles. They've also been updated to use textLabel and detailTextLabel instead of the deprecated text property of the table view cell. All known errata have been corrected All projects have been rebuilt from scratch using the SDK 3.0 templates Many concepts have been clarified based on feedback and supplemented with information we've learned from another year of using the SDK Table of Contents Welcome to the Jungle Appeasing the Tiki Gods Handling Basic Interaction More User Interface Fun Autorotation and Autosizing Multiview Applications Tab Bars and Pickers Introduction to Table Views Navigation Controllers and Table Views Application Settings and User Defaults Basic Data Persistence Drawing with Quartz and OpenGL Taps, Touches, and Gestures Where Am I? Finding Your Way with Core Location Whee! Accelerometer! iPhone Camera and Photo Library Application Localization Where to Next?
David Mark, Jeff LaMarche, Jack Nutting
Beginning iPhone 4 Development is here! The authors of the bestselling Beginning iPhone 3 Development are back, with the same excellent material completely updated for iOS 4 and written from the ground up using the latest version of Apple's Xcode 3. All source code has been updated to use the latest Xcode templates and current APIs, and all-new screenshots show Xcode 3 in action. Beginning iPhone 4 Development is a complete course in iOS 4 apps development. You’ll master techniques that work on iPhone, iPad, and iPod touch. We start with the basics, showing you how to download and install the tools you'll need, and how to create your first simple application. Next you’ll learn to integrate all the interface elements iOS users have come to know and love, such as buttons, switches, pickers, toolbars, and sliders. You’ll master a variety of design patterns, from the simplest single view to complex hierarchical drill-downs. The confusing art of table building will be demystified, and you’ll learn techniques to save and retrieve your data using SQLite, iPhone’s built-in database management system and Core Data, the standard for persistence that Apple brought to iOS with the release of SDK 3. And there’s much more! You’ll learn to draw using Quartz 2D and OpenGL ES, add multitouch gestural support (pinches and swipes) to your applications, and work with the camera, photo library, accelerometer, and built-in GPS. You’ll discover the fine points of application preferences and learn how to localize your apps for multiple languages. You'll also learn how to use the new concurrency APIs included in iOS 4, and make robust multithreaded applications using Grand Central Dispatch. The iPhone 4 update to the best-selling and most recommended book for Cocoa touch developers Written in an accessible, easy-to-follow style Full of useful tips and techniques to help you become an iOS pro NOTE: For iPhone 4S or iOS 5 apps development, please instead check out the next edition of this book, Beginning iOS 5 Development - now available. What you’ll learn Everything you need to know to develop your own best-selling iPhone and iPad apps Best practices for optimizing your code and delivering great user experiences How to create “universal” apps for both iPhone and iPad Who this book is for Anyone who wants to start developing for iPhone, iPad, and iPod touch. You can discover more about this book, download source code, and find support forums at the book's companion site, at www.iphonedevbook.com. Table of Contents Welcome to the Jungle Appeasing the Tiki Gods Handling Basic Interaction More User Interface Fun Autorotation and Autosizing Multiview Applications Tab Bars and Pickers Introduction to Table Views Navigation Controllers and Table Views iPad Considerations Application Settings and User Defaults Basic Data Persistence Grand Central Dispatch, Background Processing, and You Drawing with Quartz and OpenGL Taps, Touches, and Gestures Where Am I? Finding Your Way with Core Location Whee! Gyro and Accelerometer! iPhone Camera and Photo Library Application Localization Where to Next?
Randi J. Rost, Bill Licea-Kane, Dan Ginsburg
The definitive OpenGL Shading Language reference AND tutorial - now fully updated and revised for the latest version * *Includes extensive new coverage, including a thorough discussion of GLSL for OpenGL ES, the emerging standard for handheld media devices. *Clear, approachable, and relevant examples that help programmers quickly address the challenges they're most likely to encounter. * Authored by experts who have been intimately involved in the design and evolution of the OpenGL Shading Language. OpenGL Shading Language, 3/e is the definitive guide to creating graphics applications with the newest version of the OpenGL Shading Language. Using this book, graphics programmers will learn how to exploit the full performance and flexibility of modern GPU hardware to create stunningly realistic and creative effects. One part reference, one part tutorial, this will be their go-to source from the moment they begin learning the language until they've become seasoned experts. This book's content has become ever more important to a wider spectrum of graphics programmers. For years, programmers treated graphics hardware as 'state machines' whose behavior could only be modified by changing bits of state. This severely limited the effects they could realistically achieve. The OpenGL Shading Language puts control of graphics hardware squarely in the programmer's hands: key stages of the graphics pipeline are now completely programmable. With this new freedom, of course, the programmer also gains new responsibilities. It's a fundamental paradigm shift -- and this book will help programmers make the leap. This edition covers significant enhancements in the new version of OpenGL Shading Language, including the latest version of GLSL for OpenGL ES, the emerging standard for handheld media devices. As in previous editions, however, it relies throughout on clear, approachable code samples that address the specific tasks and skills graphics programmers are most likely to need
Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. 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.
Marcus Zarra, Matt Long
The definitive full-color reference for Core Animation, Apple's powerful new framework for building feature-rich user interfaces • • Shows Mac developers how to use Core Animation to build state-of-the-art user interfaces that previously required intensely complex OpenGL programming. • Task-based coverage ranges from the absolute basics to advanced optimization and integration - and every feature is illuminates with projects and detailed sample code. • Contains a full chapter on using Core Animation on the iPhone. Apple's Core Animation API offers Mac developers a whole new way to think about user interface design - and the opportunity to quickly and easily integrate advanced UI features ranging from transparent windows to head-up displays. Core Animation contains all the goodies Mac UI designers have been craving - and could previously implement only with highly complex OpenGL code. Core Animation is the definitive reference to this powerful API for every Macintosh and iPhone developer. Leading OSX developers Marcus S. Zarra and Matt Long begin with a complete introduction to Core Animation, offering invaluable insights into when it should be used - and when it shouldn't be. Next, the authors drill down to each specific task developers are likely to perform. Building on the essentials, the authors introduce several advanced techniques, including code optimization and leveraging the GPU to run OpenGL, QuickTime, and Core Animation code in tandem. They also present brand-new coverage of Core Animation programming for the iPhone. Each concept and technique is illuminated with usable code, end-to-end sample projects, functional examples, and advanced project suggestions designed to promote even deeper understanding.
William H. Press
The product of a unique collaboration among four leading scientists in academic research and industry, Numerical Recipes is a complete text and reference book on scientific computing. In a self-contained manner it proceeds from mathematical and theoretical considerations to actual practical computer routines. With over 100 new routines bringing the total to well over 300, plus upgraded versions of the original routines, the new edition remains the most practical, comprehensive handbook of scientific computing available today.
Scott Knaster, Mark Dalrymple
Take your coding skills to the next level with this extensive guide to Objective–C, the native programming language for developing sophisticated software applications for Mac OS X. Objective–C is a powerful, object–oriented extension of C, making this book the perfect follow–up to Dave Mark's bestselling Learn C on the Mac, Mac OS X Edition. Whether you're an experienced C programmer or you're coming from a different language such as C++ or Java, leading Mac experts Mark Dalrymple and Scott Knaster show you how to harness the powers of Objective–C in your applications! A complete course on the basics of Objective–C using Apple's free Xcode tools An introduction to object–oriented programming Comprehensive coverage of inheritance, composition, object initialization, categories, protocols, memory management, and organizing source files A brief tour of Cocoa's foundation framework and AppKit A helpful “learning curve” guide for non–C developers