Best of
Coding

2009

But How Do It Know? - The Basic Principles of Computers for Everyone


J. Clark Scott - 2009
    Its humorous title begins with the punch line of a classic joke about someone who is baffled by technology. It was written by a 40-year computer veteran who wants to take the mystery out of computers and allow everyone to gain a true understanding of exactly what computers are, and also what they are not. Years of writing, diagramming, piloting and editing have culminated in one easy to read volume that contains all of the basic principles of computers written so that everyone can understand them. There used to be only two types of book that delved into the insides of computers. The simple ones point out the major parts and describe their functions in broad general terms. Computer Science textbooks eventually tell the whole story, but along the way, they include every detail that an engineer could conceivably ever need to know. Like Momma Bear's porridge, But How Do It Know? is just right, but it is much more than just a happy medium. For the first time, this book thoroughly demonstrates each of the basic principles that have been used in every computer ever built, while at the same time showing the integral role that codes play in everything that computers are able to do. It cuts through all of the electronics and mathematics, and gets right to practical matters. Here is a simple part, see what it does. Connect a few of these together and you get a new part that does another simple thing. After just a few iterations of connecting up simple parts - voilà! - it's a computer. And it is much simpler than anyone ever imagined. But How Do It Know? really explains how computers work. They are far simpler than anyone has ever permitted you to believe. It contains everything you need to know, and nothing you don't need to know. No technical background of any kind is required. The basic principles of computers have not changed one iota since they were invented in the mid 20th century. "Since the day I learned how computers work, it always felt like I knew a giant secret, but couldn't tell anyone," says the author. Now he's taken the time to explain it in such a manner that anyone can have that same moment of enlightenment and thereafter see computers in an entirely new light.

Generative Design: Visualize, Program, and Create with Processing


Hartmut Bohnacker - 2009
    By using accessible programming languages such as Processing, artists and designers are producing extravagant, crystalline structures that can form the basis of anything from patterned textiles and typography to lighting, scientific diagrams, sculptures, films, and even fantastical buildings. Opening with a gallery of thirty-five illustrated case studies, Generative Design takes users through specific, practical instructions on how to create their own visual experiments by combining simple-to-use programming codes with basic design principles. A detailed handbook of advanced strategies provides visual artists with all the tools to achieve proficiency. Both a how-to manual and a showcase for recent work in this exciting new field, Generative Design is the definitive study and reference book that designers have been waiting for.

Growing Object-Oriented Software, Guided by Tests


Steve Freeman - 2009
    This one's a keeper." --Robert C. Martin "If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book."--Michael Feathers Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple idea: Write tests for your code before you write the code itself. However, this simple idea takes skill and judgment to do well. Now there's a practical guide to TDD that takes you beyond the basic concepts. Drawing on a decade of experience building real-world systems, two TDD pioneers show how to let tests guide your development and "grow" software that is coherent, reliable, and maintainable. Steve Freeman and Nat Pryce describe the processes they use, the design principles they strive to achieve, and some of the tools that help them get the job done. Through an extended worked example, you'll learn how TDD works at multiple levels, using tests to drive the features and the object-oriented structure of the code, and using Mock Objects to discover and then describe relationships between objects. Along the way, the book systematically addresses challenges that development teams encounter with TDD--from integrating TDD into your processes to testing your most difficult features. Coverage includes - Implementing TDD effectively: getting started, and maintaining your momentum throughout the project - Creating cleaner, more expressive, more sustainable code - Using tests to stay relentlessly focused on sustaining quality - Understanding how TDD, Mock Objects, and Object-Oriented Design come together in the context of a real software development project - Using Mock Objects to guide object-oriented designs - Succeeding where TDD is difficult: managing complex test data, and testing persistence and concurrency

Pro Git


Scott Chacon - 2009
    It took the open source world by storm since its inception in 2005, and is used by small development shops and giants like Google, Red Hat, and IBM, and of course many open source projects.A book by Git experts to turn you into a Git expert. Introduces the world of distributed version control Shows how to build a Git development workflow.

Handcrafted CSS: More Bulletproof Web Design / Bulletproof Essentials


Dan Cederholm - 2009
    Handcrafted CSS: Video Edition: More Bulletproof Web Design

The Little Book of Semaphores: The Ins and Outs of Concurrency Control and Common Mistakes


Allen B. Downey - 2009
    In most computer science curricula, synchronization is a module in an Operating Systems class. OS textbooks present a standard set of problems with a standard set of solutions, but most students don't get a good understanding of the material or the ability to solve similar problems. The approach of this book is to identify patterns that are useful for a variety of synchronization problems and then show how they can be assembled into solutions. After each problem, the book offers a hint before showing a solution, giving students a better chance of discovering solutions on their own. The book covers the classical problems, including "Readers-writers," "Producer-consumer," and "Dining Philosophers." In addition, it collects a number of not-so-classical problems. *** Published under the terms of the GNU Free Documentation License. Money raised from the sale of this book supports the development of free software and documentation.

