← Extractions

Spice up your life with eql — Norbert Wójtowicz at wroclove.rb 2019

Norbert Wójtowicz's wroclove.rb 2019 talk closes his multi-year arc on Clojure ideas (frontends, backends, databases) by showing how to build APIs using immutability, EDN, context-free namespaced identifiers, and flat data. He demonstrates Pathom, a Clojure graph-resolver library, solving GraphQL's type-explosion problem and composing YouTube and SpaceX APIs via fully-qualified keyword aliases.

Model
claude-opus-4-7
Ingestion
04766a78
Input tokens
801,724
fresh
662,700
cached
125,735
cache write
13,289
Output tokens
13,352
Duration
211.3s
Roundtrips
8
Tool calls
19
Cost
$0.00
Nodes/edges extracted
26 / 47
Read set (nodes/edges)
460 / 4

Nodes (26)

update Spice up your life with eql talk
description Talk at wroclove.rb 2019. Norbert Wójtowicz's wroclove.rb 2019 talk, the fourth in a multi-year arc after his 2015 wroclove.rb talk on ClojureS...
short_description Talk at wroclove.rb 2019. Talk advocating Pathom/EQL-style graph APIs using immutability, EDN, and context-free flat data.
update Norbert Wójtowicz person
description Conference speaker. Polish Clojure advocate and conference speaker, recurring at wroclove.rb every two years. Originally a Ruby back-end ...
short_description Conference speaker. Polish Clojure advocate and conference speaker; recurring wroclove.rb speaker on immutable-data architectures.
create Pathom tool
kind (empty) tool
name (empty) Pathom
slug (empty) pathom
attrs (empty) {"category" => "library", "language" => "Clojure"}
description (empty) Clojure library implementing EQL-based graph APIs. Developers define resolvers as nodes of a graph: each resolver dec...
short_description (empty) Clojure library for building graph APIs via composable resolvers.
create Fulcro tool
kind (empty) tool
name (empty) Fulcro
slug (empty) fulcro
attrs (empty) {"category" => "framework"}
description (empty) ClojureScript full-stack framework demonstrated in the talk as the runtime for a React component that issues Pathom/E...
short_description (empty) ClojureScript full-stack framework using EQL queries for front-end data.
create Fulcro Inspect tool
kind (empty) tool
name (empty) Fulcro Inspect
slug (empty) fulcro-inspect
attrs (empty) {"category" => "library"}
description (empty) Chrome DevTools extension for Fulcro apps. Displays operations, network calls, and other runtime metadata. Itself a F...
short_description (empty) Chrome DevTools panel for inspecting Fulcro applications.
create Workspaces tool
kind (empty) tool
name (empty) Workspaces
slug (empty) workspaces
attrs (empty) {"category" => "platform"}
description (empty) ClojureScript tool for live-coding React components and mounting Fulcro applications inside a development environment...
short_description (empty) ClojureScript development tool for mounting live React/Fulcro components.
create EDN tool
kind (empty) tool
name (empty) EDN
slug (empty) edn
attrs (empty) {"category" => "library"}
description (empty) Extensible Data Notation. A data format describing how to serialize and deserialize a set of scalars (numbers, ration...
short_description (empty) Extensible Data Notation — Clojure's cross-language data serialization format.
create EQL concept
kind (empty) concept
name (empty) EQL
slug (empty) eql
attrs (empty) {"category" => "pattern"}
description (empty) EDN Query Language. Expresses API queries as EDN data structures instead of a string DSL: vectors list attributes of ...
short_description (empty) EDN Query Language — data-structure-based query notation for graph APIs.
create Namespaced Keywords concept
kind (empty) concept
name (empty) Namespaced Keywords
slug (empty) namespaced-keywords
attrs (empty) {"category" => "pattern"}
description (empty) Clojure/EDN feature where a keyword carries a namespace prefix (e.g. :youtube.video/id vs :youtube.channel/id). In th...
short_description (empty) Clojure keywords carrying a namespace, making identifiers globally unambiguous.
create Context-Free Identifiers concept
kind (empty) concept
name (empty) Context-Free Identifiers
slug (empty) context-free-identifiers
attrs (empty) {"category" => "principle"}
description (empty) Design principle of making every identifier carry enough qualification to be understood on its own — removing the nee...
short_description (empty) Identifiers meaningful without surrounding scope, enabled by namespacing.
create Flat Query Structure concept
kind (empty) concept
name (empty) Flat Query Structure
slug (empty) flat-query-structure
attrs (empty) {"category" => "pattern"}
description (empty) Design step that follows once identifiers are context-free: because a video always has exactly one channel, a YouTube...
short_description (empty) API design where 1:1 relationships are expressed as sibling attributes, not joins.
create Resolver concept
kind (empty) concept
name (empty) Resolver
slug (empty) resolver
attrs (empty) {"category" => "pattern"}
description (empty) Central building block of Pathom: a node in the attribute graph declaring which input attributes are required and whi...
short_description (empty) Pathom graph node declaring input-to-output attribute mapping plus a fetch function.
create Decomplecting concept
kind (empty) concept
name (empty) Decomplecting
slug (empty) decomplecting
attrs (empty) {"category" => "practice"}
description (empty) Rich Hickey's term for the process of taking apart concerns that were unintentionally braided together but don't actu...
short_description (empty) Rich Hickey's practice of separating things unintentionally coupled together.
create Rich Hickey person
kind (empty) person
name (empty) Rich Hickey
slug (empty) rich-hickey
description (empty) Creator of Clojure. Cited by Norbert Wójtowicz for the decomplecting framing — solving problems by separating concern...
short_description (empty) Creator of Clojure; author of the 'decomplecting' framing.
create Falcor tool
kind (empty) tool
name (empty) Falcor
slug (empty) falcor
attrs (empty) {"category" => "library"}
description (empty) Netflix-built data-fetching library with goals similar to GraphQL: client-driven data selection over a unified graph....
short_description (empty) Netflix data-fetching library for unified API graph.
create jq tool
kind (empty) tool
name (empty) jq
slug (empty) jq
attrs (empty) {"category" => "tool"}
description (empty) Command-line JSON processor. Used in the talk as an analogy for what EQL does: a pearl-like string notation for trave...
short_description (empty) Command-line JSON processor with a Perl-like traversal string syntax.
create Hash Slice / select-keys concept
kind (empty) concept
name (empty) Hash Slice / select-keys
slug (empty) hash-slice-select-keys
attrs (empty) {"category" => "pattern"}
description (empty) Everyday primitive available in Clojure as select-keys and in Ruby as Hash#slice: given a map and a list of keys, ret...
short_description (empty) Language primitive for projecting a map to a subset of keys.
create YouTube company
kind (empty) company
name (empty) YouTube
slug (empty) youtube
attrs (empty) {"industry" => "video streaming"}
description (empty) Google-owned video-sharing platform. Used throughout the talk as the canonical complex single-page app: a video page ...
short_description (empty) Google-owned video platform used as the case study for API design.
create SpaceX company
kind (empty) company
name (empty) SpaceX
slug (empty) spacex
attrs (empty) {"industry" => "spaceflight"}
description (empty) Private spaceflight company. Ships a public API returning launch information (launcher, fairings, recovery, launch si...
short_description (empty) Private spaceflight company; public API used to demonstrate cross-service joins.
create Facebook company
kind (empty) company
name (empty) Facebook
slug (empty) facebook
attrs (empty) {"industry" => "social media"}
description (empty) Social-media company. Mentioned as the originator of GraphQL, which it created to solve the multi-source data-fetchin...
short_description (empty) Social-media company; originator of GraphQL.
create Netflix company
kind (empty) company
name (empty) Netflix
slug (empty) netflix
attrs (empty) {"industry" => "video streaming"}
description (empty) Streaming company. Mentioned as the originator of the Falcor data-fetching library, which addresses similar problems ...
short_description (empty) Streaming company; originator of Falcor.
create REST concept
kind (empty) concept
name (empty) REST
slug (empty) rest
attrs (empty) {"category" => "architecture"}
description (empty) Dominant architectural style for HTTP APIs. Critiqued in the talk for forcing clients into N+1 fetches (video, channe...
short_description (empty) Architectural style for HTTP APIs centered on resources and representations.
create Build APIs with immutability, EDN, context-free, flat takeaway
kind (empty) takeaway
name (empty) Build APIs with immutability, EDN, context-free, flat
slug (empty) build-apis-with-immutability-edn-context-free-flat
attrs (empty) {"type" => "recommendation"}
description (empty) Norbert Wójtowicz's four-step recipe for building APIs the way Pathom does, presented as 'too-few-steps-to-ignore': (...
short_description (empty) Four-step recipe for API design: immutable, EDN-based, context-free, flat.
create Use fully namespace-qualified keywords to bridge services takeaway
kind (empty) takeaway
name (empty) Use fully namespace-qualified keywords to bridge services
slug (empty) use-fully-namespace-qualified-keywords-to-bridge-services
attrs (empty) {"type" => "insight"}
description (empty) Because keywords like :youtube.video/id and :spacex.launch/youtube-id are unambiguous, you can declare a one-to-one a...
short_description (empty) Namespaced keywords enable aliasing identifiers across services in one API.
create Port Pathom's ideas to Ruby takeaway
kind (empty) takeaway
name (empty) Port Pathom's ideas to Ruby
slug (empty) port-pathom-s-ideas-to-ruby
attrs (empty) {"type" => "recommendation"}
description (empty) The speaker's explicit invitation: the ideas behind Pathom (immutability, EDN-like data queries, context-free namespa...
short_description (empty) The Pathom approach isn't Clojure-specific and can be implemented in Ruby.
create Graph resolvers compute minimal API calls automatically takeaway
kind (empty) takeaway
name (empty) Graph resolvers compute minimal API calls automatically
slug (empty) graph-resolvers-compute-minimal-api-calls-automatically
attrs (empty) {"type" => "insight"}
description (empty) When every resolver declares only its input and output attributes, Pathom treats the union of resolvers as a graph an...
short_description (empty) Small resolvers composed into a graph yield batched, parallel, fallback-aware fetching.

Edges (47)

update Norbert WójtowiczauthoredSpice up your life with eql
context (empty) Speaker of the wroclove.rb 2019 talk.
update Spice up your life with eqlpresented_atwroclove.rb 2019
context (empty) Delivered as a main-stage talk.
create Spice up your life with eqlaboutPathom
context (empty) Talk centers on Pathom as a concrete implementation of the four-step API recipe.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Norbert Wójtowiczhas_skillClojure
attrs (empty) {"level" => "expert"}
context (empty) Recurring Clojure speaker.
relation (empty) has_skill
source_node_id (empty) f59530fe-fad2-4834-aaa3-bf68e355fdde
target_node_id (empty) bd3fce39-7c57-4f81-ad35-5061d9ea1137
create Norbert Wójtowiczhas_skillClojureScript
attrs (empty) {"level" => "expert"}
context (empty) 2015 talk on ClojureScript+React for front-end.
relation (empty) has_skill
source_node_id (empty) f59530fe-fad2-4834-aaa3-bf68e355fdde
target_node_id (empty) cf0f6cf8-dbc2-4f1a-ae8e-be03f30c1f9f
create Norbert WójtowiczusesPathom
context (empty) Uses Pathom on a daily basis at work per the talk.
relation (empty) uses
source_node_id (empty) f59530fe-fad2-4834-aaa3-bf68e355fdde
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Spice up your life with eqlaboutEQL
context (empty) EQL is the query language the talk advocates for.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 2d2242fd-daa3-43e0-9b28-a42ca3670a80
create Spice up your life with eqlaboutEDN
context (empty) EDN is the data notation EQL is built on.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) ffcaf8f4-bfc0-40fc-be90-9b8726e4a8ee
create Spice up your life with eqlaboutNamespaced Keywords
context (empty) Third step of the recipe: use namespaced keywords for context-free identifiers.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 95e7fa66-f7f8-49c6-b9f8-f773651a97ba
create Spice up your life with eqlaboutContext-Free Identifiers
context (empty) Design principle enabled by namespaced keywords.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 8d0e393f-fdd8-46a2-9094-ffb1364fbc16
create Spice up your life with eqlaboutFlat Query Structure
context (empty) Fourth step of the recipe: flatten 1:1 joins.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 376a108d-1d5f-47c7-9807-09d6456c3bb3
create Spice up your life with eqlaboutResolver
context (empty) Resolvers are Pathom's building block demonstrated in the live coding.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 3fc84d32-ef02-4542-ad25-8a50ac190672
create Spice up your life with eqlaboutGraphQL
context (empty) Talk critiques GraphQL's type explosion as motivation for EQL.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) c6a1041c-3116-4194-b7f0-eba7cd4a7e64
create Spice up your life with eqlaboutREST
context (empty) Talk critiques REST and YouTube's 'part' quota system.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 1e449edf-802d-44aa-b87c-911f69be1091
create Spice up your life with eqlaboutFalcor
context (empty) Mentioned as Netflix's equivalent to GraphQL.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 207e784b-492c-4f0c-b8e7-71c5f172b5f3
create Spice up your life with eqlaboutjq
context (empty) Used as an analogy for traversal/derivation notation.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 3143d961-aa4b-44ea-8f16-0c1b99a0ea62
create Spice up your life with eqlaboutDecomplecting
context (empty) Justifies separating query from scope.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 0853dcb6-42a4-43d1-a19d-c63dbd5221b5
create Spice up your life with eqlaboutFulcro
context (empty) Used in the live demo to host the Pathom-driven React component.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 2f4fa3eb-d89c-4438-bae6-eb5b7363b42d
create Spice up your life with eqlaboutWorkspaces
context (empty) Live demo environment for writing EQL queries.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) bf50e7b5-76f4-41e3-a1aa-0dea50f4a45e
create Spice up your life with eqlaboutFulcro Inspect
context (empty) Shown as a DevTools panel with trace metadata attached via globally unique identifiers.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 251105a4-dda2-4e7b-af2c-d1ae26e0412a
create Spice up your life with eqlaboutYouTube
context (empty) YouTube is the primary API case study.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 3aeebed3-a622-4a67-b9c3-89e277027c45
create Spice up your life with eqlaboutSpaceX
context (empty) SpaceX API is the cross-service integration case study.
relation (empty) about
source_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
target_node_id (empty) 39a85c8d-1477-4713-86f2-592e3f388cd9
create EQLrelated_toEDN
context (empty) EQL stands for EDN Query Language — queries are EDN data.
relation (empty) related_to
source_node_id (empty) 2d2242fd-daa3-43e0-9b28-a42ca3670a80
target_node_id (empty) ffcaf8f4-bfc0-40fc-be90-9b8726e4a8ee
create ClojureusesEDN
context (empty) Clojure uses EDN as the syntax for its source code.
relation (empty) uses
source_node_id (empty) bd3fce39-7c57-4f81-ad35-5061d9ea1137
target_node_id (empty) ffcaf8f4-bfc0-40fc-be90-9b8726e4a8ee
create Pathomrelated_toClojure
context (empty) Pathom is a Clojure library.
relation (empty) related_to
source_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
target_node_id (empty) bd3fce39-7c57-4f81-ad35-5061d9ea1137
create PathomusesEQL
context (empty) Pathom parses and resolves EQL queries.
relation (empty) uses
source_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
target_node_id (empty) 2d2242fd-daa3-43e0-9b28-a42ca3670a80
create Fulcrorelated_toClojureScript
context (empty) Fulcro is a ClojureScript full-stack framework.
relation (empty) related_to
source_node_id (empty) 2f4fa3eb-d89c-4438-bae6-eb5b7363b42d
target_node_id (empty) cf0f6cf8-dbc2-4f1a-ae8e-be03f30c1f9f
create Workspacesrelated_toFulcro
context (empty) Workspaces is built as a Fulcro application.
relation (empty) related_to
source_node_id (empty) bf50e7b5-76f4-41e3-a1aa-0dea50f4a45e
target_node_id (empty) 2f4fa3eb-d89c-4438-bae6-eb5b7363b42d
create Fulcro Inspectrelated_toFulcro
context (empty) Fulcro Inspect is itself a Fulcro application, running as a Chrome DevTools panel.
relation (empty) related_to
source_node_id (empty) 251105a4-dda2-4e7b-af2c-d1ae26e0412a
target_node_id (empty) 2f4fa3eb-d89c-4438-bae6-eb5b7363b42d
create Namespaced Keywordsrelated_toContext-Free Identifiers
context (empty) Namespaced keywords are how context-free identifiers are implemented in EDN.
relation (empty) related_to
source_node_id (empty) 95e7fa66-f7f8-49c6-b9f8-f773651a97ba
target_node_id (empty) 8d0e393f-fdd8-46a2-9094-ffb1364fbc16
create Context-Free Identifiersrelated_toFlat Query Structure
context (empty) Flat queries become possible once identifiers are context-free.
relation (empty) related_to
source_node_id (empty) 8d0e393f-fdd8-46a2-9094-ffb1364fbc16
target_node_id (empty) 376a108d-1d5f-47c7-9807-09d6456c3bb3
create Resolverrelated_toPathom
context (empty) Resolvers are Pathom's core abstraction.
relation (empty) related_to
source_node_id (empty) 3fc84d32-ef02-4542-ad25-8a50ac190672
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Decomplectingrelated_toRich Hickey
context (empty) Decomplecting is Rich Hickey's framing.
relation (empty) related_to
source_node_id (empty) 0853dcb6-42a4-43d1-a19d-c63dbd5221b5
target_node_id (empty) 0af6123d-a6ae-4e2a-a320-6576786e5346
create Falcorrelated_toNetflix
context (empty) Falcor is built by Netflix.
relation (empty) related_to
source_node_id (empty) 207e784b-492c-4f0c-b8e7-71c5f172b5f3
target_node_id (empty) 0d0d2abf-08d3-4a9a-8cec-1052c9284aa3
create GraphQLrelated_toFacebook
context (empty) GraphQL was created by Facebook.
relation (empty) related_to
source_node_id (empty) c6a1041c-3116-4194-b7f0-eba7cd4a7e64
target_node_id (empty) 7a64ac69-5d72-4225-9f26-e97ce73dc261
create EQLrelated_toHash Slice / select-keys
context (empty) EQL selection generalizes hash-slice/select-keys to the API level.
relation (empty) related_to
source_node_id (empty) 2d2242fd-daa3-43e0-9b28-a42ca3670a80
target_node_id (empty) 50bf1ef4-72f0-43ef-806e-a7bd725165e5
create EQLrelated_tojq
context (empty) EQL is inspired by jq's traversal idea but uses data instead of a string syntax.
relation (empty) related_to
source_node_id (empty) 2d2242fd-daa3-43e0-9b28-a42ca3670a80
target_node_id (empty) 3143d961-aa4b-44ea-8f16-0c1b99a0ea62
create Build APIs with immutability, EDN, context-free, flatfrom_talkSpice up your life with eql
context (empty) The talk's central four-step recipe.
relation (empty) from_talk
source_node_id (empty) 12185684-50be-4207-83d1-cba241563807
target_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
create Use fully namespace-qualified keywords to bridge servicesfrom_talkSpice up your life with eql
context (empty) Demonstrated via the YouTube+SpaceX integration.
relation (empty) from_talk
source_node_id (empty) 808f4277-8146-4a9c-bb41-ca40e4d827a6
target_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
create Port Pathom's ideas to Rubyfrom_talkSpice up your life with eql
context (empty) Explicit invitation to the Ruby-conference audience.
relation (empty) from_talk
source_node_id (empty) 71acb587-2ad4-493d-93a0-bb3b8f6e3804
target_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
create Graph resolvers compute minimal API calls automaticallyfrom_talkSpice up your life with eql
context (empty) Shown in the live demo's tracer and the 403 fallback example.
relation (empty) from_talk
source_node_id (empty) 4a69ec6a-a1ba-4ead-a713-f9ed1cb84b66
target_node_id (empty) ea6ac02a-8bc2-44db-9d8d-8701615db851
create Build APIs with immutability, EDN, context-free, flataboutPathom
context (empty) Recipe is exemplified by Pathom.
relation (empty) about
source_node_id (empty) 12185684-50be-4207-83d1-cba241563807
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Use fully namespace-qualified keywords to bridge servicesaboutNamespaced Keywords
context (empty) Takeaway applies namespaced keywords across services.
relation (empty) about
source_node_id (empty) 808f4277-8146-4a9c-bb41-ca40e4d827a6
target_node_id (empty) 95e7fa66-f7f8-49c6-b9f8-f773651a97ba
create Port Pathom's ideas to RubyaboutPathom
context (empty) The ideas to port are Pathom's.
relation (empty) about
source_node_id (empty) 71acb587-2ad4-493d-93a0-bb3b8f6e3804
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Graph resolvers compute minimal API calls automaticallyaboutResolver
context (empty) About Pathom's resolver-graph execution model.
relation (empty) about
source_node_id (empty) 4a69ec6a-a1ba-4ead-a713-f9ed1cb84b66
target_node_id (empty) 3fc84d32-ef02-4542-ad25-8a50ac190672
create Norbert WójtowiczrecommendsPathom
context (empty) Talk is an extended recommendation of Pathom's ideas.
relation (empty) recommends
source_node_id (empty) f59530fe-fad2-4834-aaa3-bf68e355fdde
target_node_id (empty) cb76cb8b-6374-450f-93f9-b80a01b10362
create Norbert WójtowiczusesFulcro
context (empty) Builds Fulcro applications including the Workspaces-hosted demo.
relation (empty) uses
source_node_id (empty) f59530fe-fad2-4834-aaa3-bf68e355fdde
target_node_id (empty) 2f4fa3eb-d89c-4438-bae6-eb5b7363b42d

Read set

460 nodes

person Aaron Patterson list_nodes_by_kind person Adam Okoń list_nodes_by_kind+search_nodes person Adam Piotrowski list_nodes_by_kind person Adrian Marin list_nodes_by_kind person Agnieszka Małaszkiewicz list_nodes_by_kind person Akira Matsuda list_nodes_by_kind person Alberto Brandolini list_nodes_by_kind person Amelia Walter-Dzikowska list_nodes_by_kind person Andrei Bondarev list_nodes_by_kind person Andrei Kaleshka list_nodes_by_kind person Andrzej Krzywda list_nodes_by_kind person Andrzej Śliwa list_nodes_by_kind person Andy Maleh list_nodes_by_kind person Anita Jaszewska list_nodes_by_kind person Anton Davydov list_nodes_by_kind person Armin Pašalić list_nodes_by_kind person Arturo Herrero list_nodes_by_kind person Ayush Newatia list_nodes_by_kind person Bartosz Blimke list_nodes_by_kind person Bertrand Meyer list_nodes_by_kind person Caio Almeida list_nodes_by_kind person Charles Nutter list_nodes_by_kind person Chikahiro Tokoro list_nodes_by_kind person Claude Lévi-Strauss list_nodes_by_kind person Damir Zekić list_nodes_by_kind person David Halasz list_nodes_by_kind person DHH list_nodes_by_kind person Dimitry Salahutdinov list_nodes_by_kind person Emiliano Della Casa list_nodes_by_kind person Eric Evans list_nodes_by_kind person Erwin Kroon list_nodes_by_kind person Ethan Garofolo list_nodes_by_kind person Greg Molnar list_nodes_by_kind person Greg Young list_nodes_by_kind person Ismael Celis list_nodes_by_kind person Ivan Nemytchenko list_nodes_by_kind person Jakub Rodzik list_nodes_by_kind person Janko Marohnic list_nodes_by_kind person Joel Drapper list_nodes_by_kind person John Gallagher list_nodes_by_kind person Josef Strzibny list_nodes_by_kind person José Valim list_nodes_by_kind person Julik Tarkhanov list_nodes_by_kind+search_nodes person Karol Szuster list_nodes_by_kind person Koichi Sasada list_nodes_by_kind person Krzysztof Hasiński list_nodes_by_kind person Kuba Suder list_nodes_by_kind person Louis Antonopoulos list_nodes_by_kind person Łukasz Reszke list_nodes_by_kind person Łukasz Szydło list_nodes_by_kind person Maciej Rząsa list_nodes_by_kind person Maciek list_nodes_by_kind person Marco Heimeshoff list_nodes_by_kind person Mariusz Gil list_nodes_by_kind person Markus Schirp list_nodes_by_kind person Martin Gamsjaeger list_nodes_by_kind person Mateusz Nowak list_nodes_by_kind person Matthias Verraes list_nodes_by_kind person Matz list_nodes_by_kind person Michal Matyas list_nodes_by_kind person Michał Młoźniak list_nodes_by_kind person Michał Zajączkowski de Mezer list_nodes_by_kind person Miron Marczuk list_nodes_by_kind person Nathan Ladd list_nodes_by_kind person Nick Sutterer list_nodes_by_kind person Nicolò Rebughini list_nodes_by_kind person Norbert Wójtowicz list_nodes_by_kind+get_node_edges person Paweł Dąbrowski list_nodes_by_kind person Paweł Pacana list_nodes_by_kind person Paweł Pokrywka list_nodes_by_kind person Paweł Strzałkowski list_nodes_by_kind person Piotr Solnica list_nodes_by_kind person Radoslav Stankov list_nodes_by_kind person Rafał Cymerys list_nodes_by_kind person Rafał Rothenberger list_nodes_by_kind person Ryan Townsend list_nodes_by_kind person Scott Bell list_nodes_by_kind person Scott Bellware list_nodes_by_kind person Scott Wlaschin list_nodes_by_kind person Sebastian Wilgosz list_nodes_by_kind person Sergey Ivanov list_nodes_by_kind person Sergey Sergyenko list_nodes_by_kind person Seth Horsley list_nodes_by_kind person Sharon Rosner list_nodes_by_kind person Shugo Maeda list_nodes_by_kind person Stefan Wintermeyer list_nodes_by_kind person Stephen Margheim list_nodes_by_kind person Stephen Wolfram list_nodes_by_kind person Steve Ballmer list_nodes_by_kind person Szymon Fiedler list_nodes_by_kind person Szymon Kulec list_nodes_by_kind person Tomasz Donarski list_nodes_by_kind person Victor Shepelev list_nodes_by_kind person Vladimir Dementyev list_nodes_by_kind person Wojtek Wrona list_nodes_by_kind person Yaroslav Shmarov list_nodes_by_kind person Yatish Mehta list_nodes_by_kind person Yehuda Katz list_nodes_by_kind event EmberConf list_nodes_by_kind event KanDDDinsky list_nodes_by_kind event wroclove.rb 2018 list_nodes_by_kind+search_nodes event wroclove.rb 2019 list_nodes_by_kind+search_nodes event wroclove.rb 2022 list_nodes_by_kind+search_nodes event wroclove.rb 2023 list_nodes_by_kind+search_nodes event wroclove.rb 2024 list_nodes_by_kind event wroclove.rb 2025 list_nodes_by_kind event wroclove.rb 2026 list_nodes_by_kind tool Abbrev list_nodes_by_kind tool Action Cable list_nodes_by_kind tool Active Storage list_nodes_by_kind tool acts_as_api list_nodes_by_kind tool aggregate_root list_nodes_by_kind tool Akamai list_nodes_by_kind tool Amazon Elastic Transcoder list_nodes_by_kind+search_nodes tool Amazon S3 list_nodes_by_kind tool Angular list_nodes_by_kind tool Apache HTTP Server list_nodes_by_kind tool Apache Kafka list_nodes_by_kind tool Apple QuickTime list_nodes_by_kind tool async list_nodes_by_kind tool AWS Lambda list_nodes_by_kind tool Babel list_nodes_by_kind+search_nodes tool BME280 list_nodes_by_kind tool Brotli list_nodes_by_kind+search_nodes tool Browserslist list_nodes_by_kind tool C++ list_nodes_by_kind tool CarrierWave list_nodes_by_kind tool carrierwave_backgrounder list_nodes_by_kind tool carrierwave-video list_nodes_by_kind tool Cassandra list_nodes_by_kind tool Cells list_nodes_by_kind tool Celluloid list_nodes_by_kind tool Clojure list_nodes_by_kind+search_nodes tool ClojureScript list_nodes_by_kind+search_nodes tool Crystal list_nodes_by_kind+search_nodes tool curses list_nodes_by_kind tool DBM / SDBM / GDBM list_nodes_by_kind tool Devise list_nodes_by_kind tool Discourse list_nodes_by_kind tool Distributed Ruby list_nodes_by_kind tool Docker list_nodes_by_kind tool dry-container list_nodes_by_kind tool dry-struct list_nodes_by_kind tool dry-types list_nodes_by_kind tool dry-validation list_nodes_by_kind tool Elasticsearch list_nodes_by_kind tool Electron list_nodes_by_kind tool Elixir list_nodes_by_kind+search_nodes tool Elm list_nodes_by_kind+search_nodes tool Ember.js list_nodes_by_kind+search_nodes tool Entity Store list_nodes_by_kind tool Erlang list_nodes_by_kind tool ESP32 list_nodes_by_kind tool ESP-IDF list_nodes_by_kind tool Ethereum list_nodes_by_kind tool EventMachine list_nodes_by_kind tool Faker list_nodes_by_kind tool FFmpeg list_nodes_by_kind+search_nodes tool ffprobe list_nodes_by_kind tool file (Unix command) list_nodes_by_kind tool find-slow script list_nodes_by_kind tool flag_shih_tzu list_nodes_by_kind tool Flow list_nodes_by_kind+search_nodes tool FreeRTOS list_nodes_by_kind tool git bisect list_nodes_by_kind tool Glimmer list_nodes_by_kind tool Go list_nodes_by_kind tool Grafana list_nodes_by_kind tool GraphQL list_nodes_by_kind+search_nodes tool gRPC list_nodes_by_kind tool Guard list_nodes_by_kind tool gzip list_nodes_by_kind tool Hanami list_nodes_by_kind tool heapy list_nodes_by_kind tool Heckle list_nodes_by_kind tool Heroku list_nodes_by_kind tool HTTP/2 list_nodes_by_kind tool ImageMagick list_nodes_by_kind+search_nodes tool image_processing gem list_nodes_by_kind tool interactor list_nodes_by_kind tool Iodine list_nodes_by_kind tool Java list_nodes_by_kind tool JIRA list_nodes_by_kind tool JSON API Resources list_nodes_by_kind+search_nodes tool libvips list_nodes_by_kind tool Matrix (Ruby stdlib) list_nodes_by_kind tool methods gem list_nodes_by_kind tool mini_magick list_nodes_by_kind tool MinIO list_nodes_by_kind tool minitest list_nodes_by_kind tool MobX list_nodes_by_kind tool mruby list_nodes_by_kind tool Mutant list_nodes_by_kind tool .NET list_nodes_by_kind tool nginx list_nodes_by_kind tool Node.js list_nodes_by_kind tool Opal list_nodes_by_kind tool OptionParser list_nodes_by_kind tool Outlook list_nodes_by_kind tool Paperclip list_nodes_by_kind tool Perl list_nodes_by_kind tool Phoenix list_nodes_by_kind tool Plezi list_nodes_by_kind tool PostgreSQL list_nodes_by_kind tool power_assert list_nodes_by_kind tool Preact list_nodes_by_kind+search_nodes tool Prime (Ruby stdlib) list_nodes_by_kind tool Prometheus list_nodes_by_kind tool Protocol Buffers list_nodes_by_kind+search_nodes tool PStore list_nodes_by_kind tool Puma list_nodes_by_kind tool PureScript list_nodes_by_kind+search_nodes tool QEMU list_nodes_by_kind tool Rack list_nodes_by_kind tool Rails 5.2 list_nodes_by_kind tool rails_event_store list_nodes_by_kind tool React list_nodes_by_kind tool RealtimeBoard list_nodes_by_kind+search_nodes tool Redis list_nodes_by_kind tool Redmine list_nodes_by_kind tool Refile list_nodes_by_kind tool Reform list_nodes_by_kind tool RSpec list_nodes_by_kind tool Ruby list_nodes_by_kind tool Ruby Browser Detection Gem list_nodes_by_kind tool ruby-contracts list_nodes_by_kind tool Ruby Event Store list_nodes_by_kind tool Ruby on Rails list_nodes_by_kind tool Rust list_nodes_by_kind tool Sequel list_nodes_by_kind tool Shrine list_nodes_by_kind tool Sidekiq list_nodes_by_kind tool Sonic Pi list_nodes_by_kind+search_nodes tool Spring list_nodes_by_kind tool Stimulus list_nodes_by_kind tool streamio-ffmpeg list_nodes_by_kind tool Sync Space VR list_nodes_by_kind tool ThingSpeak list_nodes_by_kind tool Trailblazer list_nodes_by_kind tool TruffleRuby list_nodes_by_kind tool TSort list_nodes_by_kind tool TypeScript list_nodes_by_kind tool Tyrant list_nodes_by_kind tool Uppy list_nodes_by_kind tool WebP list_nodes_by_kind tool webpagetest.org list_nodes_by_kind tool Wolfram Language list_nodes_by_kind tool Zencoder list_nodes_by_kind+search_nodes concept Active Record list_nodes_by_kind concept ActiveSupport Core Extensions list_nodes_by_kind concept Aggregate Root list_nodes_by_kind concept Aggregate Root Anti-Pattern list_nodes_by_kind concept Aggregate-Scoped Sequence Number list_nodes_by_kind concept Aggregator list_nodes_by_kind concept Alive and Dead Mutations list_nodes_by_kind concept Anti-Corruption Layer list_nodes_by_kind concept Application Logic vs Business Logic list_nodes_by_kind concept Architecture Drivers list_nodes_by_kind concept Auto-yielding Fibers list_nodes_by_kind concept Belarus list_nodes_by_kind concept Blocking I/O list_nodes_by_kind concept Boolean Flags as Implicit State list_nodes_by_kind+search_nodes concept Bouncing Select list_nodes_by_kind concept Bounded Context list_nodes_by_kind concept BPMN list_nodes_by_kind concept Breadth-First Search for Code Removal list_nodes_by_kind concept Cache Preheating list_nodes_by_kind concept Command Bus list_nodes_by_kind concept Command Form list_nodes_by_kind+search_nodes concept Command Handler list_nodes_by_kind concept Command Message list_nodes_by_kind concept Command Query Separation list_nodes_by_kind concept Commands, Queries, and Events list_nodes_by_kind concept Command UUID Deduplication list_nodes_by_kind+search_nodes concept Common Table Expression list_nodes_by_kind concept Context Map list_nodes_by_kind concept Contextualized Complexity list_nodes_by_kind concept Convention over Configuration list_nodes_by_kind concept Conway's Law list_nodes_by_kind concept Core Domain list_nodes_by_kind concept Coupling list_nodes_by_kind concept CQRS list_nodes_by_kind concept CSS-in-JS list_nodes_by_kind+search_nodes concept Current State list_nodes_by_kind concept Cynefin Framework list_nodes_by_kind concept DDD Whirlpool list_nodes_by_kind+search_nodes concept Denormalizer / Read Model list_nodes_by_kind concept Dependency Injection list_nodes_by_kind concept DescendantsTracker list_nodes_by_kind concept Developer vs Programmer list_nodes_by_kind concept Direct Upload to Cloud list_nodes_by_kind concept Distributed Monolith list_nodes_by_kind+search_nodes concept Distributed Systems list_nodes_by_kind concept Domain-Driven Design list_nodes_by_kind concept Domain Model (vs Active Record Model) list_nodes_by_kind concept Domain Storytelling list_nodes_by_kind concept Duck Typing list_nodes_by_kind concept Elixir Pipe Operator list_nodes_by_kind concept Embrace The Evented Model list_nodes_by_kind concept Entity Caching and Snapshotting list_nodes_by_kind concept Entity Coupled To Messaging list_nodes_by_kind concept Entity Projection list_nodes_by_kind concept epoll list_nodes_by_kind concept Equivalent Mutation list_nodes_by_kind concept Event Bus list_nodes_by_kind concept Event-Driven Architecture list_nodes_by_kind concept Event Handler Error Strategy list_nodes_by_kind concept Events and Commands list_nodes_by_kind concept Event Sourcing list_nodes_by_kind+search_nodes concept Event Store list_nodes_by_kind+search_nodes concept EventStorming list_nodes_by_kind concept Eventual Consistency list_nodes_by_kind concept Event Versioning / Upcasting list_nodes_by_kind concept Expected Version list_nodes_by_kind concept Five Whys list_nodes_by_kind concept Fixtures over Factories list_nodes_by_kind concept Flame Graphs list_nodes_by_kind concept Flat Model Structure list_nodes_by_kind concept Form Object as Model Concern list_nodes_by_kind concept Fragment Caching list_nodes_by_kind concept Function as a Service list_nodes_by_kind concept Global Interpreter Lock list_nodes_by_kind concept H.264 list_nodes_by_kind concept Hexagonal Architecture list_nodes_by_kind concept HTTP/2 Server Push list_nodes_by_kind concept HTTP Caching with ETag and Last-Modified list_nodes_by_kind concept Ideal Rails System Properties list_nodes_by_kind concept Idempotence list_nodes_by_kind concept Idempotent Projectors and Reactors list_nodes_by_kind concept Image bomb list_nodes_by_kind concept Immersion-Driven Workflow list_nodes_by_kind concept Incremental Mutation Testing list_nodes_by_kind concept Initial Coin Offering list_nodes_by_kind concept Interface Wrapper for Ruby list_nodes_by_kind concept IO.select list_nodes_by_kind concept JSON API list_nodes_by_kind+search_nodes concept kqueue list_nodes_by_kind concept LATERAL join list_nodes_by_kind concept Magic bytes MIME detection list_nodes_by_kind concept Majestic Monolith list_nodes_by_kind concept Match Expression list_nodes_by_kind concept Message Store list_nodes_by_kind concept Method References in Ruby list_nodes_by_kind concept Mind Map Knowledge Base for Event Sourcing list_nodes_by_kind concept Monolith as Data Model list_nodes_by_kind concept MP4 list_nodes_by_kind concept Mutation Operator list_nodes_by_kind concept Mutation Testing list_nodes_by_kind concept Mutation Testing Preconditions list_nodes_by_kind concept Mutator Layer list_nodes_by_kind concept MVC Modularity Violations list_nodes_by_kind concept Named Routes and I18n Everywhere list_nodes_by_kind concept Namespace-Based Folder Hierarchy list_nodes_by_kind concept Nested Aggregates list_nodes_by_kind concept Non-blocking I/O list_nodes_by_kind concept Null Object Pattern list_nodes_by_kind concept ObjectSpace heap dumps list_nodes_by_kind concept On-the-fly Processing list_nodes_by_kind concept On-Upload Processing list_nodes_by_kind concept Opaque Dependencies list_nodes_by_kind concept Orphan Files list_nodes_by_kind concept Page Load Time Budget list_nodes_by_kind concept Partitioning list_nodes_by_kind concept Performance Time Budget list_nodes_by_kind concept Petri Nets list_nodes_by_kind+search_nodes concept Pipeline Operator list_nodes_by_kind+search_nodes concept Plain Old Java Object list_nodes_by_kind concept Policies and Strategies list_nodes_by_kind concept Polymorphic Aggregate list_nodes_by_kind concept Preloading and Prefetching list_nodes_by_kind concept Process Manager list_nodes_by_kind concept Progressive Web Apps list_nodes_by_kind concept Projector list_nodes_by_kind concept Rails Reload-Safe ES Configuration list_nodes_by_kind concept Rails RouteSet clear list_nodes_by_kind concept Rails Testing Pyramid (Ivan's version) list_nodes_by_kind concept Railway Oriented Programming list_nodes_by_kind concept Reactive Programming list_nodes_by_kind concept Reactor list_nodes_by_kind concept Read/Write Disparity list_nodes_by_kind concept Read-Write Split list_nodes_by_kind concept Real-time Web Applications list_nodes_by_kind concept Refinements list_nodes_by_kind concept Reservation Pattern list_nodes_by_kind+search_nodes concept respond_to Anti-Pattern list_nodes_by_kind concept REST Representations list_nodes_by_kind concept Resumable Uploads list_nodes_by_kind concept Ruby memory retention behavior list_nodes_by_kind concept Ruby Module Customization Mechanics list_nodes_by_kind concept Ruby undef_method performance list_nodes_by_kind concept Russian Doll Caching list_nodes_by_kind concept Saga Pattern list_nodes_by_kind+search_nodes concept Saga / Process Manager list_nodes_by_kind concept Scope Concerns list_nodes_by_kind concept Selection (Mutant) list_nodes_by_kind concept Senior Developer Title list_nodes_by_kind concept Serverless list_nodes_by_kind concept Service Autonomy list_nodes_by_kind concept Smart Contract list_nodes_by_kind question How is the event-write kept consistent with external operations? search_nodes concept Snapshotting list_nodes_by_kind+search_nodes concept Socket Hijacking list_nodes_by_kind concept Sometimes Nothing Is Enough list_nodes_by_kind concept Stalling For Time list_nodes_by_kind concept Stateless Service Object list_nodes_by_kind concept State Machine list_nodes_by_kind concept Static Page Caching via nginx list_nodes_by_kind concept Stubs over Mocks list_nodes_by_kind concept Subject (Mutant) list_nodes_by_kind concept Tacit Knowledge list_nodes_by_kind concept Task-Driven UI list_nodes_by_kind concept TC39 list_nodes_by_kind concept TCP Slow Start list_nodes_by_kind concept Trailblazer Activity list_nodes_by_kind concept Trailblazer Operation list_nodes_by_kind concept Trailblazer Workflow list_nodes_by_kind concept Transpilers list_nodes_by_kind concept tus protocol list_nodes_by_kind concept Ubiquitous Language list_nodes_by_kind concept Unique Per-Site Email Leak Detection list_nodes_by_kind concept Value Object list_nodes_by_kind concept Vector Clock list_nodes_by_kind concept VFIO PCI passthrough list_nodes_by_kind concept View-Biased Event Schemas list_nodes_by_kind concept Virtual DOM list_nodes_by_kind concept VNC list_nodes_by_kind concept Waterfall Analysis list_nodes_by_kind concept Weasel Words list_nodes_by_kind concept WebAssembly list_nodes_by_kind concept WebM list_nodes_by_kind concept WebSockets list_nodes_by_kind concept yield_self list_nodes_by_kind concept YUV 4:2:0 list_nodes_by_kind concept Zero-Disconnect Deployment list_nodes_by_kind question JSON API or GraphQL — what do you recommend? search_nodes takeaway Sign serverlessforruby.org petition search_nodes takeaway Don't follow JSON API religiously search_nodes talk Towards the post framework future search_nodes talk Adventures in durable execution search_nodes takeaway Replay-Based Debugging search_nodes takeaway Silver Bullet Anti-Pattern search_nodes takeaway Avoid complexity before fighting it search_nodes question How to detect coupling in a large existing project? search_nodes talk Building LLM powered applications in Ruby search_nodes talk Scientific Ruby Lightning Talk search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes talk JavaScript and Frontend Panel search_nodes talk How wroclove.rb impacts developers and companies search_nodes talk Ever shorter feedback loop search_nodes takeaway Immutable Database Raises Mistake Cost search_nodes talk Fantastic Databases and Where to Find Them search_nodes question How do you deal with GDPR in an immutable event store? search_nodes talk Ethereum Smart Contracts Lightning Talk search_nodes talk FaaS for Ruby Lightning Talk search_nodes talk Gaming With Ruby and VMs Lightning Talk search_nodes talk Spice up your life with eql search_nodes+get_node_edges talk An Introduction to Test Bench search_nodes takeaway Collect as much video metadata as you can search_nodes talk Events events events search_nodes company Transloadit search_nodes

4 edges