Programming
Go Structs Are Not C++ Classes: Why Similar Modeling Roles Produce Different Hardware Execution Patterns
Structs with methods look like classes, but the hardware tells a different story. Go makes contiguous values + static calls the path of least resistance. In inheritance-heavy C++ designs, you often end up with pointers + virtual dispatch + scattered memory. This isn’t syntax - it’s what the CPU executes.
How Continuous Fuzzing Finds Bugs Traditional Testing Misses
Traditional tests check examples you think of. Fuzzing explores millions of combinations you don’t. Coverage-guided fuzzing found two production bugs in goldenthread before release - a UTF-8 corruption issue and a regex escaping bug. Here’s how continuous fuzzing works and how to set it up.
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 Interfaces: The Type System Feature You Implement By Accident
You write a struct with a Write method. Three months later, you discover it implements io.Writer. You never declared this. How did it happen? Exploring Go’s implicit interfaces and the power of accidental implementation.
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.
Go's Value Philosophy: Part 2 - Escape Analysis and Performance
The Go compiler decides whether your values live on the stack or heap through escape analysis. Understanding this mechanism explains Go’s performance characteristics and helps you write faster code without sacrificing clarity.
The Python Paradox: How Python Dominates Big Data Despite the GIL
Discover why Python dominates big data despite the GIL: Python coordinates, C/Rust/JVM executes. Learn how NumPy, pandas, Polars, and PySpark bypass the GIL for true parallelism.
You Don't Know JSON: Part 1 - Origins, Evolution, and the Cracks in the Foundation
Everyone thinks they know JSON. But do you know why it was created, what problems it solved, and more importantly - what problems it created? Part 1 explores JSON’s origins, its triumph over XML, and the fundamental weaknesses that spawned an entire ecosystem of extensions.
You Don't Know JSON: Part 2 - JSON Schema and the Art of Validation
JSON lacks types and validation - any structure parses successfully. JSON Schema solves this by adding a validation layer without changing JSON itself. Learn how to define schemas, validate at runtime, generate code, and build type-safe APIs.
You Don't Know JSON: Part 3 - Binary JSON in Databases
Database-managed binary JSON formats solve storage and query performance problems. JSONB enables fast PostgreSQL queries with indexing, while BSON adds extended types for MongoDB. Learn when databases beat text JSON.
You Don't Know JSON: Part 4 - Binary JSON for APIs and Data Transfer
Beyond database storage, binary JSON formats optimize API data transfer. MessagePack provides universal serialization with 30-40% size reduction. CBOR adds IETF standardization for IoT and security. Learn when binary beats JSON for network efficiency.
You Don't Know JSON: Part 5 - JSON-RPC: When REST Isn't Enough
REST is great for resources, but what about actions? JSON-RPC provides a simple, transport-agnostic protocol for calling remote functions. Learn the spec, implementation patterns, and why major projects like Ethereum and VS Code chose JSON-RPC over REST.
You Don't Know JSON: Part 6 - JSON Lines: Processing Gigabytes Without Running Out of Memory
Standard JSON can’t stream - you must parse the entire document. JSON Lines solves this with one JSON object per line, enabling streaming processing, log aggregation, Unix pipelines, and handling gigabyte-scale datasets with constant memory usage.
You Don't Know JSON: Part 7 - Security: Authentication, Signatures, and Attacks
JSON has no built-in security. The ecosystem response: JWT for authentication, JWS for signing, JWE for encryption. Learn how these work, common attacks (algorithm confusion, injection, timing), and how to secure JSON-based systems.
Serialization and Deserialization: The Bridge Between Runtime Objects and Bytes
Understanding how programs convert runtime objects to bytes and back, enabling persistent storage, network communication, and cross-language data exchange.
The Complete Guide to API Communication Patterns: REST, GraphQL, WebSocket, gRPC, and More
Master API communication patterns: REST, GraphQL, WebSocket, gRPC, webhooks, message queues, and more. Complete guide with diagrams, code examples, and decision frameworks for choosing the right pattern.