thepudds
thepudds.bsky.social
thepudds
@thepudds.bsky.social
1.2K followers 160 following 140 posts
Go contributor. Posts tend to be about #golang, performance, fuzzing, and Go Modules. He/him. https://github.com/thepudds
Posts Media Videos Starter Packs
Reposted by thepudds
Reposted by thepudds
For some added fun, also see go.dev/cl/715362, wherein I discover that VPCOMPRESSQ is horrifically slow on AMD Zen 4, but only with a memory destination.

And thanks to @lemire.bsky.social for writing about this, which made this much faster to track down!
Gerrit Code Review
go.dev
Reposted by thepudds
If you have an interest in understanding garbage collection better, or in how Go's new GC works under-the-hood, I highly recommend reading @michael.express's thorough guide through Go's current and Green Tea GC.
“The Green Tea Garbage Collector” by Michael Knyszek and Austin Clements — https://go.dev/blog/greenteagc

#golang
Reposted by thepudds
I am using it to test our Go modules against the latest versions of their dependencies (with "go get -u") on a schedule, to be notified early of compatibility issues, but without the supply chain attack risk or the Dependabot churn.
Reposted by thepudds
Resurrecting an old post about how I write HTTP clients in Go since I am doing this again for the 89432894023 time.

blainsmith.com/articles/how...

#GoLang #HTTP
How I Write HTTP Clients - Blain Smith
blainsmith.com
Reposted by thepudds
I really do like Golang being "batteries included".

It took only a few hours to write a moderately featureful TLS-terminating reverse HTTP proxy that used nothing outside the built-in libraries.

The only compromise was using JSON for the configuration file. I would have preferred textproto…
Absolutely hilarious.

TBH, though, it probably would not have happened with the original TIE fighter ASCII art:

|A|
|V|

Very nice save by cutting over to:

|-()-|

(Maybe the Star Wars wiki needs to be updated too? Is
@markhamillofficial.bsky.social
the admin on that? 🤔)
Reposted by thepudds
Oh my god it actually worked.

This might be my funniest—but totally serious—cryptography engineering contribution.
@simonwillison.net with some commentary on the new CrossOriginProtection CSRF protection in the http package for #golang 1.25...

🚀
Does widespread browser implementation of the Sec-Fetch-Site HTTP header mean we can protect against CSRF attacks without needing those hidden form tokens? It looks like the answer may be a cautious "yes"! simonwillison.net/2025/Oct/15/...
A modern approach to preventing CSRF in Go
Alex Edwards writes about the new http.CrossOriginProtection middleware that was added to the Go standard library in version 1.25 in August and asks: Have we finally reached the point where …
simonwillison.net
FWIW, I think at least some of the early conversation about relying on Sec-Fetch-Site in the Go standard library might have happened here on Bluesky.

(@filippo.abyssdomain.expert with @empijei.bsky.social, @jub0bs.com, others...).

bsky.app/profile/fili...
I'm looking into github.com/gorilla/csrf to figure out if we could bring CSRF protection to the standard library.

I am 90% sure the secret key is useless: it signs a random token with no metadata, and the attacker can just get and reuse a valid signed token.

Am I missing something?
(SMP support a ~couple months ago, the gvisor network stack running under UEFI more recently, ...)

bsky.app/profile/andr...
Screw PXE, this means the entire Go TLS and networking stack is available under UEFI.

In seconds I added DHCP and an SSH server to remotely manage my pre-boot environments.

I see much potential.
Adding networking to go-boot through UEFI Simple Network Protocol.

It took 77 LOCs of pure Go to add the UEFI driver and bridge it to gVisor stack.
@andreabarisani.bsky.social is the author of the new-ish proposal for bare metal support for Go, which seems to be gathering some momentum AFAICT.

Andrea continues to share some fairly exciting progress... 🚀

( #golang proposal: github.com/golang/go/is... )
First ever boot of a TamaGo unikernel in the cloud, here on Google Cloud Compute Engine, automatically deployed from remote userspace!

Looking forward to polish and publish this.
Reposted by thepudds
Fun little Go compiler CL merged today: go.dev/cl/706655

Uninlined generic functions have a "dict" arg, since Go generics are neither erased nor monomorphized, but instead instantiated for each "GC shape" (e.g. T=*int and T=*float64 get the same code, but T=int32 and T=int64 do not).
Reposted by thepudds
OK, I love this. tl;dr using knowledge of your allocator, speed up linked list traversal by adding a branch that guesses where the next linked list element is and pre-populates the "next" variable to eliminate stalls if the allocations are well-behaved.
Reposted by thepudds
If you haven't been keeping up, Go 1.21 reduced overhead from ~10% to ~1%. 1.22 overhauled the format to improve reliability and add information. 1.25 has a built in trace flight recorder. And we have an active proposal (go.dev/issue/62627) for a trace parsing package to enable arbitrary tooling.
proposal: x/debug/trace: add package for parsing execution traces · Issue #62627 · golang/go
As part of #60773 (tracking issue #57175) I've been working on a new parser for the execution tracer, and to save work down the line I've also been trying to come up with a nice API that would work...
go.dev
Reposted by thepudds
Go's execution tracer is a woefully underutilized tool. It contains tons of information about what is happening at any given moment that you won't get with a profile.

In addition to showing flight recording capabilities, this post provides a nice example of how to use tracing to diagnose a problem.
golang.org Go @golang.org · Sep 26
“Flight Recorder in Go 1.25” by Carlos Amedee and Michael Knyszek — https://go.dev/blog/flight-recorder

#golang
Reposted by thepudds
I recently spoke at GopherCon UK 2025 about the hidden power of #Go’s `-toolexec` flag. How it can turn every `go build` into a programmable pipeline for things like error-handling enforcement and observability hooks. Here’s the recording:
Unleashing the Go Toolchain - Kemal Akkoyun
The -toolexec flag hides a super-power in the Go toolchain: it lets you turn every go build into a programmable pipeline. In this session we’ll reveal how a simple wrapper command can inject custom…
youtu.be
Reposted by thepudds
My talk from #gopherconuk is up on YouTube!
My take on how map is implemented in Go, and what changed from Go 1.23 to 1.24 and 1.25.

youtu.be/M05t7Q6LbFs

* Talk contains no AI, but does contain pictures of cats.
Swiss Maps in Go - Bryan Boreham
YouTube video by GopherCon UK
youtu.be
Reposted by thepudds
Screw PXE, this means the entire Go TLS and networking stack is available under UEFI.

In seconds I added DHCP and an SSH server to remotely manage my pre-boot environments.

I see much potential.
Adding networking to go-boot through UEFI Simple Network Protocol.

It took 77 LOCs of pure Go to add the UEFI driver and bridge it to gVisor stack.
Reposted by thepudds
This talk is like the solstice, it appears twice a year :)