Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Ruby Together News 

Ruby Together and Ruby Central, coming together

Ruby Together and Ruby Central, coming together

Since Ruby Together was first started, we’ve worked together with Ruby Central. While Ruby Central has paid the server bills for RubyGems.org, Ruby Together has paid the software developers who keep it running. That cooperation has benefited the entire Ruby community for the last 6 years, ever since Ruby Together began.

While the cooperation has been beneficial, it’s been hard to explain. Many community members are surprised to learn that Ruby Together and Ruby Central are separate non-profits, and even those who know they are distinct struggle to keep track of exactly which one does exactly what things.

Last year, Ruby Together board…

Noteflakes 

Explaining Ruby Fibers

Fibers have long been a neglected corner of the Ruby core API. Introduced in Ruby version 1.9 as a coroutine abstraction, fibers have never really seemed to realize their promise of lightweight concurrency, and remain relatively little explored. In spite of attempts to employ them for achieving concurrency, most notably em-synchrony, fibers have not caught on. Hopefully, with the advent of the FiberScheduler interface introduced in Ruby 3.0, and libraries such as Async and Polyphony, this situation will change and fibers will become better known and understood, and Ruby developers will be able to use them to their full potential.

My aim in this article is to explain how fibers work from…

Hanami Mastery newest episodes! 

The secret of stunning OSS contributions! I've changed my life for Hanami!

If you can contribute to open-source, do it only if you can benefit from it. So if you can't benefit, either drop the idea or... make it beneficial!
Engine Yard Blog 

Rewrite Rules in Nginx

Rewrite rules modify a part or whole of the URL. This is done for two reasons. First, to inform clients about the relocation of resources, and second, to control the flow to Nginx. The two general-purpose methods used widely for rewriting URLs are the return directive and the rewrite directive. Of these, the rewrite directive is more powerful. Let's discuss why it is so, as well as how to rewrite the URLs.

Ruby Magic by AppSignal 

Optimistic Locking in Rails REST APIs

Imagine the following hypothetical scenario: in a rental property management system, Employee A starts editing contact info for Rental X, adding some extra phone numbers. Around the same time, Employee B notices a typo in the contact info for exactly that Rental X and performs an update. A couple of minutes later, Employee A updates Rental X’s contact info with the new phone numbers, and … the update fixing the typo is now gone!

That’s definitely not great! And this is a pretty trivial scenario. Imagine a similar conflict happening in a financial system!

Could we avoid such scenarios in the future? Fortunately, the answer is yes! We need concurrency protection and locking — specifically,…

The Ruby on Rails Podcast 

Episode 388: Ruby is Still a Diamond with Emma Hyde

After Emma's blog post, "Ruby is Still a Diamond", took the software engineering world by storm, Brittany and Jemma invited Emma on to the show (her podcast debut!) to ruminate why she continues to be excited about Ruby, why you should invest the effort into upgrading to Ruby 3.0, the differences between parallelism & concurrency and an introduction to Ractors.

Show Notes & Links:

Sponsored By:

Honeybadger

Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeyb…

Greater Than Code 

255: Building Global Love Bubbles with Anne Griffin

02:47 - Anne’s Superpower: Empathy & Collaboration

  • Feeling Accepted & Creating a Sense of Safety
  • Creating Happy Bubbles
  • Making People Feel They Matter on Teams
    • No Matter Status (i.e. Employees vs Contractors)
    • No Matter Geographical Location/Timezone
  • Equivalence in Remote Work

17:45 - Framing and Shaping Relationships + Communication

  • Changing Company Culture
  • Sharing Concerns with Upper Management
  • “We are all on the same team.”
  • Silence IS a Response
  • Working Through Challenging Conversations

29:47 - Helping People Learn – Work Therapists: Should/Could They Exist?

38:18 - Having Support Outside of Work: Networking

Rémi Mercier 

Git Bisect: travel through time and bugs

No matter how thorough your test coverage is, you can’t test everything.

One day, you’ll introduce a regression in your application, and you won’t notice it straight away. When you finally realize you broke your feature, it can be hard to pinpoint where and when it happened. It’s even harder when several people are working on the same application.

Now is a good time to get acquainted with git bisect.

Ready to time travel through your application?

The inefficient way of debugging: checking every commit, one by one

The other day, the situation described above happened to me.

My first instinct was to browse the list of commits and check each one for breaking changes. I kept throwing wild…

Saeloun Blog 

Essential Skills For A Senior Rails Developer

Programming is a skill and just like any skill, to get better at it, one needs to practice, practice and practice!

Easier said than done! One might spend a lot of time coding, but not necessarily spend their time the right way. That leads to a plateau in the career path. After year two or year three, there’s an overwhelming feeling of “What next?”.

This blog hopes to fill in that gap! Basecamp has written a wonderful entry in their Employee Handbook titled, “Titles for Programmers” which documents the expected journey of a developer. Let’s expand the scope just a little bit to see what the essential skills for a Senior Rails Developer exactly are.

  1. Command Over The Framework

zverok with ruby 

Why Wikipedia matters, and how to make sense of it (programmatically)

Some time ago, I wrote a Twitter thread about one of the unseen hard problems in software development—access to the common knowledge.

Since then, a few things happened to me, one of the most important being the inception of the new project trying to attack those problems, named WikipediaQL (that had already attracted some positive attention even in the early stages it is). I am still working on that project and plan a series of articles on the problems of common sense knowledge extraction and practical approaches to it.

As a prelude for this series and linkable justification of various aspects of my work, the current article is the (more orderly) republishing of the Twitter thread above.

Code with Jason 

How I approach software estimation

Software estimation is really hard. I’ve never encountered a programmer who’s good at it. I don’t think such a programmer exists. I myself am not good at estimation nor do I expect ever to be.

Here are two tactics that I use to deal with the challenge of estimation.

  1. Try to make estimation as irrelevant as possible
  2. Try to use historical data to make future estimates

Try to make estimation as irrelevant as possible

I figure if I’ll never be able to estimate accurately, at least I can try to make estimates a less important part of the picture. Probably my most successful tactic in this area is to try to only take on projects that last a matter of days. If a project will take more than a…

The RubyMine Blog : The Ruby on Rails IDE | JetBrains Blog 

Video Tutorial: Get Started with RBS in RubyMine

Hello everyone,

In this tutorial, you will learn how to add RBS to your project and get an overview of the main RBS features that RubyMine offers.

For more information about this topic, read the section dedicated to RBS in the RubyMine documentation.

Please feel free to share your feedback on our RBS support in the comments below, on our website, or on Twitter. And as always, please report any issues you encounter.

Check out our YouTube playlist to see more RubyMine video tutorials like this.

Happy developing!
The RubyMine team

Petr Hlavicka 

Business logic in Rails with operators

Having a thousand lines long controllers and/or models is not the right way to have sustainable applications or developers’ sanity. Let’s look at my solution for business logic in the Rails app.
Benito Serna 

Example app to understand why some times fixing some n+1 queries can hurt performance

I want to share with you an example application to help you visualize why “fixing” an n+1 queries problem, can hurt the performance of your application if you preload assocations with too many records.

It simulates the index page of a blog application. And appart from the rack-mini-profiler gem, it shows the logs in the page to help you visualize easily the queries, request time and allocations.

By default it has an n+1 queries problem. It makes a call to the database to fetch the latest comment for each post in the list, but you can fix it with a checkbox.

It will let you compare request times combining a filter of posts by number of comments and the checkbox to “fix” the n+1 queries…

Code with Jason 

116 - Perceptual Learning with Stefanni Brasil

