---
title: "So quiet that I'm Photoshopping broccoli"
publication: "Ruby Weekly"
issue: 655
published_at: "2023-05-25"
canonical_url: "https://rubyweekly.com/issues/655"
---

Plus Rocky Mountain Ruby returns, ways to improve your login forms, and working with .docx files from Ruby. |        

#​655 — May 25, 2023 

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

✍️ When I started looking around for things to write up for this issue, I was surprised at how.. _quiet_ it was – even [Björk](https://www.youtube.com/watch?v=BjxVeyhjp1U) would have something to say about it. Everyone's probably taking a well-earned nap after _RubyKaigi_, so for this week, we make the most of things by going a little off piste here and there.. :-)
__
_Your editor, Peter Cooper_ 

Together with [![Cloud66 logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_250,h_250/e_make_transparent/co_white,e_outline:7/ofjgwnua55tonrserpbl.png)](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q2-2)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cosekhyxa7yoty1tc1lw.jpg)](https://github.com/pawurb/rails-brotli-cache)  

[Rails Brotli Cache: A Drop-in Enhancement for Rails' Cache](https://github.com/pawurb/rails-brotli-cache) — Brotli isn’t yet another sour green vegetable but [a pretty good data compression algorithm](https://en.wikipedia.org/wiki/Brotli) developed by Google, and you can take advantage of its improvements by slotting it into your Rails app. 

Paweł Urbanek   

[Nokogiri 1.15 Released](https://github.com/sparklemotion/nokogiri/releases/tag/v1.15.0) — [Nokogiri](https://nokogiri.org/) is one of the longest standing and most heavily used libraries in the Ruby world and remains incredibly useful for parsing and processing XML and HTML documents. It also continues to be developed and 1.15 now lets you optionally make Nokogiri and libxml2 use your system’s `malloc` for memory management which has [a variety of implications.](https://github.com/sparklemotion/nokogiri/blob/v1.15.0/adr/2023-04-libxml-memory-management.md) 

Sparkle Motion   [![\](https://copm.s3.amazonaws.com/1f615a6b.png)](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q2-2) 

[Blue/Green Deployments for Rails on Any Cloud](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q2-2) — Deploy Rails applications hassle-free on any cloud and in any region with full database support, custom traffic rules, zero-downtime deployments, blue/green and canary releases, WAF, and more. Try it today for free, and get $100 in credits with the code:`RubyWeekly100` 

Cloud 66 sponsor   

**QUICK BITS** 

- 🗓️ Much loved event [Rocky Mountain Ruby](https://rockymtnruby.dev/) has announced its return, taking place this October in Boulder, Colorado – on the very same days as _Rails World_, as it happens..
- 🗓️ If you want to speak at _Rails World_ in October, [the call for speakers](https://www.papercall.io/rails-world-2023) is still open.
- 🗓️ And last, but by no means least, in events news, the organization of [Friendly.rb](https://friendlyrb.com/) (taking place in Romania this September) seems to be coming along well with some recently announced speakers including Jason Swett, Irina Paraschiv, and Jeremy Smith.
- 🎙️ Jemma Issroff and Brittany Martin caught up on [▶️ the latest episode of the Ruby on Rails Podcast](https://www.therubyonrailspodcast.com/471) to talk about all things RubyKaigi 2023 related, as well as Jemma's work on [YARP](https://github.com/ruby/yarp), the future of Ruby parsing.
- The [second EAP of RubyMine 2023.2](https://blog.jetbrains.com/ruby/2023/05/rubymine-2023-2-eap2-new-ui-updates-improved-rails-7-and-rbs-support/) is out.  

📕 Tutorials, Articles, and Videos 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cetzyg2ccsqqbp8xtmlh.jpg)](https://mattbrictson.com/blog/gateway-pattern)  

[Using the Gateway Pattern in Rails](https://mattbrictson.com/blog/gateway-pattern) — This pattern is useful when you need to communicate with an external API or service as it provides a stable abstraction between your system and the potentially ‘foreign’ vocabulary and nature of an external system. 

Matt Brictson   

[Adding Recommendations to an App with pgvector and OpenAI](https://medium.com/@mauricio/how-to-add-recommendations-to-a-rails-app-with-pgvector-and-openai-881d87915fb2) — The idea is simple on the surface: you use OpenAI to provide the embeddings (as vectors), store those vectors in Postgres using the pgvector extension (now [supported by RDS](https://aws.amazon.com/about-aws/whats-new/2023/05/amazon-rds-postgresql-pgvector-ml-model-integration/)) and use Andrew Kane’s [neighbor gem](https://github.com/ankane/neighbor) to do a nearest neighbor search across those vectors. Rails is used in the post but you can bring these pieces together in any Ruby app. 

Maurício Maia   

This seems an appropriate time to plug our sister newsletter: [Postgres Weekly](https://postgresweekly.com/)😁  

[Need to Upgrade Rails—But Don’t Have the Budget?](https://go.fastruby.io/ql9) — We offer fixed-cost, monthly retainers starting at $1,000 so you can pay off your tech debt. Don’t delay—start today 🚀 

FastRuby.io | Ruby Tech Debt Services sponsor   

[Eleven HTML Best Practices for Login & Sign-up Forms](https://evilmartians.com/chronicles/html-best-practices-for-login-and-signup-forms) — It's not Ruby specific, but this _is_ a pretty quiet week, the Evil Martians blog about Ruby a lot, and.. you almost certainly have an app with a login or signup form that doesn't live up to all of these best practices 😉 

Andrey Sitnik   

If you'd prefer something more Ruby related from the Martians, [their guide to using RuboCop](https://evilmartians.com/chronicles/rubocoping-with-legacy-bring-your-ruby-code-up-to-standard) is good.  

[An Introduction to Rails Engines](https://www.fastruby.io/blog/introduction-to-rails-engines.html) — Engines are essentially mini apps that can be embedded within other Rails apps and they open up a variety of options for making apps more modular and adding packaged functionality into existing apps. 

Kudakwashe Siziva   

[Concerns in Rails: Everything You Need to Know](https://www.akshaykhot.com/how-rails-concerns-work-and-how-to-use-them/) 
Akshay Khot   

[Three Things To Avoid When Building Rails Controllers](https://www.vector-logic.com/blog/posts/three-things-to-avoid-when-building-rails-controllers) 
Domhnall Murphy  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/anlwwco9skmdzo9ume1l.jpg)](https://github.com/westonganger/rails_i18n_manager)  

[Rails I18n Manager: Complete Translation Editor and Workflow](https://github.com/westonganger/rails_i18n_manager) — A Rails engine that provides a Web-based interface for working on your app’s translations. Billing itself as a ‘low tech’ approach, it provides a full workflow with import and export, access to Google-powered translations, and lets you keep your translations right in your app’s repo. 

Weston Ganger   

[docx: A Ruby Library for Working with `.docx` Files](https://github.com/ruby-docx/docx) — Most commonly associated with Microsoft Word, `.docx` are word processing documents and this library lets you read and query them from Ruby. 

Tatsuya Sato   

[DSL Factory: A DSL to Create DSLs?](https://github.com/motine/dsl_factory) — It’s a bit meta, but abstracts away the boilerplate of creating a DSL into a DSL of its own. The author [blogs more about it here.](https://www.netskin.com/posts/20230504-dsl-factory) 

Tom Rothe   

[Check Out Our Latest Release](https://buildkite.com/releases/2023-03?utm_campaign=CPress&utm_source=ppc&utm_medium=Q2-2023-Ruby-Weekly&utm_term=March-2023-Release) — Our latest platform updates enable you to uplevel your CI/CD workflows with security, flexibility, and control. 

Buildkite sponsor   

[Bullet Train: An Open-Source Rails Template for SaaS](https://bullettrain.co/) — Has a ton of features to get your next multi-tenant SaaS idea off the ground with common gems (Devise, CableReady) and frontend frameworks (Tailwind, Stimulus) plus some novel ideas, like so-called [“Super Scaffolding.”](https://bullettrain.co/docs/super-scaffolding) 

Bullet Train   

- [Rails 7.0.5](https://rubyonrails.org/2023/5/24/Rails-7-0-5-has-been-released)
- [minitest-spec-rails 7.0](https://github.com/metaskills/minitest-spec-rails)
 ↳ Make Rails use `MiniTest::Spec`.
- [AmazingPrint 1.5](https://github.com/amazing-print/amazing_print)
 ↳ Pretty print your objects with style.
- [Pitchfork 0.3](https://github.com/Shopify/pitchfork)
 ↳ Shopify's experimental Rack HTTP server.
- [ripper-tags 1.0](https://github.com/tmm1/ripper-tags)
 ↳ ctags generator for Ruby source using Ripper.
- [ConnectionPool 2.4.1](https://github.com/mperham/connection_pool)
 ↳ Generic connection pooling library.    

Jobs  

[Full Stack Engineer, Ruby & React (’s-Hertogenbosch, Netherlands)](https://jobs.floryn.com/o/fullstack-software-engineer-shertogenbosch) — We help companies with fast & simple business loans. Own projects, work closely with stakeholders. No suits, just impactful code. 
Floryn   

[Senior Eng. (Ruby) Help Others Manage Cloud Costs (Remote, NYC)](https://www.vantage.sh/careers/?ashby_jid=2d5c747b-49fc-4964-9c75-e82d37f03639&utm_source=ruby_weekly) — Join Vantage, a thriving cloud cost management startup. Drive key projects that directly impact our customers' bottom line. 
Vantage   

[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=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired    

🔎 Looking Behind the Ruby Scenes.. 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/fxbpysaappqsstbfxonf.jpg)](https://ruby-syntax-tree.github.io/)  

[Syntax Tree: Generate a Syntax Tree in the Browser](https://ruby-syntax-tree.github.io/) — [SyntaxTree](https://github.com/ruby-syntax-tree/syntax_tree) is, broadly speaking, a suite of tools built atop Ruby’s own parser with which you can create, manipulate and inspect syntax trees. We like this Web-based version, though, as it provides a quick way to see how Ruby interprets a piece of code, all in a visual way. 

Kevin Newton         

Curated by [Peter Cooper](https://twitter.com/cooperx86) 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/).