Inside Microsoft SQL Server 2008: T-SQL Querying


Itzik Ben-Gan - 2009
    Deepen your understanding of architecture and internals—and gain practical approaches and advanced techniques to optimize your code’s performance.Discover how to:- Move from procedural programming to the language of sets and logic- Optimize query tuning with a top-down methodology- Assess algorithmic complexity to predict performance- Compare data-aggregation techniques, including new grouping sets- Manage data modification—insert, delete, update, merge—for performance- Write more efficient queries against partitioned tables- Work with graphs, trees, hierarchies, and recursive queries- Plus—Use pure-logic puzzles to sharpen your problem-solving skills

Introduction to Meta-Analysis


Michael Borenstein - 2009
    Meta-analysis has become a critically important tool in fields as diverse as medicine, pharmacology, epidemiology, education, psychology, business, and ecology. Introduction to Meta-Analysis Outlines the role of meta-analysis in the research process Shows how to compute effects sizes and treatment effects Explains the fixed-effect and random-effects models for synthesizing data Demonstrates how to assess and interpret variation in effect size across studies Clarifies concepts using text and figures, followed by formulas and examples Explains how to avoid common mistakes in meta-analysis Discusses controversies in meta-analysis Features a web site with additional material and exercises A superb combination of lucid prose and informative graphics, written by four of the world's leading experts on all aspects of meta-analysis. Borenstein, Hedges, Higgins, and Rothstein provide a refreshing departure from cookbook approaches with their clear explanations of the what and why of meta-analysis. The book is ideal as a course textbook or for self-study. My students, who used pre-publication versions of some of the chapters, raved about the clarity of the explanations and examples. David Rindskopf, Distinguished Professor of Educational Psychology, City University of New York, Graduate School and University Center, & Editor of the Journal of Educational and Behavioral Statistics.The approach taken by Introduction to Meta-analysis is intended to be primarily conceptual, and it is amazingly successful at achieving that goal. The reader can comfortably skip the formulas and still understand their application and underlying motivation. For the more statistically sophisticated reader, the relevant formulas and worked examples provide a superb practical guide to performing a meta-analysis. The book provides an eclectic mix of examples from education, social science, biomedical studies, and even ecology. For anyone considering leading a course in meta-analysis, or pursuing self-directed study, Introduction to Meta-analysis would be a clear first choice. Jesse A. Berlin, ScDIntroduction to Meta-Analysis is an excellent resource for novices and experts alike. The book provides a clear and comprehensive presentation of all basic and most advanced approaches to meta-analysis. This book will be referenced for decades. Michael A. McDaniel, Professor of Human Resources and Organizational Behavior, Virginia Commonwealth University

The Art of Computer Programming, Volume 4, Fascicles 0-4


Donald Ervin Knuth - 2009
    4, Fascicle 1 Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and offers the purchaser a $50 discount off the price of buying the four volumes individually. The Art of Computer Programming, Volumes 1-4A Boxed Set, 3/e ISBN: 0321751043 Art of Computer Programming, Vo... Full description

Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman


Dave Hoover - 2009
    To grow professionally, you also need soft skills and effective learning techniques. Honing those skills is what this book is all about. Authors Dave Hoover and Adewale Oshineye have cataloged dozens of behavior patterns to help you perfect essential aspects of your craft. Compiled from years of research, many interviews, and feedback from O'Reilly's online forum, these patterns address difficult situations that programmers, administrators, and DBAs face every day. And it's not just about financial success. Apprenticeship Patterns also approaches software development as a means to personal fulfillment. Discover how this book can help you make the best of both your life and your career. Solutions to some common obstacles that this book explores in-depth include:Burned out at work? "Nurture Your Passion" by finding a pet project to rediscover the joy of problem solving.Feeling overwhelmed by new information? Re-explore familiar territory by building something you've built before, then use "Retreat into Competence" to move forward again.Stuck in your learning? Seek a team of experienced and talented developers with whom you can "Be the Worst" for a while. "Brilliant stuff! Reading this book was like being in a time machine that pulled me back to those key learning moments in my career as a professional software developer and, instead of having to learn best practices the hard way, I had a guru sitting on my shoulder guiding me every step towards master craftsmanship. I'll certainly be recommending this book to clients. I wish I had this book 14 years ago!" -Russ Miles, CEO, OpenCredo

Building Embedded Linux Systems


