Are you up for a bite with the team after work? Meet us for the Go 1.27 release party! We'll be joined by the people behind the @golang.org 1.27, @jespino.bsky.social, and Ainsley Clark to talk about what’s new in this release. 📅 August 25, 4:00 pm UTC 📍 online 🔗 jb.gg/go-127-obs
Jesús Espino
@jespino.bsky.social
Open Source enthusiast. Public Speaker. Working at @victoriametrics.bsky.social.
Running a workshop at #gopherconuk next week: "Having fun with the Go source code" two hours of building Go from source and then changing things you're not supposed to change. the lexer, a compiler pass, the scheduler. Wed 12 aug, 10:00, King Vault www.gophercon.co.uk/schedule
New guest post! @alexrios.me goes inside Go's `testing/synctest`. Your test goroutines live in a "bubble" the runtime tracks. Once they're all blocked, the fake clock jumps to the next timer, so a 10s sleep costs 0 real seconds. internals-for-interns.com/posts/inside... #golang #go #testing
Fake Clocks, Real Guarantees: Inside Go's synctest | Internals for Interns
The first time I reached for testing/synctest, I assumed it was a sleep helper with better manners. The public API is small enough to support that assumption: synctest.Test(t, func(t *testing.T) { ......
internals-for-interns.com
This Monday, @alexrios.me (Principal Engineer at Memed, author of System Programming Essentials with Go) takes us inside `testing/synctest`. Spoiler: it's not a library trick, it's a runtime feature. Fake clock included. Drops Monday #golang #go
Internals for Interns
A collection of blog posts explaining software internals in an approachable way
internals-for-interns.com
In this latest blog post, @jespino.bsky.social, Software Engineer, breaks down the upcoming changes with practical, runnable examples so you can quickly understand what has changed and how the new behavior works. If you want to learn more about #GoLang, this article is a great read. bit.ly/4fITgSV
Go 1.27 interactive tour
An interactive tour of what’s new in Go 1.27: every notable language, runtime, and standard library change, with short runnable examples you can edit and run in the browser.
bit.ly
Best version of #Kronk ever! v1.29.7 Now is a great time to build some #golang apps and services using open source models. www.kronkai.com
Kronk — Local LLM Inference for Go
Hardware accelerated local LLM inference for Go with llama.cpp integration.
kronkai.com
New article: The Block Layer, what sits between a page cache miss and your disk The whole thing is based on 3 main objects, the bio (what do I want), the request (what is needed to do), and the queues (where work waits). Read more here: internals-for-interns.com/posts/linux-... #Linux #Kernel
The Block Layer | Internals for Interns
In the previous article we followed a read() all the way down through the VFS: from the syscall, to the struct file, to ext4, and into the page cache. And there was exactly one moment where we skippe...
internals-for-interns.com
Today I'm writting my article on the Linux block layer. The key pieces are 3 objects: the bio (a wish "read these sectors into these pages"), the request (a job on the device, a set of bios), the queues (one per CPU, so cores never fight for a lock). Available this Monday!
🗜️ Compression is all about trade-offs. Smaller payloads, lower bandwidth, faster transfers... but at what cost in CPU, memory, and compatibility? At #GoLab2026, Klaus Post will guide you through the compression landscape in Go and help you choose the right tool for the job golab.io/talks/go-dat...
3 months ago I published my book "Deep dive into a SQL query" (leanpub.com/deep-dive-in...), and probably the text that explain better what is the target audience is the foreword from @franckpachot.bsky.social, so I'll just share it here:
What is Inference? How LLMs run, explained in a gentle introduction The mental model of inference: nextToken(input, frozenWeights) -> token, called in a for loop Also I explore the GGUF file that carries the ENTIRE model inside it internals-for-interns.com/posts/go-ai-... #golang #AI #LLM
What is Inference? | Internals for Interns
Welcome to a new series! For most developers today, using a large language model means one thing: an HTTP call to somebody else’s computer. You send a prompt to an API, tokens come back, and everythin...
internals-for-interns.com
Spent the weekend starting a new series: Understanding Go AI Inference. First stop: what inference actually is. A simple model is a pure function, nextToken(input, frozenWeights), called in a for loop. Every LLM answer is built one token per lap. Drops Tomorrow
"The VFS" answer the question: how can file operations work identically on an ext4 file, a /proc file, and an NFS share on another machine? The answer is a classic: program against an interface, not an implementation. Read it here: internals-for-interns.com/posts/linux-...
The VFS | Internals for Interns
In the previous article we saw how the scheduler decides which task gets the CPU — so at this point we know how programs get to run. But running isn’t enough: for a program to be useful, it almost al...
internals-for-interns.com
The first guest post in my blog, by @func25.bsky.social: "mmap vs pread in a real Go storage engine", a deep dive into how VictoriaLogs decides how to read bytes from files. It sounds too low-level to matter, until you do the math. internals-for-interns.com/posts/mmap-v... #Go
mmap vs pread in a real Go storage engine | Internals for Interns
When you build a storage engine in Go, sooner or later you need to answer a very plain question: “How should the code read bytes from files?” This sounds too low-level to matter. A database has bigger...
internals-for-interns.com
New plan for the next 3 months in my blog! Two series in parallel: Continuing the one about the Linux kernel (VFS, I/O, Devices, Network, NUMA...) And starting one about Go AI Inference (Yzma, Kronk, and friends) Plus guest posts from @func25.bsky.social, @alexrios.me @mdelapenya.bsky.social
Article about the Go's Profiler CPU, heap, block, mutex, goroutine. Five profiles, one pprof file, and every sample is just a call stack. What changes is how the stack gets recorded. internals-for-interns.com/posts/go-run... #Go #Golang
Profiling | Internals for Interns
In the previous article we took apart the reflect package and found that its magic is mostly the compiler leaving very good notes — type descriptors frozen into read-only data at build time, and a pa...
internals-for-interns.com
Today I'm diggin into how Go profiling actually works Interesting thing, the profile file itself is just a gzipped protobuf. You can literally read the .proto and understand the whole format. github.com/google/pprof...
pprof/proto/profile.proto at main · google/pprof
pprof is a tool for visualization and analysis of profiling data - google/pprof
github.com
How Linux picks who gets the CPU next, using EEVDF (Earliest Eligible Virtual Deadline First). The trick: it counts "virtual" runtime (real time ÷ priority), only lets tasks that are owed CPU run, then picks the soonest deadline. internals-for-interns.com/posts/linux-... #Linux #Kernel
The Scheduler | Internals for Interns
In the previous article we looked at how the kernel gives every process its own private view of memory. But memory is only half of what a process needs to actually run. The other half is the CPU itse...
internals-for-interns.com
Today I'm diving into how Linux decides who gets the CPU next The scheduler doesn't schedule "processes" or "threads." Underneath, both are just a task_struct. The only difference is what they share. It picks among them with an algorithm called EEVDF. Article drops Tomorrow!
This saturday I'm digging into how the go reflect package gets you the types information. Spoiler: it doesn't compute them. The compiler serialized your types into your binary. reflect just reads them with pointer arithmetic. The article will be out this Monday
New article: the Linux Memory Manager On surprising fact: malloc()/mmap() reserves no physical RAM. Pages are allocated lazily, it waits until the first page fault when you touch the memory to give you the real RAM. internals-for-interns.com/posts/linux-... #Linux #Kernel #Memory
Memory Manager | Internals for Interns
In the previous article we looked at how a user program crosses the ring 3 → ring 0 boundary to ask the kernel for help. The example we used was read() — a file descriptor, a buffer pointer, a byte c...
internals-for-interns.com
Today is my first day at @victoriametrics.bsky.social ! 🎉 Back to working on Open Source, on exactly the kind of deep systems project I've wanted for ages, performance, and understanding hardware, OS fundamentals. Lots to learn, and that's the best part. I'll be writing about what I learn as I go.