Foreword;Preface; Who This Book Is For; Conventions Used in This Book; Using Code Examples; How to Contact Us; SafariĀ® Enabled; Acknowledgments;Chapter 1: Introduction; 1.1 Why a Book on Programmer Productivity?; 1.2 What This Book Is About; 1.3 Where to Go Now?;Mechanics; Chapter 2: Acceleration; 2.1 Launching Pad; 2.2 Accelerators; 2.3 Macros; 2.4 Summary; Chapter 3: Focus; 3.
1 Kill Distractions; 3.2 Search Trumps Navigation; 3.3 Find Hard Targets; 3.4 Use Rooted Views; 3.5 Use Sticky Attributes; 3.6 Use Project-Based Shortcuts; 3.7 Multiply Your Monitors; 3.8 Segregate Your Workspace with Virtual Desktops; 3.
9 Summary; Chapter 4: Automation; 4.1 Don't Reinvent Wheels; 4.2 Cache Stuff Locally; 4.3 Automate Your Interaction with Web Sites; 4.4 Interact with RSS Feeds; 4.5 Subvert Ant for Non-Build Tasks; 4.6 Subvert Rake for Common Tasks; 4.7 Subvert Selenium to Walk Web Pages; 4.
8 Use Bash to Harvest Exception Counts; 4.9 Replace Batch Files with Windows Power Shell; 4.10 Use Mac OS X Automator to Delete Old Downloads; 4.11 Tame Command-Line Subversion; 4.12 Build a SQL Splitter in Ruby; 4.13 Justifying Automation; 4.14 Don't Shave Yaks; 4.15 Summary; Chapter 5: Canonicality; 5.
1 DRY Version Control; 5.2 Use a Canonical Build Machine; 5.3 Indirection; 5.4 Use Virtualization; 5.5 DRY Impedance Mismatches; 5.6 DRY Documentation; 5.7 Summary;Practice; Chapter 6: Test-Driven Design; 6.1 Evolving Tests; 6.
2 Code Coverage; Chapter 7: Static Analysis; 7.1 Byte Code Analysis; 7.2 Source Analysis; 7.3 Generate Metrics with Panopticode; 7.4 Analysis for Dynamic Languages; Chapter 8: Good Citizenship; 8.1 Breaking Encapsulation; 8.2 Constructors; 8.3 Static Methods; 8.
4 Criminal Behavior; Chapter 9: YAGNI; Chapter 10: Ancient Philosophers; 10.1 Aristotle's Essential and Accidental Properties; 10.2 Occam's Razor; 10.3 The Law of Demeter; 10.4 Software Lore; Chapter 11: Question Authority; 11.1 Angry Monkeys; 11.2 Fluent Interfaces; 11.3 Anti-Objects; Chapter 12: Meta-Programming; 12.
1 Java and Reflection; 12.2 Testing Java with Groovy; 12.3 Writing Fluent Interfaces; 12.4 Whither Meta-Programming?; Chapter 13: Composed Method and SLAP; 13.1 Composed Method in Action; 13.2 SLAP; Chapter 14: Polyglot Programming; 14.1 How Did We Get Here? And Where Exactly Is Here?; 14.2 Where Are We Going? And How Do We Get There?; 14.
3 Ola's Pyramid; Chapter 15: Find the Perfect Tools; 15.1 The Quest for the Perfect Editor; 15.2 The Candidates; 15.3 Choosing the Right Tool for the Job; 15.4 Un-Choosing the Wrong Tools;Chapter 16: Conclusion: Carrying on the Conversation;Building Blocks; Cygwin; The Command Line;Colophon;.