In this episode, Stefanni Brasil and I discuss how perceptual learning can be used to improve programming education.

BigBinary Blog 

Rails 7 adds the ability to use pre-defined variants

Rails 5.2 introducedActiveStoragewhich made it possible to easily upload files to a cloud storage service likeAmazon S3, Google Cloud Storage, or Microsoft Azure Storage. It also helped inattaching the files to active record objects.

Using ActiveStorage and ImageMagick we cantransform image uploads and extract metadata from files. For transforming imageuploads we can use image_processing gem withActiveStorage and create variants of an image.

Previously for creating image variants, we needed to useimage_processing gem with ActiveStorageprocessor. The default processor for ActiveStorage is MiniMagick, but we canalso use Vips.

However,Rails 7 has added the ability to use pre-defined variantswhich…

Let'…

Long Live Ruby 

The Sidekiq job flow

At first sight, it seems that the way Sidekiq workers work is straightforward, but the truth is that the whole process is more complex. The job can fall into a specific flow depending on the configuration and the job outcome. This article introduces the Sidekiq job’s flow to help you understand what is happening with the job you queue when it’s successfully performed, or an error is raised during execution. Such knowledge will help you to design your systems better and use all features that Sidekiq offers.
Brandon Weaver 

Let's Read – Eloquent Ruby – Ch 5

Perhaps my personal favorite recommendation for learning to program Ruby like a Rubyist, Eloquent Ruby is a book I recommend frequently to this day. That said, it was released in 2011 and things have changed a bit since then.

This series will focus on reading over Eloquent Ruby, noting things that may have changed or been updated since 2011 (around Ruby 1.9.2) to today (2021 — Ruby 3.0.x).

Note: This is an updated version of a previous unfinished Medium series of mine you can find here.

Chapter 5. Find the Right String with Regular Expressions

This chapter focuses on Regular Expressions, or Regex for short. It's one of the most powerful concepts in programming around text…

Saeloun Blog 

Rails Arel Primer

Arel Primer

One of the easiest things about Rails is writing out SQL queries without writing out SQL queries.

So instead of writing something like this,

SELECT "users".* FROM "users" WHERE "users"."role" = 'admin'

We can write something like this,

User.where(role: :admin)

This is much more readable and effectively abstracts us from writing any SQL.

What’s happening under the hood is that Rails is using the Arel library to build SQL queries. Arel is a powerful SQL AST manager that lets us appropriately combine selection statements for simple to very complicated queries.

However, reader be cautioned – Arel is still a private API provided by Rails. Meaning that future versions of Rails…

The Bike Shed 

313: Forty-Seven Percent

Steph talks about binging a few Things Worth Learning podcast episodes and particularly enjoyed an episode that featured one of thoughtbot's design directors, Sameera Kapila. Sam shared her expertise about management and inclusion, and Steph shares her favorite parts.

Chris shares the story of a surprising error and the resulting journey through database transactions and Sidekiq that eventually resolved the issue. He also shares some follow up on the broken build and the merging process changes they introduced (spoiler, the process changes have been rolled back).

Transcript:

STEPH: Oh man, I'm about to stop eating my pop-tart.…

Ruby Together News 

September 2021 Monthly Update

Hello! Welcome to the monthly update. During September, our work was supported by Zendesk, Stitch Fix, DigitalOcean, and many others.

ruby together news

In September, Ruby Together was supported by 36 different companies, including Ruby member Zendesk. This month, 3 companies joined as new members.

On top of those companies, 3 new developers signed up as members, including Marco Roth, Kim Laplume, and Max Woolf. In total, we were supported by 110 developer members. Thanks to all of our members for making everything that we do possible. <3

rubygems & bundler news

This month in RubyGems, we saw some updates and fixes on the RubyGems and Bundler projects. Some of those changes include…

Ruby Together News 

Staying the Course

Staying the Course

Here at Ruby Together we feel it’s important to find ways to remind ourselves that time is, in fact, passing and that we are not, actually, living in one, long, eternal year. In that spirit, happy belated equinox and welcome to the other side!

We have officially entered a new phase in the year. Whether you’re entering the fall, as we are here in the US, or welcoming in another season, this turning point can be a good time to reflect on how far we’ve come this year, and how we’d like the remaining part of it to go. It’s a good time to review the goals we set out to meet and check whether they are on track, and if we want to make any adjustments going forward. It’s also…

Hanami 

Announcing Hanami v1.3.5

Hello wonderful community!

Today we're happy to announce v1.3.5 🙌.

Changed ⏩

  • Use JSON as default HTTP session serializer for cookie session storage

Bug Fixes 🐞

  • Ensure to properly store exceptions in Rack environment
  • Explicitly limit in gemspec the supported rubies (>= 2.3 and < 3) for Hanami 1k
  • Ensure .validations to not raise NoMethodError: undefined method 'size' for nil:NilClass. Due to a breaking change in transitive dependency (dry-configurable 0.13.x).

Released Gems 💎

  • hanami v1.3.5
  • hanami-validations v1.3.8

How to install ⌨️

$ gem install hanami
$ h…
Doctolib Engineering 

Exfiltrating your own data from a PaaS (PostgreSQL Unprivileged Replication)

Several months ago we wanted to move an internal Rails application out of the Heroku ecosystem because it had grown too important and resource intensive to maintain there. This application (test-failures) collects, stores, and displays CI test results for a variety of our projects. Since we take a strong TDD approach in all teams at Doctolib, test-failures is the beating heart of all our devs work. The most critical—and trickiest—asset to migrate was our very large (>500GiB) and very active (>7000 commits per second) PostgreSQL database.

Since test-failures has become such an irreplaceable part of the day to day work for our entire tech team and in crisis situations, we wanted to…

Honeybadger Developer Blog 

Understanding and Implementing OAuth2 In Node.js

OAuth 2.0 is the most widely used and accepted industry-standard protocol for authorization. As a protocol, it provides a bunch of tools, patterns, and best practices to help developers with the arduous task of accomplishing authorization flows for all sorts of applications, such as web, mobile, and embedded.

In this article, I'll walk you through some of the essentials of OAuth2 in a practical way. The goal is to demonstrate how this famous protocol works behind the scenes, along with Node.js.

So, What About OAuth2?

There are a lot of misconceptions and over-complications when ,it comes to understanding what OAuth is really about.

OAuth2 has a couple of predefined flows that you can…

Test Double Blog 

The Future of Tech: Building sustainably with Open Source

What if all code was open source? Whoa! Now that’s a can of worms! Six months ago I began the journey of removing/reducing big-tech from my life, and the more I learned, the more I’ve come to the conclusion that the only technology I can truly embrace is Open Source.
Brandon Weaver 

Tales of the Autistic Developer - Loud Loud World

For those who don't know me, I'm autistic. I've been a developer for the better part of a decade.

I didn't find out I was ASD until 19, and didn't reconcile with that until years later. These posts will be a combination of advice I've given to those who are like me, as well as a letter of sorts to my past self who could have used a lot of it.

I write these posts in the hopes that someone like me will find value in knowing a very simple and very important truth about ASD:

You are not alone, and you are loved.

Loud Loud World

For autistic people the world is so very loud, and I fear that this has led to a very common misunderstanding of our experience.

It's not that we lack…

Riding Rails 

Auto timestamps on bulk inserts, HTML safe translations in controllers and more

Hey, Wojtek here with last week updates from the Ruby on Rails world.

Set timestamps on insert_all/upsert_all record creation

The timestamps will be automatically set when using bulk insert/upsert. This behaviour can be disabled by the record_timestamps config on the model class.

Treat html suffix in controller translation

