Skip to content

Instantly share code, notes, and snippets.

View jcelliott's full-sized avatar

Joshua C Elliott jcelliott

View GitHub Profile
@jcelliott
jcelliott / deps.info.ex
Last active October 11, 2016 16:41
Mix task to list information about all dependencies
defmodule Mix.Tasks.Deps.Info do
use Mix.Task
@moduledoc """
Prints information for every dependency from Hex
"""
def run(_args) do
Mix.Project.get!
Mix.Dep.loaded([env: :prod])
@jcelliott
jcelliott / proxy.go
Last active September 6, 2017 06:58
Reverse proxy using Go
package main
import (
"log"
"net/http"
"net/http/httputil"
"net/url"
)
func main() {

Keybase proof

I hereby claim:

  • I am jcelliott on github.
  • I am jelliott (https://keybase.io/jelliott) on keybase.
  • I have a public key ASBLWJywrax6mgI8RZlPvHnBaJ97YJdvRAFOFq1tv0Fcogo

To claim this, I am signing this object:

@jcelliott
jcelliott / flatten.exs
Last active August 26, 2021 16:21
Recursively flatten a list in Elixir
defmodule Flatten do
@doc """
Flattens a list by recursively flattening the head and tail of the list
"""
def flatten([head | tail]), do: flatten(head) ++ flatten(tail)
def flatten([]), do: []
def flatten(element), do: [element]
end
@jcelliott
jcelliott / railway.ex
Last active August 18, 2023 14:32
Small Elixir implementation of Railway Oriented Programming
defmodule Railway do
@moduledoc """
Railway implements the ideas from this blog post: https://zohaib.me/railway-programming-pattern-in-elixir/
It is essentially an implementation of the 'Either' monad constrained to the Elixir :ok/:error
result tuple convention. It can replace many straightforward uses of a 'with' statement.
Use it like this:
```
import Railway
value