Philippe Gerum - 2009
    Building Embedded Linux Systems offers an in-depth, hard-core guide to putting together embedded systems based on Linux. Updated for the latest version of the Linux kernel, this new edition gives you the basics of building embedded Linux systems, along with the configuration, setup, and use of more than 40 different open source and free software packages in common use. The book also looks at the strengths and weaknesses of using Linux in an embedded system, plus a discussion of licensing issues, and an introduction to real-time, with a discussion of real-time options for Linux. This indispensable book features arcane and previously undocumented procedures for: Building your own GNU development toolchain Using an efficient embedded development framework Selecting, configuring, building, and installing a target-specific kernel Creating a complete target root file system Setting up, manipulating, and using solid-state storage devices Installing and configuring a boot loader for the target Cross-compiling a slew of utilities and packages Debugging your embedded system using a plethora of tools and techniques Using the uClibc, BusyBox, U-Boot, OpenSSH, thttpd, tftp, strace, and gdb packages By presenting how to build the operating system components from pristine sources and how to find more documentation or help, Building Embedded Linux Systems greatly simplifies the task of keeping complete control over your embedded operating system. About the Authors Philippe Gerum is the founder and maintainer of the Adeos

grep Pocket Reference


John Bambenek - 2009
    This handy book is ideal for system administrators, security professionals, developers, and others who want to learn more about grep and take new approaches with it -- for everything from mail filtering and system log management to malware analysis. With grep Pocket Reference, you will:Learn methods for filtering large files for specific content Acquire information not included in the current grep documentation Get several tricks for using variants such as egrep Keep key information about grep right at your fingertips Find the answers you need about grep quickly and easily. If you're familiar with this utility, grep Pocket Reference will help you refresh your basic knowledge, understand rare situations, and work more efficiently. If you're new to grep, this book is the best way to get started.

Programming: Introduction to Programming Using Java


David J. Eck - 2009
    700 pages. The first programming course at Hobart and William Smith Colleges covers the Java programming language. Since 1996, the textbook for the course has been this Java textbook that was written for the course. The current version 2009 is Introduction to Programming Using Java, Version 5.0. It requires Java 5.0 or higher. It is an introduction to programming and also an introduction to Java directed towards people who do not have any background in programming, although it might also be useful for experienced programmers who want to learn something about Java. It is certainly not meant to provide complete coverage of the Java language. ABOUT THE AUTHOR: David J. Eck, Ph.D. in Mathematics (Brandeis University, 1980) is working as a teacher and instructor at the Department of Mathematics and Computer Science of the Hobart and William Smith Colleges.

Brownfield Application Development in .NET


Donald Belcham - 2009
    Using an existing application as an example, this book guides readers in applying the techniques and best practices they need to make a brownfield application more maintainable and receptive to change. As the book proceeds, the authors introduce frameworks and tools commonly used today while still approaching the subject from a conceptual level so that you can substitute alternate tools as appropriate. Because the book is based on the authors' experiences, Brownfield Application Development in .NET moves beyond the theories and shows readers the techniques they need to be successful.

Android Programming Tutorials


Mark L. Murphy - 2009
    Android Programming Tutorials gives you hands-on instruction in how to build sophisticated Android applications, using many of the technologies outlined in CommonsWare's other Android books. These exercises lead you through the basics of creating Android applications, all the way through many fun Android features like Internet access, location tracking, maps, integrated WebKit browsers, cameras, accelerometers, home screen widgets, and much more. Full source code to all the exercise answers is available, to help you if you get stuck. Android Programming Tutorials makes an excellent companion volume to more traditional Android books that merely tell you what is possible.

Introduction To Combinatorial Algorithms And Boolean Functions


Donald Ervin Knuth - 2009
    

Essential Programming for Linguistics


Martin Weisser - 2009
    Assuming no background knowledge of programming, the author introduces basic notions and techniques needed for linguistics programming and helps readers to develop their understanding of electronic texts.The book includes many examples based on diverse topics in linguistics in order to demonstrate the applicability of the concepts at the heart of programming. Practical examples are designed to help the reader to: *Identify basic issues in handling language data, including Unicode processing*Conduct simple analyses in morphology/morphosyntax, and phonotactics*Understanding techniques for matching linguistic patterns*Learn to convert data into formats and data structures suitable for linguistic analysis*Create frequency lists from corpus materials to gather basic descriptive statistics on texts*Understand, obtain and 'clean up' web-based data*Design graphical user interfaces for writing more efficient and easy-to-use analysis tools.Two different types of exercise help readers to either learn to interpret and understand illustrative sample code, or to develop algorithmic thinking and solution strategies through turning a series of instructions into sample programs. Readers will be equipped with the necessary tools for designing their own extended projects.Key Features: *Ideal introduction for students of linguistics attempting to process corpus materials or literary texts for dissertations, theses or advanced research work*Linguistic examples throughout the text clearly demonstrate the application of programming theory and techniques*Coverage ranging from basic to more complex topics and methodologies enables the reader to progress at their own pace*Two chapters on the advantages of modularity and associated issues prov