---
title: "Ruby turns 30"
publication: "Ruby Weekly"
issue: 643
published_at: "2023-03-02"
canonical_url: "https://rubyweekly.com/issues/643"
---

Plus bye to Ruby 2.7, DHH gets into the container shipping business, and a lot of mruby stuff. |        

#​643 — March 2, 2023 

[Read on the Web](https://rubyweekly.com/issues/643)  

Together with [![pgAnalyze\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_350,h_100/e_make_transparent/co_white,e_outline:7/lhwcvgc1asd4fzaahty4.png)](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimary03022023)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/mwygmy9skhlj0yqn3izz.jpg)](https://mametter.hatenablog.com/entry/2023/02/25/232514)   

[Ruby Turns 30 Years Old; Celebrate with a Quine!](https://mametter.hatenablog.com/entry/2023/02/25/232514) — Thirty years ago [in a chat room](https://blade.ruby-lang.org/ruby-talk/88819) _far, far away_, the name ‘Ruby’ came into being for Matz’s then-nascent language. This milestone has been celebrated by many including [Matt Sears](https://mattsears.com/articles/2023/02/28/happy-birthday-ruby/), [DHH](https://twitter.com/dhh/status/1629368799387320321), [Charles Nutter](https://twitter.com/headius/status/1628978786686365696), in a (Japanese) [▶️ audio message by Matz himself](https://voicy.jp/channel/2940/482806), and [many](https://twitter.com/hashtag/Ruby30th?src=hashtag_click) [others](https://ruby.social/tags/ruby30th), but I had to feature this amazing effort to create a quine, of sorts, that works on _“all currently known CRubys”_ (right back to Ruby 0.49!). It’s worth hitting _“Translate to English”_ on this page to learn a few things about Ruby’s history. 

ku-ma-me   

In his [▶️ audio message,](https://voicy.jp/channel/2940/482806) Matz acknowledges there are multiple ways you could define Ruby's birthday, but he's happy to go with the date it was _named_ in this case.  [![\](https://copm.s3.amazonaws.com/85687fdf.png)](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimary03022023) 

[Free eBook: Advanced Database Programming with Rails and Postgres](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimary03022023) — Learn about subqueries, materialized views, and custom data types in Postgres and Rails. We walk through realistic real-life examples, translating first into SQL, and then into Rails code. Every example comes with source code so you can follow along. 

pganalyze sponsor   

[Improving the Developer Experience with the Ruby LSP](https://shopify.engineering/improving-the-developer-experience-with-ruby-lsp) — Shopify continues to enhance the Ruby landscape, this time with a [Ruby Language Server Protocol (LSP) server](https://github.com/Shopify/ruby-lsp) that takes advantage of recent performance improvements to Ruby (YJIT, etc.) and supports VS Code (or any editor that has LSP support.) 

Vinicius Stock (Shopify)   

[Introducing MRSK: A Way to Deploy Web Apps Anywhere](https://world.hey.com/dhh/introducing-mrsk-9330a267) — The folks at 37Signals have developed a Capistrano replacement they're using for HEY․com as part of their move to [leave the cloud](https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0). In true DHH style, there's [▶️ a screencast showing it off](https://www.youtube.com/watch?app=desktop&v=LL1cV2FXZ5I), but basically it's a way to deploy Docker containers, cloud or not. 

David Heinemeier Hansson   

There's more explanation on MRSK's [very minimal homepage.](https://mrsk.dev/)  

**QUICK BITS** 

- Welcome to March 2023. This is the final month [that Ruby 2.7 gets security releases](https://www.ruby-lang.org/en/downloads/branches/). 2.7 goes EOL on March 31. It was such a good version.
- Ruby Central is now [sponsoring the development of Mastodon](https://rubycentral.org/news/mastodon-development-now-supported-by-ruby-central/).
- You can now [add pronouns to your GitHub profile](https://github.blog/changelog/2023-03-01-add-pronouns-to-your-github-profile/).
- TIL that `!value.nil?` [is a lot faster than](https://gist.github.com/postmodern/66dfb41c8cc98f3bc3c2fd2fe7385542) `value != nil`
- It looks like Drifting Ruby is doing [▶️ a weekly video update on all things Rails](https://www.youtube.com/watch?v=Hiafc6W-m5g) over on YouTube.
- 📅 The [7th annual _Rails Camp West_](https://west.railscamp.us/2023) is taking place this September in Hawaii. There's also [a scholarship application](https://docs.google.com/forms/d/e/1FAIpQLSf4ujpU1ttC8B0LJvY81Gkd3tRpbiGlFoSN-vnBOohbuLk_Dg/viewform) if you need help to get there.  

📕 Tutorials and Articles 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lgob0ant51c17tswlild.jpg)](https://www.youtube.com/watch?v=s2rngApV1WU)  

▶[Building a Commercial Game Engine using mruby and SDL](https://www.youtube.com/watch?v=s2rngApV1WU) — [mruby](https://mruby.org/) is a lightweight, embeddable standardized Ruby implementation and the [DragonRuby](https://dragonruby.org/) toolkit uses it at its heart. This talk digs into just _how_ it works and why Ruby is a good fit for certain forms of game development. 

Amir Rajan   

[A Beginner's Guide to Ractors](https://www.honeybadger.io/blog/ractors/) — A quick, elementary introduction to ractors (once known as [‘guilds’](https://olivierlacan.com/posts/concurrency-in-ruby-3-with-guilds/)) which, in Ruby 3 and up, provide an actor-like concurrency abstraction for executing code in parallel without the problems introduced by multi-threading. 

Julie Kent   

[When Production Goes to 💩 You Can’t Waste Time Digging for Errors](https://www.honeybadger.io/for/rails/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) — Honeybadger helps you triage errors before your users can even report them. Get monitoring set up today in about 5 mins. 

Honeybadger sponsor   

[Consider `find_each` for Looping Through Active Record Associations](https://andycroll.com/ruby/consider-find_each-for-active-record-assocation-loops/) — If you have many associated records (and you don’t care about order), `find_each` could be your jam. 

Andy Croll   

[What's Postgres Got to Do with AI?](https://www.crunchydata.com/blog/whats-postgres-got-to-do-with-ai) — A look at using Ruby and OpenAI’s API to get _embeddings_ for your data (recipes in this case), feeding (ha!) them into Postgres and storing and querying the resulting vectors. 

Christopher Winslett   

[What a Dev Firm Has Learnt Delivering Over 100 Ruby Projects](https://www.monterail.com/blog/weve-delivered-multiple-ruby-projects-this-is-what-what-we-learned) — Quite high level/broad. 
Tomasz Kania-Orzeł   

[My Journey From Frustration with the JS Stack to Finding Joy in Ruby](https://devanil.dev/overwhelmed-with-javascript-try-ruby-on-rails) — Nice to see folks heading this way. 
Devanil Junior   

▶[Using AWS Lambda with Rails with Ken Collins](https://share.transistor.fm/s/6f964f01) 
Remote Ruby podcast  

🛠 Code & Tools  

[mruby 3.2.0 Released](https://mruby.org/releases/2023/02/24/mruby-3.2.0-released.html) — mruby is a Matz-created lightweight alternative implementation of Ruby targeting situations where you might want to _embed_ Ruby into other apps. For example, [ngx_mruby](http://ngx.mruby.org/) lets you use Ruby _within_ NGINX, and [DragonRuby](https://dragonruby.org/) is built upon it too _(there's a talk about that above)._ 

mruby team   

[Ruby OpenAI Library Adds ChatGPT Support](https://github.com/alexrudall/ruby-openai) — Yesterday, OpenAI added [ChatGPT support to its API](https://openai.com/blog/introducing-chatgpt-and-whisper-apis) and this Ruby OpenAI client has rapidly added support for it too. Now you can integrate ChatGPT features into your Ruby apps and scripts with ease. 

Alex X   

[Need to Upgrade Your Rails App but Don't Have the Time or Resources? We Can Help](https://reinteractive.com/service/ruby-and-rails-upgrade-support) 

reinteractive Pty Ltd sponsor   

[Rowdy: Route Web Requests to Classes](https://github.com/rocketshipio/rowdy/) — A new project taking a PORO approach to Ruby web routing using modern Ruby features. 

Rocketship   

[librtree-ruby: R-Tree Spatial Index Library](https://gitlab.com/jjg/librtree-ruby) — A native ([librtree](http://soliton.vm.bytemark.co.uk/pub/jjg/en/code/librtree/)-derived) extension for working with Guttman-Green R-tree spatial indexes – a data structure enabling the fast querying of intersections of huge collections of rectangles. 

J.J. Green   

[Litestack: Embedded Services for Ruby Webapps](https://github.com/oldmoe/litestack) — It uses SQLite to provide a database, job processing and cache ‘out of the box’ and integrates with Rack, Sequel, Rails, etc. where they are present. Interesting idea. 

Mohammad A. Ali   

[Packwerk 3.0: Enforce Boundaries for More Modular Rails Apps](https://github.com/Shopify/packwerk) — A gem created at Shopify that can be used to enforce boundaries and modularize Rails applications. [▶️ 1-minute screencast demo](https://www.youtube.com/watch?v=NwqlyBAxVpQ). 

Shopify   

[Don’t Let Your Issue Tracker Be a Four-Letter Word. Use Shortcut](https://shortcut.com/?utm_source=cooperRubyWeekly&utm_medium=spon_nl&utm_campaign=prospecting&utm_content=fourletter) 

Shortcut (formerly Clubhouse.io) sponsor   

[PIDCache: Cache Calls to `Process.pid`](https://github.com/Shopify/pid_cache) — A backport of [a proposed Ruby 3.3 feature](https://bugs.ruby-lang.org/issues/19443). 

Shopify   

- [RuboCop::GraphQL 1.0](https://github.com/DmitryTsepelev/rubocop-graphql)
 ↳ Enforce [graphql-ruby](https://graphql-ruby.org/) best practices.
- [CSVLint.rb 1.2](https://github.com/Data-Liberation-Front/csvlint.rb)
 ↳ CSV validation library.
- [sidekiq-rate-limiter 0.2](https://github.com/enova/sidekiq-rate-limiter)
 ↳ Per-worker rate limits for job processing.
- [Action Cable CLI 0.5](https://github.com/palkan/acli)
 ↳ Written in [mruby.](https://mruby.org/)
- [AttrJson 2.0.1](https://github.com/jrochkind/attr_json)
 ↳ Serialized JSON-hash-backed attributes.
- [RBS 3.0](https://github.com/ruby/rbs/wiki/Release-Note-3.0) – Ruby's type signature language.
- [Sequel 5.66](https://github.com/jeremyevans/sequel) – Database toolkit.
- [Resque 2.5](https://github.com/resque/resque/releases/tag/v2.5.0) – Background job scheduler.
- [Puma 6.1.1](https://github.com/puma/puma) – Ruby/Rack HTTP server.    

Jobs  

[Senior Backend Engineer (Backend)](https://sweatcoin.teamtailor.com/jobs/2274924-senior-backend-developer-ruby-on-rails?promotion=595108-trackable-share-link-rubyweekly) — 12M user devices sent us data daily last week, 6M of them opened the app. Apply your knowledge and help make our users healthier. 
Sweatcoin   

[Software Engineer (Backend)](https://jobs.ashbyhq.com/stickermule/477eed3e-4aae-46e6-a8ab-0646dbfb11cd?utm_source=Cooperpress) — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers. 
Sticker Mule   

[Find Ruby Jobs with Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-rubyweekly%29&utm_content=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired           

Curated by [Peter Cooper](https://twitter.com/cooperx86) and [Glenn Goodrich](https://twitter.com/ruprict).
Published by [Cooperpress](https://cooperpress.com/). 

[Change your email](https://rubyweekly.com/edit_subscription/*|UID|*) or [Stop getting this newsletter.](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom   

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
