finds.dev← search

// the find

mojombo/ernie

★ 470 · Erlang · MIT · updated Dec 2011

Ernie is an Erlang/Ruby BERT-RPC Server.

Ernie is a BERT-RPC server from 2009, written by Tom Preston-Werner, that wraps Erlang's concurrency model around external handler processes (primarily Ruby). The core idea: native Erlang modules run in-process as lightweight OTP processes; external modules run as pooled OS processes managed by an asset pool supervisor. Built for GitHub's internal RPC needs.

The shadowing mechanism is genuinely useful — you can hot-swap individual functions from Ruby to Erlang without touching client code, and predicate shadowing for argument-based routing is a clean design. The OTP supervision tree is correct: separate supervisors for the server, access logger, and asset pool, which means a crashed handler doesn't take down the acceptor. Priority queue separation (high/low) at the connection level is a practical feature for systems where some calls are latency-sensitive. BERT as the wire format is a reasonable choice — it's Erlang's native term format, so native handlers pay zero serialization cost.

Abandoned since 2011 — the last commit is 15 years old, Erlang OTP has changed significantly, and the Ruby gem ecosystem it depends on has moved on entirely. The external worker pool is fixed-size (set in config), with no dynamic scaling — you're either over-provisioning or under-provisioning workers for variable load. No TLS support on the wire; BERT-RPC over plaintext TCP only, which means this is LAN/trusted-network only. The config format is raw Erlang terms, which is fine for Erlang developers but adds friction for anyone who isn't already in that ecosystem.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →