Skip to content

Instantly share code, notes, and snippets.


José Valim josevalim

View GitHub Profile
josevalim / bench.ex
Last active Dec 2, 2020
Mixed maps:intersect_with/3
View bench.ex
small_int_list = Enum.to_list(1..10)
medium_int_list = Enum.to_list(1..1000)
large_int_list = Enum.to_list(1..100_000)
small_other_int_list = Enum.to_list(11..20)
medium_other_int_list = Enum.to_list(1001..2000)
large_other_int_list = Enum.to_list(100_001..200_000)
small_bin_list =, fn _ -> :crypto.strong_rand_bytes(10) end)
medium_bin_list =, fn _ -> :crypto.strong_rand_bytes(10) end)
josevalim / authorize.ex
Last active Apr 29, 2018 — forked from jeremytregunna/authorize.ex
This looks horrible (formatter)
View authorize.ex
defmodule Api.Authorize do
alias Account.Models.User
def board?(board_id, %User{} = user, available_permissions, required_permissions) do
{:ok, board} <- Tracker.Board.find(board_id),
true <- Tracker.OrganizationMembers.user_in_organization?(, board.organization_id),
^required_permissions <-

Keybase proof

I hereby claim:

  • I am josevalim on github.
  • I am josevalim ( on keybase.
  • I have a public key whose fingerprint is E140 099F 114F 4B2A 21FE 2E69 E337 0FF7 D467 E599

To claim this, I am signing this object:

josevalim /
Last active Aug 9, 2022
A 1LOC bash script for re-running tests whenever a lib/ or test/ file changes keeping the same VM instance
# You will need fswatch installed (available in homebrew and friends)
# The command below will run tests and wait until fswatch writes something.
# The --stale flag will only run stale entries, it requires Elixir v1.3.
fswatch lib/ test/ | mix test --stale --listen-on-stdin
$ git clone
$ cd comeonin/
$ git checkout develop
$ mix deps.get
$ mix test
josevalim / mix app.tree
Last active Jul 20, 2018
Sample output of the new "mix app.tree" and "mix deps.tree" tasks in a Phoenix project (using master). The first command shows the applications you will effectively need at runtime in production while "deps.tree" is your whole dependency tree, including compile time, dev and test dependencies.
View mix app.tree
$ mix app.tree
├── elixir
├── phoenix
│ ├── elixir
│ ├── plug
│ │ ├── elixir
│ │ ├── crypto
│ │ └── logger
│ │ └── elixir
josevalim / phoenix showdown rackspace onmetal
Last active Apr 17, 2022 — forked from omnibs/phoenix showdown rackspace onmetal
Phoenix Showdown Comparative Benchmarks @ Rackspace
View phoenix showdown rackspace onmetal

Comparative Benchmark Numbers @ Rackspace

I've taken the benchmarks from Matthew Rothenberg's phoenix-showdown, updated Phoenix to 0.13.1 and ran the tests on the most powerful machines available at Rackspace.


Framework Throughput (req/s) Latency (ms) Consistency (σ ms)
View example.ex
defmodule SomeModule do
def start(host, options) do
# We are assuming SomeSup has been already started somewhere
# (ideally in a supervision tree).
{:ok, child_pid} = SomeSup.attach_to(SomeSup, host, options)
defmodule SomeSup do
use Supervisor
View foo.erl
%% When compiled with: erlc +bin_opt_info foo.erl
%% It prints:
%% foo.erl:13: Warning: NOT OPTIMIZED: compiler limitation: instruction {get_map_elements,
%% {f,3},
%% {x,1},
%% {list,[{atom,state},{x,6}]}} prevents delayed sub binary optimization
View elixir_parser.yrl
grammar expr_list
expr container_expr block_expr access_expr
no_parens_expr no_parens_one_expr no_parens_one_ambig_expr
bracket_expr bracket_at_expr bracket_arg matched_expr unmatched_expr max_expr
op_expr matched_op_expr no_parens_op_expr no_parens_many_expr
comp_op_eol at_op_eol unary_op_eol and_op_eol or_op_eol capture_op_eol
add_op_eol mult_op_eol hat_op_eol two_op_eol pipe_op_eol stab_op_eol
arrow_op_eol match_op_eol when_op_eol in_op_eol in_match_op_eol
type_op_eol rel_op_eol