When translation key ending with _html is used it will be marked as HTML safe in the same way as in the views.

Add support for FILTER clause to Arel

Can be used with PostgreSQL and SQlite databases to use FILTER clause.

Better Action Text plain text output for nested lists

Fixed an issue with how nested lists were displayed when converting to plain text.

Add support…

Code with Jason 

Don’t mix refactorings with behavior changes

Why it’s bad to mix refactorings with behavior changes

It adds risk

Probably the biggest reason not to mix refactorings with behavior changes is that it makes it too easy to make a mistake.

When you look at the diff between the before and after versions of a piece of code, it’s not always obvious what the implications of that change are going to be. The less obvious the implications are, the more opportunity there is for a bug to slip through.

When you mix behavior changes with refactorings, the behavior change and the refactoring obscure each other, often making the change substantially harder to understand and allowing for a much greater opportunity for bugs to slip through.

Mixing…

The RubyMine Blog : The Ruby on Rails IDE | JetBrains Blog 

RubyMine 2021.2.3 Is Available

RubyMine 2021.2.3 is now available!

You can update using the Toolbox App or right from inside the IDE. You can also download RubyMine 2021.2.3 from our website.

Moving to JetBrains Account For Trials of IDEs

Please note that starting from this build, you will need to provide your JetBrains credentials to use the trial product versions.

Bug-fixes

You’ll find the following important fixes in this update:

  • Fixed an issue with installing the debugger for JRuby on Windows: RUBY-28428
  • Fixed recurring indexing on every startup if the IDE was closed due to OS shutdown: IDEA-275337
  • Fixed the issue causing the IDE to freeze: IDEA-274319
  • Added support for JRuby 9.3.0.0: RUBY-28815

Check out the relea…

Remote Ruby 

Yuh-Jit - Optimizing JIT compiler built inside CRuby

[00:04:42] We find out if the guys done any stuff with Rails 7 yet and Chris tells us what’s been going on with it. 


[00:09:44] Chris asks the guys if they are using an encryption library, and Jason talks about using Lockbox and Symmetric Encryption. 


[00:14:08] Chris tells us more about progressive encryption in Rails 7. 


[00:15:11] The guys chat about Ruby 3.1 and the new project from Shopify getting merged into Ruby called YJIT, which is an open source JIT compiler for CRuby.


[00:18:43] The conversation turns to TenderJIT and Jason brings up a Tweet from tenderlove about it. There is a livestream Aaron Patterson did with hexdevs that he did about it this stuff.


[00:22:23] Jason talks…

Awesome Ruby Newsletter 

💎 Issue 282 - Multiple radio buttons in ruby on rails - Sarah Eggleston

Island94.org 

TIL: Detecting block returns in Ruby

I was doing some research on introspecting Ruby on Rails database transactions for a Reddit thread, and came across this Rails PR that had some new Ruby behavior for me: detecting an early return from a block.

Some background: A Ruby language feature, that can frequently surprise people, is that using return within a Ruby block will return not only from the block itself, but also from the block’s caller too. Using next is really the only truly safe way to interrupt a block early; even break can be troublesome if the block is called by an enumerator. Also, next can take a return value too, just like return e.g. next my_value.

I found the Rails PR interesting, because it has a method for…

Ruby Weekly 

A cookbook of Ruby one liners

#​574 — October 14, 2021

Read on the Web

Ruby Weekly

Embracing Infinite Loops with Ruby and Polyphony — See how infinite loops can be used as the basis for long running concurrent tasks here with Polyphony, a io_uring/libev oriented concurrency library, doing the heavy lifting.

Sharon Rosner

▶  39 Talks from RubyKaigi Takeout 2021 — The popular RubyKaigi conference usually takes place in Japan each year but was held online again due to the ongoing world health problems. A wide array of both English and Japanese talks happened, including these:

The RubyMine Blog : The Ruby on Rails IDE | JetBrains Blog 

RubyMine 2021.3 EAP4: Improvements for VCS and More

The fourth EAP build of 2021.3 is now available! Here are the highlights:

VCS

Checkout and Rebase onto Current for remote branches

The Checkout and Rebase onto Current action allows you to check out the selected branch and rebase it on top of a branch that is currently checked out. Until now, it has only been available for local branches. Starting from this EAP, we’ve added the ability to apply this action to remote branches, as well.

New Checkout action

Reorganized VCS settings

To improve the user…

Noteflakes 

Embracing Infinite Loops with Ruby and Polyphony

In this article I’ll discuss the use of infinite loops as a major construct when writing concurrent apps in Ruby using Polyphony. I’ll show how infinite loops differ from normal, finite ones; how they can be used to express long-running tasks in a concurrent environment; and how they can be stopped.

Polyphony is a library for writing highly concurrent Ruby apps. Polyphony harnesses Ruby fibers and a powerful io_uring-based I/O runtime to provide a solid foundation for building high-performance concurrent Ruby apps.

In the last few months I’ve been slowly transitioning from working on Polyphony-designing APIs and adding functionality-to using to develop actual applications, some of…

Saeloun Blog 

Private fields, methods and, accessors in JavaScript

Private methods proposal, as a part of the class fields proposal has been promoted to Stage 4 in the TC39 process and will be officially included in ECMAScript 2022!

In this blog, we will cover private class features which will be a part of ECMAScript 2022.

Before

By default, all properties in ES6 classes are public and can be examined or modified outside the class. In the example below, we find that there is nothing in the class to prevent the property from being changed without calling the setter.

class TimeTracker {
  name = 'Alice';
  project = 'blog';
  hours = 0;

  set addHours(hour) {
    this.hours += hour;
  }

