Gnarly Learnings from April
Published: 2021-04-30 23:04:41

We love reading, watching, and listening to constantly update our skills and learn new perspectives. Here are some of the exciting pieces we learned from this month.

## [How to Build a Web App with and without Rails Libraries](https://shopify.engineering/building-web-app-ruby-rails)

There's a lot we take for granted when writing an application using Rails. Revisit some of these core principles for building a web application in this detailed explainer.

## [Use console.log() like a pro](https://markodenic.com/use-console-log-like-a-pro/)

Turns out that your browser's `console` is a lot more flexible than it might appear at first blush. When debugging your code, you can make your output easily browsable with timers, memory tracking, and deep object introspection. Much more convenient than `console.log("Here!")` all over the place.

## [Using the Switch(true) Pattern in JavaScript](https://seanbarry.dev/posts/switch-true-pattern)

By leveraging a switch statement checking against the boolean `true`, we can avoid the trap of noisy endless `if`s and make our various states more readable.

## [Rails 6.1 adds delegated_type to ActiveRecord](https://bigbinary.com/blog/rails-6-1-adds-delegated-type-to-active-record)

A `delegated_type` provides a new option to model shared data and behavior. It particularly excel over Single Table Inheritance in situations where the different child models may have many different model-specific attributes. In Single Table Inheritance, this would mean a lot of columns in our database that are only used for one of the children - and null for everything else. Not so with `delegated_type`!

## [Using Hotwire Turbo in Rails with legacy JavaScript](https://dev.to/nejremeslnici/using-hotwire-turbo-in-rails-with-legacy-javascript-17g1)

With so many examples of [Hotwire](https://hotwire.dev/) showing how to use it with a shiny new application, you might be wondering if you can still use it in your well-worn, mature application. This article shows a strategy for selectively using Hotwire functionality while maintaining your existing functionality.

## [Maximize your mentorship: establish, absorb, and connect](https://leaddev.com/mentoring-coaching-feedback/maximize-your-mentorship-establish-absorb-and-connect)

Set the stage with your mentor by providing clear expectations, knowing what questions to ask, and following through on action items. This article (and its companion referenced at the end) can also be helpful for mentors in establishing their relationship with mentees.

## [Argument Cultures and Unregulated Aggression](https://www.kateheddleston.com/blog/argument-cultures-and-unregulated-aggression)

This is a great reminder of checking what behaviors and culture you're cultivating in your team and organization - whether you know it or not.

## [What happens when...](https://github.com/alex/what-happens-when)

There are more times than I care to admit where I contemplate how changes I'm making even work - or how code _ever_ worked to begin with. But...how **do** computers work? This repo goes into explicit detail of what's involved to attempt to reach google.com from your browser.

## [How does the brain interpret computer languages?](https://arstechnica.com/science/2021/03/how-does-the-brain-interpret-computer-languages/)

This is your brain. This is code. This is your brain on code.

## Contributors

- [Kevin Murphy](https://github.com/kevin-j-m)
- [Alex Jarvis](https://github.com/alxjrvs)
- [Jon Yurek](https://github.com/jyurek)

> This post originally published on [The Gnar Company blog](https://blog.thegnar.co/gnarly-learnings-april-2021).

_Learn more about how The Gnar [builds software](https://www.thegnar.com/software-development)._