---
title: "Data.define(:newsletter, :issue)"
publication: "Ruby Weekly"
issue: 624
published_at: "2022-10-13"
canonical_url: "https://rubyweekly.com/issues/624"
---

Plus Bridgetown continues to grow, and a catch up with Richard Schneeman on Hacktoberfest. |        

#​624 — October 13, 2022 

[Read on the Web](https://rubyweekly.com/issues/624) 🇺🇦  

Together with [![Honeybadger\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_600,h_100/e_make_transparent/co_white,e_outline:7/jxeurjkyc4lup8ge7luq.png)](https://www.honeybadger.io/tour/status-pages/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/y7roq9jbmr5hvsljn61o.jpg)](https://dev.to/baweaver/new-in-ruby-32-datadefine-2819)  

[Coming to Ruby 3.2: `Data.define`](https://dev.to/baweaver/new-in-ruby-32-datadefine-2819) — Several weeks ago we linked to Victor Shepelev's [proposal](https://bugs.ruby-lang.org/issues/16122) for bringing native value objects to Ruby and things [have progressed](https://github.com/ruby/ruby/pull/6353). Brandon shows us how they’ll work and why an immutable alternative to `Struct` will prove useful. 

Brandon Weaver   

[What It Took to Build a Rails Integration for Rodauth](https://janko.io/what-it-took-to-build-a-rails-integration-for-rodauth/) — If you have been putting off trying [Rodauth](https://github.com/jeremyevans/rodauth) (an advanced authentication system that works in any Rack-based app) due to its lack of a natural Rails integration, now may be the time to jump in. Also, the amount of work to create the convenience of Rails is significant. 

Janko Marohnić   [![\](https://copm.s3.amazonaws.com/ddc67417.png)](https://www.honeybadger.io/tour/status-pages/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) 

[Do Your Users Trust You?🤥](https://www.honeybadger.io/tour/status-pages/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) — Transparency inspires trust—when your next outage happens (planned or unplanned), communication is key. Status pages alert your users of issues early and keeps them updated as each incident unfolds with incident management. Get yours now. 

Honeybadger sponsor   

[Bridgetown 1.2 (“Bonny Slope”) Released](https://www.bridgetownrb.com/release/1.2-bonny-scope-next-level/) — The Ruby-based static site generator introduces a new Ruby-based configuration format and boasts plugin related improvements that promise to _“blow the doors wide open for a new level of sophistication and quality”_ plus a boast that Bridgetown is _"no longer just a static site generator but a feature-rich Ruby web application framework."_ 

Jared White   

🐘 [Postgres 15 Released](https://postgresweekly.com/issues/476) — The Postgres database system is such a fundamental part of so many Ruby and Rails apps that we thought we’d shine a spotlight on the news release in the shape of today’s ‘newsflash’ issue of _Postgres Weekly_ that highlights its main new feature including `MERGE` support, faster sorting, new regex functions, and [a lot, lot more](https://www.postgresql.org/docs/15/release-15.html). 

Postgres Weekly   

**QUICK BITS:** 

- The [Ruby Prize 2022](https://rubyprize.jp/) nominees have now been decided and the jury (which includes Matz) is now picking the winners who will be announced on November 11.
- [RubyMine 2022.3 EAP2](https://blog.jetbrains.com/ruby/2022/10/rubymine-2022-3-eap2/) is now available.
- _FastRuby_ posted a [case study of SoundCloud's upgrades](https://www.fastruby.io/blog/case-study/soundcloud-upgrades-monolithic-ruby-and-rails-system.html) to its monolithic Rails-based app. It took months to take such a substantial app up from Ruby 1.9 to 2.5 and Rails 2.3 to 6.1 _(I've done a similar migration on a smaller app before and I can believe this time frame!)_   

[Using Set Operations on Arrays](https://www.vector-logic.com/blog/posts/using-ruby-array-set-operations) — Before you say _“Why not just use a `Set`?”_ this post will teach you some things about array operations so you can use arrays more effectively. 

Domhnall Murphy   

[Teleport is the Easiest, Most Secure Way to Access Your Infrastructure](https://goteleport.com/how-it-works/?utm_campaign=eg&utm_medium=partner&utm_source=ruby) — Get secure access to SSH nodes, Kubernetes clusters, web apps, PostgreSQL and MySQL databases behind NAT with Teleport. 

Teleport sponsor   

[On the Importance of Pull Request Discipline](https://shopify.engineering/on-the-importance-of-pull-request-discipline) — Follow Yash’s tips to prevent your PRs from getting roasted in the group chat. 

Yash Kapadia (Shopify)   

▶[Under the Hood and on the Surface of Sidekiq](https://www.youtube.com/watch?v=AJTzYK8yoL8) 
Paweł Dąbrowski  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cpiqpiqeajngyvqs6dbm.jpg)](https://huacnlee.github.io/rucaptcha/)  

[RuCaptcha 3.0: A Standalone Captcha Approach for Rails Apps](https://huacnlee.github.io/rucaptcha/) — v3 has moved to [using Rust](https://github.com/huacnlee/rucaptcha/blob/main/ext/rucaptcha/src/captcha.rs) to draw the obscured text images. If third party systems like Cloudflare's Turnstile or Google's reCAPTCHA aren't for you, this might be a viable alternative. This project could also provide a useful look at writing your own Rust-backed gems. 

Huacnlee   

[Hypershield: Shield Sensitive Data in Postgres and MySQL](https://github.com/ankane/hypershield) — Looking to hide sensitive data to help comply with GDPR, say? Hypershield creates ‘shielded’ views that can hide sensitive tables and columns. 

Andrew Kane   

[Fixed Price Monthly Code Maintenance and Upgrades for Rails Apps](https://reinteractive.com/service/code-care) 

reinteractive Pty Ltd sponsor   

[Alba 1.8: The Fastest JSON Serializer for Ruby](https://okuramasafumi.github.io/alba/) — Not new, but reader Trevor Turk encouraged us to shine a spotlight on this project again to encourage its ongoing development. [GitHub repo](https://github.com/okuramasafumi/alba). 

Masafumi Okura   

[Parallel: Parallel Processing Made Simple and Fast](https://github.com/grosser/parallel) — Uses processes, threads, or Ractors (Ruby 3.0+ only) to cover all bases. 

Michael Grosser   

[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   

- [counter_culture 3.3](https://github.com/magnusvk/counter_culture)
 ↳ 'Turbo-charged' counter caches for Rails apps.
- [Lockbox 1.1](https://github.com/ankane/lockbox)
 ↳ Modern encryption for Ruby and Rails.
- [resque-scheduler 4.7](https://github.com/resque/resque-scheduler)
 ↳ Simple future job scheduling system atop Resque.
- [ActiveRecord Shards 5.2](https://github.com/zendesk/active_record_shards)
 ↳ Support for sharded databases and replicas.
- [Graphlient 0.7](https://github.com/ashkan18/graphlient) – A 'friendlier' GraphQL client.
- [AppleID 1.6](https://github.com/nov/apple_id) – _'Sign in with Apple'_ backend library.
- [MainStreet 0.3](https://github.com/ankane/mainstreet) – Street address verification library.
- [Phlex 0.4](https://github.com/joeldrapper/phlex) – Object-oriented view library.
- [rack-oauth2 2.2](https://github.com/nov/rack-oauth2) – OAuth 2.0 server and client.       ![Richard Schneeman](https://res.cloudinary.com/cpress/image/upload/w_125,e_sharpen:80/fdjrsscq93oqtaaa8qhx.jpg) 

💬 A Q&A with…
Richard Schneeman
author of the [_How to Open Source_ book](https://howtoopensource.dev/) and creator of [CodeTriage](https://www.codetriage.com/).  

Richard, a.k.a. _Schneems_, is well known in the Ruby world (1.9+ billion library downloads to his name!) and has spent years helping people contribute to open source. He joins us to talk about one of the busiest months for maintainers. 

This month is [_Hacktoberfest._](https://hacktoberfest.com/) It's had a controversial past few years. Can you catch us up?  

The event is massive. Hacktoberfest is a yearly promotion where developers earn a free shirt by getting commits into open source projects. It's intended to increase contributions but also places a large burden on maintainers. They get overwhelmed due to an influx of pull requests. To combat this, the rules were adjusted so only projects that _opt-in_ via a `hacktoberfest` label can earn qualifying commits. 

They have 40,000 shirts to give out this year. But some say those participants don't stick around. Some people love it, and some hate it. 

What do you think? Are you a Hacktoberfest lover or hater? 

The event provides anyone looking to start contributing to open source a fun excuse to begin and a good 'timebox.' That can be a powerful motivator to get someone to take their first steps. 

Anyone who treats it as a game to be hacked is just taking away from the community. If you're only going to make four of the fastest pull requests possible and then not show up again for an entire year? That's not helpful. 

What do we need to do to get more help from maintainers? 

Beyond shirts and sponsorships, they need committed contributors who show up and take on some of their load. We need to help engage contributors who want to grow into maintainer roles. Those contributors need experience reproducing issues, documenting code they've never seen, engaging with the community, and reviewing pull requests. These are all necessary skills, and like any skill, they can be taught. 

Beyond skills, what's the one thing holding people back from contributing more? 

Time. I sent a survey to 66,000 CodeTriage subscribers, and the near-universal answer is people wanted more time. We need to build systems and structures that free up time for contributions. 

Does that mean more companies need to give 20% time? 

20% time was popularized by Google when they gave employees one day a week to work on whatever they want. **20% time doesn't work**. Employees aren't incentivized to use that time, so it atrophies. If your company never promotes you _because_ of your open source work, they're not really paying you to work on open source. 

One approach is working with contributors to help them build a system that works with their life. Before the pandemic, I could never find the time to work out. Once I found systems that work for me, I consistently exercise three days a week. Open source is like that too. When you have a system that supports you, you find ways to make the time. 

Is anything else holding people back? 

Absolutely. It's scary. People are afraid of doing something new in public. They might not openly state this as a problem, though. One mindset shift is to reframe the work. It's not like public speaking. Often getting anyone's attention can be a challenge. It's more like you're working in a cafe in public. Everyone around you is probably too busy to notice when you make a mistake. Plus, they're making mistakes too.     

_Find Richard's book on contribution for sale at [How to Open Source](https://howtoopensource.dev/) 📚. You can sign up for **[CodeTriage](https://www.codetriage.com/)** to find and help projects in need. If you want to earn a Hacktoberfest shirt 👕, you can find details at [hacktoberfest.com](https://hacktoberfest.com/)._      

Jobs  

[Sr. Software Engineer at Opinion Stage (Remote)](https://apply.workable.com/opinion-stage/j/5A9D7806A5/) — Opinion Stage is a platform used by 100,000+ customers for making visual conversational surveys & quizzes that drive top results. 
Opinion Stage   

[Backend Engineer, Ruby on Rails (Remote)](https://booqable.com/careers/backend-developer/) — Booqable is a SaaS application for the global rental industry. We are looking for an experienced Backend Developer. 
Booqable   

[Find Ruby Jobs Through 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=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired           

Curated by Peter Cooper 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/).
