Hi, I'm Peter 👋
I have authored and/or currently maintain hundreds of open source libraries, including many you might use (as a developer or a consumer of the internet).
Despite not being "into crypto", I was recently challenged to build a crypto scanner using React. Didn't get the job, but I am proud of the result, and you can check out the demo!
📍 NOTE |
---|
RubyGems.org was recently compromised in a hostile takeover about which many lies have been told. |
I'm in the process of adding warnings to some important gems because I don't condone the theft of the bundler and rubygems-update projects. |
Once publishing to gem.coop is available I will stop publishing to RubyGems.org. |
Please see here and here for more info on what comes next. |
I maintain the following RubyGems:
- appraisal-rb / appraisal2 -
- Dynamoid / dynamoid -
- galtzo-floss / flag_shih_tzu -
- galtzo-floss / sanitize_email -
- omniauth / omniauth-jwt -
- omniauth / omniauth-identity -
- rdp / os -
- ruby-oauth / oauth -
- ruby-oauth / oauth2 -
- ruby-oauth / version_gem -
- ruby-openid / omniauth-openid -
- ruby-openid / rack-openid -
- ruby-openid / ruby-openid -
- many benchmarking, rails, resque, rspec, rubocop plugins & more... (in details below)
benchmarking libraries
rails plugins
- galtzo-floss / active_security -
- galtzo-floss / activerecord-transactionable -
- galtzo-floss / activesupport-broadcast_logger -
- galtzo-floss / activesupport-logger -
- galtzo-floss / activesupport-tagged_logging -
- galtzo-floss / debug_logging -
- galtzo-floss / destination_errors -
- galtzo-floss / include_with_respect -
- galtzo-floss / seed_migration -
- galtzo-floss / shiftable -
- galtzo-floss / simple_column-scopes -
- galtzo-floss / spyke-connection_lambda -
- galtzo-floss / status_tag -
resque & queue plugins
rspec plugins & testing tools
- galtzo-floss / activerecord-tablefree -
- galtzo-floss / anonymous_active_record -
- galtzo-floss / json_schemer-fuzz -
- galtzo-floss / rspec-block_is_expected -
- galtzo-floss / rspec-pending_for -
- galtzo-floss / rspec-stubbed_env -
- galtzo-floss / silent_stream -
- galtzo-floss / timecop-rspec -
- kettle-rb / kettle-soup-cover -
rubocop plugins
Want RuboCop to have its rules explicitly configured for compatibility with the oldest version of Ruby that your library officially supports in two lines of code?
inherit_gem:
rubocop-lts: rubocop-lts.yml # for ruby + rspec
More examples for rails-specific, or non-rspec projects are at rubocop-lts.gitlab.io
If you think this is whatTargetRubyVersiondoes, you've misundertood its purpose, which is to turn off rules that are incompatible with older versions of Ruby, not to make your rules configuration compatible with a specific version of Ruby, nor to turn on Rules that would help with compatibility.
- rubocop-lts / rubocop-lts -
- rubocop-lts / rubocop-ruby1_8 -
- rubocop-lts / rubocop-ruby1_9 -
- rubocop-lts / rubocop-ruby2_0 -
- rubocop-lts / rubocop-ruby2_1 -
- rubocop-lts / rubocop-ruby2_2 -
- rubocop-lts / rubocop-ruby2_3 -
- rubocop-lts / rubocop-ruby2_4 -
- rubocop-lts / rubocop-ruby2_5 -
- rubocop-lts / rubocop-ruby2_6 -
- rubocop-lts / rubocop-ruby2_7 -
- rubocop-lts / rubocop-ruby3_0 -
- rubocop-lts / rubocop-ruby3_1 -
- rubocop-lts / rubocop-ruby3_2 -
- rubocop-lts / standard-rubocop-lts -
I'm attempting to document all of the logos for the FLOSS projects I'm involved in, with their attendant licesnses and copyrights, here: logos.galtzo.com. It has been a multi-year effort hunting down the original creators for some of these logos, and documenting the conditions under which they can be used. I'd love to hear if this is useful in your projects!
I was laid off in a March 2025 RIF, and am looking for my next sponsor and my next role.
Want to chat about open source, or any of my projects? Join my FLOSS discord.
Or join the Ruby Friends Squad on Daily.dev
Want to pay me for work? I'm available!
Thanks to all my sponsors across any of the donation platforms! Special thanks to my biggest sponsor HealthSherpa!
- List is updated frequently by my pet robot: @autobolt
- 🗓️ 2025-09-22T03:02:52Z | oauth (1.1.2) | 🔑 A Ruby wrapper for the original OAuth 1.0 / 1.0a spec.
- 🗓️ 2025-09-22T02:52:36Z | oauth (1.1.1) | 🔑 A Ruby wrapper for the original OAuth 1.0 / 1.0a spec.
- 🗓️ 2025-09-21T11:21:48Z | oauth-tty (1.0.6) | 🖥️ OAuth 1.0 / 1.0a TTY Command Line Interface
- 🗓️ 2025-09-16T03:42:22Z | oauth2 (2.0.17) | 🔐 A Ruby wrapper for the OAuth 2.0 Authorization Framework, including the OAuth 2.1 draft spec, and OpenID Connect (OIDC)
- 🗓️ 2025-09-14T21:14:19Z | oauth2 (2.0.16) | 🔐 A Ruby wrapper for the OAuth 2.0 Authorization Framework, including the OAuth 2.1 draft spec, and OpenID Connect (OIDC)
- 🗓️ 2025-09-08T08:37:57Z | oauth2 (2.0.15) | 🔐 A Ruby wrapper for the OAuth 2.0 Authorization Framework, including the OAuth 2.1 draft spec, and OpenID Connect (OIDC)
- 🗓️ 2025-09-05T07:59:12Z | rspec-pending_for (0.1.19) | ⏳️ Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) & versions, or version ranges. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev
- 🗓️ 2025-09-02T13:04:33Z | version_gem (1.1.9) | 🔖 Versions are good. Versions are cool. Versions will win.
- 🗓️ 2025-08-31T11:39:52Z | oauth2 (2.0.14) | 🔐 A Ruby wrapper for the OAuth 2.0 Authorization Framework, including the OAuth 2.1 draft spec, and OpenID Connect (OIDC)
- 🗓️ 2025-08-30T22:39:45Z | oauth2 (2.0.13) | 🔐 A Ruby wrapper for the OAuth 2.0 Authorization Framework, including the OAuth 2.1 draft spec, and OpenID Connect (OIDC)
- 🗓️ 2025-08-24T21:11:05Z | rspec-pending_for (0.1.18) | ⏳️ Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) & versions, or version ranges. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev
- 🗓️ 2025-08-23T18:50:13Z | dynamoid (3.12.1) | Dynamoid is an ORM for Amazon's DynamoDB that supports offline development, associations, querying, and everything else you'd expect from an ActiveRecord-style replacement.
- 🗓️ 2025-08-21T08:11:23Z | silent_stream (1.0.12) | 🔕 (formerly) ActiveSupport Kernel Reporting Detritus with a few enhancementsFund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev
- 🗓️ 2025-08-20T12:08:03Z | gitmoji-regex (1.0.3) | 😜 A regular expression matching Gitmoji (a subset of Unicode Emoji) symbolsFund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev
- 🗓️ 2025-08-05T05:01:28Z | rspec-stubbed_env (1.0.4) | Stub or hide environment variables in a scoped context for testing stub_env('REDIS_URL' => 'redis://localhost:6379/') hide_env('SESSION_SECRET')
- List is updated frequently by my pet robot: @autobolt
- 🗓️ 2025-09-18T06:30:38Z | 💎 ANN: oauth2 v2.0.17 | 🏷️ ruby, oauth, webdev, instagram
- 🗓️ 2025-09-15T11:53:14Z | 💎 ANN: kettle-dev v1.1.20 w/ improved CHANGELOG handling | 🏷️ devtools, ruby, packaging, automation
- 🗓️ 2025-09-14T23:07:29Z | 💎 ANN: oauth2 v2.0.16 w/ full E2E example (& Instagram Compat) | 🏷️ docker, security, ruby, instagram
- 🗓️ 2025-09-13T22:27:37Z | 👩🔧 How to Check License Compatibility in GHA | 🏷️ programming, opensource, githubactions, howto
- 🗓️ 2025-09-12T08:18:46Z | 💲ANN: awesome-sponsorships | 🏷️ opensource, webmonetization, sponsorships, programming
- 🗓️ 2025-09-01T03:24:45Z | 💎 ANN: oauth2 v2.0.14 | 🏷️
- 🗓️ 2025-08-30T23:13:42Z | 💎 ANN: oauth2 v2.0.13 | 🏷️ webdev, ruby, oauth, opensource
- 🗓️ 2025-08-27T03:39:03Z | 💎 ANN: stone_checksums v1.0.2 | 🏷️ programming, ruby, rubygems, security
- 🗓️ 2025-08-25T00:18:20Z | 💎 ANN: kettle-dev v1, part 1 | 🏷️ opensource, ruby, tooling, webdev
- 🗓️ 2025-08-22T07:55:13Z | 💎 ANN: kettle-test v1.0.0 | 🏷️ testing, ruby, rails, devtools
- 🗓️ 2025-08-09T08:37:22Z | Continuity: Moving RubyGems to Org | 🏷️ opensource
- 🗓️ 2025-07-29T03:04:11Z | 💎 ANN: omniauth-identity v3.1.4 | 🏷️ authentication, ruby, security, rails
- 🗓️ 2023-10-11T17:45:00Z | Generate Gem Checksums | 🏷️
- 🗓️ 2023-04-15T06:39:00Z | RequireBench: When do you use it? | 🏷️
- 🗓️ 2022-12-17T15:13:30Z | Put the D in DVCS | 🏷️
- 🦷 I'm putting more of my focus on FLOSS efforts (of myself and others)!
and
from
- 👷 I build big things and small things out of tiny bits.
- ✨ Recently created
rubocop-lts
for library maintainer happiness 👩❤️👩. - 🔭 I’m working on finishing the migration away from TravisCI to modern CI tools.
- 🌱 I’m learning Svelte & SvelteKit, with Lucia, Drizzle, Zod, Inlang Paraglide, Skeleton, Tailwind, Typescript, and so many more cool tools.
- 👯 Preparing next release of
seed_migrations
andoauth
gems! - 🤔 I’ve moved my suite of Resque plugins to the Resque org!
- 📫 How to reach me
- 😄 Pronouns: He/Him
- 🗨️ I speak 3 languages fluently, and for a 4th I'm learning Bahasa Indonesia!
- 👷♂️ I help refugees and ex-refugees in Ghana🇬🇭 and Liberia🇱🇷, respectively, through Hope For Tomorrow, a Liberian NGO. DM me if interested in knowing more.
- The list is long, even in summary, see my LinkedIn.
- Open Source Contributor | MyBudgetCoach
- FLOSS Blogger | RailsBling
- FLOSS Author | RubyGems
- FLOSS Maintainer | Tidelift Enterprise OSS
- Researcher | WordTree Foundation
- Advisor | Hope For Tomorrow (Liberian NGO)