I would never have written this book without the inspiration I drew from my former colleagues at UC Berkeley. I want to particularly thank Chris Ashley, Isaac Mankita, and Susan Stone, who helped me persevere by listening patiently to my exuberant book talk over lunch or tea. Thom King and Tom Schirmer generously shared their knowledge of data architecture and software development. Shifra Gaman and Rich Meyer provided tons of technical and moral support. Thanks to David Greenbaum for his supportive attitude toward my teaching work and to Rick Jaffe, a colleague who took my class and who has been tirelessly championing my teaching to others