Skip to content

Instantly share code, notes, and snippets.

@ericbmerritt
ericbmerritt / gist:2176689
Created March 24, 2012 00:25
myrmas path compression
%%% Myrmas Path Compression
%%% =======================
%%% * author: Eric Merritt
%%% * copyright: Afiniate, Inc
%%%
%%% License
%%% -------
%%% Licensed under the Apache License, Version 2.0 you may not use
%%% this file except in compliance with the License. You may obtain a
%%% copy of the License at http://www.apache.org/licenses/LICENSE-2.0
@ericbmerritt
ericbmerritt / gist:3049977
Created July 4, 2012 23:04
Joxa 0.1.0 ChangeLog

Joxa 0.1.0 Changes

  • A large increase in both the quality and the quantity of documentation

  • Numerous bug fixes to the compiler

  • any and all functions added to joxa-lists

  • joxa-otp/behaviour! now correctly checks for a behaviour

=ERROR REPORT==== 6-Jul-2012::06:45:16 ===
webmachine error: path="/bukkit/vfjfiuxowgsnxsxlarjsohlpxnmpuk/ijawbolybgnqwdhrvmyzujxihivvky"
[{erlang,iolist_to_binary,
[{wm_reqdata,'GET',http,
{1,1},
"127.0.0.1",
{wm_reqstate,#Port<0.5177>,
{dict,3,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],
@ericbmerritt
ericbmerritt / dialyzer.mkf
Created September 2, 2012 14:59
Dialyzer Example Makefile
# -*- mode: Makefile; fill-column: 80; comment-column: 75; -*-
ERL = $(shell which erl)
ERLFLAGS= -pa $(CURDIR)/.eunit -pa $(CURDIR)/ebin -pa $(CURDIR)/*/ebin
REBAR=$(shell which rebar)
ifeq ($(REBAR),)
$(error "Rebar not available on this system")
@ericbmerritt
ericbmerritt / gist:3879889
Created October 12, 2012 15:47
Generally useful makefile
# Copyright 2012 Erlware, LLC. All Rights Reserved.
#
# This file is provided to you under the Apache License,
# Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
@ericbmerritt
ericbmerritt / gist:4013729
Created November 4, 2012 20:53
A script to generate a valid semver version in any git repo
#!/bin/bash
#
# If run inside a git repository will return a valid semver based on
# the semver formatted tags. For example if the current HEAD is tagged
# at 0.0.1, then the version echoed will simply be 0.0.1. However, if
# the tag is say, 3 patches behind, the tag will be in the form
# `0.0.1+build.3.0ace960`. This is basically, the current tag a
# monotonically increasing commit (the number of commits since the
# tag, and then a git short ref to identify the commit.
#
@ericbmerritt
ericbmerritt / ci-<hidden>.yml
Created January 31, 2013 22:42
ansible tasks
- include: ci-github.yml github_repo=${github_repo} post_build_mail="<hidden>" post_build_trigger=<hidden>
@ericbmerritt
ericbmerritt / gist:4687399
Created January 31, 2013 22:47
Error output
> vagrant provision ci develop [352d436] deleted modified added
[ci] Running provisioner: Vagrant::Provisioners::Ansible...
ansible-playbook
--user=vagrant
--inventory-file=/var/folders/42/prytfnvd1vn25rzm7vsmzt6m0000gp/T/inventory20130131-77516-17jcsps-0
--private-key=/Users/emerrit/.vagrant.d/insecure_private_key
roles/ci.yml
ERROR: 'action' or 'local_action' attribute missing in task "<Unnamed>"
clean: $(REBAR)
$(REBAR) skip_deps=true clean
- rm -rf $(CURDIR)/doc/*.html
- rm -rf $(CURDIR)/doc/*.css
- rm -rf $(CURDIR)/doc/*.png
clean-deps: clean
rm -rvf $(CURDIR)/deps/*
rm -rf $(ERLWARE_COMMONS_PLT).$(ERL_VER)
@ericbmerritt
ericbmerritt / gist:5306234
Last active December 15, 2015 18:49
potential talk abstract

Current state of the art in distributed systems revolves around service oriented architectures that can be scaled based on demand. This requires being able to add services on the fly as demand increases and recognizing capacity decrease when services fail. Myrmas is a solution to this problem. Myrmas is a robust general Service Availability and Health Registry designed to be used as a basis for large scale distributed systems. It is designed to scale simply from two nodes to hundreds of thousands of nodes while making as few assumptions around network topology and connectivity as possible. Myrmas is built around a robust membership protocol called DIMPLE-II paired with an epidemic data propagation protocol called Newscast. Together, these allow Myrmas to provide the solid foundation on which to build large scale heterogenious distributed systems.

One of the key features of Myrmas is that is designed from the ground up to support mixed language systems. It does this through two main avenues.

  1. The simple