Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
The Productive Programmer
Foreword
Preface
Who This Book Is For
Conventions Used in This Book
Using Code Examples
How to Contact Us
Safari® Enabled
Acknowledgments
1. Introduction
Why a Book on Programmer Productivity?
Address Completion in Browsers
Internet Explorer
Firefox
What This Book Is About
Part I: Mechanics (The Productivity Principles)
Part II: Practice (Philosophy)
Where to Go Now?
I. Mechanics
2. Acceleration
Launching Pad
Launchers
Creating a Windows Launching Pad
Mac OS X
Launching in Linux
Accelerators
Operating System Accelerators
Windows address bar
Mac OS X Finder
Clipboard(s)
Remember History
There and Back
Command Prompts at Your Fingertips
Command Prompt Explorer Bar
Here!
Development Accelerators
Search Trumps Navigation in Tools, Too
Macros
Macro Recorder
Key Macro Tools
Summary
3. Focus
Kill Distractions
Blocking Strategies
Turn Off Needless Notifications
Create Quiet Time
Search Trumps Navigation
Find Hard Targets
Use Rooted Views
Rooted Views in Windows
Rooted Views in OS X
Use Sticky Attributes
Use Project-Based Shortcuts
Multiply Your Monitors
Segregate Your Workspace with Virtual Desktops
Summary
4. Automation
Don’t Reinvent Wheels
Cache Stuff Locally
Automate Your Interaction with Web Sites
Interact with RSS Feeds
Subvert Ant for Non-Build Tasks
Subvert Rake for Common Tasks
Subvert Selenium to Walk Web Pages
Use Bash to Harvest Exception Counts
Replace Batch Files with Windows Power Shell
Use Mac OS X Automator to Delete Old Downloads
Tame Command-Line Subversion
Build a SQL Splitter in Ruby
Justifying Automation
Don’t Shave Yaks
Summary
5. Canonicality
DRY Version Control
Use a Canonical Build Machine
Indirection
Taming Eclipse Plug-ins
Syncing JEdit Macros
TextMate Bundles
Canonical Configuration
Use Virtualization
DRY Impedance Mismatches
Data Mapping
Migrations
Rake migrations
dbDeploy
DRY Documentation
SVN2Wiki
Class Diagrams
Database Schemas
Summary
II. Practice
6. Test-Driven Design
Evolving Tests
TDDing Unit Tests
Measurements
Design Impact
Code Coverage
7. Static Analysis
Byte Code Analysis
Source Analysis
Generate Metrics with Panopticode
Analysis for Dynamic Languages
8. Good Citizenship
Breaking Encapsulation
Constructors
Static Methods
Criminal Behavior
9. YAGNI
10. Ancient Philosophers
Aristotle’s Essential and Accidental Properties
Occam’s Razor
The Law of Demeter
Software Lore
11. Question Authority
Angry Monkeys
Fluent Interfaces
Anti-Objects
12. Meta-Programming
Java and Reflection
Testing Java with Groovy
Writing Fluent Interfaces
Whither Meta-Programming?
13. Composed Method and SLAP
Composed Method in Action
SLAP
14. Polyglot Programming
How Did We Get Here? And Where Exactly Is Here?
Java’s Birth and Upbringing
The Dark Side of Java
That happens when?
Zero-based arrays make sense to…
Where Are We Going? And How Do We Get There?
Polyglot Programming Today
Today’s Platform, Tomorrow’s Languages
Using Jaskell
Ola’s Pyramid
15. Find the Perfect Tools
The Quest for the Perfect Editor
Neal’s List of What Makes a Perfect Editor
A macro recorder
Launchable from the command line
Regular expression search and replace
Additive cut and copy commands
Multiple registers
Cross-platform
The Candidates
Choosing the Right Tool for the Job
Refactoring SqlSplitter for Testablility
Keeping Behavior in Code
Un-Choosing the Wrong Tools
16. Conclusion: Carrying on the Conversation
A. Building Blocks
Cygwin
The Command Line
Getting Help When You Need It
Index
Colophon
← Prev
Back
Next →
← Prev
Back
Next →