<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jakub Lambrych</title><description>Notes on Elixir, Phoenix and software engineering.</description><link>https://utopos.github.io/</link><item><title>Hooked on Widgets: A Better Pattern for Reusable LiveView Components (ElixirConf EU 2026 talk)</title><link>https://utopos.github.io/posts/talks/elixirconf-eu-2026-reusable-liveview-components/</link><guid isPermaLink="true">https://utopos.github.io/posts/talks/elixirconf-eu-2026-reusable-liveview-components/</guid><description>My ElixirConf EU 2026 talk on building reusable, stateful LiveView components with a cleaner pattern than the usual approaches.</description><pubDate>Tue, 15 Sep 2026 20:49:03 GMT</pubDate></item><item><title>Hooking up with LiveView: stateful widgets with function components</title><link>https://curiosum.com/blog/hooking-up-with-liveview-stateful-widgets-with-function-components</link><guid isPermaLink="true">https://curiosum.com/blog/hooking-up-with-liveview-stateful-widgets-with-function-components</guid><description>A reusable pattern for self-contained LiveView widgets that manage their own state, events, PubSub and URL params. Published on the Curiosum blog.</description><pubDate>Thu, 16 Apr 2026 09:00:00 GMT</pubDate></item><item><title>Fix Alpine + Phoenix LiveView: 5 Integration Patterns</title><link>https://curiosum.com/blog/fix-alpine-phoenix-liveview-5-integration-patterns-2025</link><guid isPermaLink="true">https://curiosum.com/blog/fix-alpine-phoenix-liveview-5-integration-patterns-2025</guid><description>Putting the A back in PETAL: five common Alpine.js and LiveView problems, from lost state to DOM conflicts, and the patterns that fix them. Published on the Curiosum blog.</description><pubDate>Wed, 29 Oct 2025 09:00:00 GMT</pubDate></item><item><title>Interactive Data Tables in Phoenix LiveView: AG Grid Integration Made Simple</title><link>https://curiosum.com/blog/interactive-data-tables-in-phoenix-liveview</link><guid isPermaLink="true">https://curiosum.com/blog/interactive-data-tables-in-phoenix-liveview</guid><description>Integrating AG Grid with LiveView for feature-rich tables: setup, data presentation and handling complex Ecto data. Published on the Curiosum blog.</description><pubDate>Tue, 04 Feb 2025 09:00:00 GMT</pubDate></item><item><title>Domain-Driven Design (DDD): EventStorming for Tactical Design — Strengths and Limitations</title><link>https://utopos.github.io/posts/ddd/ddd-eventstorming-strengths-and-limitations/</link><guid isPermaLink="true">https://utopos.github.io/posts/ddd/ddd-eventstorming-strengths-and-limitations/</guid><description>Where EventStorming&apos;s verb-centric modeling fits Domain-Driven Design tactical design, where it falls short, and how to combine it with other techniques.</description><pubDate>Thu, 04 Jul 2024 19:08:27 GMT</pubDate></item><item><title>Domain-Driven Design (DDD): EventStorming example for System Design</title><link>https://utopos.github.io/posts/ddd/ddd-eventstorming-example-for-system-design/</link><guid isPermaLink="true">https://utopos.github.io/posts/ddd/ddd-eventstorming-example-for-system-design/</guid><description>How EventStorming guides system design from the big picture down to software design, with its modeling primitives and workshop levels.</description><pubDate>Wed, 03 Jul 2024 14:34:42 GMT</pubDate></item><item><title>Domain-Driven Design (DDD): Divide and Conquer the Domain</title><link>https://utopos.github.io/posts/ddd/ddd-divide-and-conquer-the-domain/</link><guid isPermaLink="true">https://utopos.github.io/posts/ddd/ddd-divide-and-conquer-the-domain/</guid><description>Why a single, consistent domain model is an illusion, and how Bounded Contexts let you divide and conquer domain complexity.</description><pubDate>Thu, 27 Jun 2024 10:19:50 GMT</pubDate></item><item><title>Domain-Driven Design (DDD): Strategic Design Explained</title><link>https://utopos.github.io/posts/ddd/ddd-strategic-design-explained/</link><guid isPermaLink="true">https://utopos.github.io/posts/ddd/ddd-strategic-design-explained/</guid><description>DDD Strategic Design explained with an example: subdomains, Ubiquitous Language, Bounded Contexts and Context Mapping for a university registration system.</description><pubDate>Tue, 25 Jun 2024 07:10:02 GMT</pubDate></item><item><title>Elixir: map casting to structs (with checks at compile time!)</title><link>https://utopos.github.io/posts/elixir-validate-map-and-structs-keys-for-merging-at-compile-time/</link><guid isPermaLink="true">https://utopos.github.io/posts/elixir-validate-map-and-structs-keys-for-merging-at-compile-time/</guid><description>Validate map keys against a struct at compile time with a small macro, instead of discovering typos at runtime after deployment.</description><pubDate>Mon, 10 Jun 2024 08:04:28 GMT</pubDate></item><item><title>Adding stream_async() to Phoenix LiveView</title><link>https://utopos.github.io/posts/adding-streamasync-to-phoenix-liveview/</link><guid isPermaLink="true">https://utopos.github.io/posts/adding-streamasync-to-phoenix-liveview/</guid><description>Implement asynchronous assigns for LiveView streams and generate the boilerplate with a stream_async() macro.</description><pubDate>Thu, 06 Jun 2024 16:42:15 GMT</pubDate></item><item><title>How to report Postgres custom errors in Ecto Changeset</title><link>https://utopos.github.io/posts/how-to-report-postgres-custom-errors-in-ecto-changeset/</link><guid isPermaLink="true">https://utopos.github.io/posts/how-to-report-postgres-custom-errors-in-ecto-changeset/</guid><description>Capture custom Postgres errors as Ecto.Changeset errors instead of raising exceptions — no try/rescue, works out of the box with Phoenix.</description><pubDate>Mon, 10 Jan 2022 13:43:38 GMT</pubDate></item></channel></rss>