← Extractions

Rubyana Gems and the Ractorous Rubetta Stones — Louis Antonopoulos at wroclove.rb 2026

Louis Antonopoulos (thoughtbot) gives an Indiana-Jones-themed tour of Ruby Ractors, walking through core patterns (send/receive/take/yield/select, streaming, conditional, pipeline) and then live-demoing a substitution-cipher breaker powered by quadgram scoring and simulated-annealing. Ractors finally outperform single-thread decryption once each Ractor uses a different starting key and increasingly aggressive cooling strategy, cracking five rotating ciphers in 60 seconds — the hidden messages being quotes from a Matz interview. Also introduces thoughtbot's new gems Top Secret, Top Secret LLM, and Michelle, and discusses learning cryptography while 'vibe coding' with Claude.

Model
claude-opus-4-7
Ingestion
a7fc2b82
Input tokens
376,753
fresh
91,306
cached
233,358
cache write
52,089
Output tokens
14,165
Duration
229.4s
Roundtrips
8
Tool calls
23
Cost
$0.00
Nodes/edges extracted
24 / 48
Read set (nodes/edges)
127 / 2

Nodes (24)

update Louis Antonopoulos person
attrs (empty) → {"role" => "developer / co-host of AI on Focus", "employer" => "thoughtbot"}
description Ruby developer, speaker on Ractor and concurrency. → Ruby developer at thoughtbot. Speaker on Ractor and concurrency. Recently named co-host of thoughtbot's AI on Focus l...
short_description Ruby developer. → thoughtbot developer, Ractor speaker, and co-host of AI on Focus livestream.
update Rubyana Gems and the Ractorous Rubetta Stones! talk
attrs {"type" => "talk"} → {"date" => "2026-04-17", "type" => "talk"}
description Talk on Ractor and concurrency. → Louis Antonopoulos's wroclove.rb 2026 talk framed as an Indiana Jones parody (originally 'Indiana Jones and the Rapto...
short_description Talk on Ractor and concurrency. → Indiana-Jones-themed wroclove.rb 2026 talk teaching Ruby Ractors via a live cipher-breaking demo.
create thoughtbot company
kind (empty) → company
name (empty) → thoughtbot
slug (empty) → thoughtbot
attrs (empty) → {"industry" => "design/development/product agency"}
description (empty) → Design, development and product agency best known in the Ruby community for its open-source gems — most famously fact...
short_description (empty) → Design, development and product agency; publisher of factory_bot and other popular Ruby gems.
create Top Secret tool
kind (empty) → tool
name (empty) → Top Secret
slug (empty) → top-secret
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → New thoughtbot Ruby gem. Anonymizes text destined for LLMs or external APIs in a structured way: private information ...
short_description (empty) → thoughtbot gem that anonymizes text into structured JSON before sending to LLMs/APIs.
create Top Secret LLM tool
kind (empty) → tool
name (empty) → Top Secret LLM
slug (empty) → top-secret-llm
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → New thoughtbot gem paired with Top Secret, specifically tailored for LLM interactions. Works with Top Secret to keep ...
short_description (empty) → Companion thoughtbot gem for anonymizing LLM interactions.
create Michelle tool
kind (empty) → tool
name (empty) → Michelle
slug (empty) → michelle
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → New thoughtbot Ruby gem tailored for healthcare applications that need user self-scheduling — for example letting a p...
short_description (empty) → thoughtbot gem for user self-scheduling in healthcare apps.
create factory_bot_rails tool
kind (empty) → tool
name (empty) → factory_bot_rails
slug (empty) → factory_bot_rails
attrs (empty) → {"category" => "library", "language" => "Ruby"}
description (empty) → Rails integration gem for factory_bot, published by thoughtbot. Alongside factory_bot, one of the most popular Ruby g...
short_description (empty) → Rails integration for thoughtbot's factory_bot Ruby gem.
create AI on Focus resource
kind (empty) → resource
name (empty) → AI on Focus
slug (empty) → ai-on-focus
attrs (empty) → {"type" => "podcast", "cadence" => "weekly, Fridays at noon"}
description (empty) → thoughtbot live stream about AI, airing every Friday at noon and archived on YouTube. Louis Antonopoulos was recently...
short_description (empty) → thoughtbot's weekly livestream on AI, co-hosted by Louis Antonopoulos.
create Ractor concept
kind (empty) → concept
name (empty) → Ractor
slug (empty) → ractor
attrs (empty) → {"status" => "experimental in Ruby 4.0", "category" => "architecture"}
description (empty) → Ruby's actor-model abstraction ('Ruby actor'). Provides parallel execution across CPU cores without thread-safety con...
short_description (empty) → Ruby's actor-model abstraction for parallel execution without shared mutable state.
create Actor Model concept
kind (empty) → concept
name (empty) → Actor Model
slug (empty) → actor-model
attrs (empty) → {"category" => "architecture"}
description (empty) → Computation model with the actor as its fundamental unit of computation. In response to a received message, an actor ...
short_description (empty) → Computation model in which actors react to messages, spawn actors, and mutate only their own state.
create Substitution Cipher concept
kind (empty) → concept
name (empty) → Substitution Cipher
slug (empty) → substitution-cipher
attrs (empty) → {"category" => "pattern"}
description (empty) → Simple classical cipher where each letter of the plaintext alphabet is mapped one-to-one onto another symbol — here, ...
short_description (empty) → Classical cipher mapping each plaintext letter to a fixed replacement.
create Quadgram Scoring concept
kind (empty) → concept
name (empty) → Quadgram Scoring
slug (empty) → quadgram-scoring
attrs (empty) → {"category" => "practice"}
description (empty) → Objective measure of how 'English-like' a string is without understanding English. Based on a table (~389,000 entries...
short_description (empty) → Scoring candidate decryptions by summing frequencies of their four-letter substrings.
create Simulated Annealing for Cipher Breaking concept
kind (empty) → concept
name (empty) → Simulated Annealing for Cipher Breaking
slug (empty) → simulated-annealing-for-cipher-breaking
attrs (empty) → {"category" => "pattern"}
description (empty) → Optimization strategy used by Louis's substitution-cipher solver. Start from a frequency-seeded key, repeatedly swap ...
short_description (empty) → Letter-swap search that occasionally accepts worse scores, cooling acceptance over time.
create Claude tool
kind (empty) → tool
name (empty) → Claude
slug (empty) → claude
attrs (empty) → {"category" => "service"}
description (empty) → Anthropic's LLM. In this talk it plays the role of fictional archaeology assistant 'Rubyana Gems'. Louis used Claude ...
short_description (empty) → Anthropic's LLM, used by Louis as the 'Rubyana Gems' coding assistant.
create Tiny Ruby event
kind (empty) → event
name (empty) → Tiny Ruby
slug (empty) → tiny-ruby
attrs (empty) → {"format" => "in-person"}
description (empty) → Ruby conference (referenced only by name). Louis previously delivered a version of the Rubyana Gems / Ractor talk the...
short_description (empty) → Small Ruby conference where Louis first gave a precursor version of his Ractor talk.
create Close-Knit project
kind (empty) → project
name (empty) → Close-Knit
slug (empty) → close-knit
attrs (empty) → {"status" => "active"}
description (empty) → Healthcare-related project worked on by several wroclove.rb 2026 attendees. The challenge of letting users (patients)...
short_description (empty) → Healthcare project that motivated thoughtbot's Michelle self-scheduling gem.
create Can Ractors be fire-and-forget for background GUI work? question
kind (empty) → question
name (empty) → Can Ractors be fire-and-forget for background GUI work?
slug (empty) → can-ractors-be-fire-and-forget-for-background-gui-work
attrs (empty) → {"answer_summary" => "Louis doesn't know of a fire-and-forget Ractor API; his workaround is having worker Ractors mes...
description (empty) → Audience member describes a JRuby workflow where a background thread computes (e.g. a Mandelbrot fractal) while the G...
short_description (empty) → Q&A on whether Ractors can run detached while a GUI shows progress.
create Are there practical limits to the number of Ractors? question
kind (empty) → question
name (empty) → Are there practical limits to the number of Ractors?
slug (empty) → are-there-practical-limits-to-the-number-of-ractors
attrs (empty) → {"answer_summary" => "Yes, practical limits are system-dependent; Louis's 10-core machine performed best with 7 Racto...
description (empty) → Audience asks about practical limits on concurrent Ractor count. Louis: on his 10-core machine running 10 Ractors per...
short_description (empty) → Q&A on how many Ractors can usefully run concurrently.
create How do you make the font size large in the terminal demo? question
kind (empty) → question
name (empty) → How do you make the font size large in the terminal demo?
slug (empty) → how-do-you-make-the-font-size-large-in-the-terminal-demo
attrs (empty) → {"answer_summary" => "A technique Louis found the night before the talk; he offered to share the diff with the asker ...
description (empty) → Audience member asks how Louis made the countdown timer appear much larger than surrounding text in his terminal demo...
short_description (empty) → Q&A on the large timer font in the cipher-breaking terminal demo.
create What is the Ractor implementation modeled on? question
kind (empty) → question
name (empty) → What is the Ractor implementation modeled on?
slug (empty) → what-is-the-ractor-implementation-modeled-on
attrs (empty) → {"answer_summary" => "Louis doesn't know of a specific inspiration; an audience member asserts it comes from Erlang."}
description (empty) → Audience asks whether Ractors are modeled on a specific other language's implementation. Louis doesn't know — says th...
short_description (empty) → Q&A on the inspiration behind Ruby's Ractor model.
create Freeze Or Make_Shareable Non-Sharable Objects For Ractors takeaway
kind (empty) → takeaway
name (empty) → Freeze Or Make_Shareable Non-Sharable Objects For Ractors
slug (empty) → freeze-or-make_shareable-non-sharable-objects-for-ractors
attrs (empty) → {"type" => "recommendation"}
description (empty) → The most common Ractor error is trying to access a non-shareable object (e.g. a plain Hash) from a non-main Ractor. M...
short_description (empty) → Ractors reject plain mutable objects; freeze or Ractor.make_shareable to pass them in.
create Ractors Still Experimental In Ruby 4.0 takeaway
kind (empty) → takeaway
name (empty) → Ractors Still Experimental In Ruby 4.0
slug (empty) → ractors-still-experimental-in-ruby-4-0
attrs (empty) → {"type" => "insight"}
description (empty) → Ractors are still flagged experimental in Ruby 4.0, though a December 11 commit softened the warning text (removing '...
short_description (empty) → Ractors remain experimental in Ruby 4.0 but the warning was softened; 4.1 may stabilize them.
create Give Each Ractor A Different Strategy To Beat A Single Thread takeaway
kind (empty) → takeaway
name (empty) → Give Each Ractor A Different Strategy To Beat A Single Thread
slug (empty) → give-each-ractor-a-different-strategy-to-beat-a-single-thread
attrs (empty) → {"type" => "lesson-learned"}
description (empty) → Louis found Ractors were initially slower than a single thread on the cipher-breaking problem. Performance only overt...
short_description (empty) → Parallel Ractors only beat one thread when each explores a different starting point / cooling schedule.
create Vibe Coding An Unfamiliar Domain Is Risky takeaway
kind (empty) → takeaway
name (empty) → Vibe Coding An Unfamiliar Domain Is Risky
slug (empty) → vibe-coding-an-unfamiliar-domain-is-risky
attrs (empty) → {"type" => "warning"}
description (empty) → Louis warns that vibe-coding with an LLM amplifies lack of domain knowledge: when he couldn't evaluate the quality of...
short_description (empty) → LLM-assisted coding multiplies ignorance when you don't understand the domain.

Edges (48)

update Louis Antonopoulos → authored → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Louis delivered the talk at wroclove.rb 2026.
update Rubyana Gems and the Ractorous Rubetta Stones! → presented_at → wroclove.rb 2026
context (empty) → Talk slot on day three of wroclove.rb 2026.
create Louis Antonopoulos → works_at → thoughtbot
attrs (empty) → {"role" => "developer / co-host of AI on Focus"}
context (empty) → Louis introduces himself as working at thoughtbot and pitching its gems.
relation (empty) → works_at
source_node_id (empty) → e0b40d14-670e-4431-ad91-3b6e2899f836
target_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
create Louis Antonopoulos → works_on → AI on Focus
attrs (empty) → {"role" => "co-host"}
context (empty) → Recently named co-host of the livestream.
relation (empty) → works_on
source_node_id (empty) → e0b40d14-670e-4431-ad91-3b6e2899f836
target_node_id (empty) → d6c057fb-7387-4a67-bc13-7a83d7ad97b4
create thoughtbot → related_to → AI on Focus
context (empty) → AI on Focus is thoughtbot's weekly livestream.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → d6c057fb-7387-4a67-bc13-7a83d7ad97b4
create thoughtbot → related_to → FactoryBot
context (empty) → thoughtbot is the publisher of factory_bot, one of its most popular gems.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → c5e40976-159e-4c1e-a23c-fe4e19da045d
create thoughtbot → related_to → factory_bot_rails
context (empty) → thoughtbot publishes factory_bot_rails alongside factory_bot.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → 1cf91437-dcdc-4397-9316-572fb5309eaa
create thoughtbot → related_to → Top Secret
context (empty) → New thoughtbot gem announced from stage.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → 0febb483-d13a-49c0-b549-4e7554907faf
create thoughtbot → related_to → Top Secret LLM
context (empty) → New thoughtbot gem announced from stage.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → 147f8f7d-085e-4277-962e-554e712fd60f
create thoughtbot → related_to → Michelle
context (empty) → New thoughtbot gem, extracted from Close-Knit work.
relation (empty) → related_to
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → ae096d57-1749-4a7a-a4b2-74325119b7b3
create Michelle → related_to → Close-Knit
context (empty) → Michelle came out of challenges with self-scheduling on the Close-Knit healthcare project.
relation (empty) → related_to
source_node_id (empty) → ae096d57-1749-4a7a-a4b2-74325119b7b3
target_node_id (empty) → a7afbff2-7166-4629-b6cd-8d96d7e9b85d
create Top Secret → related_to → Anthropic
context (empty) → Top Secret is designed to anonymize data before sending it to LLMs such as Anthropic's Claude.
relation (empty) → related_to
source_node_id (empty) → 0febb483-d13a-49c0-b549-4e7554907faf
target_node_id (empty) → 8a4c3ea5-b30a-4f01-a987-c584b8e991ab
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Ractor
context (empty) → The core technical subject of the talk.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Actor Model
context (empty) → The talk explains Ractor as Ruby's actor-model abstraction.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 2249ebc3-b65e-4aa6-ae55-ca0e22bfe67b
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Substitution Cipher
context (empty) → The demo breaks rotating substitution ciphers.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → b1a176c3-f074-4973-87d4-f1a5262d7135
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Quadgram Scoring
context (empty) → Quadgram scoring is the objective function in the decryption solver.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → ebd9f78c-65e5-4751-b035-8865087a4961
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Simulated Annealing for Cipher Breaking
context (empty) → The solver uses a simulated-annealing-style 'chill' over letter-swap search.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 6c09c005-1449-4635-ba49-58743aff90b2
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Top Secret
context (empty) → Mentioned in the opening thoughtbot gem pitch.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 0febb483-d13a-49c0-b549-4e7554907faf
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Top Secret LLM
context (empty) → Mentioned in the opening thoughtbot gem pitch.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 147f8f7d-085e-4277-962e-554e712fd60f
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Michelle
context (empty) → Mentioned in the opening thoughtbot gem pitch.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → ae096d57-1749-4a7a-a4b2-74325119b7b3
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Claude
context (empty) → The fictional 'Rubyana Gems' assistant is Anthropic Claude; the talk discusses using Claude to learn cryptography.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 2458a394-a26e-4a93-811b-2cf67f79936a
create Rubyana Gems and the Ractorous Rubetta Stones! → about → Matz
context (empty) → The encrypted messages are quotes from an interview with Matz, 'the famous archaeologist'.
relation (empty) → about
source_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
target_node_id (empty) → 5f9c8b75-39a8-42c4-8a1c-6d1166a7ced9
create Ractor → related_to → Actor Model
context (empty) → Ractor is Ruby's actor-model abstraction.
relation (empty) → related_to
source_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
target_node_id (empty) → 2249ebc3-b65e-4aa6-ae55-ca0e22bfe67b
create Ractor → related_to → Erlang
context (empty) → Audience member asserts the Ractor model comes from Erlang.
relation (empty) → related_to
source_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
target_node_id (empty) → 53c364ea-6dbe-4a30-9f29-ad30ba08feb1
create Claude → related_to → Anthropic
context (empty) → Claude is Anthropic's LLM.
relation (empty) → related_to
source_node_id (empty) → 2458a394-a26e-4a93-811b-2cf67f79936a
target_node_id (empty) → 8a4c3ea5-b30a-4f01-a987-c584b8e991ab
create thoughtbot → uses → RubyGems
context (empty) → thoughtbot's gems are distributed via RubyGems; combined downloads approaching 1.66 billion.
relation (empty) → uses
source_node_id (empty) → c7080b21-738b-4385-882a-ebda5c5addb1
target_node_id (empty) → c7ef9d2b-d24d-4674-9ffa-b77e122c7044
create Louis Antonopoulos → uses → Claude
context (empty) → Louis vibe-coded the cipher-breaking solver with Claude over multiple months.
relation (empty) → uses
source_node_id (empty) → e0b40d14-670e-4431-ad91-3b6e2899f836
target_node_id (empty) → 2458a394-a26e-4a93-811b-2cf67f79936a
create Louis Antonopoulos → has_skill → Ractor
attrs (empty) → {"level" => "intermediate"}
context (empty) → Talk-depth teaching of Ractor patterns; self-describes as new on the journey.
relation (empty) → has_skill
source_node_id (empty) → e0b40d14-670e-4431-ad91-3b6e2899f836
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Can Ractors be fire-and-forget for background GUI work? → asked_at → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Audience Q&A after the talk.
relation (empty) → asked_at
source_node_id (empty) → 2163aa16-d979-4186-bf07-45b43428c679
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Are there practical limits to the number of Ractors? → asked_at → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Audience Q&A after the talk.
relation (empty) → asked_at
source_node_id (empty) → a8153aad-c381-48c0-8a78-a75df5d42ad4
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create How do you make the font size large in the terminal demo? → asked_at → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Audience Q&A after the talk.
relation (empty) → asked_at
source_node_id (empty) → 3935b5da-f0cc-40ac-8e0c-c7e671d106f9
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create What is the Ractor implementation modeled on? → asked_at → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Audience Q&A after the talk.
relation (empty) → asked_at
source_node_id (empty) → 0a28a7ed-6f4c-45a0-9620-de320c73ca4b
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Can Ractors be fire-and-forget for background GUI work? → about → Ractor
context (empty) → Question concerns Ractor blocking vs fire-and-forget semantics.
relation (empty) → about
source_node_id (empty) → 2163aa16-d979-4186-bf07-45b43428c679
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Can Ractors be fire-and-forget for background GUI work? → about → JRuby
context (empty) → Asker compares to the JRuby background-thread + GUI workflow.
relation (empty) → about
source_node_id (empty) → 2163aa16-d979-4186-bf07-45b43428c679
target_node_id (empty) → b76f329b-b6ac-4301-9a48-0d31d22a3d72
create Are there practical limits to the number of Ractors? → about → Ractor
context (empty) → Question about Ractor scaling limits.
relation (empty) → about
source_node_id (empty) → a8153aad-c381-48c0-8a78-a75df5d42ad4
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create What is the Ractor implementation modeled on? → about → Ractor
context (empty) → Question about the origin of the Ractor model.
relation (empty) → about
source_node_id (empty) → 0a28a7ed-6f4c-45a0-9620-de320c73ca4b
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create What is the Ractor implementation modeled on? → about → Erlang
context (empty) → Audience answer identifies Erlang as the inspiration.
relation (empty) → about
source_node_id (empty) → 0a28a7ed-6f4c-45a0-9620-de320c73ca4b
target_node_id (empty) → 53c364ea-6dbe-4a30-9f29-ad30ba08feb1
create Freeze Or Make_Shareable Non-Sharable Objects For Ractors → from_talk → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Explicit recommendation from the Ractor primer section.
relation (empty) → from_talk
source_node_id (empty) → 7e6a1486-7e9b-410e-abeb-3df106f7d944
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Ractors Still Experimental In Ruby 4.0 → from_talk → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → One of the three closing thoughts.
relation (empty) → from_talk
source_node_id (empty) → a3b54ef9-5648-47c5-8142-8b117d6feb45
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Give Each Ractor A Different Strategy To Beat A Single Thread → from_talk → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Key lesson from the decryption demo's performance journey.
relation (empty) → from_talk
source_node_id (empty) → 8cdd5623-f571-4fb2-a3d3-24ad7cd0abdc
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Vibe Coding An Unfamiliar Domain Is Risky → from_talk → Rubyana Gems and the Ractorous Rubetta Stones!
context (empty) → Warning surfaced in Q&A and closing thoughts.
relation (empty) → from_talk
source_node_id (empty) → 179be98f-2ce7-4ed5-a1c3-83fee4af13dc
target_node_id (empty) → e3694c1e-7552-4b1b-b61c-de9e8b8ace06
create Freeze Or Make_Shareable Non-Sharable Objects For Ractors → about → Ractor
context (empty) → Takeaway on Ractor object-sharing semantics.
relation (empty) → about
source_node_id (empty) → 7e6a1486-7e9b-410e-abeb-3df106f7d944
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Ractors Still Experimental In Ruby 4.0 → about → Ractor
context (empty) → Takeaway on Ractor stability status.
relation (empty) → about
source_node_id (empty) → a3b54ef9-5648-47c5-8142-8b117d6feb45
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Give Each Ractor A Different Strategy To Beat A Single Thread → about → Ractor
context (empty) → Takeaway on parallel Ractor strategy.
relation (empty) → about
source_node_id (empty) → 8cdd5623-f571-4fb2-a3d3-24ad7cd0abdc
target_node_id (empty) → b3c1bcef-c2f9-41ca-ac61-e09f56f153ea
create Give Each Ractor A Different Strategy To Beat A Single Thread → about → Simulated Annealing for Cipher Breaking
context (empty) → Each Ractor uses a different cooling schedule.
relation (empty) → about
source_node_id (empty) → 8cdd5623-f571-4fb2-a3d3-24ad7cd0abdc
target_node_id (empty) → 6c09c005-1449-4635-ba49-58743aff90b2
create Vibe Coding An Unfamiliar Domain Is Risky → about → Claude
context (empty) → The warning is drawn from Louis's multi-month Claude-assisted journey.
relation (empty) → about
source_node_id (empty) → 179be98f-2ce7-4ed5-a1c3-83fee4af13dc
target_node_id (empty) → 2458a394-a26e-4a93-811b-2cf67f79936a
create Louis Antonopoulos → attended → Tiny Ruby
attrs (empty) → {"role" => "speaker"}
context (empty) → Gave an earlier version of the talk at Tiny Ruby.
relation (empty) → attended
source_node_id (empty) → e0b40d14-670e-4431-ad91-3b6e2899f836
target_node_id (empty) → c8b98513-3c4d-4633-8590-f9f1a5fde0e4
update Charles Nutter → attended → wroclove.rb 2026
context Spoke and stayed for the party that evening before leaving for RubyKaigi. → Louis directly addresses Charles ('Charles, if you're watching out there') during the talk, referencing his earlier d...

Read set

127 nodes

person Louis Antonopoulos search_nodes+get_node_edges tool langchainrb search_nodes project Ruby Romania search_nodes resource High Leverage Rails search_nodes talk Building LLM powered applications in Ruby search_nodes tool Ruby LLM search_nodes resource Ruby Gem Fellowship Fund search_nodes talk Rails Spotlight Chrome Extension Lightning Talk search_nodes resource The Rails and Hotwire Codex search_nodes talk Mentoring the Rails World Website Lightning Talk search_nodes concept True Parallelism on the JVM search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes+get_node_edges question Port your Ractor talk to JRuby search_nodes concept Global Interpreter Lock search_nodes tool Celluloid search_nodes tool concurrent-ruby search_nodes tool parallel_tests search_nodes tool JRuby search_nodes talk Sidekiq Batches Lightning Talk search_nodes tool Distributed Ruby search_nodes company ThoughtWorks search_nodes tool Render search_nodes tool Apollo GraphQL search_nodes company Zendesk search_nodes resource awesome-ddd search_nodes tool Packwerk search_nodes tool PagerDuty search_nodes tool FactoryBot search_nodes concept Factory Cascades search_nodes concept Fixtures over Factories search_nodes tool Faker search_nodes question Do fixtures beat factories? search_nodes question Can we teach the community not to shoot themselves with factories? search_nodes concept Build vs Create in Tests search_nodes tool Faker.js search_nodes question Performance of Faker on large databases during obfuscation search_nodes tool RSpec Mocks search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2025 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes talk Performance Panel wroclove.rb 2024 search_nodes talk Fix Production Bugs 20x Faster search_nodes talk Mutation testing workshop wroclove.rb 2019 search_nodes company Anthropic search_nodes tool ChatGPT search_nodes tool Claude Code search_nodes tool llama.cpp search_nodes tool Codex CLI search_nodes concept Retrieval Augmented Generation search_nodes tool llamafile search_nodes concept Structured LLM Output search_nodes concept Saga Pattern search_nodes talk Event Sourcing and Actor model in Ruby search_nodes tool Erlang search_nodes concept Timeline Visualization search_nodes concept Petri Nets search_nodes tool Crystal search_nodes concept CQRS search_nodes concept Read Model search_nodes concept Data Obfuscation search_nodes tool bcrypt search_nodes concept Data Tokenization search_nodes question ActiveRecord encryption vs data obfuscation for PII search_nodes concept Data Masking search_nodes concept Password Shucking search_nodes concept ActiveRecord Encryption search_nodes person Charles Nutter search_nodes takeaway Port Python Libraries With ChatGPT search_nodes person DHH search_nodes project Arkency Knowledge Graph search_nodes tool ruby-openai search_nodes project Grazer search_nodes question How to obfuscate fields that drive app logic (e.g. patient age)? search_nodes takeaway Redact PII in one central place before sending to vendors search_nodes question Obfuscation and re-identification via record counts / outliers search_nodes question Does randomizing structural fields break analytics? search_nodes talk I'm Not a Vibe Coder search_nodes takeaway Don't Vibe-Code Critical Thinking search_nodes tool Sonic Pi search_nodes talk Ever shorter feedback loop search_nodes concept Rubber Duck Debugging search_nodes tool Babel search_nodes person Matz search_nodes tool Ruby search_nodes person Akira Matsuda search_nodes tool mruby search_nodes tool YARV search_nodes talk Scientific Ruby Lightning Talk search_nodes takeaway Ruby as a Data Management Language search_nodes tool TruffleRuby search_nodes talk Offline Sandwich Focus Workflow search_nodes talk Rethink Modularity in Rails search_nodes question Generate code once vs instruct LLM per request search_nodes talk Forms Are Dead: Building Agentic Workflows in Ruby search_nodes talk Building a Production-Ready AI App: MCP & OAuth on Rails search_nodes question Preserving user options when AI-prefills a constrained form search_nodes takeaway Baseline Metrics Before Building AI Features search_nodes tool RubyGems search_nodes tool Ruby Packer search_nodes concept Build Gems in Docker Isolation search_nodes project gemcheck search_nodes takeaway Use Ruby Packer for Single-Binary CLIs search_nodes concept gemspec search_nodes tool ruby/setup-ruby search_nodes takeaway Build your gem in a Docker container search_nodes talk Preparing a Conference Talk search_nodes event Rails World search_nodes resource Short Ruby Newsletter search_nodes talk Code Golfing in Ruby Lightning Talk search_nodes resource My Ruby Story search_nodes tool devise-two-factor search_nodes tool flag_shih_tzu search_nodes concept Opt New Optimization search_nodes question When should performance optimization end? search_nodes concept Premature optimization search_nodes concept AI Agent search_nodes concept Loop Unrolling search_nodes project Petri Nets Performance Prediction Gem search_nodes takeaway Learn to Rephrase Problems search_nodes concept Vector Database search_nodes concept Vector Embeddings search_nodes concept Time-Boxed Performance Exploration search_nodes event RubyKaigi search_nodes

2 edges