Projects
This page contains a list of projects I'm either particularly proud of or feel are worth noting. This list will hopefully keep on growing in future!
Recent Activity
Elixir Projects
Cachex
Cachex is an in-memory caching system for Elixir, built based on the principles of the cache system inside the Java Guava library. It's extremely fast with support for a lot of extra niceties, and as such is becoming a go-to library for caching needs in Elixir.
Eternal
Eternal is a utility used in order to keep an ETS table alive forever in Elixir. ETS tables are associated with a process, and would usually terminate if the process dies. Eternal stops this from happening by using a neat owner/heir system with on-demand GenServers.
Tiny
Tiny is a proof-of-concept JSON parser in Elixir, written with the goal of being minimal and fast while conforming to all JSON standards. As it stands it's comparable to parsers like Poison in terms of speed, but can be considered a good alternative for escript bundles and other embedded builds.
Vessel
Vessel is a MapReduce framework for Elixir, with support for Hadoop Streaming. Rather than dealing with Hadoop protocols directly, Vessel masks them via a straightforward API. Vessel also includes tools to setup Hadoop projects easily, as well as Mix tasks to make compiling your artifacts painless.
Erlang Projects
Global Flags
Global Flags is a library written in Erlang designed to provide an easy way to initialize global flags, without having them linked to a main application tree. It's meant for cases where it's considered expensive to call another process and wasteful to have an ETS table.
Sleeplocks
Sleeplocks is a very simple locking library written in Erlang for both Erlang and Elixir. Similar in concept to spinlocking in other language, Sleeplocks uses messaging and other foundational OTP principles to provide locking mechanisms across processes with minimal overhead.
Javascript Projects
Argle
Argle is a small argument shifting library for JavaScript which makes it easy to accept optional parameters before the end of your arguments list. It works great against things like destructuring in ES6, but is still usable from within ES5 versions of JavaScript.
Capture Console
The capture-console library is build for Node.js to help when capturing log output via stdout and stderr. It is designed to make it quick and easy to test typical logging flows such as the console output from CLI tooling, request logging, deprecation notices, etc.
Dot Notes
Dot Notes is an efficient library for the parsing and generation of dot formed object notation. It makes it trivial to arbitrarily access nested keys via string paths, as well as providing efficient object path traversal by using clever regular expression matching.
Gitivity
Gitivity is a very simple tool for syncing your GitLab and GitHub activity. It will efficiently replicate your activity from either the GitHub or GitLab APIs and transforming them into a repository structure, with commits matching your contribution history.
Loki Titanium Adapter
The Loki Titanium Adapter is a small binding around the LokiJS embedded database to provide support for the Titanium SDK. Built to run on both Android and iOS, it provides JSON document storage with minimal overhead by using an efficient sharding mechanism.
it.each
The it.each library provides a convenience layer above the MochaJS test framework to allow for asynchronous generation of test cases. It enables the developer to generate test cases, all while keeping track of context via dynamically generated titles from the test input.
Rust Projects
Bytelines
Bytelines is a Rust library which provides an easy way to read input lines as byte slices for higher efficiency. It's very similar to the tools found in the standard library, but works much more efficiently in situations you don't care about Unicode support in strings.
Detox
Detox is a very small CLI tool used to clean up development directories to save disk space. The main aim is to reduce the amount of space in project directories, such as removing build directories, dependency directories, compressing version control trees, etc.
Efflux
Efflux is a tiny MapReduce framework for Rust, with support for Hadoop Streaming. In order to make it easier to work with Hadoop, Efflux hides the complexity of the Hadoop Streaming protocol behind simple traits. It also ships with templates and project generators for convenience.
Jen
Jen is a data generation utility and CLI written in Rust. Primarily for test datasets or mocking, Jen allows for generation of large amounts of data from an input template, making it easy to produce a solid amount of data for a test suite or integration script quickly and efficiently.
Limber
Limber is a command line tool written in Rust, providing import/export functionality from Elasticsearch clusters. With a focus on efficiency, Limber allows for piping data from one cluster to another quickly, as well as supporting queries for subsets of data and transfers between indices.
Retainer
Retainer is a small caching library in Rust with asynchronous bindings, with support for key expirations based on time. Cache operations have extremely minimal overhead due to the expiration loop being based on a sampling expiration policy, thus allowing for high throughput without contention.
Runiq
Runiq is a small command line utility which offers an efficient way (in both time and space) to filter duplicate entries from textual input. Depending on the use case Runiq offers filters optimized for both speed and memory, allowing developers to choose the tradeoffs to best fit their needs.
Usher
Usher is a small library which provides an easy way to construct parameterized routing trees in Rust. Matching and parameterization rules are defined by the developer using a simple set of traits, allowing for customization in the routing algorithm itself and providing utility in many contexts.