CS DIY
open source computer science DIY
Book: A philosophy of software design, John Ousterhout, 2018
How to design software systems to minimize their complexity.
When developing a module, look for opportunities to take a little bit of extra suffering upon yourself in order to reduce the suffering of your users.
it’s more important for a module to have simple interface than a simple implementation
The best way to eliminate exception handling complexity is to define your APIs so that there are no exceptions to handle: define errors out of existence
Overall the best way to reduce bugs is to make software simpler.