Kir Shatrov
Posts
Speaking
Photo
Travel
Fabrication

2022

DBaaS ecosystem and economics

2021

Ruby 3, concurrency and the ecosystem
Five years at Shopify
Vitess: scrappy notes
Throttling database load with Vitess
Talking to Vitess over GRPC from Ruby
Materializing tables with Vitess
Global infrastructure expansion
Quick way to run a Ruby script in Kubernetes
Vitess: Scaling VReplication
Fragmented prototyping
2021 in review

2020

Contributing to Ruby MRI
Creating productive teams
Databases and company growth
Scaling MySQL stack, ep. 1: Timeouts
Scaling MySQL stack, ep. 2: Deadlines
Scaling MySQL stack, ep. 3: Observability
Scaling MySQL stack, ep. 4: Proxies
Writing a Ractor-based web server
bpftrace, uprobe and containers
Organizations and layers of abstraction
Writing a Ractor-based web server: part II

2019

The State of Background Jobs in 2019
How I forgot my laptop and stayed calm
Boosting application boot time with container snapshots
Methods vs constants for static values in Ruby
Finding a memory leak in a Go app with cgo bindings
Playing with BPF

2018

Scaling database reads with Sticky Writer
Predicting database index hits
Rails 5.2 Credentials and Kubernetes
Asynchronous Active Record migrations
Debugging Ruby processes in Kubernetes
The Lead Developer conference
Designing job queue in Redis
Capacity planning for web applications
Engineering Leadership Unconference

2017

Safe monkeypatching
Class attributes and ActiveSupport
Signal handling in Ruby and its internals
Background jobs and deploys
SREcon Europe 2017: impressions
Environment variables considered evil
Changes in Ruby 2.5 that I'm excited about
2017 in review

2016

My notes from RailsConf 2016
Starting with Clojure
Rails and Webpack: No Gem Required
Git and large repos
When abstraction is a mistake: ActionController::TestCase
Improving Rails test helpers
Dynamic breaking points in Ruby
Five ways to write a flaky test
Inspecting ActiveRecord queries
Working on fork and upstream
Developing Rails on JRuby
Debugging Rubygems
Rails feature that you've never heard about: schema cache
Rewriting code with Rubocop

2015

Direct uploads with AWS S3 and Rails
Localized cache store in Rails
Proper way to use the Struct
Confident Ruby by Avdi Grim
Profiling RSpec examples with Stackprof
Making a custom logger for Rails query optimization
Using Kaminari to paginate non-ActiveRecord query
Simple encryption of ActiveRecord fields