← 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_at → Rewrite 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? → about → Faraday
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? → about → Push 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? → about → Unicorn
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? → about → concurrent-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 Fiedler → authored → Rewrite with confidence
context (empty) → Szymon presented this talk at wroclove.rb 2025.
update Rewrite with confidence → presented_at → wroclove.rb 2025
context (empty) → Single-track Ruby conference where the talk was delivered on 2025-03-14.
create Szymon Fiedler → works_at → Arkency
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 Fiedler → works_on → Lemonade
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 Elad → works_at → Lemonade
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 Gaya → works_at → Lemonade
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 Pankowecki → works_at → Arkency
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 confidence → about → Lemonade
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 confidence → about → HO4 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 confidence → about → Insurance 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 confidence → about → Insurance 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 confidence → about → Ruby 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 confidence → about → Typhoeus
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 confidence → about → Net::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 confidence → about → AWS 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 confidence → about → Unicorn
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 confidence → about → concurrent-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 confidence → about → Sentry
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 confidence → about → Active 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 confidence → about → rails_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 confidence → about → Monkey 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 confidence → about → Ruby 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 Lemonade → uses → Ruby 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 Lemonade → uses → Typhoeus
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 Lemonade → uses → AWS 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 Lemonade → uses → Unicorn
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 Lemonade → uses → concurrent-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 Lemonade → uses → Sentry
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 Insurance → related_to → Insurance 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 Policy → related_to → Insurance 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 Policy → related_to → Insurance 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 Policy → related_to → Insurance 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 Quote → related_to → Insurance 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 Underwriting → related_to → Insurance 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 specification → from_talk → Rewrite 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 verification → from_talk → Rewrite 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 transaction → from_talk → Rewrite 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 class → from_talk → Rewrite 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_at → Rewrite 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_at → Rewrite 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_at → Rewrite 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_at → Rewrite 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_at → Rewrite 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_at → Rewrite 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