Chapter 38 Further Reading

Software Architecture

  • Robert C. Martin, Clean Architecture: A Craftsman's Guide to Software Structure and Design (2017) The definitive guide to the layered architecture pattern used in PennyWise 2.0. Martin's "Dependency Rule" — dependencies must point inward, toward higher-level policies — is exactly the principle behind our unit hierarchy.

  • Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software (2003) The concept of a "domain model" (our FinanceCore unit) as the center of the architecture comes from Evans's work. Chapters 1-7 are accessible to intermediate programmers.

  • Martin Fowler, Patterns of Enterprise Application Architecture (2002) Covers the "Active Record," "Repository," and "Data Mapper" patterns for database access. Our TFinanceDatabase most closely follows the Repository pattern.

Testing

  • Kent Beck, Test Driven Development: By Example (2002) The classic introduction to writing tests before writing code. While the examples are in Java and Python, the principles apply directly to FPCUnit.

  • Free Pascal FPCUnit Documentation https://wiki.freepascal.org/fpcunit The official guide to Free Pascal's unit testing framework. Covers test fixtures, assertions, test suites, and test runners.

  • Michael Feathers, Working Effectively with Legacy Code (2004) If you inherit a Pascal codebase without tests (and this happens frequently in the Pascal ecosystem), Feathers's techniques for adding tests to existing code are invaluable.

Database Design

  • C.J. Date, An Introduction to Database Systems (8th edition, 2003) The definitive textbook on relational database theory. If you want to understand why we normalize tables, create indexes, and use constraints, Date explains it all.

  • SQLite Documentation https://www.sqlite.org/docs.html The official SQLite documentation is exceptionally well-written. The "How SQLite Works" section explains the B-tree storage engine, the query planner, and the transaction mechanism.

  • Free Pascal SQLDB Package Documentation https://wiki.freepascal.org/SQLdb_Tutorial Tutorials and reference for the SQLDB components used in PennyWise's database layer.

Lazarus GUI Development

  • Lazarus IDE Documentation https://wiki.lazarus-ide.org/ The comprehensive wiki covering all aspects of Lazarus development, from form design to component creation.

  • TAChart Documentation https://wiki.lazarus-ide.org/TAChart_documentation Reference for the chart components used in PennyWise's pie and bar charts.

  • Michaeel Van Canneyt and Mattias Gaertner, Lazarus: The Complete Guide (2011) Though somewhat dated, this remains the most comprehensive book on Lazarus development. Covers the LCL, form design, database programming, and cross-platform deployment.

Open-Source Best Practices

  • Karl Fogel, Producing Open Source Software: How to Run a Successful Free Software Project (2nd edition, 2017) https://producingoss.com/ Free online. The definitive guide to running an open-source project. Covers licensing, governance, communication, and community building. Directly applicable to PennyWise's open-source journey described in Case Study 2.

  • GitHub Open Source Guides https://opensource.guide/ Practical guides on starting, contributing to, and maintaining open-source projects.

Cross-Platform Development

  • fpcupdeluxe https://github.com/LongDirtyAnimAlf/fpcupdeluxe The tool for installing and managing Free Pascal cross-compilers. Essential for building PennyWise for multiple platforms from a single machine.

  • Lazarus Cross Compiling https://wiki.lazarus-ide.org/Cross_compiling Official guide to cross-compilation with Lazarus, including setup for Windows-to-Linux, Linux-to-Windows, and macOS targets.

The Capstone Mentality

  • Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software Engineering (Anniversary Edition, 1995) Brooks's essays on the realities of software engineering — estimation, complexity, communication, and the "second-system effect" — are essential reading for anyone who has just built their first real application and is thinking about version 3.0.

  • Niklaus Wirth, Algorithms + Data Structures = Programs (1976) The book that inspired our fifth theme. Now that you have built a complete application, rereading Wirth will hit differently — you will recognize every pattern, every data structure, every algorithm from your own code.