Felix Geisendörfer
@felixge.de
Working at Datadog on Go Profiling, Performance, OpenTelemetry and more.
Before:
- Manufacturing Observability at Apple
- Co-founder at Transloadit
- Node.js Core Dev
Before:
- Manufacturing Observability at Apple
- Co-founder at Transloadit
- Node.js Core Dev
I need to start a critical path analysis art gallery soon.
The kind of stuff goroutines get up to behind the scenes can be truly fascinating.
The kind of stuff goroutines get up to behind the scenes can be truly fascinating.
September 17, 2025 at 1:02 PM
I need to start a critical path analysis art gallery soon.
The kind of stuff goroutines get up to behind the scenes can be truly fascinating.
The kind of stuff goroutines get up to behind the scenes can be truly fascinating.
I'm starting to get better at leveraging AI agents for the kind of low-level stuff I'm doing sometimes.
Example: Asked opus to explain some runtime internals, and then turn the analysis into a nice human-readable markdown output that I can use to explain a code change I'm making to a colleague.
Example: Asked opus to explain some runtime internals, and then turn the analysis into a nice human-readable markdown output that I can use to explain a code change I'm making to a colleague.
September 17, 2025 at 11:25 AM
I'm starting to get better at leveraging AI agents for the kind of low-level stuff I'm doing sometimes.
Example: Asked opus to explain some runtime internals, and then turn the analysis into a nice human-readable markdown output that I can use to explain a code change I'm making to a colleague.
Example: Asked opus to explain some runtime internals, and then turn the analysis into a nice human-readable markdown output that I can use to explain a code change I'm making to a colleague.
My usual workflow is firing off the same query in ChatGPT 5 and Gemini 2.5 Pro these days.
Typically they align, but one answer is better than the other.
But it turns out no amount of AI can solve the "too many chefs in the kitchen" problem 😂.
Typically they align, but one answer is better than the other.
But it turns out no amount of AI can solve the "too many chefs in the kitchen" problem 😂.
September 11, 2025 at 9:59 AM
My usual workflow is firing off the same query in ChatGPT 5 and Gemini 2.5 Pro these days.
Typically they align, but one answer is better than the other.
But it turns out no amount of AI can solve the "too many chefs in the kitchen" problem 😂.
Typically they align, but one answer is better than the other.
But it turns out no amount of AI can solve the "too many chefs in the kitchen" problem 😂.
Having fun using pikchr to generate diagrams for my critical path analysis talk at GopherCon US.
August 16, 2025 at 8:46 PM
Having fun using pikchr to generate diagrams for my critical path analysis talk at GopherCon US.
Just updated the proposal to use a struct based API that reuses the existing EventType structs in the trace package.
Feedback welcome! 🙇🏻♂️
Feedback welcome! 🙇🏻♂️
August 1, 2025 at 7:36 AM
Just updated the proposal to use a struct based API that reuses the existing EventType structs in the trace package.
Feedback welcome! 🙇🏻♂️
Feedback welcome! 🙇🏻♂️
Meanwhile ChatGPT O3 figured it out in one shot.
June 6, 2025 at 7:20 AM
Meanwhile ChatGPT O3 figured it out in one shot.
Dear @github.com I'd love to use Copilot to perform natural language search against large code bases. But it does not seem to work, no matter what model I pick.
June 6, 2025 at 7:20 AM
Dear @github.com I'd love to use Copilot to perform natural language search against large code bases. But it does not seem to work, no matter what model I pick.
Gemini's research on this, FWIW.
May 27, 2025 at 11:25 AM
Gemini's research on this, FWIW.
The discussion around the TypeScript migration to Go has made it obvious that we need a version of this meme with another character or two who is offended at being neither the current nor future love interest 🙈.
March 12, 2025 at 12:37 PM
The discussion around the TypeScript migration to Go has made it obvious that we need a version of this meme with another character or two who is offended at being neither the current nor future love interest 🙈.
Also: Greetings from Ahlbeck on Usedom. The weather could be better, but it makes for good coding while my daughter is having her lunch naps 😅.
March 1, 2025 at 1:06 PM
Also: Greetings from Ahlbeck on Usedom. The weather could be better, but it makes for good coding while my daughter is having her lunch naps 😅.
Have you ever struggled with debugging memory leaks or OOM kills in Java or Go?
My team at @datadoghq.com has recently shipped a guided memory leak workflow that can quickly guide you through the right steps to find and fix the problematic code.
My team at @datadoghq.com has recently shipped a guided memory leak workflow that can quickly guide you through the right steps to find and fix the problematic code.
January 22, 2025 at 12:58 PM
Have you ever struggled with debugging memory leaks or OOM kills in Java or Go?
My team at @datadoghq.com has recently shipped a guided memory leak workflow that can quickly guide you through the right steps to find and fix the problematic code.
My team at @datadoghq.com has recently shipped a guided memory leak workflow that can quickly guide you through the right steps to find and fix the problematic code.
My favorite aspect of OSS and sharing knowledge with the community: It all adds up to a virtuous circle.
Also: If you enjoy a project with less than ~1000 stars, consider letting the author know. It's a small effort and can easily make someones day.
Also: If you enjoy a project with less than ~1000 stars, consider letting the author know. It's a small effort and can easily make someones day.
January 8, 2025 at 7:48 AM
My favorite aspect of OSS and sharing knowledge with the community: It all adds up to a virtuous circle.
Also: If you enjoy a project with less than ~1000 stars, consider letting the author know. It's a small effort and can easily make someones day.
Also: If you enjoy a project with less than ~1000 stars, consider letting the author know. It's a small effort and can easily make someones day.
Orchestrion is open source and uses a simple, yet powerful declarative syntax for injecting instrumentation into your application at build time.
Here is the declaration for instrumenting the gin web framework and how it rewrites your code behind the scenes.
Here is the declaration for instrumenting the gin web framework and how it rewrites your code behind the scenes.
December 6, 2024 at 2:09 PM
Orchestrion is open source and uses a simple, yet powerful declarative syntax for injecting instrumentation into your application at build time.
Here is the declaration for instrumenting the gin web framework and how it rewrites your code behind the scenes.
Here is the declaration for instrumenting the gin web framework and how it rewrites your code behind the scenes.
Speaking of Security, Orchestrion has allowed us to bring advanced Runtime Application Self-Protection (RASP) to Go for the first time.
For example, RASP can detect if your application calls os.OpenFile() using a user provided string and block the call if it is malicious.
For example, RASP can detect if your application calls os.OpenFile() using a user provided string and block the call if it is malicious.
December 6, 2024 at 2:09 PM
Speaking of Security, Orchestrion has allowed us to bring advanced Runtime Application Self-Protection (RASP) to Go for the first time.
For example, RASP can detect if your application calls os.OpenFile() using a user provided string and block the call if it is malicious.
For example, RASP can detect if your application calls os.OpenFile() using a user provided string and block the call if it is malicious.
The whole process should take about 5 minutes and immediately gives you observability into 39 popular Go libraries.
In addition to distributed tracing, you can also opt into additional features such as Profiling, Data Streams Monitoring and Application Security Monitoring.
In addition to distributed tracing, you can also opt into additional features such as Profiling, Data Streams Monitoring and Application Security Monitoring.
December 6, 2024 at 2:09 PM
The whole process should take about 5 minutes and immediately gives you observability into 39 popular Go libraries.
In addition to distributed tracing, you can also opt into additional features such as Profiling, Data Streams Monitoring and Application Security Monitoring.
In addition to distributed tracing, you can also opt into additional features such as Profiling, Data Streams Monitoring and Application Security Monitoring.
Instead of using unsafe tricks to hack into a running program, Orchestrion uses compile-time instrumentation that benefits from all the type safety offered by Go’s compiler.
Usage is simple: Setup a repository once, and then tell Go’s toolchain to use Orchestrion in CI.
Usage is simple: Setup a repository once, and then tell Go’s toolchain to use Orchestrion in CI.
December 6, 2024 at 2:09 PM
Instead of using unsafe tricks to hack into a running program, Orchestrion uses compile-time instrumentation that benefits from all the type safety offered by Go’s compiler.
Usage is simple: Setup a repository once, and then tell Go’s toolchain to use Orchestrion in CI.
Usage is simple: Setup a repository once, and then tell Go’s toolchain to use Orchestrion in CI.
Manually instrumenting Go applications for observability has always been a time-consuming challenge.
Solutions based on binary patching and eBPF have attempted to solve this, but they often come with undesirable tradeoffs.
That’s why we built Orchestrion … 🧵
Solutions based on binary patching and eBPF have attempted to solve this, but they often come with undesirable tradeoffs.
That’s why we built Orchestrion … 🧵
December 6, 2024 at 2:09 PM
Manually instrumenting Go applications for observability has always been a time-consuming challenge.
Solutions based on binary patching and eBPF have attempted to solve this, but they often come with undesirable tradeoffs.
That’s why we built Orchestrion … 🧵
Solutions based on binary patching and eBPF have attempted to solve this, but they often come with undesirable tradeoffs.
That’s why we built Orchestrion … 🧵
For go1.24 (fingers crossed) and potentially as a backport fix, I'm proposing to always show start and end stack traces which should be much more useful and make the viewer easier to use.
November 26, 2024 at 12:25 PM
For go1.24 (fingers crossed) and potentially as a backport fix, I'm proposing to always show start and end stack traces which should be much more useful and make the viewer easier to use.
I just noticed that go tool trace slightly changed its behavior when it comes to the stack traces it displays in go1.23 compared to go1.22.
November 26, 2024 at 12:25 PM
I just noticed that go tool trace slightly changed its behavior when it comes to the stack traces it displays in go1.23 compared to go1.22.
Is it just me, or is it normal that Bluesky is pretty slow to load stuff?
October 30, 2024 at 9:20 AM
Is it just me, or is it normal that Bluesky is pretty slow to load stuff?