Hacky Friday Stuff #31.01.2020
Tags: ruby, rails, tdd, fridaystuff
Published: 2020-01-31 09:26:19

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

[MIR: A lightweight JIT compiler project](https://developers.redhat.com/blog/2020/01/20/mir-a-lightweight-jit-compiler-project/)
For the past three years, Vladimir Makarov has been participating in adding just-in-time compilation (JIT) to CRuby. Now, CRuby has the method-based just-in-time compiler (MJIT), which improves performance for non-input/output-bound programs.
CRuby MJIT utilizes GCC or LLVM, but what is unique about this JIT?

[Modern Ruby Serializers](https://vasilakisfil.social/blog/2020/01/20/modern-ruby-serializers/)
A great overview of serializers in Ruby from a historical perspective and the long road to the [SimpleAMS](https://github.com/vasilakisfil/SimpleAMS).

[Optimization Techniques by Benchmark Winners](https://juanitofatas.com/optimization_techniques_by_benchmark_winners)
This post is based on Jeremy Evans‘s Optimization Techniques Used by the Benchmark Winners presentation. Slides | YouTube at Ruby Kaigi 2019. It‘s better to watch his fabulous presentation, but you can come back here for written references. These techniques coming from maintaining Sequel and Roda. These two gems have always been 0 issues. It‘s probably the best maintained gems. Sequel and Roda are the leader for Ruby in TechEmpower benchmark results. Let‘s see what lessons can we learn to optimize Ruby.

[From Single drop-down to Multiple check-boxes](https://railsguides.net/from-single-dd-to-multiple-checkboxes/)
In this article you will:
* learn how to maintain a Rails application in production with zero downtime
* see how to make necessary changes on the current DB structure and deliver new features
* figure out how to ship new features to production without outages, bugs, and downtimes
* feel what’s Continuous Delivery by a case that happened with a Rails application in production.

[Raft 5: Taking Stock](https://chelseatroy.com/2020/01/24/raft-5-taking-stock/amp/)
> The dirty secret is, TDD isn’t for completely novel problems. We need some information first about the risks and responsibilities inherent to our system.

[Continuous deployment Ruby application to Minikube with Google's Skaffold](https://dev.to/amplifr/continuous-deployment-to-minikube-with-skaffold-18ib)
Kubernetes has made it very easy to deploy and scale applications to the cloud than ever. Still, the development process has not evolved at the same speed.
In this article, we will see how to set up continuous deployment of simple Ruby application to Minikube to reduce the development cycle time using the [Google's Skaffold tool](https://skaffold.dev/).


### Tools and libraries

[ruby-warning](https://github.com/jeremyevans/ruby-warning)
ruby-warning adds custom processing for warnings, including the ability to ignore specific warning messages, ignore warnings in specific files/directories, deduplicate warnings, and add custom handling for all warnings in specific files/directories.

[commander](https://github.com/commander-rb/commander)
The complete solution for Ruby command-line executables. Commander bridges the gap between other terminal related libraries you know and love (OptionParser, HighLine), while providing many new features, and an elegant API.

[16 New ML Gems for Ruby](https://ankane.org/new-ml-gems)
> Over the next 5 months, I ended up releasing 16 libraries and learned a lot along the way. I wanted to share some of that knowledge and introduce some of the libraries you can now use in Ruby.

[Reverse Coverage: Find which tests execute which lines of code](https://nebulab.it/blog/reverse-coverage/)
Have you ever wondered what tests cover a specific part of a project?
Occasionally it could be useful to discover how is tested/executed/documented (in the way of tests as Living Documentation) a line (or set of lines) of an application.

### Podcasts

[Full Stack Radio | 133: Sam Selikoff - Building Production-Ready SPAs Fast with Mirage.js](http://www.fullstackradio.com/133)
In this episode, Adam talks to Sam Selikoff about [Mirage.js](https://miragejs.com/) and how to use it to build production-ready front-end applications, even if your back-end API isn't ready yet.

### Videos

[dry-rb in five: 005 dry-validation (predicates & custom types)](https://www.youtube.com/watch?v=xGEMQyHNOt8&feature=youtu.be)
In today's episode we're looking at predicates as a tool to define advanced expectations for incoming data. We can also abstract common set of expectations with our own custom types such as Email, and Age, to use in dry-validation contracts.
Custom types documentation is available at [https://dry-rb.org/gems/dry-types](https://dry-rb.org/gems/dry-types)