Skip to content

Instantly share code, notes, and snippets.

View alanpeabody's full-sized avatar

Alan Peabody alanpeabody

View GitHub Profile
@alanpeabody
alanpeabody / dynamo diff
Last active December 14, 2015 04:19
Dynamo validate path
diff --git a/lib/mix/tasks/dynamo.ex b/lib/mix/tasks/dynamo.ex [22/1920]
index b5a268d..8f41e37 100644
--- a/lib/mix/tasks/dynamo.ex
+++ b/lib/mix/tasks/dynamo.ex
@@ -40,9 +40,9 @@ defmodule Mix.Tasks.Dynamo do
[] ->
raise Mix.Error, message: "expected PATH to be given, please use `mix dynamo PATH`"
[path|_] ->
+ path = validate_path(path)
name = opts[:app] || Path.basename(Path.expand(path))
@alanpeabody
alanpeabody / elixir.md
Last active December 20, 2015 20:29
Code Camp 2013 Proposal

An Elixir for the Web's Future

The web has evolved; has your tech stack?

The evolution of the web has been fueled by hacks, workarounds, and abuses. This evolution has spawned many tools and techniques along the way. This talk will reflect on the web's history and what it means for the web's future. Armed with this knowledge we will examine the functional programming language Elixir and how its philosophy so perfectly fits the future of the web. The technical part of the talk will examine the architecture and code of an example JavaScript (Backbone?) application using websockets for real time communication and collaboration with an Elixir backend.

Notes:

  • Discuss history and future of web:
@alanpeabody
alanpeabody / timer.rb
Last active December 22, 2015 20:08
Time how long something take in ruby.
def time
start = Time.now
yield
stop = Time.now
stop - start
end
# Usage:
time { method_to_test }
@alanpeabody
alanpeabody / ls
Created January 13, 2014 02:49
npm ls
Project@0.0.1 /project_path/
├─┬ browserify@3.19.1
│ ├── assert@1.1.0
│ ├─┬ browser-pack@2.0.1
│ │ ├─┬ combine-source-map@0.3.0
│ │ │ ├── convert-source-map@0.3.3
│ │ │ ├── inline-source-map@0.3.0
│ │ │ └─┬ source-map@0.1.31
│ │ │ └── amdefine@0.1.0

Keybase proof

I hereby claim:

  • I am alanpeabody on github.
  • I am alanpeabody (https://keybase.io/alanpeabody) on keybase.
  • I have a public key ASBfa3-DEWUJUKe4a5LeMKEeNJ3dyBwn93SXcewQPoDMpQo

To claim this, I am signing this object:

@alanpeabody
alanpeabody / silly_long_elixir_function_pattern_match.ex
Created December 3, 2014 01:36
silly_long_elixir_function_pattern_match.ex
defmodule Post do
def create(%{title: t, body: b, author_id: a} = atts) when is_binary(t) and is_binary(b) and is_binary(a) do
{:ok, Dict.merge(atts, :id, 1234)}
end
def create(_atts) do
{:error, %{error: "Invalid attributes"}}
end
end
@alanpeabody
alanpeabody / output
Created September 3, 2016 14:36
mix dialyzer
Unknown functions:
'Elixir.JaSerializer.Formatter.Function':'__impl__'/1
'Elixir.JaSerializer.Formatter.Map':'__impl__'/1
'Elixir.JaSerializer.Formatter.PID':'__impl__'/1
'Elixir.JaSerializer.Formatter.Port':'__impl__'/1
'Elixir.JaSerializer.Formatter.Reference':'__impl__'/1
'Elixir.JaSerializer.Formatter.Tuple':'__impl__'/1
@alanpeabody
alanpeabody / local_storage.ex
Last active July 16, 2017 15:30
JS's LocalStorage in Elixir - A super simple intro to GenServer for js devs
defmodule LocalStorage do
use GenServer
# API
def start_link do
GenServer.start_link(__MODULE__, %{}, name: __MODULE__)
end
def set_item(key, val) do
@alanpeabody
alanpeabody / A_README.md
Created July 17, 2016 15:33
Running a elixir dependency's migrations from parent app (in parent repo)

Goal

To pull in dependencies and have them run their migrations in the parent apps' repo.

Setup

MyChild - A mix application with ecto migrations, schemas, etc. MyParent - A phoenix application that wants to leverage the child application.

In this case MyParent has added MyChild as a mix dependency via github, eg:

@alanpeabody
alanpeabody / dev_code_reload_plug.ex
Created June 30, 2015 14:42
dev_code_reload_plug.ex
# Reload/recompile code before each request in development only using Plug & Mix.
# Assumes MyApp.Router is a plug that handles actual routing.
def MyApp.Main do
use Plug.Builder
plug :reload
plug :dispatch
def reload(conn, _opts) do
if Mix.env == :dev, do: Mix.Tasks.Compile.Elixir.run(["--ignore-module-conflict"])