  get timeSheet() {
    return `${this.name} works ${this.hours 
Test Double Blog 

Why junior developers are seriously awesome

Here at Test Double, we have the privilege of working with teams whose members range from fresh out of school to 30+ years in the industry. As consultants with a sneak peek into a large number of companies, we see the general preference to hire only senior developers.
Giant Robots Smashing Into Other Giant Robots 

A Broader Take on Parsing

We usually think of “parsing” as turning strings into richer data structures. Broadening the definition gives us a really nice mental model to think about many types of transformations.

Inspired by a discussion on narrowing types from the Elm discourse.

What is parsing?

In prose, we might say: “Parsing is transforming a broader type into a narrower type, with potential failures”.

Described as an Elm type signature, we can say that parsing is a function:

parse : broaderType -> Result error narrowerType

Typically, not all values of the broader type can successfully be transformed into the narrower type, hence the need for Result. For example, the string "1" can be…

The Rails Tech Debt Blog 

Upgrading To Zeitwerk

Zeitwerk is the code autoloader and reloader that was integrated with Rails 6. Beginning in Rails 7, it will be the only codeloader option. As a result, upgrading to Zeitwerk will be an important step in getting your application ready for the next version of Rails. In this article, we’ll talk about upgrading your Rails 6 application from classic to zeitwerk mode.

What is Zeitwerk?

Zeitwerk is “an efficient and thread-safe codeloader for Ruby”. It was created by Xavier Noria to allow any Ruby project to autoload code…

JRuby.org News 

JRuby 9.3.1.0 Released

The JRuby community is pleased to announce the release of JRuby 9.3.1.0

JRuby 9.3.x is compatible with Ruby 2.6.x and stays in sync with C Ruby. As always there is a mix of miscellaneous fixes so be sure to read the issue list below.

Thank you to our excellent community of users for their many contributions! JRuby would not be successful without your help: @ahorek, @byteit101, @GabrielNagy, and @jsvd

Standard Library

  • Updated RubyGems to 2.2.29 and Bundler to 3.2.29. (#6890)

23 Issues resolved

  • #6263 - Set jruby-jars gem plugin to use 9.3 release
  • #6679 - [ji] allow Java errors from Ruby threads to…
Saeloun Blog 

Rails 7 introduces ActiveModel::API

When working with Rails, we are familiar with ActiveRecord. Active Record is the Model in the MVC framework that is the layer of the system responsible for representing business data and logic. It’s an ORM that connects the rich objects of an application to tables in a relational database management system.

We come across cases where classes in Rails require model-like features, but they are not tied to any table in a database. That is where Rails ActiveModel comes into picture. It’s a library used in developing classes that need some features present on Active Record.

Let’s say we have a Person class with name and id attributes. We want to add validations to these attributes. With Active…

The Ruby on Rails Podcast 

Episode 387: From Architect to VP of Engineering with Bruno Miranda

Bruno Miranda is responsible for leading Doximity’s engineering teams across the areas of data, mobile, infrastructure, and web engineering. Bruno architected the earliest versions of the company’s core software platform and lead efforts to build out a highly resilient technology stack. Brian and Brittany inquire what the responsibilities of a VP of Engineering are, the proper way to onboard a new engineer and how to approach building distributed engineering teams. Rails can scale.

Show Notes & Links:

Sponsored By:

Honeybadger

Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring…

Ruby Rogues 

Polished Ruby Programming ft. Jeremy Evans - RUBY 518

Jeremy Evans joins the Rogues to discuss the way he builds Ruby programs and the practices he put into his latest book "Polished Ruby Programming."

The Rogues dive into Jeremy's opinions. They push back on some, applaud others, and ask deeper questions about the rest. Join this deep dive by experienced developers into the how and why of organizing Ruby in deeply practiced ways.

Polished Ruby Programming giveaway: https://forms.gle/VURNitd9LCwMG9Sz9

Panel

  • Charles Max Wood
  • Darren Broemmer
  • Dave Kimura
  • John Epperson
  • Luke Stutters
  • Valentino Stoll

Guest

  • Jeremy Evans

Sponsors

Links

Greater Than Code 

254: Transitioning Into Tech with Danielle Thompson

01:17 - Danielle’s Superpower: Empathy & Communication

01:56 - Going From the Hospitality Industry => Tech

04:58 - Education Technology (EdTech)

  • Disruption = Reinvention

07:18 - Anthropology + Tech / Working With People

  • Anticipating Needs

10:25 - Making Education Fun + Inclusive

  • Cultural Relevance
  • Revamping Outdated Curriculum
  • Connecting With Kids

16:18 - Transitioning Into Tech

27:57 - Resources

32:39 - @CodeSchoolQA / twitch.tv/thejonanshow

34:08 - The Streaming Revolution

  • New Opportunities For Connection
  • Hybrid Events
  • Introve…
BigBinary Blog 

Rails 7 adds setting for enumerating columns in select statements

Rails 7 has introduced a new setting calledenumerate_columns_in_select_statements for enumerating columns in activerecordselect query statements by which we can avoid commonActiveRecord::PreparedStatementCacheExpirederrors.

Rails uses prepared statements for database query efficiency. When preparedstatements are being used, the repeated queries will be cached based on theprepared statement query plan at Postgres database level. This cached value willbecome invalid when the returned results are changed.

Whenever we make any schema changes to database tables while application isrunning, the cached select statements with wildcard column definition will raisePreparedStatementCacheExpired error…

RubyGems Blog 

September 2021 RubyGems Updates

Welcome to the RubyGems monthly update! As part of our efforts at Ruby Together, we publish a recap of the work that we’ve done the previous month. Read on to find out what updates were made to RubyGems and RubyGems.org in September.

RubyGems News

This month in RubyGems, we saw some updates and fixes on the RubyGems and Bundler projects. Some of those changes include the following:

  • released a new version for RubyGems 3.2.27, which included:
    • fixing an issue when installing some gems from GitHub private gem servers
    • setting some unredacted credentials in verbose mode
    • improving loading the library by using require_relative for internal requires.
  • released…
Giant Robots Smashing Into Other Giant Robots 

Ruby Safe Navigation

Ruby safe navigation, especially in long chains, can be difficult to read and can hide some subtle edge cases.

Safe navigation

Consider a scenario where the following is true:

  1. Users are guaranteed to have an address
  2. Addresses are guaranteed to have a zip code

Given an optional user, we want to either get their zip code or return nil. Using very explicit code, we might write that as:

if user
  user.address.zip
else
  nil
end

But we are Rubyists and want to write pleasant, terse code. We turn to the safe navigation operator and refactor our code to this one-liner:

user&.address&.zip

However, behavior here is subtly different.

Conditional equivalence

When…

Benito Serna 

Why some people say that fixing some n+1 queries could hurt performance?

Sometimes people say that “fixing” some n+1 queries could hurt performance…

Maybe this phrase can be confusing, because if you have not been exposed to a lot of n+1 queries problems, it could be hard to imagine how it can be possible.

And also is probably contrary to what you have always heard…. That n+1 queries are bad.

You can preload too much data

Although a lot of the time a simple preload(:comments) can solve your n+1 queries problems… sometimes it can also hurt the performance if you don’t put attention in the queries that ActiveRecord is using.

Sometimes some of those queries will try to fetch a lot of data and that can make your queries slow or they can use to much memory and…

RubySec 

CVE-2021-41136 (puma): Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') in puma

### Impact Prior to `puma` version 5.5.0, using `puma` with a proxy which forwards LF characters as line endings could allow HTTP request smuggling. A client could smuggle a request through a proxy, causing the proxy to send a response back to another unknown client. This behavior (forwarding LF characters as line endings) is very uncommon amongst proxy servers, so we have graded the impact here as "low". Puma is only aware of a single proxy server which has this behavior. If the proxy uses persistent connections and the client adds another request in via HTTP pipelining, the proxy may mistake it as the first request's body. Puma, however, would see it as two requests, and when…
Code with Jason 

10X programmers

You can find discussions online regarding the idea of a “10X programmer”. Much of what you’ll find is ridicule of the idea that 10X programmers exist.

I’ve always thought it’s fairly obvious that 10X programmers exist. In fact, I think programmers vary by a factor of way more than 10X.

Months and years vs. days and hours

When I think of a 10X programmer, I don’t think of something who can finish a job in one hour what would have taken an “average” programmer ten hours. Rather, I think of someone who can accomplish ten times as much in a year than an average programmer. I think it’s a very reasonable proposition that one programmer could accomplish 10X as much in a year than another…

Notes to self 

Organizing business logic in Rails with contexts

Rails programmers have almost always tried to figure out the golden approach to business logic in their applications. From getting better at object-oriented design, to service objects, all the way to entirely new ideas like Trailblazer or leaving Active Record altogether. Here’s one more design approach that’s clean yet railsy.

What we have now

Before I dive into this new design pattern, let me comment a little 2 main approaches that I see people take today. As an example, let’s imagine an accounting task of making an invoice.

Models

The Rails default is about keeping everything related to business logic in app/models. Nice and practical for small projects, but hard to keep clean when…

Code with Jason 

115 - Organizing Large Rails Apps with Jared White

In this episode, Jared White and I discuss single-page applications, service objects, POROs, and the various techniques Jared and I use to organize large Rails apps.

Long Live Ruby 

Introduction to Rails transactions

Transactions are an essential part of the Rails framework. Even if you are not using them directly, Rails is doing it automatically each time you save or destroy the instance of the model. However, while transactions can bring you many benefits, they can also damage your application when used in a not proper way. This article introduces transactions that will help you use them wisely, even if you haven’t used them before.
BigBinary Blog 

Reducing memory bloat of a Ruby on Rails application

Recently we encountered that one of our internal products had started consumingtoo much memory. Some of our team members dig deep into it and resolved theissue. After the issue was resolved Unni made a video for internal purpose. Inthis blog we are posting that video as it was recorded.

<iframe width="100%" height="315" src="https://www.youtube.com/embed/pEFUS6beuow" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

Saeloun Blog 

Rails 7 supports NullsFirst for all databases

In the beginning of this year, Rails 6.1 added support for nulls_first and nulls_last Arel methods for PostgreSQL. This was a great addition since, unlike most databases, PostgreSQL would push data with null values to the top when ordering columns. However, in most situations, this was not preferred.

Before

Rails 6.1 introduced the following Arel methods only to PostgreSQL databases to control null data ordering.

irb> User.arel_table[:name].desc.nulls_last

(0.9 ms)  SELECT "users"."name" FROM "users"
          ORDER BY name DESC NULLS LAST

=> [["Adam Driver"], ["Bob Dylan"], [""]]

This was fantastic for PostgreSQL users as the default is set to “NULLS FIRST”. Unfortunately, all other…

Engine Yard Blog 

Code Concurrency and Two Easy Fixes

Code concurrency is a default in any Rails code. A threaded web serverwill simultaneously serve many HTTP requests, and each will hold its controller instance. Threaded active job adapters and action cable channels also handle multiple requests simultaneously. Even when the global process space is shared, work for each instance is managed separately. For scenarios where the shared space is not altered, this process will run smoothly.

The Bike Shed 

312: Spooky Stories

Chris evaluates the pros and cons between using Sidekiq or Active Job with Sidekiq. He sees exceptions everywhere.

Steph talks about an SSL error that she encountered recently. It's officially spooky season, y'all!

Transcript:

CHRIS: Additional radiation just makes Spider-Man more powerful.

STEPH: [laughs] Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Steph Viccari.

CHRIS: And I'm Chris Toomey.

STEPH: And together, we're here to share a bit of what we've learned along the way. Hey, Chris, what's new in your world?

CHRIS: Fall is in the air. It's one of those,…

Giant Robots Smashing Into Other Giant Robots 

Models That Match Reality

Data modeling is a big part of software design and good models should accurately approximate reality. Ideas from modeling in other disciplines, sets, and an aphorism from the Elm community can help us design better models.

Inspired by a discussion on narrowing types from the Elm discourse.

What is a model?

When we think of the word “model” in software, we often think of the M in model-view-controller (MVC). If you’re from the Elm community, you might think of the Model type that stores an application’s state in the Elm Architecture (TEA).

More broadly, models are simplified constructions that try to approximate and describe reality. A model might be physical, such as a…

Island94.org 

Behaving like the character in a story

I enjoyed reading Robert Kolker’s “Who Is the Bad Art Friend?”, specifically about the non-symmetric relationships of fiction and inspiration.

Larson’s biggest frustration with Dorland’s accusations was that they stole attention away from everything she’d been trying to accomplish with this story. “You haven’t asked me one question about the source of inspiration in my story that has to do with alcoholism, that has to do with the Chinese American experience. It’s extremely selective and untrue to pin a source of a story on just one thing. And this is what fiction writers know.” To ask if her story is about Dorland is, Larson argues, not only completely beside the point, but ridiculous.…

Giant Robots Smashing Into Other Giant Robots 

Fewer Operations on Custom Types is Valuable

Less is more. Wrapping Elm primitives in custom types restricts your available operations and that’s a good thing. Ideally, you only expose operations that make sense in your problem domain.

Inspired by a discussion on narrowing types from the Elm discourse.

Units of measure

I commonly recommend avoiding raw numbers in Elm code and instead wrapping them in a custom type describing what sort of quantity a number represents. This technique helps prevent common bugs like argument order bugs or conversion errors. It also massively improves code readability.

Implementing such a type usually looks like this:

type Dollar = Dollar Float

Breaking math

So far, so good,…

Island94.org 

http://island94.org/2021/10/2021-10-11-til-detecting-block-returns-in-ruby

I was doing some research on introspecting Ruby on Rails database transactions for a Reddit thread, and came across this Rails PR that had some new Ruby behavior for me: detecting an early return from a block.

Some background: A Ruby language feature, that can frequently surprise people, is that using return within a Ruby block will return not only from the block itself, but also from the block’s caller too. Using next is really the only truly safe way to interrupt a block early; even break can be troublesome if the block is called by an enumerator. Also, next can take a return value too, just like return e.g. next my_value.

I found the Rails PR interesting, because it has a method for…

AkitaOnRails.com 

[Akitando] #106 - Recomendação de Livros - Introdução à Design Emergente

DESCRIÇÃO

Toda hora alguém me pergunta "quais livros eu devo ler?" Normalmente eu não respondo, mas hoje resolvi fazer uma primeira lista de livros e temas que eu acho relevantes pra maioria dos programadores. Não é uma lista completa mas eu quero aproveitar pra tocar num tema que você eventualmente vai precisar entender: profissionalismo na área de programação e principalmente entender o que é "Design Emergente" em software.

Meio que é uma continuação ao que eu disse no meu video sobre "Empreendendo em Software do Jeito Errado" quando eu disse que não dá pra especificar todo um software antes de codificar e hoje vou começar a explicar porque.

Conteúdo

  • 00:00 - Intro
  • 01:47 -…
GoRails Screencasts 

How to use Bootstrap with CSS bundling in Rails

Installing Bootstrap is easier than ever thanks to CSS Bundling in Rails now. It also wires up the Javascript so you don't have to do much of anything.
The RubyMine Blog : The Ruby on Rails IDE | JetBrains Blog 

RubyMine 2021.3 EAP3: Performance Improvements, New RBS Inspections, and Reworked Bookmarks

The third build of the RubyMine 2021.3 Early Access Program is now available!
Here are the most notable updates:

Editor performance improvements

In this release, we are working on performance improvements for the code editor. Actions like opening files, typing, invoking code completion, and applying quick-fixes now work faster.

This is only slightly noticeable on average-sized project files, but it is much more apparent when working with large files (around 2,000 lines of code or more). Here’s an example:

Improved completion performance

New inspections for RBS files

This build includes a number of new inspections for RBS code:

  • Dynamic…
Honeybadger Developer Blog 

Using DynamoDB in Your Rails App

At its core, DynamoDB is a NoSQL database that offers key-value and document data structures. Let's unpack this. I imagine that most of the developers reading this are quite familiar with traditional relational database systems, which involve well-defined schemas and data normalized into tables, rows, and columns. Between these tables, there are "relationships" utilizing foreign keys. In contrast, DynamoDB is schemaless. While every table must have a primary key, there are no other constraints on other non-key attributes. When would this be beneficial, you ask? Well, let's learn why Amazon created DynamoDB.

Amazon announced plans to release DynamoDB for public use in 2012. Amazon had…

Notes to self 

Cross-compiling Elixir releases with ASDF and Docker

Elixir releases are self-contained directories containing your applications together with all dependencies and the Erlang virtual machine. Although convenient, there are unfortunately not platform-independent. Here’s how to build your application release for any Elixir version and operating system with ASDF and Docker.

Releases are almost as good as a single executable. Almost, because there are platform dependent. Personally, I love minimalism and skipping layers whenever I can. I run Fedora for my desktop so I can actually match my environment with a Fedora server and achieve one of the most effortless deployments there can be (like with Go).

I can move the releases’ files to the server…

Riding Rails 

Automatic inverse_of, performance improvements and more!

Hi, this is Greg, bringing you the latest news about Ruby on Rails!

This week we switched our newsletter delivery platform to HEY, if you are reading this email, you already confirmed your subscription and there is no other action needed on your end.

Avoid instance_exec for controller callbacks

This change brings some performance improvements, by avoiding to create the extra controller singleton classes, created by instance_exec, when :only or :except are passed to a callback.

Automatically infer inverse_of with scopes

This PR changes can_find_inverse_of_automatically to allow us to automatically detect inverse_of when there is a scope on the association, but not when there is a scope on…

Karol Galanciak - Distributed Systems Architect and Ruby on Rails expert 

The Story of a Critical Issue With Kafka

Recently, I’ve had an unfortunate opportunity to deal with a very unexpected issue with Kafka that had quite terrible consequences. The exact origin of the issue is yet to be discovered; nevertheless, the process leading to the final solution to the problem and the fix itself were interesting enough that I decided to write a quick blog post about it as it might be potentially valuable to someone who also encounters a similar problem.

How the issue was diagnosed

Suddenly, after one of the deployments (nothing related to any change around Kafka or karafka/ruby-kafka gems that we use in the app) we’ve started to receive a massive number of error traces in Datadog APM (precisely, Kafka::Con…

RubyGems Blog 

3.2.29 Released

RubyGems 3.2.29 includes enhancements, bug fixes and performance.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

## Enhancements:

  • Only disallow FIXME/TODO for first word of gemspec description. Pull request #4937 by duckinator

## Bug fixes:

  • Fix wordy method in SourceFetchProblem changing the password of source. Pull request #4910 by Huangxiaodui

## Performance:

  • Improve require performance, particularly on systems with a lot of gems installed. Pull request #4951 by pocke

SHA256 Checksums:

  • rubygems-3.2.29.tgz
    878ed074fab60e148401dd8772c4e993d8cd44eadd565e1ce20c91d45eec4850
  • rubygems-3.2.…
Test Double Blog 

Double Agent Profile: Glenn Harmon

Name: Glenn Harmon Designation: Agent 00108 Double Agent Role: Senior Software Consultant Special Skills: Champion of Tough Conversations Aliases: glennharmonjr Location: Columbus, OH Favorite Emoji: What are you proudest of doing in the past year at work?
Remote Ruby 

Propshaft, Engines, and Turbo | Uh This Isn't a Car Repair Podcast

[00:00:50] The guys chat about the new release of Turbo 7.0.1.


[00:01:46] Chris tells us how he moved all of the GoRails, CSS, and JavaScript from Webpacker into CSS and JS bundling, and it went pretty smooth except for something dumb he did. 


[00:04:50] Propshaft is brought up and we learn what it does.  


[00:08:44] Why do we need the hashes at the end? Andrew explains why it’s all about caching. 


[00:11:08] Ryan Bates is mentioned since he commented on the Propshaft repo. Also, Ryan, if you are listening, we would love for you to be a guest on our show!  ☺


[00:12:39] Hotwire is the topic here, and although it’s been released, but not officially, Chris tells us some things that are…

Long Live Ruby 

Enum in Rails explained

Enum is a shortcut for the enumerated term, which means a set of named values in computer programming. When it comes to Rails, we often mean statuses when we are talking about the set of named values. For example, we can have the user in the application that can be either active or deleted. In addition, we can have an article that can be draft, published, or archived. Rails make it easy to use enums and save us a lot of time by providing magic methods to make our lives easier. This article is a perfect starting point for someone unfamiliar with Rails enums yet and a perfect checklist for developers who work with such structures daily.
Test Double Blog 

Double Agent Profile: Glenn Harmon

Name: Glenn Harmon Designation: Agent 00108 Double Agent Role: Senior Software Consultant Special Skills: Champion of Tough Conversations Aliases: glennharmonjr Location: Columbus, OH Favorite Emoji: What are you proudest of doing in the past year at work?
Ruby Rogues 

RUX: JSX-Style Rails View Components - RUBY 517

Cameron Dutro joins the Rogues to discuss RUX, a system for managing your View Components in Rails in a similar way to how React uses JSX to manage its Component views.

He discusses how it works, how it goes together, and what inspired it.

Panel

  • Charles Max Wood
  • Darren Broemmer
  • Luke Stutters
  • Valentino Stoll

Guest

  • Cameron Dutro

Sponsors

Links

Picks

Awesome Ruby Newsletter 

💎 Issue 281 - Rubocop: Custom Cops for Custom Needs

RubySec 

CVE-2021-30151 (sidekiq): Cross-site Scripting in Sidekiq

Sidekiq through 5.1.3 and 6.x through 6.2.0 allows XSS via the queue name of the live-poll feature when Internet Explorer is used.
RubySec 

CVE-2021-33575 (ruby-jss): Remote code execution in ruby-jss

The Pixar ruby-jss gem before 1.6.0 allows remote attackers to execute arbitrary code because of the Plist gem's documented behavior of using Marshal.load during XML document processing.
Best of Cancel Culture - Case Studies of Code of Conduct Out-Of-Control Power Abuse and Permanently Banning 

Ruby (October, 2021) - A Call for Tolerance On Ruby-Talk Results In Ban On Reddit Ruby

You have been permanently banned from participating in r/ruby (because of your writing off / outside of r/ruby). I do not see your participation adding anything to this community. – Richard Schneeman (r/ruby Mod) Richard Schneeman sends on r/ruby where I have myself self-censored because of an anti-crypto mob (the irony is that I am a crypto-critic - by the way - and try to educate with code examples the absurdity of it all and so on) and haven’t posted anything for weeks - yes, a permanent ban (because of a posting off / outside of r/ruby). And to restate again and again I am not the poster of the (harmless) joke. I was asking for (more) tolerance. Anyways, for the record let’s…
Saeloun Blog 

ECMAScript2021 adds new features WeakRef and FinalizationRegistry

Javascript utilizes garbage collection (GC) for automatic memory management. The purpose of a garbage collector is to monitor memory allocation and determine when a block of allocated memory is no longer needed and reclaim it. The object is not collected, by the garbage collector as long as a reference to that object exists. This keeps the object in memory, leaving less memory for usage.

ECMAScript2021 added WeakRef and FinalizationRegistry features to handle garbage collection properly.

Let’s check out these concepts in detail.

WeakRef

WeakRef is the new enhancement in the world of objects in Javascript. As the name suggests, WeakRef contains the weak reference to the Javascript…

Ruby Weekly 

Ruby gets a new game jam

#​573 — October 7, 2021

Read on the Web

Ruby Weekly

Rubocop: Creating Custom Cops for Custom Needs — This is not only a great use case for a custom matcher, but also a solid tutorial that touches on ASTs, S-expressions, and other interesting technicalities.

Matheus Richard (thoughtbot)

Awesome Ruby: A Curated List of 900+ Ruby Libraries and Tools — Every year or two, we like to link to this epic, categorized collection of Ruby goodies. It continues to be updated frequently with new entries added and obsolete entries removed, and you’re encouraged to contribute your own projects too.

Marc Anguera Insa

John Nunemaker 

Code with Jason Podcast

Head on over to Jason's site for an audio link (or go straight to mp3 here).

This interview was less on the technical side and more on the working at a big company and learning about stock/options/taxes.

<teaser>Also, I'm hoping the next post will be about something meaty I've been working on for Flipper Cloud. It's legit really exciting.</teaser>

The Ruby on Rails Podcast 

Episode 386: Marginally Wiser (Product Management) with Danny Issroff

It's a family affair! Danny Issroff, Jemma's older brother, visited the show to discuss all things product management. Jemma and Brittany quizzed him about how developers can understand product, advice for aspiring PMs and why developers are a precious resource.

Show Notes & Links:

Sponsored By:

Honeybadger

Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeybadger.io and discover how Starr, Josh, and Ben created a 100% bootstrapped…

Greater Than Code 

253: Reframing the Value of Open Source with Jen Weber

00:47 - Jen’s Superpower: Being Optimistic

  • Recognizing Negative Loops
  • Intentionality & Prioritization
  • Preventing Security Vulnerabilities

10:13 - Working On Open-Source Projects vs Commercial Software/Products

  • Gathering Feedback (RFCs)
  • Baby Steps = Big Impact

12:57 - Major vs Minor Releases

  • Semantic Versioning
  • Deprecation Warnings
  • Advanced Notice
  • Incremental Rollouts

18:45 - RFC / Feedback Processes

  • Dealing with Contradictory Feedback
  • Reaching Consensus
  • Visionary Leadership
    • Additions

23:25 - The Ember Core Team

  • ~30 People
  • Funding
    • LinkedIn (Corporate Sponsorship)
    • Consultants & Consultancies
    • Volunteers

26:31 - Doing Open Source Better

  • Sponsor Company…
Saeloun Blog 

Rails 7 adds SSL support for postgresql in bin/rails dbconsole

For increased security, PostgreSQL natively supports using SSL connections to encrypt client/server communications. PostgreSQL does not perform any server certificate verification by default.

When the sslmode parameter is set to verify-full, libpq will also check that the server hostname matches the name stored in the server certificate. If the server certificate cannot be verified, the SSL connection will fail.

To allow server certificate verification, one or more root certificates must be placed in the file ~/.postgresql/root.crt in the user’s home directory. (In Microsoft Windows the file is named %APPDATA%\postgresql\root.crt). Intermediate certificates are also added to the file if…

BigBinary Blog 

Rails 7 adds ComparisonValidator to ActiveRecord

RailsActive Record Validationprovides a convenient way to validate the state of an object before it is storedin the database. There are various built-inActive Record validationslike presence, length, numericality and uniqueness.

By usingnumericality validator,we can validate an attribute to only have numeric values.

# app/models/blog.rbclass Blog < ApplicationRecord  validates :likes, numericality: trueend

We can also use helpers like greater_than, greater_than_or_equal_to,equal_to, less_than, less_than_or_equal_to, other_than, odd, evenwithnumericality validatorbut these work only on numbers.

# app/models/blog.rbclass Blog < ApplicationRecord  validates :likes, numericality: { greater_than: 1…
Noteflakes 

A Compositional Approach to Optimizing the Performance of Ruby Apps

Ruby has long been derided as a slow programming language. While this accusation has some element of truth to it, successive Ruby versions, released yearly, have made great strides in improving Ruby’s performance characteristics.

In addition to all the iterative performance improvements - Ruby 2.6 and 2.7 were especially impressive in terms of performance gains - recent versions have introduced bigger features aimed at improving performance, namely: a JIT compiler, the Ractor API for achieving parallelism, and the Fiber scheduler interface aimed at improving concurrency for I/O bound applications.

While those three big developments have yet to prove themselves in real-life Ruby apps, they…

Julia Evans 

Tools to explore BGP

Yesterday there was a big Facebook outage caused by BGP. I’ve been vaguely interested in learning more about BGP for a long time, so I was reading a couple of articles.

I got frustrated because none of the articles showed me how I could actually look up information related to BGP on my computer, so I wrote a tweet asking for tools.

I got a bunch of useful replies as always, so this blog post shows some tools you can use to look up BGP information. There might be an above average number of things wrong in this post because I don’t understand BGP that well.

I can’t publish BGP routes

One of the reasons I’ve never learned much about BGP is – as far as I know, I don’t have access to…

OmbuLabs Blog 

Audit Tool is now Open Source

Audit is a Rails application that allows users to check for vulnerabilities in their Gemfiles in an efficient and secure manner.

The tool has been around for a while, but now we decided to make the repository open source! You can find it here: https://github.com/fastruby/audit

About Audit

Audit Tool OmbuLabs

Audit is a UI representation of bundler-audit, made for those who want to find out if there are vulnerabilities in their Gemfiles, without having to install any Ruby gem. With this tool you can also save the URL of the generated report to easily share it with someone else, or you can even download it as a PDF.

Audit Tool FastRuby

Open Source

Contributing to OSS and building open source projects are a very important…

Code with Jason 

114 - 7 Years at GitHub with John Nunemaker

In this episode, John Nunemaker and I discuss what it's like to work at GitHub for seven years, and how Microsoft's acquisition of GitHub impacted John's job and career.

Rails Performance Audit and Tuning Consultant for Hire 

Using Dynamic Config Variables in Ruby on Rails Apps

Config variables should never be embedded directly in the codebase. It is a common practice to extract them into a separate configuration layer. A standard approach for Ruby on Rails apps is to use static ENV variables that can only be changed via a release process. In this blog post, I’ll describe the use cases for using dynamic config variables that can be modified on the fly. I’ll also share a simple way to start using them in your app without including additional gem dependencies.

Dynamic vs. static configuration

It is perfectly OK to use static ENV variables for storing values that are not likely to change, i.e., database connection URL, API keys, etc. For the development…

The RubyMine Blog : The Ruby on Rails IDE | JetBrains Blog 

RubyMine 2021.3 EAP2: Initial Support for Sorbet, Improved Debugger, and More

The second EAP build of 2021.3 is out! We encourage you to give it a try and let us know what you think. Here are the highlights:

Initial support for Sorbet

RubyMine now recognizes type Sorbet type signatures, including ones from .rbi files.

This means that type mismatch inspections for method arguments and return values can now work based on Sorbet:

Sorbet: mismatched argument warning

Currently only Mismatched argument type and Mismatched return type inspections are supported. Severity of these inspections is set to “Warning” by default. You can change it in Preferences / Settings | Editor | Inspections…

Sorbet: setup inspections severity

You can navigate…

Martian Chronicles, Evil Martians’ team blog 

Pro becomes smart: imgproxy Pro engages machine learning

Authors: Sergey Alexandrovich, Senior Backend Developer at Evil Martians and Travis Turner, Tech Editor at Evil Martians

With the release of the third version of imgproxy Pro, we’ve announced an Early Access program to get 3.0 for free, and some new features coming from the in-demand field of machine learning–including object-oriented crop gravity and auto-quality by SSIM. Beyond this, we’re also adding customized pipelines, color palette processing, fallback images, and more convenient administration features.

Smart features

Object-oriented crop gravity

We’ve wanted it for so long, and it’s finally happening—we’re bringing machine learning (ML) to imgproxy Pro. To be more precise,…

Long Live Ruby 

Enum in Rails explained

Enum is a shortcut for the enumerated term, which means a set of named values in computer programming. When it comes to Rails, we often mean statuses when we are talking about the set of named values. For example, we can have the user in the application that can be either active or deleted. In addition, we can have an article that can be draft, published, or archived. Rails make it easy to use enums and save us a lot of time by providing magic methods to make our lives easier. This article is a perfect starting point for someone unfamiliar with Rails enums yet and a perfect checklist for developers who work with such structures daily.
Saeloun Blog 

Rails 7 adds ActiveRecord::QueryMethods#in_order_of to return query results in a particular sequence

When working with ActiveRecord in Rails, we sometimes expect the query results in a particular sequence/order.

Let’s say we have a Rails application for Book readers, where they keep track of the books read, currently reading and the ones which they want to read.

A simple solution to build the above application is to create a UserBook model. The model will have three columns book_id, user_id, and status. status column can take any of these three distinct values read, currently_reading and to_read.

Before

To display user books in the order of to_read, currently_reading and read we might implement below code:

user = User.first

// using Arel
result = user.user_books.
           order(
Test Double Blog 

Breaking Down The Work: Product vs. Consulting

Take a look back at your tech career so far. Have you ever broken down the exact sort of work you were doing? I don’t mean “writing code” versus “finding the Zoom buttons”—I mean who was gaining value from your work?
The Bike Shed 

311: Marketing Matters

Longtime listener and friend of the show, Gio Lodi, released a book y'all should check out and Chris and Steph ruminate on a listener question about tension around marketing in open-source.

Transcript:

CHRIS: Our golden roads.

STEPH: All right. I am also golden.

CHRIS: [vocalization]

STEPH: Oh, I haven't listened to that episode where I just broke out in song in the middle. Oh, you're about to add the [vocalization] [chuckles].

CHRIS: I don't know why, though. Oh, golden roads, Golden Arches.

STEPH: Golden Arches, yeah.

CHRIS: Man, I did not…

Giant Robots Smashing Into Other Giant Robots 

Rubocop: Custom Cops for Custom Needs

I’m working on a project that heavily relies on feature flags. Whenever we add a new feature or fix a bug, we add a flag for it. Here’s how that looks.

We list our flags in a YAML file:

# config/feature_flags.yml
two_factor_authentication: "Enabled 2-factor auth for all users"
fix_1234: "Check for nils on User#can_vote?"
# ...

And we use them in our code:

class User
  def can_vote?
    if Feature.enabled?(:fix_1234)
      age.present? && age >= 16
    else
      age >= 16
    end
  end
end

This is nice because we can toggle the flags in production and fix bugs or have different features available for different clients.

Cleaning up flags

If flags refer to bugfixes (like the…

Petr Hlavicka 

Fun with Rails Enums and PORO

I really like enums. They can be really powerful if they are used wisely. Let’s see what we can do with them in a multilingual Rails app with a little help from PORO (Plain Old Ruby Object).
GoRails Screencasts 

How to use ESBuild in Rails with JSBundling

JSBundling provides a flexible way of using different Javascript bundlers like ESBuild. It strikes a great balance between the asset pipeline and webpacker. Plus, Esbuild can bundle your Javascript lightning fast.
Engine Yard Blog 

Sending iOS Push Notifications via APNs

User engagement is of the highest importance in today's world, no matter what you sell or offer to your clients. And mobile phone notifications play the masterstroke in this aspect. By regular interactions with your clients through push notifications, it is possible to release timely updates and stay connected with them. So, let us discuss setting up an Apple push notification service (APN) with a Node.js application today.

Drifting Ruby Screencasts 

Error Tracking from Scratch

In this episode, we look at creating a middleware to track errors to publish to another error "from scratch" error monitoring application.
Honeybadger Developer Blog 

ActiveSupport's #descendants Method: A Deep Dive

Rails adds many things to Ruby's built-in objects. This is what some call a "dialect" of Ruby and is what allows Rails developers to write lines like 1.day.ago.

Most of these extra methods live in ActiveSupport. Today, we're going to look at perhaps a lesser-known method that ActiveSupport adds directly to Class: descendants. This method returns all the subclasses of the called class. For example, ApplicationRecord.descendants will return the classes in your app that inherit from it (e.g., all the models in your application). In this article, we'll take a look at how it works, why you might want to use it, and how it augments Ruby's built-in inheritance-related methods.

Inheritance in…

Andy Croll 

Use Sidekiq Directly, Not Through Active Job

If you build a web application you should minimize the amount of time spent responding to every user; a fast website means a happy user. One way of doing that is to run long-running, parallelisable, or potentially slow, work asynchronously outside of the immediate web request. This might be sending emails, scheduled cleanups, long running calculations, or anything that uses an external API.

Active Job is the recommended way of enqueuing and running background work in Rails. It provides a wrapper around a bunch of different adapter implementations of the concept. Each implementation utilises a different underlying technology and has its own pros and cons. Most of the implementations existed…

Julia Evans 

All my zines are now available in print!

Hello! In June I announced that I was releasing 4 zines in print and promised “more zines coming soon”. “Soon” has arrived! You can get any zine you want in print now!

I’m doing this now so that you can get zines in the mail in time for Christmas, or any other end-of-year holiday you celebrate :)

you can preorder zines today!

First the basic facts!

  • you can preorder zines as of today
  • the preorder deadline is October 12
  • zines will ship around November 5
  • you’ll get them in time for Christmas
  • more logistical details in the Preorders FAQ

Here’s the link to get them:


Here are a few more notes about how the print zines work – they’re mostly the same as last time

Ruby Weekly 

Let's get YJIT into MRI

#​572 — September 30, 2021

Read on the Web

Ruby Weekly

Proposal to Merge YJIT Into CRuby / MRI — YJIT is a just-in-time compiler used by teams at Shopify and GitHub offering decent benchmark gains over vanilla CRuby. Its background was explained in this post back in June. This proposal is to merge it now to start getting core team feedback and prepare for an eventual 3.1 or 3.2 release, and Matz has already given the process his thumbs up.

Ruby Issue Tracking

Stimulus 3 + Turbo 7 = Hotwire 1.0 — DHH formally announces Hotwire 1.0, calling it the “ideal stack for front-end development” since it powers HEY,…

Blog of WJWH 

Stupid tricks with io_uring: a server that does zero syscalls per request

In which I (ab)use some of the more obscure functionality of io_uring to make a simple server that does not do any system calls while handling connnections, as measured with strace.
Hanami Mastery newest episodes! 

#9 Integrate Hanami 2.0 with your Database using ROM

Every application needs persistence. Saving records in a database is just a must. Here is how you can do it in Hanami applications!
Honeybadger Developer Blog 

Python News Brief (Q3 2021)

Honeybadger's quarterly briefings keep you up to date on the most important developments in your programming communities. We curate the news so you can spend more time focusing on what's really important.

  • Events: Conferences and meetups. Upcoming and recently completed.
  • Security: Recent vulnerability reports
  • Projects: News about major community projects
  • Trending Topics: Summaries of the big topics everyone's talking about
  • Standout Content: Content that didn't fit in other sections, but that was too cool to leave out.

Events

EuroPython 2021 on Jul 26 - Aug 1 (online).

The largest Python Conference in Europe.

  • Aug 2: We got reports of some attendees of EuroPython 2021 that a company…

Passenger - Phusion Blog 

Passenger 6.0.11

Passenger 6.0.11

Version 6.0.11 of the Passenger application server has been released. This release fixes compatibility with old versions of GCC, as well as CentOS Stream.

Passenger 6 introduced Generic Language Support, or: the ability to support any and all arbitrary apps.

Updates & improvements

  • Fix compilation on GCC 4.4, fixes a regression in 6.0.8 where Passenger would no longer compiler without a C++11 compiler.

  • [MacOS] Additionally look for PCRE in the new location that Homebrew has split it's packages into.

  • Updated various library versions used in precompiled binaries (used for e.g. gem installs):

    • ccache: 4.3 → 4.4.1
    • cmake: 3.20.5 → 3.21.2
    • curl: 7.77.0 → 7.78.0
    • git: 2.32.0 → 2.33.0
    • gnupg:…

CentOS Stream

CentOS Stream has a new version string format, which needed support added in our build scripts. Contributed by Taketo Takashima. Closes GH-2377.

Installing 6.0.11

Please see the installation guide for advice on…