#516 — August 27, 2020 |
📝 At the end of this week's issue we have a great interview with prolific Rubyist and author of '99 Bottles of OOP', Sandi Metz. Be sure to scroll down and check it out. 🎉 It has also come to my attention that Ruby Weekly is ten years old this week! Thanks for all of your support over the years, including many of you who I know have been subscribed since the very start 😄 |
Ruby Weekly |
The Story of Upgrading GitHub to Ruby 2.7 — GitHub has made a habit of writing about their upgrades, which is great for the rest of us. The move to 2.7 brought some performance gains, as you might expect. Eileen M. Uchitelle |
The Shopify Ruby Style Guide — Shopify, the ecommerce platform, is one of Ruby’s true success stories and they still use it heavily. This is their attempt at defining what Ruby style means to them and may be useful for improving the quality of your code too. Shopify |
Troubleshoot Ruby App Errors and Latency with Datadog APM — Debug and optimize your code by tracing requests across web servers, databases, and services in your environment. Then correlate between distributed request traces, metrics, and logs to troubleshoot issues without switching tools or contexts. Try Datadog APM free. Datadog sponsor |
How Shopify Reduced Storefront Response Times with a Rewrite — Speaking of Shopify, here’s an example where they pulled their storefront out of the monolith and how they tested it in production alongside the legacy app. A great example of how to properly roll out a new version. Shopify Engineering |
The Great Rubykon Benchmark 2020: CRuby vs JRuby vs TruffleRuby — The last benchmark in this series was 3.5 years ago. Rubykon is a Go (the game, not the language) AI written in Ruby, so the results here aren’t representative of web apps, etc., but they’re still interesting. Tobias Pfeiffer |
▶ The NoRuKo Virtual Ruby Conference Videos — Last week we featured NoRuKo, a virtual Ruby conference taking place last Friday. If you missed it, the full streams (not short!) are now on YouTube. If you just want to watch Matz’s Ruby 3 and Beyond keynote, you can do so at 25 minutes in. The video of the community track is also available. Ruby NL |
💻 Jobs |
Ruby on Rails Engineer at Five Good Friends (Remote in Australia) — Our mission is to help people live vibrantly in their own homes, connected to their friends and communities, doing what they love. Five Good Friends |
Sr. Engineer @ Dutchie, Remote — Dutchie is the world's largest and fastest growing cannabis marketplace. Backed by Howard Schultz, Thrive, Gron & Casa Verde Capital. DUTCHIE |
Find a Job Through Vettery — Create a profile on Vettery to connect with hiring managers at startups and Fortune 500 companies. It's free for job-seekers. Vettery |
ℹ️ Interested in running a job listing in Ruby Weekly? There's more info here.
📘 Articles & Tutorials |
Peter's Adventures in Ruby: Garbage Collection in Ruby — A walk through the C source of the garbage collector that also explains the mark and sweep algorithm it uses. As Peter himself says: “I’ve been working on improving the GC in Ruby for several months now. The GC is pretty complex but also very interesting.” Peter Zhu |
Mortal and Immortal Symbols in Ruby — Did you know that Ruby 2.2 introduced immortal symbols? You could be using some, which has memory and security implications. Mehdi Farsi |
How to Use Bootstrap and jQuery in Rails 6 with Webpacker — jQuery remains one of the most heavily used JavaScript libraries out there, no matter what Twitter says 😄🤷♂️ Ruby Yagi |
Understanding Selection Sort with Ruby — An intuitive, if often inefficient, way to sort things that can crop up in technical interviews, although you’d rarely implement it by yourself. Julie Kent |
Ruby Trickery from 2018 — Somehow I missed this competition at the time, but this look at some submissions to an arcane (or ‘transcendental’, if you will) programming contest at Ruby Kaigi in 2018 really throw up some headscratchers, including a Ruby program that uses (only) every reserved keyword! Idiosyncratic Ruby |
DHH: 'Rewrite Your Software' — An interview for RubyRussia 2020, DHH discusses when to rewrite, evolve, or your application, touching upon a few other topics along the way. Hacker Noon |
The Basics of Ruby 2.7's 'Beginless Range' Ashwath Biradar |
Best-Practices on How to Speed Up Your Postgres Queries. Free eBook pganalyze sponsor |
Understanding Ruby Blocks — Aimed at beginners. It’s easy to use blocks in various places in Ruby without really thinking about them, but it’s worth knowing how they’re constructed. Jason Swett |
Turning a Rails-based REST API to GraphQL using Hasura Actions — Note that Hasura is a commercial service. Hasura |
🛠 Code and Tools |
ActiveRecord::Events: Manage Timestamps in Active Record Models — Adds convenience methods on top of a datetime field so you can manage custom timestamps in a similar way to how Active Record handles the Bartosz Pieńkowski |
u-attributes: Create 'Immutable' Objects with No Setters, Just Getters — And if you change an attribute of the object, you’ll have a new object instance. Rodrigo Serradura |
Racecar: A Simple Framework for Kafka Consumers Zendesk |
Rainbow: A Gem for Colorizing Printed Text on ANSI Terminals — e.g. Marcin Kulik |
Faster CI/CD for All Your Software Projects - Try Buildkite ✅ — See how Shopify scaled from 300 to 1800 engineers while keeping their build times under 5 minutes. Buildkite sponsor |
HTTP Headers Verifier: A Way to Verify HTTP Headers — An assertion framework for HTTP headers coming from live endpoints, such as for verifying security policy headers are present. Avner Cohen |
|