Lessons I took away from reading Skunk Works and how to effectively lead teams
Learning Zig Through Brute Force Pt. 2: Memory Management
Background
For context, see my previous post about defining nodes and why I’m doing this.
Basic Tree Operations
In the previous post we defined our basic node structure and now we will use the nodes to build a tree.
For this tree I wanted to define some basic constraints that will influence my design.
- The tree must own all of its own allocations. This will make more sense when we talk about how Zig manages heap memory.
- Formally we are building an arborescence where
m=2and each node is unique, but informally this is a binary tree that will be unbalanced yet sorted. - Duplicate values cannot be inserted into the tree.
If we remember the node implementation, each node has a left_child and a right_child that are optional pointers to other nodes. This means the linked structure of our tree with a depth of 3 would look like this.
Learning Zig Through Brute Force Pt. 1: Optional Pointers
Dealing with optionals in Zig while building a Tree, discoving how Zig handles memory
Understanding Bitwise & in Rust
Learning bitwise & by making mistakes while building a Chip-8 emulator
Rust Traits as Interfaces
How to use the Trait system in Rust, and how they compare to Interfaces
Concurrency in Go
How Go uses concurrency with channels and goroutines
Object Oriented Programming in Go
How Go accomplishes OOP, with out having type hierarchy, and instead using composition, embedding and interfaces
Interface vs Abstract Class
Whats the difference, when do we choose one over the other, why is abstraction important