Kir Shatrov
Posts
Speaking
Photo
Travel
Fabrication
2024
SQL and B-trees as an API
Mastering SKIP LOCKED in MySQL
'Failed to locate m4' and misleading shims on Mac
Mcrouter, the secret sauce of Facebook’s scalability
Scalability Envelope
2022
DBaaS ecosystem and economics
2021
2021 in review
Fragmented prototyping
Vitess: Scaling VReplication
Quick way to run a Ruby script in Kubernetes
Global infrastructure expansion
Materializing tables with Vitess
Throttling database load with Vitess
Talking to Vitess over GRPC from Ruby
Vitess: scrappy notes
Five years at Shopify
Ruby 3, concurrency and the ecosystem
2020
Writing a Ractor-based web server: part II
Organizations and layers of abstraction
bpftrace, uprobe and containers
Writing a Ractor-based web server
Scaling MySQL stack, ep. 4: Proxies
Scaling MySQL stack, ep. 3: Observability
Scaling MySQL stack, ep. 2: Deadlines
Scaling MySQL stack, ep. 1: Timeouts
Databases and company growth
Creating productive teams
Contributing to Ruby MRI
2019
Playing with BPF
Finding a memory leak in a Go app with cgo bindings
Methods vs constants for static values in Ruby
Boosting application boot time with container snapshots
How I forgot my laptop and stayed calm
The State of Background Jobs in 2019
2018
Engineering Leadership Unconference
Capacity planning for web applications
Designing job queue in Redis
The Lead Developer conference
Debugging Ruby processes in Kubernetes
Asynchronous Active Record migrations
Rails 5.2 Credentials and Kubernetes
Predicting database index hits
Scaling database reads with Sticky Writer
2017
2017 in review
Changes in Ruby 2.5 that I'm excited about
Environment variables considered evil
SREcon Europe 2017: impressions
Background jobs and deploys
Signal handling in Ruby and its internals
Class attributes and ActiveSupport
Safe monkeypatching
2016
Rewriting code with Rubocop
Rails feature that you've never heard about: schema cache
Debugging Rubygems
Developing Rails on JRuby
Working on fork and upstream
Inspecting ActiveRecord queries
Five ways to write a flaky test
Dynamic breaking points in Ruby
Improving Rails test helpers
When abstraction is a mistake: ActionController::TestCase
Git and large repos
Rails and Webpack: No Gem Required
Starting with Clojure
My notes from RailsConf 2016
2015
Simple encryption of ActiveRecord fields
Using Kaminari to paginate non-ActiveRecord query
Making a custom logger for Rails query optimization
Profiling RSpec examples with Stackprof
Confident Ruby by Avdi Grim
Proper way to use the Struct
Localized cache store in Rails
Direct uploads with AWS S3 and Rails