← Graph

Spice up your life with eql

talk 23 connections

Norbert Wójtowicz's wroclove.rb 2019 talk, the fourth in a multi-year arc after his 2015 wroclove.rb talk on ClojureScript+React for front-ends, his 2017 wroclove.rb talk on Clojure+immutable data for back-ends (including clojure.spec replacing type checkers), and his RubyConf Tel Aviv talk on replacing relational/NoSQL/Redux databases with immutable data flow. Having covered frontends, backends and databases, this talk closes the loop on APIs. Walks through YouTube's single-page-app rendering problem (video, channel, comments, next-videos), critiques REST (the YouTube 'part' quota system, snippet vs contentDetails) and GraphQL (type explosion because attributes are always scoped to a specific type). Proposes a four-step recipe — immutable, EDN-based, context-free, flat — and demonstrates Pathom, a Clojure library implementing graph API resolution with: resolvers mapping input attributes to output attributes; EQL queries as data structures (vectors for attribute lists, maps for joins); namespace-qualified keywords that uniquely identify e.g. :youtube.video/id across services; flattening 1:1 relationships so channel-title can be fetched at the same level as video-id; mutations as EDN symbols giving read-after-write semantics; fallback traversal when one path fails with a 403; and batching/parallelism across playlist/channel/video API calls. Live demo uses Clojure Workspaces (itself a Fulcro app) to query YouTube's API, then extends with a YouTube↔SpaceX ID alias to combine launch data, video title and view count in one query without joins. Closes by comparing Workspaces + Fulcro Inspect to what Rails Engines 'should have been'.

type
talk
talk Spice up your life with eql
about
Pathom tool
Talk centers on Pathom as a concrete implementation of the four-step API recipe.
talk Spice up your life with eql
about
EQL concept
EQL is the query language the talk advocates for.
talk Spice up your life with eql
about
EDN tool
EDN is the data notation EQL is built on.
talk Spice up your life with eql
about
Third step of the recipe: use namespaced keywords for context-free identifiers.
talk Spice up your life with eql
about
Design principle enabled by namespaced keywords.
talk Spice up your life with eql
about
Fourth step of the recipe: flatten 1:1 joins.
talk Spice up your life with eql
about
Resolver concept
Resolvers are Pathom's building block demonstrated in the live coding.
talk Spice up your life with eql
about
GraphQL tool
Talk critiques GraphQL's type explosion as motivation for EQL.
talk Spice up your life with eql
about
REST concept
Talk critiques REST and YouTube's 'part' quota system.
talk Spice up your life with eql
about
Falcor tool
Mentioned as Netflix's equivalent to GraphQL.
talk Spice up your life with eql
about
jq tool
Used as an analogy for traversal/derivation notation.
talk Spice up your life with eql
about
Decomplecting concept
Justifies separating query from scope.
talk Spice up your life with eql
about
Fulcro tool
Used in the live demo to host the Pathom-driven React component.
talk Spice up your life with eql
about
Workspaces tool
Live demo environment for writing EQL queries.
talk Spice up your life with eql
about
Shown as a DevTools panel with trace metadata attached via globally unique identifiers.
talk Spice up your life with eql
about
YouTube company
YouTube is the primary API case study.
talk Spice up your life with eql
about
SpaceX company
SpaceX API is the cross-service integration case study.
authored
Spice up your life with eql talk
Speaker of the wroclove.rb 2019 talk.
from_talk
Spice up your life with eql talk
The talk's central four-step recipe.
from_talk
Spice up your life with eql talk
Demonstrated via the YouTube+SpaceX integration.
from_talk
Spice up your life with eql talk
Explicit invitation to the Ruby-conference audience.
from_talk
Spice up your life with eql talk
Shown in the live demo's tracer and the 403 fallback example.
talk Spice up your life with eql
presented_at
Delivered as a main-stage talk.

Provenance

Created
2026-04-17 16:17 seed
Read by
21 extractions