← 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 AntonopoulosauthoredRubyana 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_atwroclove.rb 2026
context (empty) Talk slot on day three of wroclove.rb 2026.
create Louis Antonopoulosworks_atthoughtbot
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 Antonopoulosworks_onAI 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 thoughtbotrelated_toAI 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 thoughtbotrelated_toFactoryBot
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 thoughtbotrelated_tofactory_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 thoughtbotrelated_toTop 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 thoughtbotrelated_toTop 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 thoughtbotrelated_toMichelle
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 Michellerelated_toClose-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 Secretrelated_toAnthropic
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!aboutRactor
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!aboutActor 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!aboutSubstitution 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!aboutQuadgram 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!aboutSimulated 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!aboutTop 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!aboutTop 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!aboutMichelle
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!aboutClaude
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!aboutMatz
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 Ractorrelated_toActor 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 Ractorrelated_toErlang
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 Clauderelated_toAnthropic
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 thoughtbotusesRubyGems
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 AntonopoulosusesClaude
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 Antonopouloshas_skillRactor
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_atRubyana 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_atRubyana 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_atRubyana 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_atRubyana 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?aboutRactor
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?aboutJRuby
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?aboutRactor
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?aboutRactor
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?aboutErlang
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 Ractorsfrom_talkRubyana 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.0from_talkRubyana 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 Threadfrom_talkRubyana 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 Riskyfrom_talkRubyana 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 RactorsaboutRactor
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.0aboutRactor
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 ThreadaboutRactor
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 ThreadaboutSimulated 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 RiskyaboutClaude
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 AntonopoulosattendedTiny 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 Nutterattendedwroclove.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