#509 — July 9, 2020

Read on the Web

Ruby Weekly

A Fast Car Needs Good Brakes: How Heroku Added Client Rate Throttling to Their API Client Gem — When you’re interacting with remote APIs, you’ll often need to take rate limits into account. As Richard amusingly says:

“If you provide an API client that doesn’t include rate limiting, you don’t really have an API client. You’ve got an exception generator with a remote timer.”

Richard Schneeman (Heroku)

More on Anonymous Struct Literals — Last week we reported on a proposed syntax for defining anonymous Struct literals in Ruby, but this post fleshes out the story a little more.

Jared Norman

Scout APM - A Developer’s Best Friend — Scout’s intuitive UI helps you quickly track down issues so you can get back to building your product. Rest easy knowing that Scout is tracking your apps performance and hunting down small issues before they become large issues. Get started for free.

Scout APM sponsor

Polyphony: A Fine-Grained Concurrency Option for Ruby — Polyphony uses fibers as its unit of concurrency along with libev as an event reactor/event loop. GitHub repo.

Digital Fabric

Huginn: Create Agents That Monitor and Act On Your Behalf — I don’t know why we’ve not linked to this before, but I’ve just been playing with it and it’s really cool. If you’ve ever seen a service like IFTTT or Zapier that can join online services together, this is a similar idea, but in Ruby and open source.

Huginn

⚡️ Quick bits:

💻 Jobs

Senior Full Stack Ruby Engineer (Pembrokeshire, Wales) — Seeking an experienced Ruby dev to take the lead on our web platform: An ecommerce system in Rails with MySQL, various payment/3rd-party integrations, Elasticsearch & AWS services. Email kate@craftcourses.com to discuss.

CRAFTCOURSES

Find a Job Through Vettery — Use Vettery to connect with growing tech teams at startups and Fortune 500 companies.

Vettery

ℹ️ Interested in running a job listing in Ruby Weekly? There's more info here.

📘 Articles & Tutorials

Running Spot Instances Effectively with Amazon EKS — One of the developers behind Basecamp’s new HEY email service (all Ruby and Rails powered, of course) shares some insights on keeping as much of their compute infrastructure on EC2’s much cheaper spot instances as possible.

Blake Stoddard (Basecamp)

▶  'Soft Delete' with Discard — A seven minute introduction to the idea of ‘deleting’ records with Active Record but without totally destroying the underlying record. Discard does the hard work.

Drifting Ruby

Build the World's Simplest ETL Pipeline with KibaKiba is a Ruby-powered ETL system for transforming data and this is a very simple introduction. We linked to Kiba and talked to its creator in issue 499.

Chris I.

Be Ahead of the Curve — Upgrade Your Rails Application — Snazz things up with Multiple Database support, Parallel Tests, better JavaScript ecosystem support and much much more.

Kodius sponsor

scan_left: A Lazy, Incremental Alternative to #inject — The major difference here is scan_left returns an array of the value change per iteration versus a single, scalar result.

Parker Finch

First Class Experimentation in Ruby with Scientist — Scientist is a gem that allows experimentation in production when you want to test two branches of code. The old way (the control) and the new are both executed, compared, and reported. So if you don’t know, now you know.

Joe Letizia

Understanding and Implementing Bubble Sort in Ruby — Bubble sorting is rarely the best approach but it’s a simple algorithm to understand and reproduce solely as a learning exercise.

Julie Kent

Why Validation Matchers Are The Only Shoulda Matchers I Use — An explanation of what Shoulda is, what its matchers do, and then why Jason only uses them for validation purposes.

Jason Swett

🛠 Code and Tools

Rails Application Templates Made Even Easier with Rails BytesRails Bytes is a community-driven repository of more than 100 application templates for specific purposes.

Aaron Sumner

WahWah: A Library for Reading Audio Metadata — For reading things like MP3 IDv3 tags, embedded images, and similar metadata.

Aidewoode

The Ruby Security Handbook

Sqreen sponsor

React on Rails: Bringing React, Webpack, and Rails Together with Webpacker — Version 12 has just been released with (React) hooks support and TypeScript bindings.

ShakaCode

Motion: Reactive Frontend UI Components for Rails in Pure Ruby — Motion uses the newly popular send-HTML-over-ActionCable approach to updating the front-end from the server and requires little-to-no changes to your Rails app.

Unabridged Software

A Ruby Interface to the Google Pay™ for Passes APIGoogle Pay for Passes is a Google service for working with boarding passes, gift cards, boarding passes, etc.

Brittany Martin

🕰 ICYMI (Some older stuff that may catch your eye...)