add Talks page

main
BraydonKains 6 days ago
parent 96f8d77e59
commit f204f22bf6

@ -193,7 +193,7 @@ That explains how we're getting program counter `0x0`!
### The Solution
While I spent a considerable amount of time experimenting and looking through `go tool linker` and `cgo` source code to try and understand what was going on, and I did learn a lot, I ended up finding the problem with a good old fashioned `git bisect`. I ended up at commit [1f29f39](https://github.com/golang/go/commit/1f29f39795e736238200840c368c4e0c6edbfbae).
The message of that commit: `cmd/link: don't export all symbols for ELF external linking`
The message of that commit: `cmd/link: don't export all symbols for ELF external linking`
The problematic code change was from this:
```go
// Force global symbols to be exported for dlopen, etc.
@ -214,9 +214,9 @@ if ctxt.IsELF {
}
}
```
What does this mean? The code used to always pass the `-rdynamic` flag to `gcc`, which passes `--export-dynamic` to `ld` under the hood. The change for the code changed to only pass `-rdynamic` to `gcc` if the particular linker flag is not supported. The justification for this is in [this issue](https://github.com/golang/go/issues/53579) (TL;DR because this is unnecessary in most cases it wastes space on a majority of binaries). While it's hard to know exactly when the `--export-dynamic-symbol` flag was added to `ld`, but it seems like the only plausible reason that this issue only occurs on an `ld` version that is high enough.
What does this mean? The code used to always pass the `-rdynamic` flag to `gcc`, which passes `--export-dynamic` to `ld` under the hood. The change for the code changed to only pass `-rdynamic` to `gcc` if the particular linker flag is not supported. The justification for this is in [this issue](https://github.com/golang/go/issues/53579) (TL;DR it's because this is unnecessary in most cases and thus wastes space on a majority of binaries). While it's hard to know exactly when the `--export-dynamic-symbol` flag was added to `ld`, it seems like the only plausible reason that this issue only occurs on an `ld` version that is high enough.
Since `-rdynamic` is now not always being passed in the CGO build process, the change I ended up on was to modify the binding generation in `go-nvml` to [always pass the `--export-dynamic` linker flag](https://github.com/NVIDIA/go-nvml/pull/79). This doesn't break if the `-rdynamic` flag is passed, but ensures that we still have the required `ld` flag being passed in newer versions of Go.
Since `-rdynamic` is now not always being passed in the CGO build process, the change I ended up on was to modify the binding generation in `go-nvml` to [always pass the `--export-dynamic` linker flag](https://github.com/NVIDIA/go-nvml/pull/79). This doesn't break if the `-rdynamic` flag is passed, but ensures that we still have the required `ld` flag being passed in newer versions of Go and `ld`.
## Conclusion

@ -0,0 +1,82 @@
+++
title = "Talks"
menu = "main"
+++
This is a collection of public recorded talks I've done.
# Prepared Talks
## Deep Dive: How Fluent Bit Collects File Logs
https://www.youtube.com/watch?v=KrlvWBCGagI
This is my talk for Observability Day North America, a co-located event with KubeCon NA 2024. It was a lightning talk, but it ended up being a really dense talk and probably could have been full-sized. To compensate, I talked really fast!
T-shirt: Iron Maiden
## Tuning OTel Collector Performance Through Profiling
https://www.youtube.com/watch?v=qMxxjB4meXo
This was a talk for OpenTelemetry Community Day 2024. It goes through my experience profiling parts of the OpenTelemetry Collector to find performance improvements.
Retractions: One of the solutions I talked about in this talk for Windows getting Parent Process ID had a flawed premise, ignoring the fact that the increase in WMI memory usage did offset the gains made in the Collector. So it ended up not being that big of a win, and we're still working to find another alternate method for getting Parent Process ID.
T-shirt: Brook from One Piece Wanted Poster
## How Much Overhead: How to Evaluate Observability Agent Performance
https://www.youtube.com/watch?v=BIaftvtFPHg
This is my talk for Observability Day 2023, a co-located event with KubeCon NA 2023. It was inspired by situations at work where people would ask things like "which agent has less overhead?" without fully qualifying their goals. I wanted to break down the problem down into more actionable pieces.
T-shirt: Meshuggah Catch-33
## Learning To Fly: How to Find Bottlenecks in your Agents
https://www.youtube.com/watch?v=jf7t1CpoKlg&t=176s
This was a remote talk I did for the [Is It Observable](https://www.youtube.com/@isitobservable) YouTube channel (awesome channel, highly recommend subscribing). This was perhaps the hardest I ever prepared for a talk, because it came with an in-depth [reproducible demo](https://github.com/braydonk/learning-to-fly-lightning-talk), that ran in a Dockerfile and included code to graph OpenTelemetry Metrics directly in the CLI. It was a lot of fun to prepare and I think it's one of my best talks. If you can get around the fact that my mic sounded TERRIBLE).
T-shirt: Zoro from One Piece
Background friend: A plush of the character Acrid from my favourite video game, Risk of Rain 2
# Tutorials
## 5 Levels of Go Error Handling
https://www.youtube.com/watch?v=y5utZCeHys0&t=1s
This was my one attempt at "content creation". It's a relatively beginner-focused tutorial about Go error handling and how to do some more advanced things. The video was picked up by the algorithm this past summer and started getting a lot more attention. I'm not completely cutting myself off from making more videos in the future, but I did not have as much fun as I thought I would making this video so I'm not sure if I'll make more. I think this tutorial is pretty good for what it is though and I'll keep it around anyway!
T-shirt: It's obscured!
Background friend: Acrid from Risk of Rain 2 again
# Interviews
## KubeCon NA 2024 with Is It Observable
https://www.youtube.com/watch?v=qf0OjAEzprs&t=365s
This was an interview with the [Is It Observable](https://www.youtube.com/@isitobservable) YouTube channel. I talked a bit about the talk I was giving the next day at Observability Day, as well as some general best practices for managing performance of agents collecting logs.
T-shirt: Coheed and Cambria, Vaxis II tour shirt
## Humans of OTel - KubeCon NA 2024
https://www.youtube.com/watch?v=TIMgKXCeiyQ
I was featured in the Humans of OTel series of interviews at KubeCon NA 2024, along with a lot of amazing peers from the OpenTelemetry Community!
T-shirt: Video filmed too high to tell!
## KubeCon NA 2023 with Is It Observable
https://www.youtube.com/watch?v=5arixRhAIbs&t=161s
An interview with [Is It Observable](https://www.youtube.com/@isitobservable) from KubeCon NA 2023. This was my first time doing something like this so I was definitely more nervous, but it was great practice!
T-shirt: Meshuggah Catch 33
Loading…
Cancel
Save