← Extractions

Rewrite with Confidence — Szymon Fiedler at wroclove.rb 2025

Szymon Fiedler (Arkency) explains how his team rewrote Lemonade's renters-insurance quoting flow in three months by treating the existing system's behavior as a specification. They recorded production HTTP interactions and quote snapshots for a 1-2% sample, then replayed them as stubs against the new flow inside a rolled-back transaction to verify identical underwriting outcomes without side effects.

Model
claude-opus-4-7
Ingestion
b5382ea3
Input tokens
588,116
fresh
436,820
cached
142,777
cache write
8,519
Output tokens
17,389
Duration
281.5s
Roundtrips
12
Tool calls
27
Cost
$0.00
Nodes/edges extracted
28 / 49
Read set (nodes/edges)
175 / 2

Nodes (28)

create How long did the rewrite take? question
kind (empty) question
name (empty) How long did the rewrite take?
slug (empty) how-long-did-the-rewrite-take
attrs (empty) {"answer_summary" => "Three months, including Christmas."}
description (empty) Audience asks how long the whole project took. Answer: three months, Christmas included.
short_description (empty) Total duration of the Lemonade quoting rewrite project.
create Insurance Coverage concept
kind (empty) concept
name (empty) Insurance Coverage
slug (empty) insurance-coverage
attrs (empty) {"category" => "concept"}
description (empty) Defines what an insurance policy protects against (fire, theft, accidents, etc.), sets maximum payout limits, and lis...
short_description (empty) Scope of risks protected by an insurance policy, with limits and exclusions.
create Insurance Premium concept
kind (empty) concept
name (empty) Insurance Premium
slug (empty) insurance-premium
attrs (empty) {"category" => "concept"}
description (empty) Amount paid for insurance coverage — monthly, quarterly or annual. Lower risk means lower premium. Premiums collected...
short_description (empty) Recurring amount paid for insurance coverage; feeds the claims pool.
create Insurance Deductible concept
kind (empty) concept
name (empty) Insurance Deductible
slug (empty) insurance-deductible
attrs (empty) {"category" => "concept"}
description (empty) Amount the insured pays before the insurer pays anything on a claim. Inversely related to premium: lower deductible →...
short_description (empty) Amount the insured pays out of pocket before insurance kicks in.
update Szymon Fiedler person
attrs (empty) {"role" => "software engineer"}
description Conference speaker. Software engineer at Arkency who supports Lemonade's engineering team. Spoke at wroclove.rb 2025 on rewriting Lemonad...
short_description Conference speaker. Software engineer at Arkency; wroclove.rb 2025 speaker.
create Insurance Quote concept
kind (empty) concept
name (empty) Insurance Quote
slug (empty) insurance-quote
attrs (empty) {"category" => "concept"}
description (empty) Estimate of insurance cost based on information provided by the customer. Time-limited, non-binding until paid, and b...
short_description (empty) Time-limited, non-binding estimate of insurance cost that becomes a policy on purchase.
create Insurance Underwriting concept
kind (empty) concept
name (empty) Insurance Underwriting
slug (empty) insurance-underwriting
attrs (empty) {"category" => "concept"}
description (empty) Process by which an insurer evaluates a quote to assess risk, decide whether to offer coverage, and set the price. Co...
short_description (empty) Risk-assessment process determining whether to offer coverage and at what price.
update Rewrite with confidence talk
attrs {"type" => "talk"} {"date" => "2025-03-14", "type" => "talk", "duration_project" => "3 months"}
description Talk at wroclove.rb 2025. Szymon Fiedler's wroclove.rb 2025 talk. Describes a three-month project at Lemonade (with Arkency) to replace the leg...
short_description Talk at wroclove.rb 2025. wroclove.rb 2025 talk on modernizing legacy flows via production replay verification.
create Lemonade company
kind (empty) company
name (empty) Lemonade
slug (empty) lemonade
attrs (empty) {"industry" => "insurance / insurtech"}
description (empty) Innovative US insurance company. Hit $1B in premiums 10 years from funding — faster than Microsoft, Netflix, Salesfor...
short_description (empty) US insurtech company offering renters, homeowners and other insurance on a Rails monolith.
update Arkency company
description Ruby consultancy founded by Andrzej Krzywda that maintains rails_event_store, the aggregate_root gem, and the aggrega... Ruby consultancy founded by Andrzej Krzywda that maintains rails_event_store, the aggregate_root gem, and the aggrega...
create Elad person
kind (empty) person
name (empty) Elad
slug (empty) elad
attrs (empty) {"role" => "director of engineering"}
description (empty) Director of engineering at Lemonade. Told the Arkency team the story of a roof-coverage issue in one of Lemonade's pr...
short_description (empty) Director of engineering at Lemonade.
create Gaya person
kind (empty) person
name (empty) Gaya
slug (empty) gaya
description (empty) Project leader on the Lemonade side for the renters-insurance quoting rewrite. Shared an organization-wide message pr...
short_description (empty) Project leader at Lemonade who championed the Rewrite with confidence project.
create Robert Pankowecki person
kind (empty) person
name (empty) Robert Pankowecki
slug (empty) robert-pankowecki
attrs (empty) {"employer" => "Arkency"}
description (empty) Arkency engineer. Credited in the talk ('Kudos Robert') for a ~10-year-old Arkency blog post describing how to defer ...
short_description (empty) Arkency engineer; wrote about deferring jobs until after transaction commit.
create HO4 Renters Insurance concept
kind (empty) concept
name (empty) HO4 Renters Insurance
slug (empty) ho4-renters-insurance
attrs (empty) {"category" => "practice"}
description (empty) HO4 is a US insurance policy for renters. Provides financial coverage for damage to or loss of the renter's belonging...
short_description (empty) US insurance policy type covering a renter's belongings, liability and temporary living costs.
create Insurance Policy concept
kind (empty) concept
name (empty) Insurance Policy
slug (empty) insurance-policy
attrs (empty) {"category" => "concept"}
description (empty) The legal contract between an insured and the insurance company specifying terms, conditions, premiums, deductibles, ...
short_description (empty) Legal contract between insured and insurer defining coverage, premiums and deductibles.
create Typhoeus tool
kind (empty) tool
name (empty) Typhoeus
slug (empty) typhoeus
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Ruby HTTP client used at Lemonade as the default client for calling internal microservices and third-party services. ...
short_description (empty) libcurl-based parallel HTTP client gem for Ruby.
create concurrent-ruby tool
kind (empty) tool
name (empty) concurrent-ruby
slug (empty) concurrent-ruby
attrs (empty) {"category" => "library", "language" => "Ruby"}
description (empty) Concurrency library used in the Lemonade codebase (tasking objects, executors). In the verification flow the team app...
short_description (empty) Ruby concurrency library providing futures, promises, thread pools and tasking abstractions.
create AWS SDK for Ruby tool
kind (empty) tool
name (empty) AWS SDK for Ruby
slug (empty) aws-sdk-for-ruby
attrs (empty) {"category" => "library"}
description (empty) AWS SDK gem set used in the Lemonade application (e.g. for S3 access). Uses Ruby's Net::HTTP directly rather than Typ...
short_description (empty) Amazon AWS SDK for Ruby; uses Net::HTTP directly.
create Treat existing system behavior as a specification takeaway
kind (empty) takeaway
name (empty) Treat existing system behavior as a specification
slug (empty) treat-existing-system-behavior-as-a-specification
attrs (empty) {"type" => "recommendation"}
description (empty) Szymon's core methodology: when a legacy system encodes critical business rules that no single person understands and...
short_description (empty) When business rules are undocumented, let production behavior be the spec and validate by replay.
create Separate sample collection from verification takeaway
kind (empty) takeaway
name (empty) Separate sample collection from verification
slug (empty) separate-sample-collection-from-verification
attrs (empty) {"type" => "recommendation"}
description (empty) Lesson from the Lemonade rewrite: keep the two phases asynchronous. Recording old-flow samples (quote snapshots + HTT...
short_description (empty) Decouple recording old-flow samples from verifying the new flow so you can iterate safely.
create Roll back the verification transaction takeaway
kind (empty) takeaway
name (empty) Roll back the verification transaction
slug (empty) roll-back-the-verification-transaction
attrs (empty) {"type" => "recommendation"}
description (empty) Run the new-flow quote creation inside an ActiveRecord::Base.transaction that is always rolled back at the end. Combi...
short_description (empty) Wrap on-production verification in a rolled-back transaction to avoid polluting real data.
create Own your HTTP layer with a single client class takeaway
kind (empty) takeaway
name (empty) Own your HTTP layer with a single client class
slug (empty) own-your-http-layer-with-a-single-client-class
attrs (empty) {"type" => "recommendation"}
description (empty) Suggestion raised during Q&A: if a project had routed every outbound request through a single 'HTTPRequest' class (ev...
short_description (empty) Route all outbound HTTP through a class you own so you can swap/intercept behavior globally.
create How did the new flow handle different third-party request parameters? question
kind (empty) question
name (empty) How did the new flow handle different third-party request parameters?
slug (empty) how-did-the-new-flow-handle-different-third-party-request-parameters
attrs (empty) {"answer_summary" => "Recorded stubs were evaluated and rewritten to match the new flow's parameter format (e.g. user...
description (empty) Audience member asks how the new flow worked when the parameters it would send to third parties differed from what wa...
short_description (empty) Were recorded requests rewritten to match the new flow's different parameters?
create Was the rollout gradual and were there rollbacks? question
kind (empty) question
name (empty) Was the rollout gradual and were there rollbacks?
slug (empty) was-the-rollout-gradual-and-were-there-rollbacks
attrs (empty) {"answer_summary" => "Gradual exposure via feature flag; no rollbacks occurred."}
description (empty) Audience asks whether the new flow was released in one piece or gradually and whether any rollback situations occurre...
short_description (empty) Was the new flow rolled out gradually via feature flag, and did any rollbacks occur?
create What alternative strategies were considered? question
kind (empty) question
name (empty) What alternative strategies were considered?
slug (empty) what-alternative-strategies-were-considered
attrs (empty) {"answer_summary" => "Full test coverage wasn't feasible (dozens of microservices and per-state regulatory variants);...
description (empty) Audience asks what other strategies Szymon considered and which might also work. Answer: the talk showed the two alte...
short_description (empty) Were other verification strategies considered besides production replay?
create Should everyone just build an HTTP proxy class up front? question
kind (empty) question
name (empty) Should everyone just build an HTTP proxy class up front?
slug (empty) should-everyone-just-build-an-http-proxy-class-up-front
attrs (empty) {"answer_summary" => "Yes in principle — a single owned HTTP-request class would have made replay trivial — but there...
description (empty) Audience member observes that projects repeatedly hit this problem and asks whether, in hindsight, Szymon would route...
short_description (empty) Is routing all HTTP through a single owned class worth doing from day one?
create How hard was it to convince the client to test on production? question
kind (empty) question
name (empty) How hard was it to convince the client to test on production?
slug (empty) how-hard-was-it-to-convince-the-client-to-test-on-production
attrs (empty) {"answer_summary" => "Easy — a two-year client relationship meant trust was already there. Without trust, he would ar...
description (empty) Audience asks how tough it was to get the client to agree to testing on production. Answer: the two-year trust relati...
short_description (empty) Was the client comfortable with on-production verification?
create Were the dynamic HTTP overrides thread-safe? question
kind (empty) question
name (empty) Were the dynamic HTTP overrides thread-safe?
slug (empty) were-the-dynamic-http-overrides-thread-safe
attrs (empty) {"answer_summary" => "Yes — Unicorn means one request per process (no thread contention), and concurrent-ruby tasking...
description (empty) Audience asks whether the dynamic changes that blocked and stubbed HTTP calls were thread-safe. Answer: yes — the app...
short_description (empty) Were dynamic monkey-patches to HTTP clients safe under the app's concurrency model?

Edges (49)

create Were the dynamic HTTP overrides thread-safe?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) a30b4972-1fe0-40c9-9f8d-16804187c657
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Should everyone just build an HTTP proxy class up front?aboutFaraday
context (empty) Audience member mentions wrapping Faraday behind a single owned HTTP class.
relation (empty) about
source_node_id (empty) 4be6e0bc-d234-45e4-93ee-a8774b1c8459
target_node_id (empty) 860f9ba1-53d5-44dd-9504-876203cf04d1
create Was the rollout gradual and were there rollbacks?aboutPush Often Behind Feature Flags
context (empty) Rollout used a feature flag to gradually expose the new flow to more users each day.
relation (empty) about
source_node_id (empty) 53e35e8f-a1f9-4186-81be-1c76b01fb508
target_node_id (empty) ce8423cc-0634-40a1-a60e-6ed7a404432a
create Were the dynamic HTTP overrides thread-safe?aboutUnicorn
context (empty) Thread-safety argument hinges on Unicorn's process-per-request model.
relation (empty) about
source_node_id (empty) a30b4972-1fe0-40c9-9f8d-16804187c657
target_node_id (empty) eaf58490-8c64-41e8-9087-09fa87fa9a59
create Were the dynamic HTTP overrides thread-safe?aboutconcurrent-ruby
context (empty) Team forced concurrent-ruby tasks inline to preserve thread safety.
relation (empty) about
source_node_id (empty) a30b4972-1fe0-40c9-9f8d-16804187c657
target_node_id (empty) 20cbd421-9964-4ec4-b3c1-c6d7cda18edc
update Szymon FiedlerauthoredRewrite with confidence
context (empty) Szymon presented this talk at wroclove.rb 2025.
update Rewrite with confidencepresented_atwroclove.rb 2025
context (empty) Single-track Ruby conference where the talk was delivered on 2025-03-14.
create Szymon Fiedlerworks_atArkency
attrs (empty) {"role" => "software engineer"}
context (empty) Szymon introduces himself as a software engineer at Arkency (transcribed 'ARNC' / 'Argency').
relation (empty) works_at
source_node_id (empty) b936d390-2cbc-451e-82fa-35b911629fba
target_node_id (empty) f8b4b616-ffd6-4eaa-a7b9-fdc07bb2cb27
create Szymon Fiedlerworks_onLemonade
attrs (empty) {"role" => "consulting engineer"}
context (empty) Arkency engineers including Szymon have supported Lemonade's engineering for over two years.
relation (empty) works_on
source_node_id (empty) b936d390-2cbc-451e-82fa-35b911629fba
target_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
create Eladworks_atLemonade
attrs (empty) {"role" => "director of engineering"}
context (empty) Director of engineering at Lemonade.
relation (empty) works_at
source_node_id (empty) 748840ec-b535-425e-93a5-b528fb357356
target_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
create Gayaworks_atLemonade
attrs (empty) {"role" => "project leader"}
context (empty) Project leader at Lemonade who championed and messaged about the rewrite project internally.
relation (empty) works_at
source_node_id (empty) edb5bba6-48c0-4f59-9338-476fa693a9dd
target_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
create Robert Pankoweckiworks_atArkency
context (empty) Szymon credits 'Robert' on the Arkency blog for describing the after-commit job deferral pattern nine years before Ra...
relation (empty) works_at
source_node_id (empty) c09599e9-bb96-4bfb-ba7c-d92f156304c8
target_node_id (empty) f8b4b616-ffd6-4eaa-a7b9-fdc07bb2cb27
create Rewrite with confidenceaboutLemonade
context (empty) The case study is the rewrite of Lemonade's US renters-insurance quoting/underwriting flow.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
create Rewrite with confidenceaboutHO4 Renters Insurance
context (empty) Scope of the rewrite narrowed to the HO4 renters product line.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 06a5cd97-f8b5-499d-a678-7cb4920be1c1
create Rewrite with confidenceaboutInsurance Underwriting
context (empty) Core process validated by the methodology was automated underwriting.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 9c1adabd-7330-48b5-9da0-28b0dcccf3cd
create Rewrite with confidenceaboutInsurance Quote
context (empty) The quote model was the central data structure snapshotted before and after the underwriting process.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) fc2eb4c0-6dbc-450f-97ac-c02f1b0dc611
create Rewrite with confidenceaboutRuby on Rails
context (empty) Lemonade's codebase is a Rails monolith; the rewrite work took place inside it.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 7aac705a-0987-49f2-b665-9d4e08a6acee
create Rewrite with confidenceaboutTyphoeus
context (empty) Used Typhoeus's completion callbacks to record HTTP calls and its stubbing API to block/replay traffic.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) c37798ea-275b-486f-9a97-d954f07b72ee
create Rewrite with confidenceaboutNet::HTTP
context (empty) AWS SDK uses Net::HTTP directly; the team overrode its behavior in Ruby to handle S3 downloads while blocking other t...
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 706c33c7-d3a7-42b1-8809-f86d936666ec
create Rewrite with confidenceaboutAWS SDK for Ruby
context (empty) AWS SDK (Net::HTTP-based) required a separate override strategy.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) e804c51f-4be9-42b4-b213-303602d5d216
create Rewrite with confidenceaboutUnicorn
context (empty) Thread-safety of the dynamic HTTP overrides relied on Unicorn's process-per-request model.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) eaf58490-8c64-41e8-9087-09fa87fa9a59
create Rewrite with confidenceaboutconcurrent-ruby
context (empty) Concurrent-ruby tasking objects were forced inline inside the verification block to keep everything in one process.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 20cbd421-9964-4ec4-b3c1-c6d7cda18edc
create Rewrite with confidenceaboutSentry
context (empty) Team ignored Sentry exclusions during sample recording so any weirdness would surface.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 9b81df6c-7817-4cd8-91a1-bfeefb7fbce8
create Rewrite with confidenceaboutActive Record
context (empty) Persistence model and transaction semantics (after-commit, rollback) are core to the verification flow.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 633eeea8-2026-4906-b512-1e239f3db152
create Rewrite with confidenceaboutrails_event_store
context (empty) Cited as one place inside Arkency where the after-commit transaction pattern lived before Rails 7.2 introduced it.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 9e5cb718-6f86-4937-9b4c-eb77da3aede8
create Rewrite with confidenceaboutMonkey Patching
context (empty) Uses Ruby meta-programming / prepend to inject sampling and to override Net::HTTP behavior.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 055158a7-01d0-407c-b292-1ce630c6341a
create Rewrite with confidenceaboutRuby Module Customization Mechanics
context (empty) Uses Module#prepend to safely overwrite underwriting entry points inside Chat::Quotes.
relation (empty) about
source_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
target_node_id (empty) 1a968896-f6eb-40bc-ab5c-7de248469340
create LemonadeusesRuby on Rails
context (empty) Home, renters and other insurance products run inside Lemonade's Rails monolith.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) 7aac705a-0987-49f2-b665-9d4e08a6acee
create LemonadeusesTyphoeus
context (empty) Typhoeus is the client of choice for Lemonade's communication with microservices and third-party services.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) c37798ea-275b-486f-9a97-d954f07b72ee
create LemonadeusesAWS SDK for Ruby
context (empty) AWS SDK (on Net::HTTP) used in the Lemonade app, e.g. for S3.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) e804c51f-4be9-42b4-b213-303602d5d216
create LemonadeusesUnicorn
context (empty) Lemonade's Rails app runs on Unicorn at the time of the project.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) eaf58490-8c64-41e8-9087-09fa87fa9a59
create Lemonadeusesconcurrent-ruby
context (empty) concurrent-ruby is part of Lemonade's codebase for tasking objects.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) 20cbd421-9964-4ec4-b3c1-c6d7cda18edc
create LemonadeusesSentry
context (empty) Lemonade uses Sentry for error monitoring.
relation (empty) uses
source_node_id (empty) 88aca892-cea6-44a3-8d1f-08bb7b9b32b8
target_node_id (empty) 9b81df6c-7817-4cd8-91a1-bfeefb7fbce8
create HO4 Renters Insurancerelated_toInsurance Policy
context (empty) HO4 is a type of insurance policy.
relation (empty) related_to
source_node_id (empty) 06a5cd97-f8b5-499d-a678-7cb4920be1c1
target_node_id (empty) e29fe6e7-83dd-4951-bd3f-b87749d4bdd7
create Insurance Policyrelated_toInsurance Coverage
context (empty) A policy defines the coverage provided.
relation (empty) related_to
source_node_id (empty) e29fe6e7-83dd-4951-bd3f-b87749d4bdd7
target_node_id (empty) 6c57edf5-d401-4c7e-a90a-dd46d5bbbc96
create Insurance Policyrelated_toInsurance Premium
context (empty) A policy specifies the premium the insured pays.
relation (empty) related_to
source_node_id (empty) e29fe6e7-83dd-4951-bd3f-b87749d4bdd7
target_node_id (empty) 9c609932-06b6-4399-b3b6-7a82b3e4239c
create Insurance Policyrelated_toInsurance Deductible
context (empty) A policy specifies the deductible amount.
relation (empty) related_to
source_node_id (empty) e29fe6e7-83dd-4951-bd3f-b87749d4bdd7
target_node_id (empty) 05020c29-6f49-440b-8d37-18337317552f
create Insurance Quoterelated_toInsurance Policy
context (empty) A quote becomes a policy once paid.
relation (empty) related_to
source_node_id (empty) fc2eb4c0-6dbc-450f-97ac-c02f1b0dc611
target_node_id (empty) e29fe6e7-83dd-4951-bd3f-b87749d4bdd7
create Insurance Underwritingrelated_toInsurance Quote
context (empty) Underwriting evaluates a quote to decide coverage and price.
relation (empty) related_to
source_node_id (empty) 9c1adabd-7330-48b5-9da0-28b0dcccf3cd
target_node_id (empty) fc2eb4c0-6dbc-450f-97ac-c02f1b0dc611
create Treat existing system behavior as a specificationfrom_talkRewrite with confidence
context (empty) Core methodology presented in the talk.
relation (empty) from_talk
source_node_id (empty) a0eff8b9-53ea-44e9-86bc-039c0402fdd9
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Separate sample collection from verificationfrom_talkRewrite with confidence
context (empty) Architectural split of the verification pipeline explained in the talk.
relation (empty) from_talk
source_node_id (empty) afa4ec69-ea9c-4fda-af3e-befc68bdb667
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Roll back the verification transactionfrom_talkRewrite with confidence
context (empty) Key implementation detail of the on-production verification flow.
relation (empty) from_talk
source_node_id (empty) 7f862e05-fe13-4aca-b283-fa52da32bbe2
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Own your HTTP layer with a single client classfrom_talkRewrite with confidence
context (empty) Takeaway emerged from the Q&A with an audience member.
relation (empty) from_talk
source_node_id (empty) 5f83ade9-be8f-4974-bf05-3b59629ba45c
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create How did the new flow handle different third-party request parameters?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 0d1f2223-05cd-4112-a0e4-0bfcf858035d
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create How long did the rewrite take?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 89e7c5f2-6fe9-4e86-b3a8-62efd0f53428
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Was the rollout gradual and were there rollbacks?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 53e35e8f-a1f9-4186-81be-1c76b01fb508
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create What alternative strategies were considered?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 4f18dca5-69dc-4ffb-b05a-6761b70e24c3
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create Should everyone just build an HTTP proxy class up front?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 4be6e0bc-d234-45e4-93ee-a8774b1c8459
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074
create How hard was it to convince the client to test on production?asked_atRewrite with confidence
context (empty) Asked during the talk's Q&A.
relation (empty) asked_at
source_node_id (empty) 25b1ccfe-35d9-4f90-8200-6ccd6497357a
target_node_id (empty) d9045019-e08d-4cbc-887d-0760f83e2074

Read set

175 nodes

concept AI Agent search_nodes tool langchainrb search_nodes concept Retrieval Augmented Generation search_nodes tool ChatGPT search_nodes project Nerds and Threads search_nodes takeaway Name Things To Find Their Properties search_nodes concept Unique Per-Site Email Leak Detection search_nodes company SpaceX search_nodes tool left-pad search_nodes company General Motors search_nodes company Arkency search_nodes tool PagerDuty search_nodes takeaway Contribute to Arkency aggregates repository search_nodes concept MCP Server search_nodes person Szymon Fiedler search_nodes+get_node_edges talk Rewrite with confidence search_nodes+get_node_edges tool Faker.js search_nodes concept Rubber Duck Debugging search_nodes takeaway Identify Data Calculations Actions In Your System search_nodes takeaway Socratic Debugging With Juniors search_nodes tool Faker search_nodes takeaway Port Python Libraries With ChatGPT search_nodes question Worth writing a paper about debugging like a scientist? search_nodes takeaway Replay-Based Debugging search_nodes concept Majestic Monolith search_nodes tool Ruby on Rails search_nodes project monolith framework search_nodes resource Woman on Rails search_nodes concept Modular Monolith search_nodes talk Mice of the Modulith search_nodes question Is MVC enough for a successful enterprise app? search_nodes tool Packwerk search_nodes question Engines vs namespaces for splitting a growing monolith search_nodes takeaway Tooling Never Forced Your Monolith search_nodes event wroclove.rb 2025 search_nodes event wroclove.rb 2024 search_nodes event wroclove.rb 2022 search_nodes event wroclove.rb 2023 search_nodes event wroclove.rb 2026 search_nodes event wroclove.rb 2019 search_nodes event wroclove.rb 2018 search_nodes talk Gregorian Calendar search_nodes talk Performance Panel wroclove.rb 2024 search_nodes tool HTTP gem search_nodes tool Net::HTTP search_nodes tool Faraday search_nodes takeaway Enable WebMock on legacy apps search_nodes tool WebMock search_nodes question Tracking HTTP client library changes search_nodes tool OHA search_nodes concept Faraday outbound logging middleware search_nodes concept tus protocol search_nodes tool TTY toolkit search_nodes tool rails_event_store search_nodes tool Rails Event Store Event Browser search_nodes tool Ruby Event Store search_nodes concept Event Store search_nodes takeaway rails_event_store is the most productive DDD tool in Ruby search_nodes tool Entity Store search_nodes project rails_event_store/ecommerce search_nodes question Can parts of Eventide, Rails Event Store and Trailblazer be combined in one project? search_nodes project Event Store (project) search_nodes talk Working with RailsEventStore in Cashflow Management System search_nodes tool Unicorn search_nodes tool server-engine search_nodes tool Iodine search_nodes tool Passenger search_nodes tool Puma search_nodes tool Rack search_nodes takeaway Extract the slow server out of Ruby search_nodes tool Distributed Ruby search_nodes talk UringMachine — High Performance Concurrency for Ruby Using io_uring search_nodes tool TruffleRuby search_nodes tool ruby-contracts search_nodes tool Celluloid search_nodes tool Ruby search_nodes concept Global Interpreter Lock search_nodes concept Current State search_nodes talk Rubyana Gems and the Ractorous Rubetta Stones! search_nodes tool async search_nodes tool Crystal search_nodes concept Connection Pool for Redis search_nodes concept xkcd Dependency / Nebraska Problem search_nodes person Adam Okoń search_nodes tool Speaker Deck search_nodes project Check search_nodes concept Push Often Behind Feature Flags search_nodes concept Scaffolding Before Features search_nodes takeaway Collect data before enabling risky features search_nodes takeaway Gradual migration via steps search_nodes concept Selective MFA Rollout search_nodes tool flag_shih_tzu search_nodes takeaway Tests and Deployment in Under One Second search_nodes concept Optional Gradual Typing search_nodes takeaway Act as a perfect tool on reviews search_nodes tool Release Drafter search_nodes tool Sentry search_nodes concept Login Session Tracking search_nodes takeaway Narrow the Blocker by Comparing Environments search_nodes tool AppSignal search_nodes concept Expected vs Unexpected Errors search_nodes takeaway Trailblazer tracing saves thousands of debugging hours search_nodes takeaway Don't kill your team — alert only on unexpected errors search_nodes tool Honeycomb search_nodes takeaway Batteries-Included Observability search_nodes concept Active Record search_nodes concept Active Record Custom Types search_nodes concept ActiveRecord Encryption search_nodes tool activerecord-multi-tenant search_nodes concept Domain Model (vs Active Record Model) search_nodes talk Better ActiveRecord IRB Output Gem Lightning Talk search_nodes tool Active Admin search_nodes tool ROM search_nodes tool sqlite3-ruby search_nodes tool Active Storage search_nodes concept Monkey Patching search_nodes concept Ruby Module Customization Mechanics search_nodes concept ActiveSupport Core Extensions search_nodes concept Refinements search_nodes takeaway Prefer Prepend Over Inheritance For Jobs search_nodes takeaway Use Refinements for Coordinated Modernization search_nodes person Akira Matsuda search_nodes tool Deface search_nodes concept Scope Resolution Operator search_nodes tool parallel_tests search_nodes concept Auto-yielding Fibers search_nodes takeaway Replace SQLite's C busy_timeout with a GVL-releasing Ruby handler search_nodes talk Sidekiq Batches Lightning Talk search_nodes takeaway Treat users' rewrites as a loud red flag search_nodes takeaway Don't Cram Eventide Into Legacy Apps search_nodes takeaway Stop Building Web Apps, Build Software search_nodes takeaway Refactor with clear business merit search_nodes concept Breadth-First Search for Code Removal search_nodes question Risk of misidentifying domains during legacy re-architecture search_nodes takeaway Metrics Alone Don't Fix a Coupled Legacy Codebase search_nodes talk Outdated Browser Detection search_nodes takeaway Be conservative with breaking changes in mature frameworks search_nodes concept Develop in Production search_nodes takeaway Avoid logic in tests search_nodes concept Mutation Testing search_nodes concept Logic in Tests search_nodes concept Test Driven Development search_nodes takeaway Keep fake implementations out of production code search_nodes talk Testing Randomness search_nodes question Are fake-dice tests enough, or should the real dice be tested too? search_nodes concept Rails Testing Pyramid (Ivan's version) search_nodes takeaway Stub third-party APIs to unblock development search_nodes tool FakeWeb search_nodes concept Mock Third-Party Services Locally search_nodes question WebMock contract testing integration search_nodes concept Stub Execute Verify search_nodes talk Webmock unmocked search_nodes tool VCR search_nodes resource Building Microservices search_nodes concept Service-Oriented Architecture search_nodes talk Building uls for microservices search_nodes takeaway Bounded Contexts Are Not Microservices search_nodes takeaway Microservices Were Never About HTTP search_nodes concept Onion Architecture search_nodes concept Distributed Monolith search_nodes takeaway Bounded Contexts Are Natural Microservice Seams search_nodes concept Architecture Drivers search_nodes concept Hexagonal Architecture search_nodes tool curl search_nodes concept Bot Fight Mode search_nodes tool curses search_nodes tool Uppy search_nodes tool Requestly search_nodes concept Open Banking Provider search_nodes tool Segment search_nodes company ThoughtWorks search_nodes concept Risk-Framed Communication search_nodes project Trezy search_nodes company Apply4 search_nodes concept GraphQL max_depth search_nodes

2 edges