Over the past few years, I've been spending more and more time speaking at conferences and tech events in different countries.
I'm currently focusing on improving this skill to become a stronger speaker.
These are the talks i've given in the past:
Git your PR accepted. Rebase your changes like a pro
Railsconf 2022 (Portland, OR)
You want to contribute to an Open Source project, and you have a complex PR to submit. You've tried to keep it small, but sadly getting there took a lot of effort and your branch has more than 30 commits with fixes and reverting of dead ends.
You know reviewing this will be a nightmare for the project maintainers, and more importantly, it will be almost impossible for anyone in the future to understand what you did by looking at the history.
In this talk we will look at how Git branches work, and how to manicure them using Rebase to build a commit history your colleagues will love you for.
Do Regex dream of Turing Completeness?
Rubyconf 2021 (Denver, CO), Rubykaigi 2021 (online)
We're used to using Regular Expressions every day for pattern matching and text replacement, but... What can Regexes actually do? How far can we push them? Can we implement actual logic with them?
What if I told you... You can actually implement Conway's Game of Life with just a Regex? What if I told you... You can actually implement ANYTHING with just a Regex?
Join me on a wild ride exploring amazing Game of Life patterns, unusual Regex techniques, Turing Completeness, programmatically generating complex Regexes with Ruby, and what all this means for our understanding of what a Regex can do.
Speed up your test suite by throwing computers at it
Railsconf 2021 (online)
You've probably experienced this. CI times slowly creep up over time and now it takes 20, 30, 40 minutes to run your suite. Multi-hour runs are not uncommon.
All of a sudden, all you're doing is waiting for CI all day, trying to context switch between different PRs. And then, a flaky test hits, and you start waiting all over again.
It doesn't have to be like this. In this talk I'll cover several strategies for improving your CI times by making computers work harder for you, instead of having to painstakingly rewrite your tests.
Disk is fast, memory is slow. Forget all you think you know
Rubyconf 2019 (Nashville, TN), RubyFuza 2020 (Cape Town, ZA), Rubyconf Belarus 2020 (online)
Adding metrics to your code should effectively have no impact on performance.
When we were recently tasked with doing that in multi-process Ruby servers, we ran into an interesting challenge: could we aggregate our numbers across processes without blowing our target of just one microsecond of overhead?
The months of work that followed had us looking into C extensions, segfault dumps, memory maps, syscall timings, and pretty much everything we could think of to try and achieve our objective.
In the process, we found some very counter-intuitive performance results that I'd like to share with you.
What the fork‽ Reporting metrics in a multi-process environment
Promcon EU 2019 (Munich), Promcon NA 2020 (online)
For many years, most Ruby applications couldn't use Prometheus, because the Ruby client didn't support pre-fork servers.
It turns out this wasn't solved for such a long time because it's a surprisingly hard problem.
Many have tried to solve this with different approaches, but we found the best one to be the simplest.
Let me show you the dark arts of inter-process communication, and how we ended up fully supporting metrics in Ruby.
The full power of Redis
London Dev Community, London Ruby User Group, 2016
The vast majority of projects use Redis like it's Memcached, but Redis can give so much more.
In this talk I give practical examples of use cases where Redis outshines everything else I've tried.