Imagine the following problem: you need to process hundreds of records and generate a single output. One way to solve this is to process each record sequentially and unify the output only at the end. However, this can be extremely slow, depending on the time spent processing each record. Another way is to process them concurrently, speeding up the overall time. In my post about introduction to concurrency, I talked a bit about goroutines and channels. Now, I’ve decided to talk about waitgro...| mfbmina.dev
Goroutines Are Cheap, but Not Free| Fillmore Labs Blog
eBPF has fundamentally changed the way developers think about system-level observability, performance monitoring, and security.| ebpfchirp.substack.com
HTTP1 is simple and easy. With enough care you can open a TCP connection and hand-write an HTTP request to a server and get a response. Good fun. HTTP2 is more complex. Multiple bidirectional requests can be multiplexed over a single connection. You might use it with something like GRPC, or to get web pages to load faster. HTTP3 is wild stuff. Implemented over UDP instead of TCP. You can open a connection, open streams on that connection, send data with different types of ordering and deliver...| Max McDonnell
A second post on Go silliness (Miguel, aren’t you a C++ programmer?): in 1.23, Go finally added custom iterators. Now, back when I was at Google and involved in the Go compiler as “the annoying Rust guy who gets lunch with us”, there were proposals suggesting adding something like this, implemented as either an interface or a func:| mcyoung.xyz
A description of range over function types, a new feature in Go 1.23.| go.dev
Concurrency is a common challenge, particularly when it comes to managing access to shared data structures. One of the key issues is lock contention, where multiple threads compete for access to the same resources, potentially leading to performance bottlenecks. In this post, we’ll explore lock striping, a straightforward technique to reduce lock contention that I haven’t seen mentioned nearly enough.| tpaschalis.me
May 26, 2024 . 6 min | blog.meain.io
Generics and goroutines are great tools we can leverage to have reusable general purpose concurrent processing in our programs.| sergey.kamardin.org
Documentation| go.dev
type Profile ¶| pkg.go.dev
This post references the Kubernetes codebase at commit d92a443ca7 and kube-openapi at commit ee342a809c, but should remain mostly applicable for an extended period of time barring any massive refactor to Kubernetes internals. This is also intended to be a very active read and a reference to come back to over time. There are a lot of links to source code that is not embedded because the post would have become even more unwieldy than it already is.| danielmangum.com
My re-implementation of the code from the official Go tutorial 'Developing a RESTful API with Go and Gin', using only the standard library, adding tests, and fixing issues.| benhoyt.com