- Dumb code is smart code
- Kernighan’s Law
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
- Repeat yourself, do more than one thing, and rewrite everything
- Write code that’s easy to delete, and easy to debug too.
- Kernighan’s Law
- Use assert()
- Use data-oriented design
- Think what data is actually needed for the program, what minimal set of transformations are required to solve the problem.
- Storing data relationally (column-oriented) is more data oriented than OOP.
- CppCon 2014: Mike Acton “Data-Oriented Design and C++”
- Andrew Kelley - Practical DOD
- Data-oriented design book
- A relational data model is useful for most problems
- Programmer as wizard, programmer as engineer
- Different extremes of handling failures robustly: The Erlang approach or the mission critical approach
- The Erlang approach: Let it Crash
- Write the happy path, plan for failure. Minimize blast radius and restart subcomponents needed.
- The Mission Critical approach: Clean-room design, test everything, simulate the heck out of it, use formal verification
- The Erlang approach: Let it Crash
- Parsing
- Performance
- I hate slow software. Modern computers feel sluggish because they don’t optimize for low latency user input and response.
- Property-based testing
- Programming sucks
- John Carmack on Inlined Code
- Handles are the better pointers
- Game feel