Hacky Friday Stuff #1.05.2020. Labor Day edition ⚒
Tags: ruby, rails, fullstack, fridaystuff
Published: 2020-05-01 13:47:45

*Links about web development, product engineering, tools and services from all over the internet.*

[Enough with Service Objects Already](https://avdi.codes/service-objects/)
In this article, Avdi Grim discovers all major issues with a "Service Object" pattern widely used in a Ruby Community providing a set of examples and the right way to deal with a business logic complexity.

[Remix](https://remix.run/)
Finally, a killer React framework from the creators of React Router.

[A Few of My Favorite Things](https://blog.testdouble.com/posts/2020-04-07-favorite-things/)
A long list of great command-line tools collected by Test Double.

[Seniorless — 5 Reasons You Should Hire More Juniors](https://medium.com/@gabrielgrinberg/seniorless-5-reasons-you-should-hire-more-juniors-cb6fdfd03f63)
It’s no secret that all companies are mostly looking to hire super-senior developers. Ones that can tackle a large range of tasks with full independence. However, finding those developers is hard, time-consuming, and, eventually, might even do more harm than good for the team. Hiring junior developers have many benefits and are very sustainable. 

[Should I Really Use Monads](https://www.morozov.is/2020/04/01/should-i-really-use-monads.html)
In this post, Igor Morozov talks about monads from a more practical and emotional perspective. He briefly explains what a monad really is, why is it valuable, and some of the common issues with it. It’s about people and technology, so don’t expect to see any code.

### Articles and tutorials
[Anyway Config: Keep your Ruby configuration sane](https://evilmartians.com/chronicles/anyway-config-keep-your-ruby-configuration-sane)
The configuration is one of the most critical markers of codebase health: the more your application grows and matures, the harder it is to deal with API keys, .env files, and other settings. This article shows how to escape from the ENV Hell in mature Ruby/Rails projects.

[Shell productivity tips and tricks](https://blog.balthazar-rouberol.com/shell-productivity-tips-and-tricks)
If you spend a good chunk of your day repeatedly hitting the left and right arrow keys to navigate in long commands or correct typos, or hitting the up or down arrow keys to navigate your command history, this article should help you get more done quicker. It covers some shell features you can leverage to make your shell do more of the work for you.

[Why you (probably) don't need PostGIS](https://blog.rebased.pl/2020/04/07/why-you-probably-dont-need-postgis.html)
PostGIS is a fantastic, battle-tested suite of GIS extensions for Postgres. It handles most aspects of it and is widely used, for example in OpenStreetMap’s Mapnik. But for your project, it’s most likely overkill. In a Q and A fashion, let’s discuss the reasons for (not) using it.

[Speed up your Docker builds with –cache-from](https://lipanski.com/posts/speed-up-your-docker-builds-with-cache-from)
Using the Docker cache efficiently can result in significantly faster build times. In some environments though, like CI/CD systems, individual builds happen independently of each other and the build cache is never preserved. Every build starts from zero which can be slow and wasteful. This article will try to provide some solutions for these cases.

[Implementing Skeleton Screens in React](https://www.smashingmagazine.com/2020/04/skeleton-screens-react/)
In this tutorial, you’ll learn what a skeleton screen UI is and some types of skeleton screen libraries, along with their pros and cons. We’ll build a YouTube-like skeleton screen UI using React Loading Skeleton. Then, you can experiment on your own with the skeleton screen React package of your choice.

[How to build bulletproof react components](https://dev.to/jsco/how-to-build-bulletproof-react-components-mo7)
React is a declarative framework. This means instead of describing what you need to change to get to the next state (which would be imperative), you just describe what the dom looks like for each possible state and let react figure out how to transition between the states.
This blog post dives deep into the declarative mindset and how you can use it to build unbreakable components.

### Tools
[Quicktype](https://github.com/quicktype/quicktype)
Generate strongly-typed models and serializers from JSON, JSON Schema, and GraphQL queries, making it a breeze to work with JSON type-safely in any programming language. Take a look for a more detailed [introduction](http://blog.quicktype.io/first-look/).

[Carbon](https://carbon.now.sh/)
Create and share beautiful images of your source code.
Start typing or drop a file into the text area to get started.

[Vizzy](https://github.com/Workday/vizzy)
Vizzy is a powerful Ruby on Rails web server that facilitates Visual Automation, a continuous integration testing strategy that aims to prevent visual regressions. It does this by performing pixel by pixel comparisons of screenshots captured during test runs. In doing so, it tests application data as well as application views.

[Action Cable command-line client](https://github.com/palkan/acli)
ACLI is an Action Cable command-line interface written in mRuby.
It's a standalone binary which can be used:
* In development for playing with Action Cable channels (instead of struggling with browsers)
* For monitoring and benchmarking.

[Bridgetown](https://www.bridgetownrb.com/)
A Webpack-aware, Ruby-powered static site generator for the modern Jamstack era.

[Husky](https://github.com/typicode/husky)
Git hooks made easy. Woof!

### Services
[Pulumi](https://www.pulumi.com/)
Modern infrastructure as a code. 

### Gems and libraries
[Sequel::ActiveRecordConnection](https://github.com/janko/sequel-activerecord_connection)
This is an extension for Sequel that allows it to reuse an existing ActiveRecord connection for database interaction. It supports postgresql, mysql2 and sqlite3 adapters.
This can be useful if you're using a library that uses Sequel for database interaction (e.g. Rodauth), but you want to avoid creating a separate database connection. Or if you're transitioning from ActiveRecord to Sequel, and want the database connection to be shared.

### Podcasts
[Made with Grit | 20: Remote collaboration and communication](https://listen.madewithgrit.fm/episodes/20-remote-collaboration-and-communication)
Landon and Kyle talk about the strategies and (many, many) tools they've tried (and the ones they actually use) to collaborate as a distributed team.

[Ruby Rogues | RR 457: Upgrading to Rails 6](https://devchat.tv/ruby-rogues/rr-457-upgrading-to-rails-6/)
Dave has been upgrading some of his Rails apps. Chuck has gone through several upgrades in his past work and is working on some apps that need the upgrade. Listen to 2 veteran Rails developers talk through the issues of an upgrade from different versions of Rails to the latest version.

[Rails with Jason | 042 - Docker and Kubernetes with Kelsey Hightower](https://railswithjason.simplecast.fm/kelsey-hightower)
In this episode, Jason asks Kelsey all kinds of noob questions such as "Under what scenarios should I use Docker?", "How does Kubernetes relate to Docker?" and "Can I borrow your toaster?" This is a great one for people who still have a hard time wrapping their heads around Docker and K8s.

[Full Stack Radio | 138: Tom Preston-Werner - Building Full-Stack JS Apps with Redwood.js](http://www.fullstackradio.com/138)
In this episode, Adam is talking to Tom Preston-Werner about Redwood.js, a new full-stack JavaScript framework for building edge-ready web applications.

### Videos
[Tailwind CSS Tips, Tricks & Best Practices](https://www.youtube.com/watch?v=nqNIy8HkEQ8&feature=youtu.be)
Sam Selikoff teaches Tailwind CSS.