Java

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.
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.
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.
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.
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.