Programming
Table of Contents
- Testing (Programming)
- Program as Data
- Probabilistic Logic Programming
- The Night Watch
- Rump's Royal Pain
- Property Based Testing
- Software Design Books
- A Philosophy of Software Design
- Your Code as a Crime Scene
- Code that Fits in Your Head
- Documentation
- BitTorrent
1. Conferences
2. Style
- Tiger Style: https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TIGER_STYLE.md
- Callbacks go last in the list of parameters. This mirrors control flow: callbacks are also invoked last.
- Pair the asserts (Contract Checker)
- Fail Fast
3. Event Based Programming
Can be thought as a programming paradigm. Useful for Distributed systems.
Procedural paradigm is the most familiar and simple paradigm for programmming. However, it doesn't work for distributed system, because function calls
- aren't movable accross resource: they happen in the system it was started
- are tied to lifetime of resource
However, event handler based system is fit for distributed systems. They provide the necessary semantics.
But have the cons:
- stack ripping / callback hell
Can we have procedure based programming model with an event based execution model? An event loop provides this model.
For concurrent applications, event loop (async/await) provide the abstraction of procedurs based programming and event based execution.
Similarly, we can use distributed event loop [https://www.youtube.com/watch?v=hofEKFZtBj8] to translate the same effect to distributed systems.
- We can have recovery if the component async commands can be restarted and give idempotent results.