Skip to content

Instantly share code, notes, and snippets.


Thiago Araújo Silva thiagoa

  • thoughtbot
  • Natal / RN - Brazil
View GitHub Profile
thiagoa /
Created Nov 3, 2021 — forked from 2E0PGS/
Fix Ubuntu and other Linux slow/hanging file copying via USB.

If your running a x64 bit Ubuntu or other Linux and find USB transfers hang at the end apply this fix:

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

I suggest you edit your /etc/rc.local file to make this change persistant across reboots.

sudo nano /etc/rc.local

View .pryrc
# Using these pry gems -- copy to your Gemfile
# group :development, :test do
# gem 'pry', '>= 0.14.1' # Console with powerful introspection capabilities
# # Need to use master of pry-byebug to use latest pry version
# gem 'pry-byebug', github: 'deivid-rodriguez/pry-byebug' # Integrates pry with byebug
# gem 'pry-doc' # Provide MRI Core documentation
# gem 'pry-rails' # Causes rails console to open pry. `DISABLE_PRY_RAILS=1 rails c` can still open with IRB
# gem 'pry-rescue' # Start a pry session whenever something goes wrong.
# gem 'pry-theme' # An easy way to customize Pry colors via theme files
View unmix.clj
;; - unmix1 is my go-to solution
;; - unmix2 is 21% faster than unmix1
;; - unmix3 is 212% faster than unmix1
;; - unmix3 is a classic car-cdr lispy solution
;; Benchmarked with criterium
(defn unmix1 [s]
(reduce (fn [memo [a b]] (str memo b a))
thiagoa / index.txt
Created Dec 30, 2019 — forked from gus/index.txt
Ruby/Clojure analogs
View index.txt
For each Ruby module/class, we have Ruby methods on the left and the equivalent
Clojure functions and/or relevant notes are on the right.
For clojure functions, symbols indicate existing method definitions, in the
clojure namespace if none is explicitly given. clojure.contrib.*/* functions can
be obtained from,
ruby-to-clojure.*/* functions can be obtained from the source files in this
If no method symbol is given, we use the following notation:
View aws-instance-private-dns.lisp
#!/usr/local/bin/sbcl --script
(load (merge-pathnames ".sbclrc" (user-homedir-pathname)))
(ql:quickload "cl-json" :silent t)
(require "inferior-shell")
(defparameter *ssh-user* "ec2-user")
(defparameter *ssh-key-path* "~/.ssh/us-east-1-platform-key.pem")
View elixir_binary_search.ex
defmodule BinarySearch do
def find(item, _left, [i | _right]) when i == item, do: true
def find(item, _left, [i | right]) when i < item, do: find(item, right)
def find(item, left, [i | _right]) when i > item, do: find(item, left)
def find(_item, _left, []), do: false
def find(item, list) do
{left, right} = split(list)
find(item, left, right)
thiagoa / align.el
Created Jul 6, 2018 — forked from WaYdotNET/align.el
Align function emacs
View align.el
;; Align command !!!
;; from
;; another information:
;; use rx function
(defun align-to-colon (begin end)
"Align region to colon (:) signs"
(interactive "r")
View h_struct.rb
class HStruct
def*members, defaults: {}, &block)
invalid_defaults = defaults.keys - members
fail "Invalid defaults #{invalid_defaults}" if invalid_defaults.any?
klass = do
@members = members
@defaults = defaults
class << self
View coercible.rb
module Coercible
module Types
BOOL_MAP = { 'true' => true, 'false' => false, true => true, false => false }
BOOL = proc { |v| BOOL_MAP[v] }
INTEGER = proc { |v| v.to_i }
ARRAY = proc { |v, rule| Array(v).map(&ARRAY_MAP[rule[:of]]) }
ARRAY_MAP = { Integer => :to_i, String => :to_s, nil => proc { |v| v } }
View altImmutableTransitiveDependencies.js
const test = require('tape');
function resolver(deps) {
function directDeps(className) {
return deps[className] || [];
function transitiveDeps(className) {
return directDeps(className).reduce((set, className) => {
[className, ...transitiveDeps(className)].forEach((v) => set.add(v));