sferik@mbp ~> figlet sferik.net __ _ _ _ ___ / _| ___ _ __(_) | __ _ __ ___| |_ / __| |_ / _ \ '__| | |/ / | '_ \ / _ \ __| \__ \ _| __/ | | | < _| | | | __/ |_ |___/_| \___|_| |_|_|\_(_)_| |_|\___|\__| sferik@mbp ~> cat .signature I build libraries and tools software engineers depend on. sferik@mbp ~> whoami I've spent nearly two decades writing software that runs underneath other software: HTTP clients, JSON and XML parsers, OAuth, code coverage, package registries, and command-line tools. If you've shipped a Ruby app, some of my code is probably in your Gemfile.lock. I'm the author of MultiJSON and MultiXML, which have 1,783,739,850 combined downloads, and the top contributor to SimpleCov, OmniAuth, and RubyGems.org. All of it is core infrastructure for the Ruby community. In 2014, I was given the Ruby Hero Award for my open-source contributions. If your work depends on these projects, you can sponsor me on GitHub. Lately I've been rewriting command-line tools in Rust, patching the C internals of CRuby, and adding branch and method coverage to JRuby in Java. Before that, I co-founded Breaker (YC W17), a social podcast app that Twitter acquired to help build Spaces, and stayed on as an engineering manager. I've also been a principal software engineer at SoundCloud in Berlin and at Instacart, the CTO of 140 Proof, and one of the first Code for America fellows. sferik@mbp ~> imgcat ~/dependency.webp [A tall, precarious tower of blocks labeled “all modern Ruby infrastructure,” held up near the bottom by one thin block labeled “projects @sferik has been thanklessly maintaining since 2008.”] https://xkcd.com/2347/ Adapted from xkcd 2347 by Randall Munroe, CC BY-NC 2.5. sferik@mbp ~> git log --author=sferik --since=1.year --graph Nov Dec Jan Feb Mar Apr May Jun Jul Aug Sep Oct ·▓·▓░█▓▒··░█·▒·▓▒░█··░···▓░▒▒··▒·░··▒▒··▒░░·▓▒·█·░█·█ Mon ▒▒·█▓█▓░▓▓▓█▒▒▓·█▒▓░▓█·▒░▒░░▓▒▓▒▒···█░··▓·░▒█▒▓▓▓█▓█▒ ▒▒▓█▓░▓░▓▓░█▓░░▒▓·░·█▓·░·▒█·█░▓░▓▓▓░▒···▓·░·█▒██░███░ Wed ░▓█░▓▒▒▒█▒▒█·░▒·▓··░▓▒░▓░▒█···█·▒▓·▒·░··░··░█▓·█░█·██ ▓██·█▓░░▓▒▓▓▓▓▒·▓░░▓█░·▓▒▒█▒██▒░░▒░·█░▒░▒░▒·▓▒░▓░█▒██ Fri ▒██·██▒▓▒▓██░▒░▓█▒·▓░█·██▓▒▓▓░···▓·▓·▒░·░··▓░▒█▒█░██░ █▒█·█░▒··▓█▒·▒··█░░░░▒·░▒▒░░░▒░··░░█·░░·▒░░█····██▓·▒ 7,328 contributions in the last year, longest streak 27 days On GitHub since 2008 through 2026-10-11 (sferik/tesla-ruby@f4eff60). sferik@mbp ~> ls -lS ~/src multi_json One interface to every Ruby JSON library. 1.2B↓ 27★ multi_xml One interface to every Ruby XML library. 609M↓ 171★ simplecov Code coverage for Ruby. 508M↓ 4.9k★ faraday_middleware Middleware for the Faraday HTTP client. 467M↓ 558★ octokit GitHub API Ruby client. 397M↓ 4.0k★ oauth2 Ruby client for OAuth 2.0. 280M↓ 2.2k★ simple_oauth Builds and verifies OAuth headers. 43M↓ 77★ omniauth Multi-provider authentication for Rack. 228M↓ 8.1k★ http A fast, chainable HTTP client for Ruby. 216M↓ 3.1k★ equalizer Define equality and hashing from a few keys. 132M↓ 203★ unparser Turns Ruby syntax trees back into source. 103M↓ 329★ delayed_job Database-backed background jobs. 68M↓ 4.8k★ memoizable Memoize method return values. 60M↓ 112★ gems RubyGems.org API Ruby client. 56M↓ 141★ naught A toolkit for building null objects. 32M↓ 1.1k★ twitter Twitter API Ruby client. 28M↓ 4.6k★ x X API Ruby client. 462k↓ 109★ x-cli Command-line power tool for X, in Rust. 319k↓ 5.6k★ buftok Splits a stream of bytes into tokens. 28M↓ 10★ rails_admin Admin interface for any Rails app. 13M↓ 8.0k★ openai OpenAI API Ruby client. 2.4M↓ 468★ mlb MLB Stats API Ruby client. 140k↓ 68★ nba NBA Stats API Ruby client. 13k↓ 3★ minitest-strict Strict boolean assertions for Minitest. 17k↓ 8★ minitest-memory Assert how many objects a block allocates. 4.0k↓ 15★ tesla Ruby client for my car. 6.2k↓ 1★ sferik Ruby client for this website. 161↓ 1★ rubygems.org The Ruby package registry. 2.4k★ total 5.5B↓ 51.0k★ More repositories at github.com/sferik sferik@mbp ~> git log --follow --oneline -- name 8c0d698 Rename Erik Michaels-Ober to Erik Berlin (2017) When Diana and I married, we picked a new last name together. It turns out a hyphen breaks a surprising number of computer systems. Why Berlin? Talks and commits from before 2017 are under my old name. sferik@mbp ~> ls -t ~/talks | head -6 Nov 2015 The Value of Being Lazy, or How I Made OpenStruct 10X Faster Rails Israel, Tel Aviv slides: speakerdeck.com/sferik/the-value-of-being-lazy video: youtube.com/watch?v=6lQeBfSVrpk Jul 2015 An Introduction to Crystal PolyConf, Poznań video: youtube.com/watch?v=Ysm4IU4aWoQ Feb 2015 Towards a Higher-Level Language RubyConf Australia, Melbourne video: youtube.com/watch?v=cjPybeAeKDQ Oct 2014 Content Negotiation for REST APIs (closing keynote) Nordic APIs Platform Summit, Stockholm slides: speakerdeck.com/sferik/content-negotiation-for-rest-apis video: youtube.com/watch?v=xRyCykwqDEk Sep 2014 Writing Fast Ruby Barcelona Ruby Conference, Barcelona slides: speakerdeck.com/sferik/writing-fast-ruby video: youtube.com/watch?v=fGFM_UrSp70 Apr 2014 Mutation Testing with Mutant RailsConf, Chicago slides: speakerdeck.com/sferik/mutation-testing-with-mutant video: youtube.com/watch?v=WccaOMuf01Y All talks at sferik.net/talks. Slides are on speakerdeck.com/sferik. sferik@mbp ~> finger sferik Login: sferik Name: Erik Berlin Directory: /Users/sferik Shell: /opt/homebrew/bin/fish Mail: sferik@gmail.com Plan: Ship small, sharp tools. GitHub: https://github.com/sferik GitLab: https://gitlab.com/sferik Stack Overflow: https://stackoverflow.com/users/209190/sferik RubyGems: https://rubygems.org/profiles/sferik Speaker Deck: https://speakerdeck.com/sferik Hacker News: https://news.ycombinator.com/user?id=sferik Y Combinator: https://www.ycombinator.com/verify/qugse5lo7rvb3xe7 LinkedIn: https://www.linkedin.com/in/sferik X: https://x.com/sferik Bluesky: https://bsky.app/profile/sferik.net Mastodon: https://mastodon.social/@sferik Threads: https://www.threads.com/@sferik Facebook: https://www.facebook.com/sferik Instagram: https://www.instagram.com/sferik/ Snapchat: https://www.snapchat.com/@sferik TikTok: https://www.tiktok.com/@sf.erik Clubhouse: https://www.clubhouse.com/@sferik Reddit: https://www.reddit.com/user/sferik Medium: https://medium.com/@sferik Tumblr: https://www.tumblr.com/sferik Flickr: https://www.flickr.com/people/25243524@N02 Pinterest: https://www.pinterest.com/sferik/ Dribbble: https://dribbble.com/sferik YouTube: https://www.youtube.com/ekmichae Vimeo: https://vimeo.com/sferik Twitch: https://www.twitch.tv/sferik Kick: https://kick.com/sferik Spotify: https://open.spotify.com/user/sferik SoundCloud: https://soundcloud.com/erik Strava: https://www.strava.com/athletes/sferik Kickstarter: https://www.kickstarter.com/profile/sferik PayPal: https://www.paypal.com/paypalme/sferik Venmo: https://account.venmo.com/u/sferik Cash App: https://cash.app/$pend Ko-fi: https://ko-fi.com/sferik Buy Me a Coffee: https://buymeacoffee.com/sferik Gravatar: https://gravatar.com/sferik Linktree: https://linktr.ee/sferik sferik@mbp ~> curl sferik.net/resume