Logo
Logo
24 results for
  • The first time I used gRPC in production, I was skeptical. We already had REST APIs that worked fine — why add protobuf compilation, code generation, and an entirely new protocol? Then our team grew to four services in three languages, and the answer became painfully obvious. Every REST endpoint had slightly different JSON field naming, different error formats, and documentation that was always a version behind. gRPC eliminated all of that overnight.

    Rust tutorial rust networking distributed-systems Created Fri, 16 May 2025 11:30:00 +0000
  • Here’s a pattern I’ve seen too many times: a Rust web service runs as root in a Docker container because “it needs to bind port 443.” The service handles user uploads, parses JSON, processes images, and talks to a database — all with root privileges. If any part of that pipeline has a vulnerability, the attacker gets root on the container. And if the container isn’t properly isolated, they might get the host too.

    Rust tutorial rust security Created Thu, 15 May 2025 07:41:00 +0000
  • My team migrated a set of internal service APIs from JSON over HTTP/1.1 to gRPC roughly two years ago. The motivating factors were type safety across service boundaries, binary serialization that was 5-10x smaller on the wire, and bidirectional streaming that HTTP/1.1 can’t do at all. The migration took about a week per service and the performance improvements were immediately visible in our latency percentiles.

    gRPC is a Remote Procedure Call framework that runs over HTTP/2. The interface is defined in Protocol Buffers — a language-neutral schema language — and the gRPC toolchain generates client and server stubs in Go. You call a method; the framework handles serialization, connection management, and streaming.

    Go tutorial golang networking Created Thu, 15 May 2025 00:00:00 +0000
  • I once spent three hours debugging a production issue that turned out to be an HTTP client with no timeout configured. Three hours. The client was happily waiting forever for a response from a service that had crashed, holding a database connection open the entire time. That experience permanently changed how I think about HTTP clients — they’re not just “make a request, get a response.” They’re complex state machines with connection pools, redirect policies, timeout hierarchies, and a dozen other knobs that matter when things go wrong.

    Rust tutorial rust networking distributed-systems Created Wed, 14 May 2025 16:45:00 +0000
  • I’ve seen panic(err) used as error handling more times than I’d like to admit — including in codebases I helped build. The reasoning always sounds logical at the time: “this error should never happen, and if it does, the program state is corrupt anyway, so why not just panic?” The problem is that “should never happen” is a statement about your expectations, not about reality. And “program state is corrupt” is almost never true — one request failed, the other thousand are still fine.

    Go tutorial golang Created Tue, 13 May 2025 00:00:00 +0000
  • The xz backdoor was a wake-up call for the entire industry, but honestly, supply chain attacks had been happening for years before that — just more quietly. Typosquatting on npm, malicious PyPI packages, compromised maintainer accounts. The question isn’t whether Rust’s ecosystem is vulnerable to supply chain attacks. It is. The question is what you’re doing about it.

    I spent a week last year hardening our build pipeline after we realized that a cargo build on our CI server was pulling fresh crate downloads from the internet with no verification beyond what Cargo does by default. If crates.io got compromised, or if our DNS got hijacked, we’d be compiling and shipping attacker code with zero friction.

    Rust tutorial rust security Created Mon, 12 May 2025 10:08:00 +0000
  • Last month I was debugging a flaky microservice at work and realized I couldn’t explain what was actually happening between bind() and the first byte arriving. I’d been using high-level frameworks for years — Actix, Axum, you name it — but I’d never actually built a TCP server from raw sockets in Rust. That bothered me. So I spent a weekend doing exactly that, and honestly, it changed how I think about every networked service I write.

    Rust tutorial rust networking distributed-systems Created Mon, 12 May 2025 09:14:00 +0000
  • The first time someone tells you that buffered channels are faster, you believe them — and you spend the next year throwing make(chan T, 100) at every performance complaint, wondering why your system still deadlocks sometimes, and why those deadlocks disappeared when you bumped the buffer to 200. The buffer wasn’t fixing anything. It was delaying the problem. Understanding why requires actually thinking about what buffering changes — not at the performance level, but at the coordination level.

    Go tutorial golang concurrency Created Mon, 12 May 2025 00:00:00 +0000
  • I have seen configuration managed in at least ten different ways across the Go projects I have worked on: hardcoded constants, config structs passed around by pointer, global variables read at startup, YAML files baked into Docker images, environment variables with no validation, and one particularly creative approach involving a shared Google Sheet. Every one of those had the same core problem: the configuration was not treated as a first-class part of the application.

    Go tutorial golang backend Created Sat, 10 May 2025 00:00:00 +0000
  • You know what keeps me up at night? Not my own code — I can review that. It’s the 200+ transitive dependencies in my Cargo.lock that I’ve never read a single line of. Every one of those crates runs with the same permissions as my code. If any of them has a vulnerability, it’s my vulnerability.

    This isn’t theoretical. In 2024, the xz backdoor showed that even core infrastructure maintained by a single person can be compromised. Rust’s ecosystem isn’t immune. We’ve had actual advisories for real crates — buffer overflows in parsing libraries, unsound unsafe code in popular crates, logic bugs in crypto implementations.

    Rust tutorial rust security Created Fri, 09 May 2025 14:55:00 +0000