Reading List

Ben (@vivavolt), August, 2021


WIP List of useful resources that have informed my thinking.

Philosophy of Code

Elements of Clojure (Zack Tellman)

Software Design for Flexibility

Gödel, Escher, Bach (Douglas Hofstadter)

Type-Driven Development with Idris (Edwin Brady)

The Case Against Reality (Donald Hoffman)

A visual guide to bayesian thinking (Julia Galef)

On Abstraction (Zack Tellman)

The Nature of Code (Daniel Shiffman)

Modularity, Decoupling

Simple Made Easy (Rich Hickey)

The Language of the System (Rich Hickey)

Maybe Not (Rich Hickey)

Category Theory

Category Theory for Programmers

Seven Sketches in Compositionality: An Invitation to Applied Category Theory

Domain Modelling

https://www.youtube.com/watch?v=pMuiVlnGqjk

The 'designing with types' series

Domain Driven Design

Type-Driven Development

Software Architecture, Processes, Organization - and Humans - Stefan Tilkov

Application Architecture

Organizing modules in a project

Functional Core, Imperative Shell

Functional architecture is Ports and Adapters

https://www.youtube.com/watch?v=US8QG9I1XW0

Change Management

Write code that is easy to delete, not easy to extend.

Writing Easy-To-Change Code: Your Second-Most Important Goal As A Developer - WWDC 2011 - Videos - Apple Developer

"Perfection" (and DRY)

Leave it better than you found it

boiling the ocean

avoid hasty abstraction

Traps and Mitigations

Null References: The Billion Dollar Mistake

https://www.youtube.com/watch?v=-6BsiVyC1kM

Error Handling

Railway Oriented Programming

Testing

When Writing Unit Tests, Don't Use Mocks | SendGrid

Mocking is a Code Smell

Functional Programming

lenses

Always Be Composing (Zack Tellman)

Clojure

Clojure Distilled

Clojure for the Brave and True (Daniel Higginbotham)

A History of Clojure (Rich Hickey)

Data Processing and Transformation

Specter Powerful and Simple Data Structure Manipulation (Nathan Marz)

Code Review

What to look for in a code review

Tooling

Creating a Tools Pipeline for Horizon: Zero Dawn

Databases, Querying & Persistence

The Strength of the Record

Against SQL

Procedural Generation

Math for Game Developers: End-to-End Procedural Generation in Caves of Qud

Automata, State Machines

Solving Problems with Automata

Async Processes, Queueing

Communicating Sequential Processes

Everything Will Flow

Clojure core.async (Rich Hickey)

Datascript Chat (tonsky)

Publish and Subscribe with core.async's pub and sub

Combining & Controlling Channels with core.async's merge and mix

User Interfaces and Hickey

Spatial Software

Learning and Programming

Learnable Programming (Brett Victor)

Modular, Reactive Digital Education (Ben Follington)

Subscribe to ⊙ fundamental.sh

You'll receive new posts straight to your inbox when they're ready. I'm not interested in spamming you, I'm interested in sharing my passion for programming with other likeminded people.


Powered by Buttondown.