Sign in

Jesús Espino

@jespino.bsky.social
38 followers 40 following 103 posts

Open Source enthusiast. Public Speaker. Working at @victoriametrics.bsky.social.

PostsRepliesMedia
Jesús Espino @jespino.bsky.social · 11h
My favorite perk of hosting guest posts: I get to read them before anybody else 😎 Monday, @kakkoyun.me shows how go build -toolexec puts your own program in front of every compile, asm and link run. Time them, rewrite code, even make the stdlib call yours 👀 #golang #go
012
Jesús Espino @jespino.bsky.social · 02/10/2026
Next week, I’ll be at #O11ySummit in Prague on Monday, then #PromCon in Munich on Wednesday and Thursday with the @victoriametrics.bsky.social team. If you’re there and want to chat about observability, performance, or Go, stop by the VictoriaMetrics booth and say hi! 🙂
000
Jesús Espino @jespino.bsky.social · 01/10/2026
Two weeks ago I went to @percona.bsky.social Live Amsterdam, and I had an amazing experience. I also had the opportunity to talk about how we ingest and store petabytes of logs in VictoriaLogs. If you find that interesting, you can check the recording here: www.youtube.com/watch?v=uc5k...
youtube.com
How to create database optimized for petabytes of logs - Jesús Espino, VictoriaMetrics
YouTube video by Percona
000
Jesús Espino @jespino.bsky.social · 01/10/2026
Here's what's coming to Internals for Interns for the rest of the year. Guests, Go, NFS, the Linux kernel finale... and containers. If you want these articles directly in your inbox? Subscribe: internals-for-interns.com/newsletter/
000
Jesús Espino @jespino.bsky.social · 30/09/2026
Did you know? internals-for-interns.com/posts/kronk-...
Did you know? In Kronk If a model fails partway through a streamed answer, the error can't go in the status code, so it's sent as one more event in the stream.
011
Jesús Espino @jespino.bsky.social · 29/09/2026
Just in case you are interested about how read ahead works in linux, I wrote this post: victoriametrics.com/blog/linux-r... In @victoriametrics.bsky.social we really care about performance, so understanding how Linux is trying to help is important. But also It is important to help it to help us. 🙂
victoriametrics.com
How Linux readahead works, and the two ways to change it
The kernel reads your files before you ask for them, guessing from where your reads land. Here is how that guessing actually works (the window, the marker, the background fetch) and the two ways to in...
010
Jesús Espino @jespino.bsky.social · 28/09/2026
This is my last article about Kronk. In this one, I'm talking about the API, but more specifically about the streaming API and how it works and handle errors. This one end up being a shortest, but I hope you enjoy it the same. Read it here: internals-for-interns.com/posts/kronk-... #Go
internals-for-interns.com
The Model Server | Internals for Interns
Over the last two articles we went through everything needed to run a model: an SDK that runs inference, and a management layer that downloads models, sizes them for your hardware and loads them. Yo...
000
Jesús Espino @jespino.bsky.social · 27/09/2026
Working on my last post about Kronk: how it builds its API to stream LLM responses Once the 200 + headers go out, the status is locked in. So everything that can fail (validation, getting the model, waiting for a seat) happens first. After that point? I'll tell you in my article tomorrow.
000
Jesús Espino @jespino.bsky.social · 23/09/2026
Did you know? internals-for-interns.com/posts/linux-...
Did you know? Linux sets traps on your memory to fix NUMA placement: it removes access permissions from healthy pages, and each fault shows which node's thread touched them.
000
Jesús Espino @jespino.bsky.social · 21/09/2026
NUMA is easy to ignore. Your laptop probably doesn't have it, and Linux handles it transparently on your server. So you never notice your memory-intensive app leaving performance on the table. Check my new article about how NUMA works inside Linux: internals-for-interns.com/posts/linux-...
internals-for-interns.com
NUMA | Internals for Interns
In the previous article we followed a packet all the way in from the wire and all the way back out. At every step something was reading or writing memory — the page the driver handed the card, the sk...
000
Jesús Espino @jespino.bsky.social · 20/09/2026
Today I'm writting about NUMA It works on your machine because your machine has one CPU socket. On a two-socket server half the RAM is a detour away, and nothing warns you. Tomorrow I'll publish the article explaining how Linux handle NUMA nodes.
000
Jesús Espino @jespino.bsky.social · 14/09/2026
I'm getting my post about the Kronk late by one day (it will be out tomorrow). I was the last week busy at Percona Live, and I have the post almost ready but I don't want to rush it, so I want to give me the opportunity to polish it to the quality that I want.
000
Jesús Espino @jespino.bsky.social · 07/09/2026
We just published a PostgreSQL 19 Interactive Tour. If you want to know what is comming in the new version of Postgres and want to play with it and see it in action, check it out here: victoriametrics.com/blog/postgre...
victoriametrics.com
PostgreSQL 19 interactive tour
An interactive tour of what’s new in PostgreSQL 19: property graph queries, REPACK, plan advice, temporal updates, and more, with short runnable SQL examples you can edit and run in the browser.
000
Jesús Espino @jespino.bsky.social · 07/09/2026
New guest post: my friend @mdelapenya.bsky.social write about Ryuk. → your tests hold a TCP connection open to it → it drops, 10s grace, then Ryuk deletes everything tagged with your session ID Check the blog post here: internals-for-interns.com/posts/testco... #golang #testing #docker
internals-for-interns.com
Understanding Testcontainers: The Ryuk Reaper | Internals for Interns
If you’ve used Testcontainers in any language (Go, Java, .NET, Python, Node, Rust), you’ve probably noticed an extra container hanging around in your docker ps output while your tests run. Its image i...
011
Jesús Espino @jespino.bsky.social · 05/09/2026
My friend @mdelapenya.bsky.social (Staff engineer at Docker, testcontainers-go maintainer) brings a guest post 🎉 It answers what I never dug into: what IS that testcontainers/ryuk container in your docker ps? A deadman switch that ensure the cleanup after for your tests works or fails.
010
Jesús Espino @jespino.bsky.social · 03/09/2026
I published today an article at the @victoriametrics.bsky.social's blog, sharing the life of a metric. I think it is a good walkthrough about what happens to your metrics once they are scraped, until they gets discarded by the retention policy. victoriametrics.com/blog/the-lif...
victoriametrics.com
The Life of a Metric
Follow a single metric through its whole life inside VictoriaMetrics: born as a counter in your process, exported over the wire, given an identity and an inverted-index entry, written through an LSM t...
000
Jesús Espino @jespino.bsky.social · 02/09/2026
Did you know? internals-for-interns.com/posts/linux-...
Did you know? A network card writes packets straight into kernel memory, and its interrupt doesn't mean "here is a packet", it means "there is traffic". So the kernel goes and reads that memory.
000
Jesús Espino @jespino.bsky.social · 31/08/2026
Today I write about network package goes through the linux kernel. Different layers (Ethernet, IP, TCP), interesting optimizations that groups and split packages, and some of the places where things like BPF and netfilter get hooked. internals-for-interns.com/posts/linux-... #Linux #Kernel
internals-for-interns.com
Network Subsystem | Internals for Interns
At the end of the previous article we watched a module fill in a struct net_device_ops (include/linux/netdevice.h:1436), hand it to register_netdev() (net/core/dev.c:11531), and walk away. That’s a p...
000
Jesús Espino @jespino.bsky.social · 28/08/2026
If you missed my talk at @gopherconuk about the select statement, here are the slides (speakerdeck.com/jespino/deep...) and the recording (www.youtube.com/watch?v=fH5h...). Check out the rest of the recordings in the conference, as always at @gopherconuk, the talks where amazing.
speakerdeck.com
Deep dive into the select statement (GopherCon UK)
The select statement is a cornerstone of Go's concurrency model, enabling developers to coordinate multiple channel operations with precision. This talk…
000
Jesús Espino @jespino.bsky.social · 28/08/2026
Sharing a bit of my week in Amsterdan being part of the Go Release Party, and spending some time with the Go community at the Amsterdam Go Meetup. It has been an amazing week. www.linkedin.com/pulse/go-rel...
linkedin.com
Go Release Party and Amsterdam Meetup
It has been a very intense week for me at Amsterdam. I went there, invited by JetBrains, to co-host the Go 1.
000
Jesús Espino @jespino.bsky.social · 26/08/2026
Did you know? internals-for-interns.com/posts/kronk-...
Did you know? Your list of chat messages never reaches the model as a list. A template flattens it into one plain string, written in the exact format the model was trained on.
000
Jesús Espino @jespino.bsky.social · 24/08/2026
My new article, the Kronk SDK, is live. 3 important components: → prep: messages validated, templated and tokenized into a job → KV cache: restore the prefix, decode only what's new → engine: makes your tokens tick concurrently internals-for-interns.com/posts/kronk-... #golang #AI
internals-for-interns.com
The Kronk SDK | Internals for Interns
In the previous article we took yzma apart and found a very disciplined bridge: purego finds the functions inside libllama.so, libffi makes the calls, and no C compiler is involved anywhere. What you...
012
Jesús Espino @jespino.bsky.social · 19/08/2026
Did you know? internals-for-interns.com/posts/linux-...
Did you know? The kernel's module loader is really a linker. When your module loads, it patches in the real addresses of the kernel functions it calls, only known once the kernel is running.
000
Reposted by Jesús Espino
GoLand, a JetBrains IDE @goland.jetbrains.com · 17/08/2026
What makes @jespino.bsky.social excited about Go 1.27? You’ll probably hear more about it at our release party, but here’s a sneak peek for you 👀 Join us live on August 25 at 4 pm UTC 👉 jb.gg/go-127-obs
021
Jesús Espino @jespino.bsky.social · 17/08/2026
New article: Kernel Modules 🐧 I open a .ko with readelf to understand it: → a prebuilt struct module → .modinfo: license, vermagic, depends → holes where kernel functions addresses go Loading is linking. Then one call into init. internals-for-interns.com/posts/linux-... #Linux #Kernel #Drivers
internals-for-interns.com
Kernel Modules | Internals for Interns
At the end of the previous article we handed a request to “the driver” and let it disappear into the hardware. That’s been the pattern for a while now: the VFS hands off to a filesystem, the block la...
000
Jesús Espino @jespino.bsky.social · 16/08/2026
Today I'm exploring the kernel modules. Not from the macro side (module_init, EXPORT_SYMBOL). From the other end: open a compiled .ko with readelf and see what a plain .o doesn't have. A .ko is a half-linked object. The kernel finishes the link on load. It will be available tomorrow.
000
Jesús Espino @jespino.bsky.social · 12/08/2026
Did you know? internals-for-interns.com/posts/yzma/
Did you know? yzma calls llama.cpp without CGo: purego loads the .so and finds the functions, libffi makes the actual calls.
000
Jesús Espino @jespino.bsky.social · 10/08/2026
New article: Yzma, how Go drives a C++ inference engine with no CGo. → purego answers "where is the function?" → libffi answers "how do I call it?" Not only that, yzma also downloads the right build for your machine, and the gguf models. internals-for-interns.com/posts/yzma/ #golang #AI
internals-for-interns.com
Yzma | Internals for Interns
In the previous article we looked at what inference actually is — how a model takes a prompt and builds a response one token at a time. I mentioned two Go projects that let you run that loop locally:...
000
Jesús Espino @jespino.bsky.social · 09/08/2026
I'll be giving another talk at #gopherconUK about how the select statement works under the hood 🎉(Apart from my "Having fun with the go source code" workshop). It is already in the schedule www.gophercon.co.uk/schedule.
gophercon.co.uk
Schedule - GopherCon UK
Full conference schedule for GopherCon UK 2026. Talks, sessions, and breaks across two days.
000
Reposted by Jesús Espino
William (Bill) Kennedy @goinggo.net · 08/08/2026
Kick Ass job as always by @jespino.bsky.social on the release notes for 1.27. It felt overwhelming. I'm wondering if Go fix can be used to change Go code with some of these changes like struct literal field selectors and maybe switching to the new uuid package? victoriametrics.com/blog/go-1-27/
victoriametrics.com
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.
084
Jesús Espino @jespino.bsky.social · 09/08/2026
Today I'm looking at yzma and how it calls llama.cpp without cgo. It binds at runtime, so two libraries split the work: → purego: dlopen/dlsym, finds the function's address → libffi: builds the call plan from a signature you describe in Go The blog post will be avaiable tomorrow.
000
Reposted by Jesús Espino
VictoriaMetrics @victoriametrics.bsky.social · 07/08/2026
Hello #Go Fans! Join our Principal Software Engineer, @jespino.bsky.social, who will present “Having fun with the Go source code” at gophercon.co.uk 2026 in #London. 📆 August 12th at 10:00 am GMT 📍 The Brewery, London, UK
151
Reposted by Jesús Espino
GoLand, a JetBrains IDE @goland.jetbrains.com · 05/08/2026
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
053
Jesús Espino @jespino.bsky.social · 05/08/2026
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
000
Jesús Espino @jespino.bsky.social · 05/08/2026
Did you know? internals-for-interns.com/posts/inside...
Did you know? testing/synctest is a runtime feature dressed as a package. Its three public functions are just the surface. The runtime does the real work.
000
Jesús Espino @jespino.bsky.social · 03/08/2026
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
internals-for-interns.com
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) { ......
000
Jesús Espino @jespino.bsky.social · 01/08/2026
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.com
Internals for Interns
A collection of blog posts explaining software internals in an approachable way
000
Reposted by Jesús Espino
VictoriaMetrics @victoriametrics.bsky.social · 31/07/2026
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
bit.ly
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.
032
Reposted by Jesús Espino
William (Bill) Kennedy @goinggo.net · 29/07/2026
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
kronkai.com
Kronk — Local LLM Inference for Go
Hardware accelerated local LLM inference for Go with llama.cpp integration.
183
Jesús Espino @jespino.bsky.social · 29/07/2026
Did you know? internals-for-interns.com/posts/linux-...
Did you know? Linux's default I/O scheduler on NVMe is none. With no seeks to hide and several hardware queues running at once, the best policy is no policy.
000
Jesús Espino @jespino.bsky.social · 27/07/2026
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
internals-for-interns.com
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...
000
Jesús Espino @jespino.bsky.social · 25/07/2026
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!
000
Reposted by Jesús Espino
GoLab Conference @golab.io · 22/07/2026
🗜️ 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...
022
Jesús Espino @jespino.bsky.social · 22/07/2026
Did you know? internals-for-interns.com/posts/go-ai-...
Did you know? One .gguf holds everything needed to run a model, including the entire tokenizer and even the chat template, with no sidecar files to download.
000
Jesús Espino @jespino.bsky.social · 21/07/2026
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:
032
Jesús Espino @jespino.bsky.social · 20/07/2026
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
internals-for-interns.com
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...
020
Jesús Espino @jespino.bsky.social · 19/07/2026
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
000
Jesús Espino @jespino.bsky.social · 15/07/2026
Did you know? internals-for-interns.com/posts/linux-...
Did you know? The Linux kernel caches filenames that don't exist. These "negative entries" let it answer "no such file" from memory, without touching the filesystem.
000
Jesús Espino @jespino.bsky.social · 13/07/2026
"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-...
internals-for-interns.com
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...
000
Jesús Espino @jespino.bsky.social · 08/07/2026
Did you know? internals-for-interns.com/posts/mmap-v...
Did you know? Reading files with mmap can hide disk I/O from the Go scheduler, silently stalling goroutines that have nothing to do with those reads.
000