← Extractions

When REST is Not Enough — Alternative Protocols in Ruby on Rails (wroclove.rb 2026)

Emiliano Della Casa surveys four alternatives to REST — gRPC, GraphQL, MQTT and MCP — with small Rails demos of each against a toy e-commerce order service, explaining the trade-offs and when to pick each. Q&A covers Twirp as a gRPC alternative, MQTT versus WebSockets, and applying HTTP shared dictionary compression to JSON APIs.

Model
claude-opus-4-7
Ingestion
05cc9725
Input tokens
272,514
fresh
84,279
cached
122,852
cache write
65,383
Output tokens
13,477
Duration
187.4s
Roundtrips
6
Tool calls
24
Cost
$0.00
Nodes/edges extracted
28 / 45
Read set (nodes/edges)
139 / 2

Nodes (28)

create Use MQTT for IoT and bidirectional messaging takeaway
kind (empty) → takeaway
name (empty) → Use MQTT for IoT and bidirectional messaging
slug (empty) → use-mqtt-for-iot-and-bidirectional-messaging
attrs (empty) → {"type" => "recommendation"}
description (empty) → Emiliano's recommendation: pick MQTT for IoT and for environments where bidirectional communication via a broker is d...
short_description (empty) → MQTT fits IoT and scenarios needing broker-mediated bidirectional messages.
create Use GraphQL when clients need flexible queries takeaway
kind (empty) → takeaway
name (empty) → Use GraphQL when clients need flexible queries
slug (empty) → use-graphql-when-clients-need-flexible-queries
attrs (empty) → {"type" => "recommendation"}
description (empty) → Emiliano's recommendation: pick GraphQL when different clients or situations need different combinations of attribute...
short_description (empty) → GraphQL wins when clients need varying attribute and object selections.
create Ruby Gem Fellowship Fund resource
kind (empty) → resource
name (empty) → Ruby Gem Fellowship Fund
slug (empty) → ruby-gem-fellowship-fund
attrs (empty) → {"type" => "program"}
description (empty) → Fellowship fund (transcribed as 'Psychic' but referring to a Shopify-supported program) that sponsors maintainers of ...
short_description (empty) → Shopify-backed program funding Ruby gem maintainers.
create JSON-RPC concept
kind (empty) → concept
name (empty) → JSON-RPC
slug (empty) → json-rpc
attrs (empty) → {"category" => "protocol"}
description (empty) → Lightweight remote procedure call protocol encoding method name, params, id, and result/error as JSON messages. Used ...
short_description (empty) → Remote procedure call protocol that encodes calls as JSON messages.
create fast-mcp tool
kind (empty) → tool
name (empty) → fast-mcp
slug (empty) → fast-mcp
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → Ruby gem for implementing Model Context Protocol servers. No longer actively maintained at the time of Emiliano's wro...
short_description (empty) → Ruby gem for building MCP servers; largely unmaintained.
update Emiliano Della Casa person
attrs (empty) → {"role" => "independent consultant", "location" => "Modena, Italy"}
description Ruby developer working with alternative protocols beyond REST. → Independent Ruby consultant based in Modena, Italy. Maintainer of the ruby-asterisk gem (a gem for interacting with A...
short_description Ruby developer, alternative protocols. → Italian Ruby consultant; maintainer of ruby-asterisk; Rubicon organizer.
update When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails talk
attrs {"type" => "talk"} → {"date" => "2026-04-17", "type" => "talk"}
description Talk on alternative protocols in Ruby on Rails. → Emiliano Della Casa's wroclove.rb 2026 talk. Opens with why REST is a de facto standard (simple, accessible, Rails-de...
short_description Talk on alternative protocols in Ruby on Rails. → Survey of gRPC, GraphQL, MQTT and MCP as REST alternatives in Rails.
create Rubicon event
kind (empty) → event
name (empty) → Rubicon
slug (empty) → rubicon
attrs (empty) → {"format" => "in-person", "location" => "Rimini, Italy"}
description (empty) → Ruby conference in Italy, started by Emiliano Della Casa and friends after Ruby Day stopped in 2024. First edition to...
short_description (empty) → Italian Ruby conference succeeding Ruby Day, held in Rimini.
create Ruby Day event
kind (empty) → event
name (empty) → Ruby Day
slug (empty) → ruby-day
attrs (empty) → {"format" => "in-person", "status" => "discontinued", "location" => "Italy"}
description (empty) → Long-running Italian Ruby conference which stopped in 2024. Its discontinuation prompted Emiliano Della Casa and frie...
short_description (empty) → Historic Italian Ruby conference that ended in 2024.
create ruby-asterisk tool
kind (empty) → tool
name (empty) → ruby-asterisk
slug (empty) → ruby-asterisk
attrs (empty) → {"license" => "open-source", "category" => "library", "language" => "Ruby"}
description (empty) → Open-source Ruby gem maintained by Emiliano Della Casa that provides bindings for interacting with the Asterisk PBX. ...
short_description (empty) → Ruby gem for interacting with Asterisk PBX from Ruby.
create Asterisk PBX tool
kind (empty) → tool
name (empty) → Asterisk PBX
slug (empty) → asterisk-pbx
attrs (empty) → {"category" => "platform"}
description (empty) → Open-source private branch exchange (PBX) software for VoIP telephony. Target system of the ruby-asterisk gem.
short_description (empty) → Open-source private branch exchange for telephony.
update gRPC tool
attrs {"category" => "framework"} → {"category" => "framework", "released" => "2015"}
description Universal RPC framework, popularly attributed to Google (powers many public Google APIs). Uses HTTP/2 (allowing many ... → Universal RPC framework released as open source by Google on GitHub in 2015. Built on two pillars: HTTP/2 (multiplexe...
update Protocol Buffers tool
description Binary wire format with fast (de)serialization and effective implicit compression. Paired with HTTP/2 inside gRPC. → Binary wire format with fast (de)serialization and effective implicit compression. Paired with HTTP/2 inside gRPC; th...
create grpcurl tool
kind (empty) → tool
name (empty) → grpcurl
slug (empty) → grpcurl
attrs (empty) → {"category" => "tool"}
description (empty) → Command-line client for invoking gRPC services, analogous to curl for REST. Accepts the protofile describing the serv...
short_description (empty) → curl-equivalent CLI client for gRPC services.
update GraphQL tool
attrs {"category" => "library"} → {"category" => "library", "released" => "2015"}
description Query language describing data using a type system, with bindings for many programming languages. Open-sourced by Fac... → Query language describing data using a type system, with bindings for many languages. Released by Facebook in 2015 as...
create MQTT tool
kind (empty) → tool
name (empty) → MQTT
slug (empty) → mqtt
attrs (empty) → {"category" => "protocol"}
description (empty) → Pub/sub messaging protocol originally developed for IoT devices. Clients connect to a broker and publish/subscribe on...
short_description (empty) → Lightweight pub/sub messaging protocol for IoT and bidirectional messaging.
create Mosquitto tool
kind (empty) → tool
name (empty) → Mosquitto
slug (empty) → mosquitto
attrs (empty) → {"license" => "open-source", "category" => "service"}
description (empty) → The most common open-source MQTT broker, used in Emiliano's wroclove.rb 2026 demo as the broker between the Ruby mqtt...
short_description (empty) → Common open-source MQTT broker with CLI pub/sub clients.
create ruby-mqtt tool
kind (empty) → tool
name (empty) → ruby-mqtt
slug (empty) → ruby-mqtt
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → Ruby gem providing an MQTT client. Used in Emiliano's wroclove.rb 2026 Rails demo in an initializer to connect to Mos...
short_description (empty) → Ruby gem for connecting to MQTT brokers.
create Model Context Protocol concept
kind (empty) → concept
name (empty) → Model Context Protocol
slug (empty) → model-context-protocol
attrs (empty) → {"category" => "protocol", "released" => "2024"}
description (empty) → Protocol released by Anthropic in 2024, based on JSON-RPC, designed for LLMs to invoke tools. LLM-ready in a way REST...
short_description (empty) → JSON-RPC-based protocol for exposing tools to LLMs.
create Claude Code tool
kind (empty) → tool
name (empty) → Claude Code
slug (empty) → claude-code
attrs (empty) → {"category" => "tool"}
description (empty) → Anthropic's LLM coding agent, used in Emiliano's wroclove.rb 2026 MCP demo with a small configuration file pointing C...
short_description (empty) → Anthropic's terminal coding agent with MCP support.
create Twirp tool
kind (empty) → tool
name (empty) → Twirp
slug (empty) → twirp
attrs (empty) → {"category" => "framework"}
description (empty) → RPC framework developed at Twitch as an improvement over gRPC for cases where gRPC proved problematic. Uses Protocol ...
short_description (empty) → Simpler Protobuf-based RPC framework developed at Twitch.
create HTTP Shared Dictionary Compression concept
kind (empty) → concept
name (empty) → HTTP Shared Dictionary Compression
slug (empty) → http-shared-dictionary-compression
attrs (empty) → {"category" => "pattern"}
description (empty) → HTTP-level compression technique that uses a pre-shared dictionary of commonly occurring tokens (e.g. all JSON keys a...
short_description (empty) → HTTP-level compression using a pre-shared dictionary of common tokens.
create Ruby developer at Google says gRPC is no longer used there question
kind (empty) → question
name (empty) → Ruby developer at Google says gRPC is no longer used there
slug (empty) → ruby-developer-at-google-says-grpc-is-no-longer-used-there
attrs (empty) → {"answer_summary" => "Experiences differ; Google is huge. Twirp is a recommended Protobuf-based alternative. Speaker ...
description (empty) → Audience member mentions friends at Google claiming gRPC isn't used there anymore, and recommends Twirp (developed at...
short_description (empty) → Is gRPC still used internally at Google?
create How does MQTT compare with WebSockets? question
kind (empty) → question
name (empty) → How does MQTT compare with WebSockets?
slug (empty) → how-does-mqtt-compare-with-websockets
attrs (empty) → {"answer_summary" => "Different use cases: WebSockets are direct client↔server; MQTT always goes through a broker, so...
description (empty) → Audience question at wroclove.rb 2026. Emiliano sees them as different use cases rather than equivalents. WebSockets ...
short_description (empty) → Bidirectional MQTT vs WebSockets — are they interchangeable?
create Can shared dictionaries help JSON APIs? question
kind (empty) → question
name (empty) → Can shared dictionaries help JSON APIs?
slug (empty) → can-shared-dictionaries-help-json-apis
attrs (empty) → {"answer_summary" => "Yes — shared dictionaries apply at HTTP level to REST/GraphQL/MCP and can bring payload sizes c...
description (empty) → Ryan Townsend follows up from his own wroclove.rb 2026 talk: HTTP shared dictionary compression is done at the HTTP l...
short_description (empty) → Applying HTTP shared dictionaries to REST, GraphQL, and MCP.
create Use gRPC for high-performance internal service communication takeaway
kind (empty) → takeaway
name (empty) → Use gRPC for high-performance internal service communication
slug (empty) → use-grpc-for-high-performance-internal-service-communication
attrs (empty) → {"type" => "recommendation"}
description (empty) → Emiliano's recommendation: pick gRPC when communicating between different systems in the same architecture and perfor...
short_description (empty) → gRPC fits same-architecture service-to-service links needing top performance.
create Use MCP for LLM integrations takeaway
kind (empty) → takeaway
name (empty) → Use MCP for LLM integrations
slug (empty) → use-mcp-for-llm-integrations
attrs (empty) → {"type" => "recommendation"}
description (empty) → Emiliano's recommendation: pick the Model Context Protocol whenever you are integrating with an LLM. Although slower ...
short_description (empty) → MCP is the natural protocol when exposing tools to LLMs.
update Ryan Townsend person
description Ruby developer advocating modern UX with Rails and web standards. → Ruby developer advocating modern UX with Rails and web standards. At wroclove.rb 2026 he gave a talk the day before E...
short_description Ruby developer, no-build frontend. → Ruby developer; speaker on modern web performance and HTTP techniques.

Edges (45)

update Emiliano Della Casa → authored → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Emiliano gave this talk at wroclove.rb 2026.
update When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → presented_at → wroclove.rb 2026
context (empty) → Presented on day 1 of wroclove.rb 2026.
create Emiliano Della Casa → works_on → ruby-asterisk
attrs (empty) → {"role" => "maintainer"}
context (empty) → Original author and current maintainer of the gem.
relation (empty) → works_on
source_node_id (empty) → 85711902-124e-4a56-bc59-0ba0d40bd15d
target_node_id (empty) → 34916e34-ab93-469f-a004-fa92d7e8dc6c
create ruby-asterisk → related_to → Asterisk PBX
context (empty) → The gem provides Ruby bindings for interacting with Asterisk PBX.
relation (empty) → related_to
source_node_id (empty) → 34916e34-ab93-469f-a004-fa92d7e8dc6c
target_node_id (empty) → e09308a8-da0c-4bf3-9ed1-60466a0d9f5a
create Emiliano Della Casa → related_to → Ruby Gem Fellowship Fund
context (empty) → Won the fellowship, which prompted him to resume maintaining ruby-asterisk.
relation (empty) → related_to
source_node_id (empty) → 85711902-124e-4a56-bc59-0ba0d40bd15d
target_node_id (empty) → e99fe502-39cf-4714-aae9-5a7fe5c6fe24
create Emiliano Della Casa → works_on → Rubicon
attrs (empty) → {"role" => "organizer"}
context (empty) → Co-organizer of Rubicon, a new Italian Ruby conference.
relation (empty) → works_on
source_node_id (empty) → 85711902-124e-4a56-bc59-0ba0d40bd15d
target_node_id (empty) → 34c2d766-add0-4ae6-b11d-750f4fdf88ea
create Rubicon → related_to → Ruby Day
context (empty) → Rubicon was founded to succeed Ruby Day, which ended in 2024.
relation (empty) → related_to
source_node_id (empty) → 34c2d766-add0-4ae6-b11d-750f4fdf88ea
target_node_id (empty) → efdbf4ad-f538-4ddc-9119-6735ae5ff206
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → REST
context (empty) → Talk frames alternatives in contrast to REST as the default.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 1e449edf-802d-44aa-b87c-911f69be1091
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → gRPC
context (empty) → First alternative protocol covered, with a Rails demo.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 52c07f52-77b9-46e0-a04d-57af30c94ab9
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → GraphQL
context (empty) → Second alternative protocol covered, demoed via graphql-ruby.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → c6a1041c-3116-4194-b7f0-eba7cd4a7e64
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → MQTT
context (empty) → Third alternative protocol covered, demoed via ruby-mqtt and Mosquitto.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 01ab0c39-6e75-46a3-9aa8-131d483f61c3
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → Model Context Protocol
context (empty) → Fourth alternative protocol covered, demoed via fast-mcp and Claude Code.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 6989a277-5533-4c90-8e9d-e0f21626ca6f
create gRPC → uses → HTTP/2
context (empty) → gRPC is built on top of HTTP/2 for multiplexed streaming.
relation (empty) → uses
source_node_id (empty) → 52c07f52-77b9-46e0-a04d-57af30c94ab9
target_node_id (empty) → 09bad78e-f8a8-4348-a1ef-1dce44d689a5
update gRPC → uses → Protocol Buffers
context gRPC uses protobuf for wire serialization. → gRPC uses Protocol Buffers for serialization.
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → grpcurl
context (empty) → Used in the gRPC demo to call the CreateOrder RPC.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 37579b67-dd59-4fb0-8d94-6c165d8671fa
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → graphql-ruby
context (empty) → Used in the GraphQL demo to expose a createOrder mutation.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → be81c4e9-2645-4f1d-90cc-0d6cfe93cb6c
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → ruby-mqtt
context (empty) → Used in the MQTT demo to subscribe to the orders topic.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → d928694f-d73e-44a1-9690-f980dfe45ca2
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → Mosquitto
context (empty) → Used as the MQTT broker in the demo, with mosquitto_pub as CLI publisher.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 23880f7c-9946-48df-bdf0-4ec73467572d
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → fast-mcp
context (empty) → Used in the MCP demo to expose a create_order tool.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 0ca2e47f-f0d6-4b96-bfe3-4fe9659df0ce
create When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails → about → Claude Code
context (empty) → Used as the MCP client interpreting natural-language order creation.
relation (empty) → about
source_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
target_node_id (empty) → 67b6b051-ae27-4979-b396-0f1124f4a19c
create Model Context Protocol → uses → JSON-RPC
context (empty) → MCP messages are encoded over JSON-RPC.
relation (empty) → uses
source_node_id (empty) → 6989a277-5533-4c90-8e9d-e0f21626ca6f
target_node_id (empty) → a6cef221-fada-4624-abd9-11a4c46fb08a
create Model Context Protocol → related_to → Anthropic
context (empty) → MCP was released by Anthropic in 2024.
relation (empty) → related_to
source_node_id (empty) → 6989a277-5533-4c90-8e9d-e0f21626ca6f
target_node_id (empty) → 8a4c3ea5-b30a-4f01-a987-c584b8e991ab
create Claude Code → related_to → Anthropic
context (empty) → Claude Code is Anthropic's LLM coding agent.
relation (empty) → related_to
source_node_id (empty) → 67b6b051-ae27-4979-b396-0f1124f4a19c
target_node_id (empty) → 8a4c3ea5-b30a-4f01-a987-c584b8e991ab
create Emiliano Della Casa → uses → gRPC
context (empty) → Used gRPC in production for a snowplow fleet-tracking application that scales to ~10,000 vehicles.
relation (empty) → uses
source_node_id (empty) → 85711902-124e-4a56-bc59-0ba0d40bd15d
target_node_id (empty) → 52c07f52-77b9-46e0-a04d-57af30c94ab9
create Ruby developer at Google says gRPC is no longer used there → asked_at → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Audience question during the talk's Q&A.
relation (empty) → asked_at
source_node_id (empty) → 4d5501d2-3e99-4ac2-a49a-37d541854ea7
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Ruby developer at Google says gRPC is no longer used there → about → gRPC
context (empty) → About gRPC adoption at Google.
relation (empty) → about
source_node_id (empty) → 4d5501d2-3e99-4ac2-a49a-37d541854ea7
target_node_id (empty) → 52c07f52-77b9-46e0-a04d-57af30c94ab9
create Ruby developer at Google says gRPC is no longer used there → about → Twirp
context (empty) → Audience member recommends Twirp as a gRPC alternative from Twitch.
relation (empty) → about
source_node_id (empty) → 4d5501d2-3e99-4ac2-a49a-37d541854ea7
target_node_id (empty) → 14bcd1b0-7c71-4ce0-9770-278da78d8a88
create How does MQTT compare with WebSockets? → asked_at → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Audience question during the talk's Q&A.
relation (empty) → asked_at
source_node_id (empty) → 622998ed-2bb4-409a-8d70-8954d674faab
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create How does MQTT compare with WebSockets? → about → MQTT
context (empty) → Comparing MQTT broker-mediated pub/sub with direct WebSocket connections.
relation (empty) → about
source_node_id (empty) → 622998ed-2bb4-409a-8d70-8954d674faab
target_node_id (empty) → 01ab0c39-6e75-46a3-9aa8-131d483f61c3
create How does MQTT compare with WebSockets? → about → WebSockets
context (empty) → The question contrasts MQTT with WebSocket-based communication.
relation (empty) → about
source_node_id (empty) → 622998ed-2bb4-409a-8d70-8954d674faab
target_node_id (empty) → aed5cd48-754d-4e28-81ee-a14e040adf2b
create Can shared dictionaries help JSON APIs? → asked_at → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Ryan Townsend raised this point during the Q&A.
relation (empty) → asked_at
source_node_id (empty) → 9193fc13-c6a4-4544-8a29-2ceae9430450
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Can shared dictionaries help JSON APIs? → about → HTTP Shared Dictionary Compression
context (empty) → Topic of the Q&A exchange.
relation (empty) → about
source_node_id (empty) → 9193fc13-c6a4-4544-8a29-2ceae9430450
target_node_id (empty) → 82606a69-79f9-4047-a82d-4bb3bec1778d
create Can shared dictionaries help JSON APIs? → about → REST
context (empty) → Shared dictionaries can compress REST JSON payloads.
relation (empty) → about
source_node_id (empty) → 9193fc13-c6a4-4544-8a29-2ceae9430450
target_node_id (empty) → 1e449edf-802d-44aa-b87c-911f69be1091
create Can shared dictionaries help JSON APIs? → about → GraphQL
context (empty) → Shared dictionaries can compress GraphQL JSON payloads.
relation (empty) → about
source_node_id (empty) → 9193fc13-c6a4-4544-8a29-2ceae9430450
target_node_id (empty) → c6a1041c-3116-4194-b7f0-eba7cd4a7e64
create Can shared dictionaries help JSON APIs? → about → Model Context Protocol
context (empty) → Expected to apply to MCP once clients support it.
relation (empty) → about
source_node_id (empty) → 9193fc13-c6a4-4544-8a29-2ceae9430450
target_node_id (empty) → 6989a277-5533-4c90-8e9d-e0f21626ca6f
create Ryan Townsend → attended → wroclove.rb 2026
context (empty) → Attended wroclove.rb 2026 and asked a question during Emiliano's Q&A.
relation (empty) → attended
source_node_id (empty) → e3b7fd5e-d68c-4961-a643-f0a2e4f9225a
target_node_id (empty) → c1bfbda9-9fbb-4d7f-8e12-1a7a81621ba9
create Ryan Townsend → recommends → HTTP Shared Dictionary Compression
context (empty) → Advocated shared dictionary compression as a way to shrink JSON API payloads close to Protobuf size.
relation (empty) → recommends
source_node_id (empty) → e3b7fd5e-d68c-4961-a643-f0a2e4f9225a
target_node_id (empty) → 82606a69-79f9-4047-a82d-4bb3bec1778d
create Use gRPC for high-performance internal service communication → from_talk → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Concluding recommendation of the talk.
relation (empty) → from_talk
source_node_id (empty) → 82f792bb-330f-4210-9451-573af0c11a2a
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Use gRPC for high-performance internal service communication → about → gRPC
context (empty) → Recommendation covers when to pick gRPC.
relation (empty) → about
source_node_id (empty) → 82f792bb-330f-4210-9451-573af0c11a2a
target_node_id (empty) → 52c07f52-77b9-46e0-a04d-57af30c94ab9
create Use GraphQL when clients need flexible queries → from_talk → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Concluding recommendation of the talk.
relation (empty) → from_talk
source_node_id (empty) → aea563eb-95fb-4c5a-bf00-3b385e678f41
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Use GraphQL when clients need flexible queries → about → GraphQL
context (empty) → Recommendation covers when to pick GraphQL.
relation (empty) → about
source_node_id (empty) → aea563eb-95fb-4c5a-bf00-3b385e678f41
target_node_id (empty) → c6a1041c-3116-4194-b7f0-eba7cd4a7e64
create Use MQTT for IoT and bidirectional messaging → from_talk → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Concluding recommendation of the talk.
relation (empty) → from_talk
source_node_id (empty) → 760fe22a-8047-44ae-acf1-8c6d81c4d0c2
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Use MQTT for IoT and bidirectional messaging → about → MQTT
context (empty) → Recommendation covers when to pick MQTT.
relation (empty) → about
source_node_id (empty) → 760fe22a-8047-44ae-acf1-8c6d81c4d0c2
target_node_id (empty) → 01ab0c39-6e75-46a3-9aa8-131d483f61c3
create Use MCP for LLM integrations → from_talk → When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails
context (empty) → Concluding recommendation of the talk.
relation (empty) → from_talk
source_node_id (empty) → b904862f-ce8e-4765-ac23-63c450f8aa45
target_node_id (empty) → e147da00-af99-4376-973e-28255e69361e
create Use MCP for LLM integrations → about → Model Context Protocol
context (empty) → Recommendation covers when to pick MCP.
relation (empty) → about
source_node_id (empty) → b904862f-ce8e-4765-ac23-63c450f8aa45
target_node_id (empty) → 6989a277-5533-4c90-8e9d-e0f21626ca6f

Read set

139 nodes

person Emiliano Della Casa search_nodes+get_node_edges project Ruby Romania search_nodes tool Ruby LLM search_nodes project Ruby News search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes resource Short Ruby Newsletter search_nodes tool langchainrb search_nodes talk Scientific Ruby Lightning Talk search_nodes tool TruffleRuby search_nodes tool Standard RB search_nodes tool gRPC search_nodes tool graphql-ruby search_nodes tool Rails 8.1 search_nodes tool Rails 5.2 search_nodes talk When REST is Not Enough: Implementing Alternative Protocols in Ruby on Rails search_nodes+get_node_edges event Rails World search_nodes tool Protocol Buffers search_nodes project logux-rails search_nodes tool Action Cable search_nodes concept Rails Engine search_nodes tool GraphQL search_nodes tool Apollo GraphQL search_nodes tool Apollo GraphQL Platform search_nodes concept GraphQL query batching search_nodes concept GraphQL query timeout search_nodes tool graphql-batch search_nodes tool graphql-preload search_nodes concept Nested GraphQL query bottleneck search_nodes concept GraphQL max_depth search_nodes concept tus protocol search_nodes concept Protocol Thinking search_nodes resource Rocket Real-Time Benchmark search_nodes concept WebSockets search_nodes tool ThingSpeak search_nodes tool BME280 search_nodes concept Pub/Sub Messaging search_nodes concept Zero-Disconnect Deployment search_nodes concept Context Map search_nodes concept MCP Server search_nodes takeaway MCP Servers Have No Security Model search_nodes concept Context Specification search_nodes concept Context-Free Identifiers search_nodes concept REST search_nodes tool JSON API Resources search_nodes concept JSON API search_nodes question JSON API or GraphQL — what do you recommend? search_nodes tool acts_as_api search_nodes question Have you considered going back to REST? search_nodes takeaway Don't follow JSON API religiously search_nodes concept REST Representations search_nodes tool Render search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes event wroclove.rb 2026 search_nodes event RubyKaigi search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2024 search_nodes event EmberConf search_nodes concept Ruby Hash as SQL AST search_nodes tool Distributed Ruby search_nodes tool async search_nodes tool HTTP gem search_nodes tool ruby-openai search_nodes tool interactor search_nodes tool Celluloid search_nodes company Shopify search_nodes tool Bootsnap search_nodes tool Packwerk search_nodes tool Klaviyo search_nodes talk Scaling an Open Source E-Commerce Framework search_nodes tool Tapioca search_nodes project rails_event_store/ecommerce search_nodes tool Solidus search_nodes tool Spree search_nodes project AnyCable search_nodes concept Logux Proxy search_nodes project mruby-esp32 search_nodes tool server-engine search_nodes tool RealtimeBoard search_nodes tool ChatGPT search_nodes talk Events events events search_nodes concept AI Agent search_nodes project Nerds and Threads search_nodes tool Falcor search_nodes concept HTTP Turbo Streams vs WebSocket Turbo Streams search_nodes company Anthropic search_nodes concept Retrieval Augmented Generation search_nodes concept LLM Tokens search_nodes takeaway Name Things To Find Their Properties search_nodes concept Vector Embeddings search_nodes concept Structured LLM Output search_nodes talk Ruby Is Mature Now search_nodes takeaway Support Your Local Ruby Community search_nodes talk Code Golfing in Ruby Lightning Talk search_nodes tool Brotli search_nodes tool gzip search_nodes takeaway Prefer Brotli over gzip when available search_nodes tool HTTP/2 search_nodes concept HTTP/2 Server Push search_nodes takeaway Signed On-the-fly URLs search_nodes takeaway Switch on HTTP/2 search_nodes concept HTTP Caching with ETag and Last-Modified search_nodes tool Requestly search_nodes concept HTTP Method Idempotence search_nodes person DHH search_nodes project Rails World Website search_nodes resource The Rails and Hotwire Codex search_nodes resource Rails Architect Master Class search_nodes tool Active Admin search_nodes talk Counterintuitive Rails pt. 1 search_nodes resource Painless Rails search_nodes concept Majestic Monolith search_nodes talk Mentoring the Rails World Website Lightning Talk search_nodes talk Mutation testing workshop wroclove.rb 2019 search_nodes talk Next Token! search_nodes concept LLM Tool Calling search_nodes tool llamafile search_nodes tool llama.cpp search_nodes project Check search_nodes concept xkcd Dependency / Nebraska Problem search_nodes concept Vector Database search_nodes tool permit.io search_nodes person Ryan Townsend search_nodes concept Performance SLA search_nodes project BBC Sport App search_nodes concept RAIL Performance Model search_nodes concept Performance Time Budget search_nodes question How to triage performance problems? search_nodes talk Offline Sandwich Focus Workflow search_nodes talk Sonic Pi Music Performance search_nodes tool jq search_nodes tool JRuby search_nodes event wroclove.rb 2025 search_nodes tool Argon2 search_nodes tool WebP search_nodes concept Password Shucking search_nodes tool DBM / SDBM / GDBM search_nodes concept Magic bytes MIME detection search_nodes

2 edges