Hacky Friday Stuff #25.10.2019
Tags: ruby, rails, javascript, fridaystuff
Published: 2019-10-25 08:03:35

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

[Ruby 2.7.0-preview2 Released](https://www.ruby-lang.org/en/news/2019/10/22/ruby-2-7-0-preview2-released/)
A preview version is released to gather feedback for the final release planned to release on December. It introduces a number of new features and performance improvements, most notably: Compaction GC, Pattern Matching, REPL improvement, Separation of positional and keyword arguments.

[Rails 6 Adds delete_by and destroy_by methods](https://blog.saeloun.com/2019/10/15/rails-6-delete-by-destroy-by.html)
Rails has provided methods like find_by, find_or_initialize_by, and find_or_create_by to fetch, initialize, and create record respectivley, based on the passed conditions.

[Please Don't Write Clever Code](https://www.oop.wtf/dont-write-clever-code)
Please don’t write “clever” code because the “dumb” code is usually better in every way.

[Remote Mob Programming](https://www.remotemobprogramming.org/)
Remote Mob Programming combines two ways of working: Mob Programming and working as a distributed team. Woody Zuill describes Mob Programming as creating the “same thing, at the same time, in the same space, and on the same computer”. Working in the same space clashes with working as a distributed team at first glance, but actually, it goes together really well. With Remote Mob Programming, we collaborate closely in the same virtual space. But Remote Mob Programming is more than that.

### Tutorials & Articles

[JAMStack for Indie Hackers](https://www.indiehackers.com/article/jamstack-for-indie-hackers-b07f7a943d)
JAMstack is a modern web architecture emphasizing JavaScript, APIs, and pre-rendered Markup, served without web servers.

[How to Write Fast Code in Ruby on Rails](https://engineering.shopify.com/blogs/engineering/write-fast-code-ruby-rails)
Part of Shopify’s success with Ruby on Rails is an emphasis on writing fast code. But, how do you really write fast code? Largely, that’s context sensitive to the problem you’re trying to solve. Let’s talk about a few ways to start writing faster code in Active Record, Rails, and Ruby.

[Keeping OSS documentation in check with docsify, Lefthook, and friends](https://evilmartians.com/chronicles/keeping-oss-documentation-in-check-with-docsify-lefthook-and-friends)
See how Evil Martians generate documentation for their OSS projects automatically and keep it up to date with no hassle.

[A basic decision tree in Ruby](https://drivy.engineering/basic-decision-tree-in-ruby/)
Recently, we did a rework of the user’s profile completion flow in our Drivy web and mobile applications. We went from a basic single-screen form to a multi-steps one. The idea was to simplify the flow and ask only for the information needed depending on the user’s answers. As we had to deal with multiple possible paths, we decided to work on a little decision tree algorithm.

[PDF Comparison in Pure Ruby](https://medium.com/tarkalabs/pdf-comparison-in-pure-ruby-aba8a6a8f40b)

[How MJIT Generates C from Ruby. Deep Dive](http://engineering.appfolio.com/appfolio-engineering/2019/7/19/how-mjit-generates-c-from-ruby-a-deep-dive)
You probably already know the basics of JIT in Ruby. CRuby’s JIT implementation, called MJIT, is a really interesting beast.
But what does the C code actually look like? How is it generated? What are all the specifics?

### Javascript

[Announcing TypeScript 3.7 Beta](https://devblogs.microsoft.com/typescript/announcing-typescript-3-7-beta/)
We’re pleased to announce TypeScript 3.7 Beta, a feature-complete version of TypeScript 3.7.

[Persistent Layout Patterns in Next.js](https://adamwathan.me/2019/10/17/persistent-layout-patterns-in-nextjs/)
In many modern single-page application frameworks like Next.js and Gatsby, the default experience is re-rendering the entire UI every time you click a link — throwing away that nice feeling of a persistent UI we worked so hard to achieve a decade ago!

[Console.group()](https://developer.mozilla.org/en-US/docs/Web/API/Console/group)
One neat but lesser-known feature of a web console.

### Tools

[Tabnine | Smart Compose for code](https://tabnine.com/)
TabNine uses deep learning to help you write code faster.

[textile | Write, deploy, and scale apps on IPFS](https://textile.io/)
Textile is a set of open source tools that provide a decentralized database, remote storage, user management, and more over the IPFS network.

### Design & Accessibility

[Data Visualization Principles](https://material.io/design/communication/data-visualization.html#)
Data visualization is a form of communication that portrays dense and complex information in graphical form. The resulting visuals are designed to make it easy to compare data and use it to tell a story – both of which can help users in decision making.

[Designing for Accessibility: Contrast Ratio](https://blog.heroku.com/designing-for-accessibility-contrast-ratio)
This is the second post in a two-part series about accessibility.
Color is a key aspect of design but it's clearly not perceived the same way by everyone (color even signifies different things to different cultures). That's why it's important to offer a minimum contrast and not rely exclusively on colors for relaying information or functions.

[Designing Accessible Color Systems](https://stripe.com/blog/accessible-color-systems)
Color contrast is an important aspect of accessibility. Good contrast makes it easier for people with visual impairments to use products, and helps in imperfect conditions like low-light environments or older screens.

### Gems

[Shrine 3.0 Released](https://twin.github.io/shrine-3-0-released/)
Just released version 3.0 of Shrine, a gem for handling file attachments in Ruby applications.

[Dry Logger](https://github.com/dry-rb/dry-logger/)
A new gem from the Dry ecosystem.

### Videos

[Creating a GraphQL Server, Part 1: Building a GraphQL Server with Apollo GraphQL](https://www.youtube.com/watch?v=7R33hGFV4f0)
You’ll learn the basics of GraphQL, how to interact with an existing GraphQL endpoint, how to create your first GraphQL Server, and how to deploy your GraphQL Server to the cloud using Azure!

[RubyC 2019](https://youtu.be/wwQ45w0JfnE)
A list of videos from Kyiv Ruby Conference from 14-15 of September this year.


### Podcasts

[Full Stack Radio | 126: James Long - Building Distributed Local-First JavaScript Applications](http://www.fullstackradio.com/126)
In this episode, Adam talks to James Long (creator of Prettier) about building Actual, a local-first Electron application with no central database that syncs data peer-to-peer.

[Laravel Snippet #15 | Choosing Product Ideas](https://blog.laravel.com/laravel-snippet-15)
Topics: After selling $10,000,000 worth of software, Taylor Otwell begins a mini-series on launching successful software products.