<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Egor’s Substack]]></title><description><![CDATA[I am writing about the JVM world and programming. I love programming and watching TV series, and I am a part-time surfer. Open Source Contributor]]></description><link>https://vrnsky.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!vJWu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533a729d-a1df-496a-b2be-aab4d64a70cf_608x608.png</url><title>Egor’s Substack</title><link>https://vrnsky.substack.com</link></image><generator>Substack</generator><lastBuildDate>Mon, 13 Apr 2026 15:25:11 GMT</lastBuildDate><atom:link href="https://vrnsky.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Egor Voronianskii]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[vrnsky@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[vrnsky@substack.com]]></itunes:email><itunes:name><![CDATA[Egor Voronianskii]]></itunes:name></itunes:owner><itunes:author><![CDATA[Egor Voronianskii]]></itunes:author><googleplay:owner><![CDATA[vrnsky@substack.com]]></googleplay:owner><googleplay:email><![CDATA[vrnsky@substack.com]]></googleplay:email><googleplay:author><![CDATA[Egor Voronianskii]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Tutorial: Temporal Workflow Versioning for Zero-downtime deployments]]></title><description><![CDATA[Tutorial on workflow versioning]]></description><link>https://vrnsky.substack.com/p/tutorial-temporal-workflow-versioning</link><guid isPermaLink="false">https://vrnsky.substack.com/p/tutorial-temporal-workflow-versioning</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 18 Dec 2025 15:31:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!tc3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tc3p!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tc3p!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tc3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1348991,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vrnsky.substack.com/i/181790010?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tc3p!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!tc3p!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed8a0ff-c01a-48bf-852b-40654fffdb22_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image generated by Midjourney</figcaption></figure></div><p>Long-running workflows are Temporal&#8217;s superpower. A workflow can run for days, weeks, or even months. But what happens when you need to deploy a new version of your code while old workflows are still running?</p><p>This is where workflow versioning comes in. Get it wrong, and your workflows break on replay. Get it right, and you ac&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/tutorial-temporal-workflow-versioning">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Tutorial: Setting Up Temporal Worker in Spring Boot]]></title><description><![CDATA[How to start your Temporal instance]]></description><link>https://vrnsky.substack.com/p/tutorial-setting-up-temporal-worker</link><guid isPermaLink="false">https://vrnsky.substack.com/p/tutorial-setting-up-temporal-worker</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Wed, 10 Dec 2025 06:27:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vJWu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533a729d-a1df-496a-b2be-aab4d64a70cf_608x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Temporal is gaining traction for workflow orchestration. Unlike Camunda&#8217;s BPMN-first approach, Temporal is code-first &#8212; workflows are just Java (or Go, TypeScript, Python) classes. No XML. No visual designers. Your IDE is your modeler.</p><p>This tutorial covers the basics: setting up a Temporal Worker in Spring Boot, creating your first workflow, and understa&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/tutorial-setting-up-temporal-worker">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Spring Boot 4 | New features]]></title><description><![CDATA[Short overview of new features of Spring Boot 4]]></description><link>https://vrnsky.substack.com/p/spring-boot-4-new-features</link><guid isPermaLink="false">https://vrnsky.substack.com/p/spring-boot-4-new-features</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Fri, 08 Aug 2025 07:26:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vJWu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533a729d-a1df-496a-b2be-aab4d64a70cf_608x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For every seasoned developer, production challenges differ from release notes. This shows the gap between &#8220;shiny&#8221; features and what truly matters. Spring Boot 4 has finally &#8220;landed&#8221;. While it includes some &#8220;nice to have&#8221; changes, it also brings &#8220;must-haves&#8221; to production.</p><p>I&#8217;ve tested the latest release in production environments. Here are the ten most cr&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/spring-boot-4-new-features">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Getting started with Kestra - Modern engine for business automation]]></title><description><![CDATA[Getting started with Kestra &#8212; Modern engine for business automation]]></description><link>https://vrnsky.substack.com/p/getting-started-with-kestra-modern</link><guid isPermaLink="false">https://vrnsky.substack.com/p/getting-started-with-kestra-modern</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 26 Jun 2025 16:36:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QQYb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QQYb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QQYb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 424w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 848w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QQYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png" width="1456" height="937" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:937,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:293959,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vrnsky.substack.com/i/166748473?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QQYb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 424w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 848w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 1272w, https://substackcdn.com/image/fetch/$s_!QQYb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4d380b4-fba9-45e1-a75f-b4a999ab5981_1635x1052.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Getting started with Kestra&#8202;&#8212;&#8202;Modern engine for business automation</h3><p>In this article, I&#8217;ll share my experience with Kestra. It&#8217;s a modern workflow orchestration platform that&#8217;s become popular among developers. If you&#8217;ve worked with Apache Airflow or simlar tools, Kestra feels different. It offers a fresh take on workflow automation</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vrnsky.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Egor&#8217;s Substack is a rea&#8230;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://vrnsky.substack.com/p/getting-started-with-kestra-modern">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Event sourcing with Spring Boot, Kafka and jOOQ]]></title><description><![CDATA[Event-Driven Architecture in Practice: Implementing event sourcing with Spring Boot and Kafka]]></description><link>https://vrnsky.substack.com/p/event-sourcing-with-spring-boot-kafka</link><guid isPermaLink="false">https://vrnsky.substack.com/p/event-sourcing-with-spring-boot-kafka</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Sat, 05 Apr 2025 09:19:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!WFqi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WFqi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WFqi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WFqi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:849715,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vrnsky.substack.com/i/160636569?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WFqi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!WFqi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F891d94f4-6d7c-413f-bac2-a02394f5ef00_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Events around</figcaption></figure></div><p>One way of building resilient, scalable, and maintainable applications is use event sourcing. The event sourcing become a powerful architectural pattern. In classical approach we have only current state of application. On other hands in the event sourcing persist every state change as event. With this method we have complete history of chan&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/event-sourcing-with-spring-boot-kafka">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Maven plugin development — from basic to advanced]]></title><description><![CDATA[Introduction]]></description><link>https://vrnsky.substack.com/p/maven-plugin-development-from-basic</link><guid isPermaLink="false">https://vrnsky.substack.com/p/maven-plugin-development-from-basic</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 27 Mar 2025 11:52:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Z6ZJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z6ZJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 424w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 848w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png" width="700" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 424w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 848w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 1272w, https://substackcdn.com/image/fetch/$s_!Z6ZJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc0bbff3a-a72f-4eea-b2e5-39d2a763a9f5_700x700.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Extensions</figcaption></figure></div><h1><strong>Introduction</strong></h1><p>Ever found yourself repeating the same mundane tasks during your build process? You might be checking for<code>SNAPSHOT</code> dependencies before a release. You could also check code formatting or do custom verifications that regular plugins don&#8217;t handle. We developers love automation. Maven plugins help us do that. They let you tweak and cust&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/maven-plugin-development-from-basic">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Structured Logging in Spring Boot 3.4: A Quick implementation guide]]></title><description><![CDATA[Spring Boot 3.4 adds native support for structured logging.]]></description><link>https://vrnsky.substack.com/p/structured-logging-in-spring-boot</link><guid isPermaLink="false">https://vrnsky.substack.com/p/structured-logging-in-spring-boot</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Sun, 23 Mar 2025 13:23:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!vJWu!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F533a729d-a1df-496a-b2be-aab4d64a70cf_608x608.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Spring Boot 3.4 adds native support for structured logging. This makes it easier to create machine&#8202;&#8212;&#8202;readable logs that work well with log aggregation tools. In this quick guide, I&#8217;ll show you how to configure and use this powerful feature.</p><h3>What is structured logging?</h3><p>Traditional text&#8202;&#8212;&#8202;based logs are great for humans but challenging for machines to parse&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/structured-logging-in-spring-boot">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Understanding Java Memory Model and Thread Safety]]></title><description><![CDATA[A practical exploration of memory visibility, atomicity, and concurrency in multi-threaded Java applications.]]></description><link>https://vrnsky.substack.com/p/understanding-java-memory-model-and</link><guid isPermaLink="false">https://vrnsky.substack.com/p/understanding-java-memory-model-and</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 20 Mar 2025 15:22:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9gjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9gjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9gjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9gjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d653f97-4da3-425d-85de-16feeba9e390_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9gjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!9gjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d653f97-4da3-425d-85de-16feeba9e390_800x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Threads running</figcaption></figure></div><p>In today&#8217;s world of multiple-core processors, it is vital to know how Java manages memory and threads. This understanding helps in creating strong, high&#8202;&#8212;&#8202;performance applications. We often overlook basic understanding threading mechanisms as developers. But when issues arise&#8202;&#8212;&#8202;and they will knowing the core concepts can save your hours o&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/understanding-java-memory-model-and">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Demysifying Java ClassLoaders: A Deep dive into the JVM’s loading mechanism]]></title><description><![CDATA[From basic concepts to advanced techniques for Java Developers]]></description><link>https://vrnsky.substack.com/p/demysifying-java-classloaders-a-deep</link><guid isPermaLink="false">https://vrnsky.substack.com/p/demysifying-java-classloaders-a-deep</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 13 Mar 2025 15:09:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1Vit!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1Vit!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1Vit!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1Vit!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a38086e1-bc6c-4512-a154-f816712584b2_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1Vit!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!1Vit!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa38086e1-bc6c-4512-a154-f816712584b2_800x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Loading</figcaption></figure></div><p>Have you ever wondered how your Java application finds all those imported classes? Or maybe you&#8217;ve faced the dreaded ClassNotFoundException and felt lost in classloader confusion? Perhaps you&#8217;ve dealt with dependency conflicts or library version issues in large applications. All these problems come from one key mechanism in Java: classloaders.</p><p>In &#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/demysifying-java-classloaders-a-deep">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Spring AOP Under the Hood: How proxies work]]></title><description><![CDATA[Unlocking the magic behind Spring's cross-cutting concerns - how proxy patterns seamlessly weave behavior into your Java applications.]]></description><link>https://vrnsky.substack.com/p/spring-aop-under-the-hood-how-proxies</link><guid isPermaLink="false">https://vrnsky.substack.com/p/spring-aop-under-the-hood-how-proxies</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 06 Mar 2025 15:19:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4fcc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4fcc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4fcc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4fcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4fcc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4fcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd812eaf-8ea5-46b1-9546-a84506b988de_800x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Under the hood</figcaption></figure></div><p>When I first encountered Spring AOP (Aspect&#8202;&#8212;&#8202;Oriented Programming), it seemed like magic. My Java code began executing extra behavior without my explicit command. Log statements showed up, transaction handled themselves, and security check happened automatically. But as with any advanced technology, the magic has a clear explanation.</p><p>In th&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/spring-aop-under-the-hood-how-proxies">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Understanding Spring Bean Lifecycle]]></title><description><![CDATA[Master the Creation, Initialization, and Destruction Phases in Spring to Build Robust Java Applications]]></description><link>https://vrnsky.substack.com/p/understanding-spring-bean-lifecycle</link><guid isPermaLink="false">https://vrnsky.substack.com/p/understanding-spring-bean-lifecycle</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Fri, 28 Feb 2025 14:58:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!rgT3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rgT3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rgT3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rgT3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rgT3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!rgT3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F17bd7cbb-60af-4b0c-941d-8197c17a9b94_800x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Coffee beans, but today about different beans</figcaption></figure></div><h3>Introduction</h3><p>The Spring Framework is key for Java enterprise development. It manages &#8220;beans,&#8221; which are objects, using a smart lifecycle system. It&#8217;s important for developers to grasp this lifecycle in Spring applications. This knowledge gives them control over how resources are set up, how they behave, and ho&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/understanding-spring-bean-lifecycle">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building a custom Spring Boot Starter: From theory to practice]]></title><description><![CDATA[A Comprehensive guide to creating reusable functionality in Spring Boot 3 applications]]></description><link>https://vrnsky.substack.com/p/building-a-custom-spring-boot-starter</link><guid isPermaLink="false">https://vrnsky.substack.com/p/building-a-custom-spring-boot-starter</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Wed, 26 Feb 2025 11:44:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KIBc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KIBc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KIBc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KIBc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1864943,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vrnsky.substack.com/i/157890565?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KIBc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!KIBc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd0bc4df6-0941-4d45-a4d9-1567a869b59f_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Introduction</h3><p>Spring Boot starters are key feature of the Spring Boot ecosystem. They simplify dependency management and auto&#8202;&#8212;&#8202;configuration. A starter mix of dependencies and auto&#8202;&#8212;&#8202;configuration.It provides specific features with little setup needed. Spring Boot offers many official starters. However, you may need to create a custom starter for reusabl&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/building-a-custom-spring-boot-starter">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building Streaming API with gRPC]]></title><description><![CDATA[Building resilient real-time applications with gRPC streaming in Java: A practical guide]]></description><link>https://vrnsky.substack.com/p/building-streaming-api-with-grpc</link><guid isPermaLink="false">https://vrnsky.substack.com/p/building-streaming-api-with-grpc</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Sat, 22 Feb 2025 16:02:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Qqto!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this article, I&#8217;ll guide you through implementing streaming APIs using gRPC in Java. We&#8217;ll look at various types of streaming. Then, we&#8217;ll create a practical example to show real-time flow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qqto!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qqto!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qqto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1909015,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://vrnsky.substack.com/i/157568982?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qqto!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Qqto!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ac71de2-6a77-4bc0-8cf0-8a17b83e2c68_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vrnsky.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Egor&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h4>Introduction</h4><p>Many developer&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/building-streaming-api-with-grpc">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Redis Caching Pattern in Java Applications: From Theory to Practice]]></title><description><![CDATA[Introduction]]></description><link>https://vrnsky.substack.com/p/redis-caching-pattern-in-java-applications</link><guid isPermaLink="false">https://vrnsky.substack.com/p/redis-caching-pattern-in-java-applications</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 13 Feb 2025 20:57:21 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!T97D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T97D!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T97D!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!T97D!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!T97D!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!T97D!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T97D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1741035,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T97D!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!T97D!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!T97D!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!T97D!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc23b81a2-9db0-48fa-993e-a411062cb5ae_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Introduction</h3><p>Picture this: your Java application is handling thousands of requests per second, but your database is struggling to keep up. Response times are climbing, and your team is debating whether to throw more hardware at the problem. Sound familiar? This is where Redis shines. Redis started as a tool for real-time analytics at Twitter (now X). Now&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/redis-caching-pattern-in-java-applications">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Spring Boot & Resilience4j | Mastering Circuit Breakers with Prometheus and Grafana]]></title><description><![CDATA[A comprehensive guide to implementing resilient microservices: from basic circuit breaker patterns to advanced monitoring with Prometheus and Grafana]]></description><link>https://vrnsky.substack.com/p/spring-boot-and-resilience4j-mastering</link><guid isPermaLink="false">https://vrnsky.substack.com/p/spring-boot-and-resilience4j-mastering</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Mon, 03 Feb 2025 08:53:27 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!2yEc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2yEc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2yEc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2yEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:661858,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2yEc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!2yEc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff503a25d-e69d-4136-af5f-bbc00ff0fce5_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Introduction</h3><p>Imagine you&#8217;re building a microservice&#8202;&#8212;&#8202;based application where many services depend on each other. What happens when one service strt failing? Without proper error handling, failures can cascade through your system. They could bring down the entire application. This is where circuit breaker pattern comes in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vrnsky.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Egor&#8217;s Substack is a reader-supp&#8230;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://vrnsky.substack.com/p/spring-boot-and-resilience4j-mastering">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Essential code review practices that actually save time]]></title><description><![CDATA[Code reviews are crucial for software quality, but without proper best practices, they can become a bottleneck.]]></description><link>https://vrnsky.substack.com/p/essential-code-review-practices-that</link><guid isPermaLink="false">https://vrnsky.substack.com/p/essential-code-review-practices-that</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 30 Jan 2025 08:08:39 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!QyUz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QyUz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QyUz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QyUz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1749273,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QyUz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!QyUz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F36e248b6-8f8f-449b-a92b-b891cd31d6b4_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Code reviews are crucial for software quality, but without proper best practices, they can become a bottleneck. Here are three (of course, it can be more) reviews efficient yet high&#8202;&#8212;&#8202;quality. I&#8217;ll include real examples where they help</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://vrnsky.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Egor&#8217;s Substack is a reader-supported publication. To receive new posts and support my work, consider becoming a free or&#8230;</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>
      <p>
          <a href="https://vrnsky.substack.com/p/essential-code-review-practices-that">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Property-Based Testing with jqwik: A Practical Guide]]></title><description><![CDATA[A guide how to write property-based tests in Java: theory and practice]]></description><link>https://vrnsky.substack.com/p/property-based-testing-with-jqwik</link><guid isPermaLink="false">https://vrnsky.substack.com/p/property-based-testing-with-jqwik</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 23 Jan 2025 06:27:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OwvN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OwvN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OwvN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OwvN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OwvN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!OwvN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F40622531-c81c-4a19-8b77-1a2470aad4fc_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image by author</figcaption></figure></div><h3>Introduction</h3><p>As software grows more complex, traditional example-based testing often fails. It can&#8217;t find edge cases and unexpected behaviors. Property-based testing (PBT) is a powerful alternative. It generates test cases based on properties that your code should meet without any manual input. This article will explore property-based test&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/property-based-testing-with-jqwik">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Building Event-Driven Microservices with Spring Cloud Stream and Kafka]]></title><description><![CDATA[A practical guide to building scalable, resilient systems with Spring Cloud Stream and Apache Kafka]]></description><link>https://vrnsky.substack.com/p/building-event-driven-microservices</link><guid isPermaLink="false">https://vrnsky.substack.com/p/building-event-driven-microservices</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 19 Dec 2024 03:36:40 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4a4e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4a4e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4a4e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4a4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png" width="800" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4a4e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 424w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 848w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 1272w, https://substackcdn.com/image/fetch/$s_!4a4e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8891331a-bcb8-4b2c-a751-d3e4986e8b4b_800x800.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Modern applications face increasingly complex challenges in handling data and interactions between services. As our systems grow, traditional request&#8202;&#8212;&#8202;response patterns often become bottlenecks. This leads to seek more flexible, scalable solutions. This is where event&#8202;&#8212;&#8202;driven architecture (EDA) comes in. It offers a powerful way to build resilient mic&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/building-event-driven-microservices">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Spring Boot with Temporal: Building Resillient Workflow Applications]]></title><description><![CDATA[A guide to building resilient, distributed apps with Spring Boot and Temporal&#8217;s orchestration.]]></description><link>https://vrnsky.substack.com/p/spring-boot-with-temporal-building</link><guid isPermaLink="false">https://vrnsky.substack.com/p/spring-boot-with-temporal-building</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 12 Dec 2024 03:41:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZNvQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaf460f-ac9d-450e-b605-61c160ce673d_800x561.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h4>Introduction</h4><p>Building reliable distributed applications can be challenging. System crash, network fail, and processes can get stuck halfway through execution. This is where Temporal comes in. It is an open&#8202;&#8212;&#8202;source workflow orchestration platform. When combined with Spring Boot, it helps you build robust apps. These apps can handle real&#8202;&#8212;&#8202;world challenge&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/spring-boot-with-temporal-building">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Master Java Releases with GitHub Actions and Maven Release Plugin]]></title><description><![CDATA[A comprehensive guide to automating your Java release process: from version management to draft releases]]></description><link>https://vrnsky.substack.com/p/master-java-releases-with-github</link><guid isPermaLink="false">https://vrnsky.substack.com/p/master-java-releases-with-github</guid><dc:creator><![CDATA[Egor Voronianskii]]></dc:creator><pubDate>Thu, 05 Dec 2024 00:55:54 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4vHl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4vHl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4vHl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4vHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4vHl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4vHl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179ad69b-9775-4d54-b94f-ad4d486af897_1024x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image by author</figcaption></figure></div><h4>Introduction</h4><p>In software development, automating the release process is key. It ensures efficiency and consistency in a fast-paced field. Many Java developer struggle with manual release. They face issues with version management and Git tagging. This article will show you how to automate your release process using GitHub Actions and the Ma&#8230;</p>
      <p>
          <a href="https://vrnsky.substack.com/p/master-java-releases-with-github">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>