Skip to content

Instantly share code, notes, and snippets.

@karmajunkie
karmajunkie / epmdless.ex
Last active April 5, 2018 23:39
Implementation of an epmd replacement
# A module containing the function that determines the port number
# based on a node name.
# Taken from https://www.erlang-solutions.com/blog/erlang-and-elixir-distribution-without-epmd.html
defmodule Epmdless do
def dist_port(name) when is_atom(name) do
dist_port Atom.to_string name
end
def dist_port(name) when is_list(name) do
dist_port List.to_string name
defmodule Bling.GraphQL.Schema do
use Absinthe.Schema
def middleware([]=middleware, _field, _object), do: middleware
def middleware(middleware, field, object) do
Bling.GraphQL.ScoutMiddleware.instrument(middleware, field, object)
end
query do
#...
@karmajunkie
karmajunkie / new_relic_plug_absinthe.ex
Last active January 13, 2017 20:04
Gives limited tracing around absinthe calls. Shamelessly adapted from the Phoenix plug in new_relic.ex
defmodule NewRelic.Plug.Absinthe do
@moduledoc """
A plug that instruments Phoenix controllers and records their response times in New Relic.
Inside an instrumented controller's actions, `conn` can be used for further instrumentation with
`NewRelic.Plug.Instrumentation` and `NewRelic.Plug.Repo`.
```
defmodule MyApp.UsersController do
use Phoenix.Controller
Blocktalk = {
Index: {
//with init function: Blocktalk.Index.init();
init: function(){
$(document).ready(function(){
});
}
},
//called directly: Blocktalk.Show()
Show: function(){
@karmajunkie
karmajunkie / gist:3953353
Created October 25, 2012 15:29
So a guy walks into a barbershop...

...And proceeds to sell me 30 tickets to paintball.

No, seriously. That really happened. I was getting my haircut at Roosters last night and a guy walks in selling discounted tickets to Stunt Ranch Paintball. So of course I said "I'll take 30", because I have at least that many people I want to shoot, right?

So now I have to figure out how to get 30 people into playing paintball with me. The tickets don't expire, and they include everything except the paint and CO2. I'm not an avid paintballer, but that sounds like a decent deal to me, since I got them for $2 apiece.

I'm thinking a geeky paintball extravaganza sometime in the near future. Maybe a geek father/son thing, maybe we all dress up like Rebels and Stormtroopers. I dunno, I'm open to suggestions.

@karmajunkie
karmajunkie / gist:3801509
Created September 28, 2012 18:51
In which I make a crude analogy

Watching Jack Danger's GoGaRuCo presentation the following analogy came to mind.

/lib is the asshole of your Rails application. Its fine (and desirable) for stuff to pass through there. But if you don't poop it out into nicely formed little turds we call gems eventually, your application is going to become constipated. Then you get stomachaches.

Don't constipate your app. Eat lots of roughage.

One of the few problems I have with Janus, the vim settings bundle/plugin/whatever you want to call it, is that whenever I change to the vim window it refreshes the NERDTree. My project has a ton of files in it (like really, a ridiculous amount) so that refresh takes tens of seconds sometimes. Thanks to Tim Tyrrell's (@timtyrrell) tip on twitter after I bitched about it, I found the offending lines in Janus's NERDTree plugin:

#~/.vim/janus/vim/tools/janus/after/plugin/nerdtree.vim
augroup AuNERDTreeCmd
autocmd AuNERDTreeCmd VimEnter * call s:CdIfDirectory(expand("<amatch>"))
autocmd AuNERDTreeCmd FocusGained * call s:UpdateNERDTree()

By adding the following line to your ~/.vimrc.after or ~/.gvimrc.after you can punt on the autocommands from Janus (I don't care about either of them)

:autocmd! AuNERDTreeCmd

@karmajunkie
karmajunkie / gist:3230290
Created August 1, 2012 20:11
Recruiters, FYI
When you say things like "I'm not like other recruiters because I used to be a techie" we all pretty much know that's what they tell you to say in Recruiter school. Because if you really were formerly an engineer, you wouldn't use words like "techie", and you'd know we don't believe you anyway.
unless defined? PhusionPassenger
module PhusionPassenger
def self.on_event(event_name, &block)
#the only event I use this with is :starting_worker_process,
#which takes a `forked` parameter, which we want to be false
yield false
end
end
end