Having multiple drush versions on a enviroment

Do this on your local or virtual enviroment, depending where do you want to have it

mkdir ~/drush10
cd ~/drush10
composer require "drush/drush:10.*"

this will install drush10 to that directory and now you just need to add alias

SSH keys setup on Mac OsX

To add multiple ssh keys to your system, you need to edit config file ~/.ssh/config and put lines like below, this will also help store password for your ssh in keychain and use agent forwarding so you can use your keys on virtual machines like vagrant

Useful form snippets for multiple selections

When building forms it is useful to have widgets that select multiple values for you and enhance UI, if you have large select list I would recommend to use select2 module to make custom form use its widget you should first get an array of elements in a variable, like 

Fastly and other CDN batch error

As Batch is dependent on the order of query string parameters if you are using Fastly or some other CDN they often have "Query String Sort" enabled or it is a good practice to do that, as it will result in more cache hits for you.

Make patch from current diff in module

Want to make a quick patch for changes you made in some contrib module to submit it to d.org ?
Write down this and submit the file

git diff  > my_changes.patch

if you want diff from staged files use

git diff --cached > my_changes.patch

To change paths of the patch use 

Get all methods you can run on fields

To get all method names you can run on any field added to any entity, input this into devel/php

ksm(get_class_methods('\Drupal\Core\Field\FieldItemList'));