#475 — November 7th, 2019

Read on the Web

💬 This week we've got another interview for you — check out the bottom of the issue.

Ruby Weekly

How Ruby Really Uses Memory: On the Web and Beyond — Ruby’s memory allocation algorithm is not quite what you might think. As you add threads, considering the per-thread and across-all-threads impacts are necessary to get a firm picture of what is happening.

Richard Schneeman

Try the Fastest CI/CD Solution for Free — Faster CI/CD means greater productivity for your team and a better experience for your users. Automate your CI/CD pipeline with Semaphore to release 2x faster than with other platforms.

Semaphore 2.0 sponsor

Prism: Build Frontend Web Apps with Ruby and WebAssembly — Designed to feel like virtual DOM-based frameworks, like React, it uses mruby (the lightweight Ruby interpreter) and Emscripten to compile Ruby to WASM ready for the browser.


The Hidden Cost of The Ruby 2.7 Dot-Colon Method Reference Usage — It’s no secret that some of Ruby’s syntactic sugar comes with a payment to the performance piper. Here’s another fee you might be paying (though the example given is a nice demonstration of using .:, regardless.)

Maciej Mensfeld

Static Typing in Ruby with a Side of Sorbet — A look at the results of adding Sorbet (a type checker for Ruby) to an existing Rails app to see if the juice is worth the squeeze. Their findings? A good experience with small wins but a bright future.


Rails 6.0.1 Released — Minor fixes abound.

Official Rails Blog

💻 Jobs

Agave.com Is Hiring a CTO (Remote or SF Bay Area) — Help us build the modern hiring platform. World-class technical team with a top 250 Rails contributor. Competitive compensation.


Cloud Platform Engineer - Kubernetes, Cloud Foundry, BOSH — Accelerate your experience and build products that help developers to ship software faster.


Find a Job Through Vettery — Vettery specializes in tech roles and is completely free for job seekers. Create a profile to get started.


📘 Articles & Tutorials

Persisted Queries in GraphQL: Slim Down Apollo Requests to Your Ruby Application — The idea behind persisted queries is reducing request size by only sending a query ID that is stored on the backend, which is then retrieved and executed.

Evil Martians

Writing A Program That Writes Itself — Learn about quines and how they make you go “hmmmm…”

Ju Liu

Announcing Square’s New YouTube Channel with Developer Shows — With Square’s new Ruby SDK gem you can run a business, take payments, or be a backend for a kiosk or mobile payment app.

Square sponsor

▶  Plugging In AnyCable — Rails’ own ActionCable can handle quite a bit of traffic, but AnyCable will allow you to scale further.

Drifting Ruby

A Look at Changes Made to Active Storage in Rails 6

Saeloun Blog

Use GitHub Actions for Rails CI with Postgres

Andy Croll

Getting Started with Svelte and Rails 6 — If you are that person that likes to jump on the newer JavaScript frameworks, here you go.

Nikola Đuza

▶  Discussing How Speed is a Feature at Shopify — A relatively brief 15 minute podcast episode with Gannon McGibbon, a developer at Shopify, talking about how he improves the ‘codebase health’ and performance of Shopify’s famously monolithic Rails app.

The Ruby on Rails Podcast podcast

eBook: Best Practices for Optimizing Postgres Query Performance

pganalyze sponsor

🛠 Code and Tools

Tabulo: A Terminal Table Generator with a DRY, Column-Based API — I could see using this in a live-coding presentation, among other scenarios.

Matt Harvey

Skunk: Combining Code Quality and Coverage to Calculate a 'Stink' Score — Skunk aggregates scores from various code quality and coverage gems. Use it to assess a new code base or keep your code smelling better. If this reminds you of RubyCritic, which we linked last week, Skunk is built upon it!

Fast Ruby

rspec-tap-formatters: TAP Formatters for RSpec 3 — The Test Anything Protocol (TAP) is a “simple text-based interface between testing modules a test harness” with its origin in Perl. Rack for Testing, anyone?

Abhimanyu Singh

How to Find the Unused Routes of a Large Rails App — No gem required. (By ‘unused’, it means either unwritten/unimplemented or which has no view file.)

Rishi Pithadiya

Eileen Uchitelle is a Staff Software Engineer on the Ruby Architecture Team at GitHub and a member of the Rails Core team. She's an avid contributor to open source focusing on Rails and its dependencies. Eileen is passionate about scalability, performance, and making open source communities more sustainable and welcoming.

What is the most exciting thing you've worked on as part of the Rails core team?

Implementing multiple database support. It's a hard project because there's a lot of stakeholders who want to see the feature implemented — Active Record is one of the original gems included in Rails so there's a lot of legacy code in there, and a lot of input from the community to consider.

I've been working on this for more than a year and decided to implement it in parts starting with the public facing API and working backwards. This is an interesting way to work on legacy code because often we try to fix the underlying issues first. But implementing the features starting with the rake tasks, then the connection API, then the underlying legacy code made sense in this case because it exposed the sharp edge cases that were always there but hiding away.

You've worked on some pretty solid teams (Basecamp, GitHub) What, in your opinion, is the secret to a "good" software organization?

The secret is understanding the difference between a technical problem and an organizational/cultural problem. Technology cannot solve underlying organizational problems and reorganizing teams can't solve technology problems.

Do you think Rails will be used at GitHub for the foreseeable future?

You can pry Rails from my cold, dead hands. In all seriousness, it rarely makes sense to rebuild a functioning, working application. It makes more sense to look at your application and ask "what doesn't belong here?" and move that to a service. In some cases functionality is being moved out of the Rails app because it makes sense to do that. For the majority of the application you interact with, it will be Rails for the foreseeable future because there's no good reason for it to be rebuilt in something else.

Can you tell us how to say your last name? 😁

Uchitelle was originally Uchitel, which I've been told is the Russian word for "teacher". The name was changed by adding an "le" and the pronunciation is now "You sha tell".

You can read some of Eileen's posts on the GitHub blog.