Software engineering, book notes & ideas

  1. How to Decide by Annie Duke: Notes on Better Decisions

    Personal notes on Annie Duke’s How to Decide: outcome bias, decision trees, premortems, and connections to learning from uncertain outcomes.

  2. API Design with Find and Upsert: Lessons from CRUD

    Lessons simplifying a persistence API with Find and Upsert, including a GraphQL job-requisition example and the limits of mapping everything to CRUD.

  3. Programming Language Quirks: Go, JavaScript, CSS & Python

    Reflections on how language quirks shape software: Go code generation, JavaScript dependencies, CSS shorthand, and Python context managers.

  4. Liskov Substitution Principle in Go: Practical Examples

    Explore the Liskov Substitution Principle in Go through small interfaces, storage contracts, and functional options, with examples from real systems.

  5. Never Split the Difference: Notes on Tactical Empathy

    Notes on Chris Voss’s Never Split the Difference: tactical empathy, labeling emotions, calibrated questions, and the Ackerman bargaining model.

  6. Semantic Versioning as an Engineering Interview Signal

    How discussing semantic versioning can reveal an engineer’s approach to API design, backward compatibility, and Hyrum’s Law during interviews.

  7. Software Documentation: Best Practices & Documentation Debt

    Practical software documentation lessons: prevent stale docs, reduce documentation debt, write for readers, and measure whether your docs help.

  8. Change Is Inevitable. Progress Is Optional

    A personal reflection on seeing old friends succeed, comparing different paths through life, and the tension between motivation and self-doubt.

  9. Programming Beyond Practices by Gregory Brown: Notes

    A developer’s notes on Programming Beyond Practices by Gregory T. Brown, focusing on exploratory programming, prototypes, and shared understanding.

  10. Nudge Book Notes: Choice Architecture & Default Options

    Notes on Nudge by Richard Thaler and Cass Sunstein: choice architecture, default options, cognitive biases, and practical self-control strategies.

  11. Humble Inquiry by Edgar Schein: Notes & the ORJI Cycle

    Notes on Edgar Schein’s Humble Inquiry: here-and-now humility, the ORJI cycle, and building trust through better questions and communication.

  12. Define Terms and Assumptions Before Starting a Project

    Why clarity matters at the start of a project: reflections on defining terms, goals, and assumptions through fear-setting and design sprints.

  13. Generative SVG Art with D3.js: Colored Streaks

    Recreating a colorful header graphic with SVG and D3.js: layered paths, rounded corners, varying opacity, and Gaussian noise, with a live demo.

Matthew Clemens © 2026