← 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 CasaauthoredWhen 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 Railspresented_atwroclove.rb 2026
context (empty) Presented on day 1 of wroclove.rb 2026.
create Emiliano Della Casaworks_onruby-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-asteriskrelated_toAsterisk 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 Casarelated_toRuby 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 Casaworks_onRubicon
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 Rubiconrelated_toRuby 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 RailsaboutREST
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 RailsaboutgRPC
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 RailsaboutGraphQL
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 RailsaboutMQTT
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 RailsaboutModel 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 gRPCusesHTTP/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 gRPCusesProtocol 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 Railsaboutgrpcurl
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 Railsaboutgraphql-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 Railsaboutruby-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 RailsaboutMosquitto
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 Railsaboutfast-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 RailsaboutClaude 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 ProtocolusesJSON-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 Protocolrelated_toAnthropic
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 Coderelated_toAnthropic
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 CasausesgRPC
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 thereasked_atWhen 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 thereaboutgRPC
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 thereaboutTwirp
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_atWhen 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?aboutMQTT
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?aboutWebSockets
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_atWhen 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?aboutHTTP 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?aboutREST
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?aboutGraphQL
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?aboutModel 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 Townsendattendedwroclove.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 TownsendrecommendsHTTP 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 communicationfrom_talkWhen 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 communicationaboutgRPC
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 queriesfrom_talkWhen 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 queriesaboutGraphQL
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 messagingfrom_talkWhen 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 messagingaboutMQTT
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 integrationsfrom_talkWhen 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 integrationsaboutModel 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