---
title: "RailsConf 2021 videos now available"
publication: "Ruby Weekly"
issue: 553
published_at: "2021-05-20"
canonical_url: "https://rubyweekly.com/issues/553"
---

Plus tip of the week is back, a new TTY sparkline library, and why to write detailed RSpec example descriptions. |        

#​553 — May 20, 2021 

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

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,e_tint/wv4b1bmhaa6z9t5fw0tb.jpg)](https://www.youtube.com/c/RubyCentral/videos)  

▶[Talks from RailsConf 2021](https://www.youtube.com/c/RubyCentral/videos) — There's an [official playlist with only 10 videos](https://www.youtube.com/playlist?list=PLbHJudTY1K0c8N1-PPyiQxlHNzJIzyJv6#railsconf2021) or you can trawl through Ruby Central's channel to find the rest. There's a lot to enjoy, but here are some of the early highlights for us: 

- [Hotwire Demystified](https://www.youtube.com/watch?v=Q7uOPVfZ3Go) — Jamie Gaskins on the latest realtime goodies available to Rails developers.
- [A Day in the Life of a Ruby Object](https://www.youtube.com/watch?v=PuNbdfdFBjk) — Our _Tip of the Week_ writer went deep on objects behind the scenes.
- [Profiling to Make Your Rails Apps Faster](https://www.youtube.com/watch?v=AFpq1pDQagw) — Gannon McGibbon shows off some handy tools and techniques for digging into performance issues.
- [Debugging: Techniques for Uncertain Times](https://www.youtube.com/watch?v=EiBrQin0nbU) — Chelsea Troy took a high level look at how we think about bugs and approach change in general.
- [How to be a Great Developer without Being a Great Coder](https://www.youtube.com/watch?v=44qVL-cwtyM) from Nicole Carpenter.
- [Realtime Apps with Hotwire and ActionMailbox](https://www.youtube.com/watch?v=BQhWfLp6UbU&list=PLbHJudTY1K0c8N1-PPyiQxlHNzJIzyJv6&index=8) from Chris Oliver. 

Ruby Central (YouTube)   [![\](https://copm.s3.amazonaws.com/d8e9be8c.png)](https://ter.li/e2vaws) 

[Try Scout’s Leading-Edge Performance Monitoring for Free](https://ter.li/e2vaws) — Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues in minutes. See for yourself why Scout is a Node developers’s best friend with a free 14-day trial, no credit card needed. 

Scout APM sponsor   

▶['Why Is It So Hard to Find Ruby Developers?'](https://stackoverflow.blog/2021/05/14/podcast-338-why-is-it-so-hard-to-find-ruby-developers/) — Host Ben Popper and Ilya Bodner of Bold Penguin cover an interesting challenge in the Ruby recruitment space amongst other things relating to building a company’s tech around Ruby. 

The Stack Overflow Podcast podcast   

[TruffleRuby 21.1.0 Released](https://github.com/oracle/truffleruby/releases/tag/vm-21.1.0) — TruffleRuby is a Ruby implementation that runs on the [GraalVM JVM](https://www.graalvm.org/) and boasts peak performance beyond that seen in other implementations. 

Oracle   

[A Rubyist's Walk Along the C-side: Calling Methods](https://blog.peterzhu.ca/ruby-c-ext-part-3/) — The third part in the series (we linked to the first one in [issue 546](https://rubyweekly.com/issues/546)), this covers not just calling methods but also variable and keyword argument scenarios. 

Peter Zhu  

📘 Articles & Tutorials 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/nkt9km8wpi8esv5ksy47.jpg)](http://planetruby.github.io/gems/pixel/05-pixelart-characters)  

[How to Generate Pixel Art Characters from Ruby](http://planetruby.github.io/gems/pixel/05-pixelart-characters) — This is pretty cute and gives you some good options for randomizing the output. 

Gerald Bauer   

[Limit Your Automatic Retries](https://blog.arkency.com/limit-your-automatic-retries/) — Let’s say you’re catching an exception raised by an intermittently unreliable third party API - should you just `retry` endlessly? No. An elegant and simple “one retry” approach is shown here. 

Rafal Lasocha   

[[Guide\] The Truth About Developer Productivity Metrics](https://www.sleuth.io/developer-productivity-metrics?utm_source=cooperpress&utm_medium=email&utm_campaign=rubyweekly&utm_content=metrics) — What you need to know to avoid weaponizing metrics for performance reviews, and use them to accelerate releases instead. 

Sleuth sponsor   

[Hybrid iOS Apps with Turbo](https://masilotti.com/turbo-ios/) — A six-part series that covers Turbo, when to use JavaScript, and how to drop into SwiftUI when you really need it. 

Joe Masilotti   

[The Ruby C API Definitive Guide](https://silverhammermba.github.io/emberb/c/) — Maxwell has created a guide for the “huge and largely undocumented” C API and you’ll need to be pretty comfortable with both C and Ruby to use it. 

Maxwell Anselm   

[Automatically Avoiding GraphQL N+1s](https://www.aha.io/engineering/articles/automatically-avoiding-graphql-n-1s) — Justin and his colleagues at Aha! Engineering address the dreaded N+1 issue with GraphQL by making batching a simple configuration item. 

Justin Weiss   

[A Robust Distributed Locking Algorithm Based on Google Cloud Storage](https://www.joyfulbikeshedding.com/blog/2021-05-19-robust-distributed-locking-algorithm-based-on-google-cloud-storage.html) — The co-creator of _Passenger_ needed a way to coordinate concurrent workloads with distributed locks and has come up with an approach. 

Hongli Lai   

[Write Detailed RSpec Example Descriptions](https://www.tomdalling.com/blog/mentoring/write-detailed-rspec-example-descriptions/) — _“RSpec examples should have enough detail in the descriptions to rewrite them from scratch,”_ argues the author. 

Tom Dalling   

[How to Monitor Sidekiq Process Uptime in Rails Apps](https://pawelurbanek.com/rails-sidekiq-monitoring) 
Paweł Urbanek   

[Debugging Slow Heroku Builds](https://boringrails.com/tips/debugging-slow-heroku-builds) 
Matt Swanson    

Jobs  

[Ruby/Backend Engineer](https://www.mentimeter.com/jobs#open-positions) — We’re seeking an engineer to join us and help transform presentations and meetings into fun, interactive experiences. We’re a friendly, English-first startup based in Stockholm, Sweden. 
Mentimeter   

[Senior Software Engineer (US - Remote-Friendly)](https://grnh.se/bf97c4df4us) — Snapdocs is going through a hyper-growth phase, looking for empathetic Senior Software Engineers as we scale our product and team. 
Snapdocs   

[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=find-your-next-job) — Take 5 minutes to build your free profile & start getting interviews for your next job. Companies on Hired are actively hiring right now. 
Hired    

🛠 Code and Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/vdfgs4hrkaj5psnn3lrx.jpg)](https://github.com/piotrmurach/tty-sparkline)   

[TTY::Sparkline: Sparkline Charts for Terminal Apps](https://github.com/piotrmurach/tty-sparkline) — Yet another fine addition to the range of TTY toolkit libraries. This time you can plot sparklines (perhaps more accurately “sparkbars”, in this case) on the terminal for showing condensed streams of values in an easily followed way. 

Piotr Murach   

[S3AssetDeploy 1.0: Deploy and Manage Static Assets on Amazon S3](https://github.com/Loomly/s3_asset_deploy) — ..with rolling deploys and rollbacks too. 

Loomly   

[We Babysit Your Heroku Dynos So You Don’t Have To](https://railsautoscale.com/?utm_source=rubyweekly) 

Rails Autoscale sponsor   

[Choosing a Rails XML Serializer for Your API in 2021](https://callcounter.eu/blog/choosing-rails-xml-serializer-for-your-api-in-2021) — XML is still a thing, so if you need it, you need it. 

Callcounter   

[Lamby 3.0: Simple Rails & AWS Lambda Integration](https://github.com/customink/lamby) — You may recall we interviewed the creator of this tool [back in December](https://rubyweekly.com/issues/532). In short, it makes creating elaborate serverless Ruby apps for deployment on AWS Lambda as easy as possible by providing a simple Rack adapter. 

Custom Ink       

💡**Tip of the Week** 

**Helpful `MatchData` Methods**   

Regular expression `match`es against strings return `MatchData` objects. In this week's tip, we'll look at three different methods to call on `MatchData` objects to get the data we're looking for. 

We'll follow an example of matching against a URL using this _(excuse the awkward wrapping due to the limitations of email)_: 

```
match = "https://rubyweekly.com/issues/537/"\
        .match(/(\w+).com\/.*\/(\d+)/)
=> #<MatchData "rubyweekly.com/issues/537/"
               1:"rubyweekly" 2:"537">
``` 

**1. `MatchData#captures`** gives us an array of only the captures from the match. It's the same as `match.to_a[1..-1]`: 

```
match.captures
=> ["rubyweekly", "537"]
``` 

**2. `MatchData#pre_match` and `MatchData#post_match`** give us the parts of a String that appear _before_ and _after_ a match. 

```
match.pre_match
=> "https://"

match.post_match
=> "/"
``` 

**3. We can name captures** by passing a `?<name>` inside the capture group, like this: 

```
match = "https://rubyweekly.com/issues/537"\
        .match(/(?<issue>\d+)/)
=> #<MatchData "537" issue:"537">

match["issue"]
=> 537
``` 

Try these out the next time you're using `Regexp` matching.    

This week’s tip was written by [Jemma Issroff](https://twitter.com/jemmaissroff).          

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

[Change your email address](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
