Posts

Showing posts from November, 2025

Think Cloud Outages Are Bad? Try Running Your Own Data Center

Image
  Every time a major cloud provider experiences an outage, the same predictable chorus appears online. Anonymous accounts, self-appointed experts, and people with very shallow understanding of large-scale infrastructure immediately shout that trusting cloud providers was a mistake. They declare that outages prove the superiority of on-premises systems, private data centers, or racks in colocation facilities. They often insist that if companies just ran their own servers, these disruptions would not happen. This argument sounds bold and confident, but it is built on fundamental misunderstandings about availability, economics, engineering, and long-term operational reality. It ignores history, scale, costs, human expertise, and the brutal truth that most companies cannot operate infrastructure anywhere near the reliability of the large cloud platforms. It also ignores the reality that the largest technology companies on earth still experience outages in their own global data centers ...

Why Web3 and Blockchain Failed Outside of Cryptocurrency

Image
  When the first wave of Web3 enthusiasm hit the global technology community, it was introduced as a structural transformation of the entire online world. Smart contracts would replace backends, tokens would replace accounts, wallets would replace passwords, decentralized protocols would replace big platforms, and distributed governance would replace corporate control. In theory, the internet would shift from centralized data and application layers to a world where everything was distributed, trustless, and owned by the users. For a few years, this vision generated immense excitement. Conferences exploded in size, entire ecosystems appeared, and a large amount of venture capital poured into infrastructure, tooling, and platforms that promised to re-architect the web. The reality that followed did not match the vision. Outside of cryptocurrency, adoption remained low, costs remained high, and the majority of Web3 products never reached meaningful traction. Understanding why this hap...

Why Modern Programming Languages Are Becoming Unsafe Again: The Hidden Costs of Abstraction in Rust, Go, Python, and JavaScript

Image
  Modern software development went through several cycles of escaping complexity only to recreate it in a different form. In the early days, low level languages like C gave developers full control over memory, layout, and performance, but this freedom came with high risk. Memory corruption, data races, buffer overflows, and undefined behavior were common. Later, languages like Java and C# pushed developers toward safer abstractions. Then Python and JavaScript made the runtime even more forgiving. Today, Rust and Go promise a return to predictability with strict memory models, type safety, and clear concurrency rules. Yet something interesting is happening beneath the surface. Even in languages designed for safety and simplicity, new forms of unpredictability, performance traps, and abstraction-driven risks have emerged. This does not mean these languages are unsafe in the traditional sense, but the hidden costs of modern abstractions create behaviors that developers cannot always r...

Understanding Function References in Rust: A Deep Dive into Closures, Fn Traits, and Function Pointers

Image
  In Rust, functions are not just lines of executable code. They are values, and like any value, they can be passed around, stored, and executed later. This is possible because Rust treats functions and closures as first-class citizens. Understanding how function references work is critical for writing idiomatic, efficient, and safe Rust code, especially when designing APIs, higher-order functions, and concurrent systems. In this post, we will explore all types of function references—raw function pointers, closures, and trait-based references ( Fn , FnMut , FnOnce )—explain why they exist, and examine when to use each. 1. Raw Function Pointers ( fn ) The simplest kind of function reference in Rust is the plain function pointer type, written as fn . Unlike closures, fn does not capture any external environment. It simply points to a function with a known signature. Example: fn greet(name: &str) { println!("Hello, {}!", name); } fn call_function(f: fn(&str))...