My awesome notes
When I found an interesting article or resource, if something opened my eyes I documented it here.
-
Learning different technologies based in the Scala Programming Language - Coding exercises for Standard library, FP in Scala, Cats and other libraries.
-
Abstract Type Members versus Generic Type Parameters in Scala -
trait Collection[T] {}
vs.trait Collection { type T }
. -
The Principles of the Flix Programming Language - Design principles of Flix programming language and Flix compiler. Awesome checklist.
-
Local-first applications with automerge - Conflict-Free Replicated Data Type (CRDT), binary protocol, lossless snapshots, JavaScript and Rust (WebAssembly) implementations.
-
Re-architecting Apache Kafka for the cloud - Tiered storage, Kraft cluster management (instead of ZK), multi-tenancy (consumer/producer quota, threads, connections, replication quota).
-
Understanding the Python GIL - Global interpreter lock, the reason why Python doesn’t scale on multi-core architectures.
-
Roblox Return to Service 10/28-10/31 2021 - Postmortem from non-trivial 73h outage due to Consul failure, why it took so long? Consul monitoring didn’t work without Consul 😜
-
Exception Handling Considered Harmful - If you have always perceived that exception handling doesn’t really work.
-
The Scheduler Saga - Implement Goroutines from scratch: global run-queue, distributed run-queue, work stealing, handoff, cooperative preemption, FIFO vs LIFO.
-
A Guide to the Go Garbage Collector - Interesting how it differs from JVM, one or two knobs for configuration.
-
Minimal version selection (MVS) - Dependency management algorithm to produce high fidelity builds.
-
Documenting architecture decisions - One or two pagers with the motivations behind important architecture decisions, without ADRs this kind of knowledge evaporates.
-
Code review automated comments - Framework used by many tools for commenting code reviews (documentation linters, static code analysis, test coverage).
-
Write a documentation like a pro - Apply Microsoft or Google style guide for your writing.
-
Test sizes - Google way for tests classification: small, medium, large (in addition to test scopes: unit, integration, e2e).
-
Pre-commit: Don’t Git hooked! - Don’t use Git pre-commit hook for checking code quality, valuable checks take too much time to run.
-
Don’t deploy applications with Terraform - Terraform is for static resources management, not for application deployment.