Concurrency Models Explained: How Go, Node.js, Java, Erlang, Rust, and Python Actually Work

Go, Node.js, Java virtual threads, Erlang, Rust, Python, Kotlin: each language’s concurrency model is a different engineering trade-off against the same physics. This article builds the framework for understanding all of them, starting from the OS scheduler and working upward.

May 4, 2026 · map[name:Blackwell Systems]

How Multicore CPUs Changed Object-Oriented Programming

OOP’s implicit reference semantics were manageable in single-threaded code. But when CPUs went multicore in 2005, hidden shared state went from ‘confusing’ to ‘catastrophic.’ This is why Go and Rust refined OOP: keeping methods and encapsulation while replacing inheritance with composition and implicit references with value semantics.

January 24, 2026 · map[name:Blackwell Systems]

Go's Value Philosophy: Part 3 - Zero Values: Go's Valid-by-Default Philosophy

In Python, undeclared variables don’t exist. In Java, local variables can’t be used before assignment. In Go, declaration creates a valid value. There is no uninitialized state - every value works from the moment it’s declared.

January 23, 2026 · map[name:Blackwell Systems]

Go's Value Philosophy: Part 1 - Why Everything Is a Value, Not an Object

In Python, everything is an object. In Java, everything is a class. In Go, everything is a value. These are fundamental design philosophies that shape how you write concurrent code, manage memory, and reason about performance.

January 22, 2026 · map[name:Blackwell Systems]

The Price of Everything Being an Object in Python

All Python developers know that everything in Python is an object. But at what cost? A deep dive into Python’s heap-only memory model and the 28-byte overhead of storing a simple integer.

January 10, 2026 · map[name:Blackwell Systems]