Three Tiers of Decoupling in Elixir

Allow me to weave you a tale of progressively stronger decoupling in Elixir. I am working on a library that involves access to graph data, informed by a schema or model. Just to get things rolling I started out with a convention of holding graph nodes in a map: map_graph = %{"node1" => %{"class_id" => "class1", "data" => %{ "testProp" => "value" }} %{"node2" => %{"class_id" => "class1", "data" => %{ "testProp" => "value2" }}} node = map_graph["node1"] value = node["data"]["testProp"] It’s quick, dirty, and gets the job done for proof-of-concept purposes. Clearly it’s inadequate for other data access patterns we’d like to be able to support. We can write transformation routines against this structure, but they won’t be able to work with anything else. ...

Superfluous Abstractions: The Landscape of LLM Tooling

Judging by the activity of marketing hypemen and growth hackers, it seems “Agents” are a Big Important Thing. I can’t scroll 2 posts on social media without being offered a course or a low-code service. As usual, the grifters are trailing the edge by a few years. If you try to pin down a definition, it seems to boil down to “a distributed, fault-tolerant software system… with LLM calls”. So that means we just need to throw Claude on the BEAM. Easy enough! For those willing to read some Elixir code I direct you to a pair of excellent blog posts from 2023: ...