[{"data":1,"prerenderedAt":20},["ShallowReactive",2],{"blog-list":3},[4,10,15],{"_path":5,"title":6,"description":7,"date":8,"readingTime":9},"\u002Fblog\u002Fddd-eda-w-systemie-iot","DDD i EDA w systemie IoT, w którym błąd zabija roślinę","Jak zaprojektowaliśmy huba do ochrony roślin przed mrozem: bounded contexts, event bus z priorytetami i silnik reguł jako czysta funkcja. Architektura, w której safety jest wymuszone strukturą, nie dobrą wolą.","2026-07-07",7,{"_path":11,"title":12,"description":13,"date":8,"readingTime":14},"\u002Fblog\u002Fdwa-flushe-dwie-transakcje-outbox-doctrine","Dwa flushe, dwie transakcje: jak niechcący zabić Outbox w Doctrine","persist() planuje, flush() wykonuje SQL i — bez jawnej transakcji — commituje. Dwa flushe to dwie transakcje, czyli okno, w którym event ginie. Dlaczego to rozbraja cały sens Outbox pattern, jak flush działa pod spodem i ile realnie kosztuje commit.",8,{"_path":16,"title":17,"description":18,"date":8,"readingTime":19},"\u002Fblog\u002Fszesc-senioralnych-pytan-o-architekture","Sześć senioralnych pytań o architekturę — liczy się cena, nie definicja","Dual-write, idempotencja, eventual consistency, granice kontekstów, CQRS, transakcje rozproszone. Sześć pytań z rozmowy, które oddzielają seniora od mida — bo sprawdzają nie znajomość terminu, lecz świadomość kompromisu.",9,1783499642736]