tag:blogger.com,1999:blog-71210397604771524622026-04-11T15:17:50.711-07:00let's talk about JavaSebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.comBlogger324125tag:blogger.com,1999:blog-7121039760477152462.post-84122096163930373132026-03-15T11:58:00.000-07:002026-03-15T11:59:12.013-07:00Mind the Architecture<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDvvUjsoVdxuOnMzwlI6ybdV9YrSDGC_FEc0Xg1crShciO1xq_7SOCqFOkuSuikxS5QPuyw_hWvHTAmWoSg7hABU2TDabMarGChVenhxuO4kYH_W0mGnjoYeJiyHKLlUIyoXZFbzFu1DL2s5Ish89GtPOolvVIeYwbfLpLpZ63C-FaYc4qXG_Nht-xQr4/s1536/newsletter-logo.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="426" data-original-width="1536" height="143" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDvvUjsoVdxuOnMzwlI6ybdV9YrSDGC_FEc0Xg1crShciO1xq_7SOCqFOkuSuikxS5QPuyw_hWvHTAmWoSg7hABU2TDabMarGChVenhxuO4kYH_W0mGnjoYeJiyHKLlUIyoXZFbzFu1DL2s5Ish89GtPOolvVIeYwbfLpLpZ63C-FaYc4qXG_Nht-xQr4/w513-h143/newsletter-logo.png" width="513" /></a></div><p></p><p><span style="white-space-collapse: preserve;">This month I started a new blog - <a href="https://www.sebastianmalaca.com/">Mind The Architecture</a>. Why? Because it felt like the right moment to do it. As the saying goes: "</span><i><em class="italic" style="white-space-collapse: preserve;">the only constant is change.</em></i><span style="white-space-collapse: preserve;">" Sometimes you simply need to change things around you to reset your mind and make space for new ideas. The change does not always need to be huge, but it should be noticeable.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">For me, that change is a new blog with a new name and a new address. I do not treat it as a fresh beginning, but rather as an evolution. I decided to become more focused and intentional about writing and sharing knowledge through different channels. Last year I spent time turning this intention into a habit, and now it feels like the right moment to transform that personal habit into a public activity.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">As I said, this is not a start. I have been writing for the last 15 years, although I did not even realize how long it had been until I checked the statistics:</span></p><ul><li value="1"><a href="https://letstalkaboutjava.blogspot.com/" rel="noreferrer"><span style="white-space-collapse: preserve;">Let's Talk about Java</span></a><span style="white-space-collapse: preserve;"> - 2013 - 2026, 13 years, 323 articles</span></li><li value="2"><a href="https://between-success-and-failure.blogspot.com/" rel="noreferrer"><span style="white-space-collapse: preserve;">Between Success and Failure</span></a><span style="white-space-collapse: preserve;"> - 2012 - 2016, 4 years, 53 articles</span></li><li value="3"><a href="https://sebastian-malaca.blogspot.com/" rel="noreferrer"><span style="white-space-collapse: preserve;">Programistyka</span></a><span style="white-space-collapse: preserve;"> - 2011 - 2015, 4 years, 97 articles</span></li></ul><p dir="ltr"><span style="white-space-collapse: preserve;">In total, that is 473 articles — about 31.5 per year, or roughly 2.5 per month. I would call that quite an achievement.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">So why start a new blog? There is no deep story behind it. I simply wanted to create a place where I can continue sharing knowledge and practical solutions about building software that can evolve easily over time. The name "Let's Talk About Java" is no longer a good fit, because over the years the content I share has become increasingly language-agnostic.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">Now I want to help you </span><a href="https://www.sebastianmalaca.com/" rel="noreferrer"><span style="white-space-collapse: preserve;">Mind The Architecture</span></a><span style="white-space-collapse: preserve;">.</span></p><p dir="ltr"><b><strong style="white-space-collapse: preserve;">Architecture is a journey, not a destination</strong></b><span style="white-space-collapse: preserve;">. It needs to evolve and adapt so that the software you build can continuously support changing business needs.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">I hope you find the ideas here interesting.</span></p><p dir="ltr"><span style="white-space-collapse: preserve;">Let's stay in touch:</span></p><ul><li value="1"><a href="https://github.com/smalaca" rel="noreferrer"><span style="white-space-collapse: preserve;">GitHub</span></a><span style="white-space-collapse: preserve;"> </span></li><li value="2"><a href="https://www.linkedin.com/in/sebastian-malaca-3206004b/" rel="noreferrer"><span style="white-space-collapse: preserve;">LinkedIn</span></a></li><li value="3"><a href="https://x.com/SebastianMalaca" rel="noreferrer"><span style="white-space-collapse: preserve;">Twitter</span></a></li></ul>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-13620206642582806432026-01-30T01:00:00.000-08:002026-01-30T01:00:00.120-08:00Link Dump #225<p><span style="font-family: arial;">It's Friday! Grab your coffee, take something good to read and enjoy the moment :)<span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="310" href="https://www.javacodegeeks.com/2026/01/the-paradox-of-abstraction-why-good-abstractions-make-systems-harder-to-debug.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Paradox of Abstraction: Why Good Abstractions Make Systems Harder to Debug</u></a></span><br style="outline: none !important;" />We’re taught that abstraction is the key to elegant, maintainable code - but does it come at too high a cost? This article dives into the paradox of modern development: the very layers that hide complexity also hide the clues we need when things break.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="309" href="https://www.linkedin.com/pulse/ae13-simple-hard-primitive-easy-kamil-kie%C5%82basa-zdtcf" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Simple Is Hard. Primitive Is Easy.</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />True simplicity is the ultimate sophistication, but it’s remarkably hard to achieve. Learn why the hardest part of software engineering isn't adding features, but finding the elegant, simple core that remains after all the 'noise' and 'primitive' hacks have been removed.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="308" href="https://devops.com/devops-the-never-ending-story/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">DevOps: The Never-Ending Story</u></a></span><br style="outline: none !important;" />This post breaks down why 'failed' is the wrong word for a movement that has defined an entire generation of engineering careers and why its lack of a rigid manifesto turned out to be its greatest competitive advantage.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="307" href="https://www.yegor256.com/2026/01/25/spa-vs-performance.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">SPAs Are a Performance Dead End</u></a></span><br style="outline: none !important;" />Why does a massive site like Stack Overflow feel instantaneous while modern SPAs feel sluggish? The secret isn't more JavaScript; it's less. This article explores why delivering full, server-rendered HTML is often superior to the 'fragmented' delivery model of apps like LinkedIn and Facebook.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="306" href="https://www.javacodegeeks.com/apache-iotdb-introduction.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Apache IoTDB Introduction</u></a></span><br style="outline: none !important;" />Apache IoTDB offers an open-source, distributed alternative that treats timestamps as first-class citizens. This article covers key features like advanced column-oriented compression, a SQL-like query language, and seamless Java integration.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Code Quality</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="305" href="https://www.thoughtworks.com/insights/blog/generative-ai/in-the-age-of-AI-coding-code-quality-still-matters" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">In the age of AI coding, code quality still matters</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Natural language is too ambiguous to define complex systems, which is why programming languages exist in the first place. Learn why high-quality code is the best way to 'speak' to your AI tools, ensuring they generate predictable, secure, and maintainable solutions instead of hallucinated technical debt.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="304" href="https://brodzinski.com/2026/01/autonomy-engagment.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Limited Autonomy Is the Main Reason for Low Engagement Levels</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The author argues that we are facing a massive autonomy gap. Building on Dan Pink’s classic framework of Motivation, he explores how traditional hierarchies are designed to hoard decision-making power, effectively killing mastery and purpose in the process. Learn why the "illusion of choice" is often more damaging than having no choice at all.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="303" href="https://no-kill-switch.ghost.io/is-every-problem-truly-a-leadership-problem/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Is every problem truly a leadership problem?</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />By categorizing challenges into Expertise, Systemic, Polarities, and Adaptive, the author reveals why sheer will and charisma can’t fix a complex bug or bend the laws of physics. Learn why understanding the 'domain' of a problem is the first step toward solving it.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="302" href="https://leadershipfreak.blog/2026/01/28/the-compassion-paradox/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Compassion Paradox</u></a></span><br style="outline: none !important;" />This article examines the fine line between being a supportive coach and a shield that prevents growth. By embracing the paradox of keeping the pressure on while providing a safety net of support, leaders can help their teams sharpen their potential rather than creating a culture of dependency.&nbsp;<strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJAyCjOPc7SJ6Y6aYJfL-rfYChOreG4ZagQgmlqYjr5JdOsh1CPOlnY7nX_CEsYeH18q0nxHt2ohSKRZ_qJMJNIJNFTb04Ieawlne2xwP61M9eR_oX212ygL_gIyqaZlppKpkUYUQASxlw7k4c9-0rl8mJeLOxsubXoDhZ19Oo8SkgHQZh9LnKzj6Au4o/s942/225.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="942" data-original-width="600" height="494" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJAyCjOPc7SJ6Y6aYJfL-rfYChOreG4ZagQgmlqYjr5JdOsh1CPOlnY7nX_CEsYeH18q0nxHt2ohSKRZ_qJMJNIJNFTb04Ieawlne2xwP61M9eR_oX212ygL_gIyqaZlppKpkUYUQASxlw7k4c9-0rl8mJeLOxsubXoDhZ19Oo8SkgHQZh9LnKzj6Au4o/w315-h494/225.jpg" width="315" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com6tag:blogger.com,1999:blog-7121039760477152462.post-12357119437137680462026-01-23T01:00:00.000-08:002026-01-23T01:00:00.117-08:00Link Dump #224<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">One article, two articles, three... and it's Friday so how about one more?</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.javacodegeeks.com/2026/01/the-anthropology-of-legacy-systems-what-ancient-code-reveals-about-developer-culture.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">The Anthropology of Legacy Systems</u></a></span><br style="outline: none;" />Every codebase is a historical record. This article treats legacy systems like archaeological strata, revealing how we transitioned from memory-saving Perl scripts in the 90s to the religious devotion to design patterns in the 2000s. Learn to read the 'geological layers' of your code to understand the pressures and priorities of the developers who came before you.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://microservices.io//post/architecture/2026/01/19/psa-no-silver-bullets.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">There are no silver bullets - GenAI included</u></a></span><br style="outline: none;" />While simple narratives are easier to sell, they often ignore the nuance and context required for real-world success. Learn why acknowledging a tool's limitations is actually a sign of deep expertise, not a lack of vision.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.linkedin.com/blog/engineering/search/reimagining-linkedins-search-stack" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Reimagining LinkedIn’s search tech stack</u></a></span><br style="outline: none;" />This technical deep dive explores the high-level&nbsp;components of LinkedIn's AI-powered stack. Discover how they manage the 'auction layer' to balance user engagement with business metrics, ensuring every search provides a path to a real professional opportunity.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.christianmenz.ch/ai/http-is-the-new-mcp/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">HTTP Is the New MCP</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Every time the industry invents a 'universal protocol,' we get fragmentation and high implementation costs. This post challenges the hype around new agent-to-service handshakes, proposing that HTTP - with its mature security and global addressing - is already the perfect home for agents.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Code Quality</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.thoughtworks.com/insights/blog/legacy-modernization/legacy-modernization-in-the-age-of-ai" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Legacy modernization in the age of AI</u></a></span><br style="outline: none;" />Learn how Thoughtworks used AI to modernize a custom-built app in six weeks vs. an estimate of six months.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://martinfowler.com/articles/stop-picking-sides.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Stop Picking Sides</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Jim Highsmith argues that the decades-long battle between 'Agile' and 'Traditional' development is a false dichotomy that misses the point. The real challenge isn't choosing a tribe; it's managing the tension between adaptation (learning under uncertainty) and optimization (reliability under constraints).</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://hbr.org/2026/01/the-best-leaders-are-great-followers" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">The Best Leaders Are Great Followers</u></a></span><br style="outline: none;" />This article explores the radical idea that leadership and followership are a fluid, co-created process rather than a fixed hierarchy. Discover the five core 'followership' capabilities that separate ego-driven managers from the impactful leaders.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://managementblog.org/2026/01/14/43420/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Information, Understanding and Action</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />How do you know which team members you can truly count on? This article suggests a practical experiment: give volunteers a small, real-world project to test their execution skills. It’s a lesson in finding a person’s 'failure point' allowing you to coach them exactly where they need it most.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Growth</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.mountaingoatsoftware.com/blog/why-soft-skills-outlast-technical-skills-on-product-development-teams" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Why Soft Skills Outlast Technical Skills on Product Development Teams</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Discover why soft skills are actually 'risk reducers' that help teams navigate evolving requirements and stakeholder trust. It’s a reminder that when the pressure is on, a team’s ability to have hard conversations matters more than their coding speed.&nbsp;</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH4rhC3xrtmIr-I6IS8hZiNQ4j264K-XVQQelDGfO6TzlU86WLxhS_9WYQ1VqRzUcUKIphiLBu99GKPX6_rK1X64W1aRZ92CndVnMsxukeWaLXNL0Rt6WudnwloZv__7FY9ToIIH3qnyVBPrrRLPAEMmpqBKlDFaLdY-6zKn5yjj5MO_4-elreH3yBkuo/s350/224.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="277" data-original-width="350" height="358" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhH4rhC3xrtmIr-I6IS8hZiNQ4j264K-XVQQelDGfO6TzlU86WLxhS_9WYQ1VqRzUcUKIphiLBu99GKPX6_rK1X64W1aRZ92CndVnMsxukeWaLXNL0Rt6WudnwloZv__7FY9ToIIH3qnyVBPrrRLPAEMmpqBKlDFaLdY-6zKn5yjj5MO_4-elreH3yBkuo/w453-h358/224.jpg" width="453" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com3tag:blogger.com,1999:blog-7121039760477152462.post-50372970361358753402026-01-16T01:00:00.000-08:002026-01-16T01:00:00.115-08:00Link Dump #223<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">What is the best coffee you can have? The one you drink having a book in your hand.</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="274" href="https://www.linkedin.com/pulse/ae12-fundamentals-first-kamil-kie%C5%82basa-760kf/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Fundamentals First</u></a></span><br style="outline: none !important;" />The most valuable engineers are quietly building foundations that compound over decades. This deep dive explores why Docker, Transformers, and MCP aren't actually new, but clever recombinations of concepts from the 50s, 90s, and early 2000s. Learn why slowing down to master the layers beneath your code is the only way to stay ahead in an AI-augmented future.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="273" href="https://www.ververica.com/blog/a-world-without-kafka" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">A World Without Kafka</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This post explores why Kafka’s record-based architecture is increasingly hitting a wall as real-time analytics and decision-making demands grow. Discover why Ververica is looking beyond traditional message queues toward a future of unified streaming storage.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="272" href="https://microservices.io//post/architecture/2026/01/12/on-the-duality-of-genai-based-development-tools.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">On the duality of GenAI-based development tools</u></a></span><br style="outline: none !important;" />AI tools act as an organizational accelerant, but are you accelerating toward success or a crash? For organizations with weak feedback loops, AI simply speeds up the creation of rework and operational risk. For those built for rapid learning, it’s a powerful productivity booster.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="271" href="https://www.yegor256.com/2026/01/11/no-documentation-comments.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Comments Considered Harmful in the Age of LLMs</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Is code documentation dead? The author argues that manual comments are just stale lies waiting to happen. In the age of AI, we should prohibit comments entirely and use LLMs to generate explanations on-demand. If an AI can’t interpret your code, the problem isn't the documentation—it’s your code. Learn why your next build should fail based on a 'Code Interpretability Score.'</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="270" href="https://www.javacodegeeks.com/2026/01/unknown-mistakes-to-avoid-in-software-development.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Unknown Mistakes to Avoid in Software Development</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This post explores common but overlooked pitfalls in the development process, including the premature optimization of team workflows and the failure to align technical decisions with long-term business goals. Learn how to identify these 'invisible' traps before they evolve into insurmountable technical debt.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Clean Code</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="269" href="https://www.javacodegeeks.com/2026/01/code-as-literature-what-ernest-hemingway-can-teach-you-about-writing-java.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Code as Literature</u></a></span><br style="outline: none !important;" />Every codebase has a voice and every class tells a story. Learn to treat refactoring as an editorial revision, cutting out the 'shit' of the first draft to find the essential logic beneath.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="268" href="https://www.javacodegeeks.com/2026/01/the-psychology-of-code-reviews-why-smart-developers-accept-bad-suggestions.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Psychology of Code Reviews: Why Smart Developers Accept Bad Suggestions</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Code reviews are supposed to be objective, but they are often complex social negotiations. This article dives into the psychological forces that lead smart developers to approve bad code. Learn why seniority often trumps evidence and how unspoken hierarchies can quietly sabotage your system's quality.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="267" href="https://managementblog.org/2026/01/09/illusion-of-control/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Illusion of Control</u></a></span><br style="outline: none !important;" />This post explores the realization that the harder a manager tries to control pace and decisions, the slower and more passive-aggressive a team becomes. Learn why letting go of the steering wheel is often the only way to keep the engine running.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="266" href="https://leadershipfreak.blog/2026/01/09/comfort-is-toxic/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Comfort is Toxic</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Comfort is a warning. Don’t wait for failure to change. Abandon what’s working before it fails.</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLfbDSxPUKwHGsnL9wRbS-dUKESYRCDDy9osAYiBy6j3zxqWL0VANNt52BJAiY5zpim-ZIJMlNMNkciYUDAsX_scTTJ5lLZbC7rYy5zmjMOCfSlYk9ssLInqJ0R_6sswi7B9-kD2RYJ4pdtBnZGbBOQHXHS_CQDvDa5WCqycjToEMjyGb2nC3tHBXlaRs/s1000/223.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="1000" data-original-width="750" height="501" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLfbDSxPUKwHGsnL9wRbS-dUKESYRCDDy9osAYiBy6j3zxqWL0VANNt52BJAiY5zpim-ZIJMlNMNkciYUDAsX_scTTJ5lLZbC7rYy5zmjMOCfSlYk9ssLInqJ0R_6sswi7B9-kD2RYJ4pdtBnZGbBOQHXHS_CQDvDa5WCqycjToEMjyGb2nC3tHBXlaRs/w376-h501/223.jpg" width="376" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com3tag:blogger.com,1999:blog-7121039760477152462.post-52898317168160745712026-01-09T01:00:00.000-08:002026-01-09T01:00:50.215-08:00Link Dump #222<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">What's your mood today? I assume this is a mood for reading :)</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important; text-align: left;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="256" href="https://www.javacodegeeks.com/2026/01/the-ethics-and-philosophy-of-data-governance-in-modern-business.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Ethics and Philosophy of Data Governance in Modern Business</u></a></span><br style="outline: none !important;" />Data is often called 'the new oil,' but it's time to view it as a moral responsibility. Learn how shifting from 'risk avoidance' to 'values-based governance' can build lasting trust with your customers.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="255" href="https://4comprehension.com/avoiding-fake-drift/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Avoiding Fake Drift in Unit Tests</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Fakes are often superior to mocks because they allow for true behavior verification, but they come with a hidden risk: Fake Drift. This happens when your test double evolves separately from the real implementation, leading to tests that pass while the production code fails. Learn how to keep your fakes in sync and maintain the integrity of your test suite.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="254" href="https://www.mountaingoatsoftware.com/blog/are-you-really-doing-scrum-a-practical-scrum-litmus-test" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Are You Really Doing Scrum? A Practical Scrum Litmus Test</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Scrum is lightweight for a reason: every rule exists to drive transparency and inspection. Explore the deeper layers of a healthy Scrum implementation and learn why living the five Scrum values is the ultimate test of agility.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="253" href="https://hbr.org/2026/01/why-ai-boosts-creativity-for-some-employees-but-not-others" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Why AI Boosts Creativity for Some Employees but Not Others</u></a></span><br style="outline: none !important;" />New research reveals that AI boosts creativity primarily for employees with strong metacognition - the ability to plan, monitor, and refine thinking. Organizations that cultivate such skills will turn AI from a productivity tool into a sustained source of creative advantage.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Fun</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="251" href="https://devhumor.com/media/me-and-my-udemy-courses" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Me and my Udemy courses</u></a></span>&nbsp;</span></li></ol></li></ol><strong style="background-color: white; font-family: arial; outline: none !important;"><div><strong style="background-color: white; font-family: arial; outline: none !important;"><br /></strong></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh08k4YJ9CouDihFubc-bZVaHt30Eh1jKX6MPy7QJ1mEUuVJ62A3AN2v2hxSipXMJj5-PENsLHlgF3cAf0wk0XMZuJPrUXHhPfrteLuJJADlN7bbxzc3D-EuNLU-NpaOm4G4ZlQdWd8ZwlxZa5889LPiL-tsB7BdGL8AJJbRVmIfqWnSW-q4Jl0CwNinpg/s673/222.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="673" data-original-width="673" height="421" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh08k4YJ9CouDihFubc-bZVaHt30Eh1jKX6MPy7QJ1mEUuVJ62A3AN2v2hxSipXMJj5-PENsLHlgF3cAf0wk0XMZuJPrUXHhPfrteLuJJADlN7bbxzc3D-EuNLU-NpaOm4G4ZlQdWd8ZwlxZa5889LPiL-tsB7BdGL8AJJbRVmIfqWnSW-q4Jl0CwNinpg/w421-h421/222.png" width="421" /></a></div><br /></strong>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com2tag:blogger.com,1999:blog-7121039760477152462.post-75189224279077745992026-01-02T01:00:00.000-08:002026-01-02T01:00:00.118-08:00Link Dump #221<p><span style="font-family: arial;">I assume your New Year's resolutions list may already be full, but how about adding one reading-related?<span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;">#BookOfTheMonth&nbsp;</strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="238" href="https://www.oreilly.com/library/view/the-unicorn-project/9781098124175/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Unicorn Project<br style="outline: none !important;" /></u></a></span></span></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="245" href="https://www.javacodegeeks.com/2025/12/api-design-in-java-rest-graphql-grpc-comparison.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">API Design: REST, GraphQL, gRPC Comparison</u></a></span><br style="outline: none !important;" />Architecture is all about trade-offs. This article compares the three heavyweights of API design - REST, GraphQL, and gRPC. Learn why REST remains the pragmatic default for public APIs, how GraphQL solves the 'N+1' query problem for mobile apps, and why gRPC is the gold standard for high-performance internal microservices.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="244" href="https://no-kill-switch.ghost.io/why-developers-arent-like-figure-skaters/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Why developers aren't like figure skaters?</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The author critiques the rise of the 'sacred cow' developer who focuses on technical abstractions like hexagonal architecture and microservices simply because they’re trendy, not because they’re needed. Discover why true seniority is measured by your ability to connect everyday work to how a company creates value, not by the number of buzzwords in your CV.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Languages and Libraries</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="243" href="https://www.baeldung.com/maven-4-upgrades" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">What’s New in Maven 4</u></a></span><br style="outline: none !important;" />Maven 4 introduces native support for multiple Source Directories and Condition-Based Profiles, allowing for more flexible, logic-driven build configurations. Dive into features like Parent Inference and new artifact types that make managing Java Modules and annotation processors simpler than ever.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="242" href="https://leadershipfreak.blog/2025/12/19/questions-arent-curiosity/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Questions aren't curiosity</u></a></span><br style="outline: none !important;" />Asking questions isn't the same as being curious. Most 'work questions' aim for speed, compliance, and closure, but curiosity seeks understanding. Learn why work questions move tasks forward, while curious inquiries move people forward. Stop collecting data and start inviting thinking.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="241" href="https://hbr.org/2025/12/ai-tools-make-coders-more-important-not-less" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">AI Tools Make Coders More Important, Not Less</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Many leaders are excited about the promise of AI coding tools that can make it easier for novices to write code and, seemingly, make experienced coders less essential. Yet these tools make experience more important, as AI is not a replacement for real engineers. Learn why it is important to keep experienced engineers in charge of the design, the rules, and the safety checks.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Communication</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="240" href="https://joyfulpublicspeaking.blogspot.com/2025/12/filler-words-are-not-as-bad-as-you.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Filler words are not as bad as you might think</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This post argues that filler words aren't just 'noise' - they actually make you sound more human and relatable. Learn why a perfectly polished, filler-free speech can sometimes come across as robotic, and how these small pauses give your audience vital time to process your message.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Fun</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="239" href="https://thedailywtf.com/articles/a-case-of-old-code" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">A Case of Old Code</u></a></span>&nbsp;<strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj47SalufB1QnWPxBSG9nWjPBAXDdQPluTMQBQC7AsGpHbMcJBQAg1IwbhWk4aRARxWXXo8iQxdBcUcnOqeUHMvjsD0M3GGRsNZSslOTg_A_K71_Ln_kmuI0xtzeJXDzurB-npiGflNHgKJg0DErej7uFiNwLpQ36uQL00Z05e5VNrLUdXotAEDjw6Vizw/s800/221.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="529" data-original-width="800" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj47SalufB1QnWPxBSG9nWjPBAXDdQPluTMQBQC7AsGpHbMcJBQAg1IwbhWk4aRARxWXXo8iQxdBcUcnOqeUHMvjsD0M3GGRsNZSslOTg_A_K71_Ln_kmuI0xtzeJXDzurB-npiGflNHgKJg0DErej7uFiNwLpQ36uQL00Z05e5VNrLUdXotAEDjw6Vizw/w489-h324/221.png" width="489" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com2tag:blogger.com,1999:blog-7121039760477152462.post-23889755172484027392025-12-19T01:36:00.000-08:002025-12-19T01:36:56.372-08:00Link Dump #220<div><span style="font-family: arial;"><span style="background-color: white;">I know this is not a Christmas gift, but I'm sure you will find something for yourself</span><span style="background-color: white;">&nbsp;</span><span style="background-color: white;">:)</span><span style="background-color: white;">&nbsp;<span><a name='more'></a></span></span></span></div><div><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none;"></strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="229" href="https://www.javacodegeeks.com/2025/12/event-sourcing-vs-crud-rethinking-data-persistence-in-enterprise-systems.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Event Sourcing vs CRUD: Rethinking Data Persistence in Enterprise Systems</u></a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />This article explores how Event Sourcing inverts the traditional model by recording every change as an immutable event. Instead of just seeing the final state, you gain a complete 'story' of your data, making audit trails and system recovery intrinsic features.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="228" href="https://www.javacodegeeks.com/2025/12/neuromorphic-computing-and-brain-inspired-architectures-the-future-of-efficient-computing.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Neuromorphic Computing and Brain-Inspired Architectures</u></a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Discover why Spiking Neural Networks are becoming the gold standard for edge intelligence, offering razor-thin latency and biological plausibility for the next generation of brain-machine interfaces.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="227" href="https://devops.com/proactive-problem-solving-observability-trends-every-leader-should-know/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Proactive Problem-Solving: Observability Trends Every Leader Should Know</u></a></span><br style="outline: none;" />This article outlines the fundamental shift toward predictive observability, where organizations use centralized data to solve problems before they impact the user.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="226" href="https://www.baeldung.com/java-sdk-model-context-protocol" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Introduction to the Model Context Protocol (MCP)</u></a></span><br style="outline: none;" />The Model Context Protocol (MCP) is an open-source standard designed to be the 'USB-C port' for AI applications. Learn how to connect your Java apps to the AI ecosystem using a unified, consistent interface.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="224" href="https://leadershipfreak.blog/2025/12/18/thinking-doesnt-make-it-so/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Thinking Doesn’t Make It So</u></a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />This post argues that while negative thoughts can pull you down, positive thinking alone won’t lift you up - only action does. Learn why competence is earned through doing, and why you should replace 'I think' with 'I will' to bridge the gap between visualization and reality.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a builder-link-id="223" href="https://www.mountaingoatsoftware.com/blog/why-teams-matter-more-than-ever-for-innovation" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Why Teams Matter More Than Ever for Innovation</u></a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Sometimes all it takes for an innovation breakthrough is a single question: 'What problem are we really trying to solve?' Learn how to move your team from a collection of individuals in a work group to a cohesive unit that thrives on curiosity.</span></li></ol></li></ol></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir3veOgITmrKFWqe3wYCpzVrgxjnFE4rZb7VWVzNZWrlohgNGtScfCAFReQ89FRqTzP398FgRqMw4-tfMDSO0WpxzO7qyuO0O7nfjn-LDhWEVqCyPYZT-12_SvNzlNKH7Zy6HpR2OL1JBLMtkSW0rZldnVIzA4pl18l7ViR9kOKcgi0JpKkK046Tg_geQ/s225/220.jpg" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="225" data-original-width="225" height="281" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEir3veOgITmrKFWqe3wYCpzVrgxjnFE4rZb7VWVzNZWrlohgNGtScfCAFReQ89FRqTzP398FgRqMw4-tfMDSO0WpxzO7qyuO0O7nfjn-LDhWEVqCyPYZT-12_SvNzlNKH7Zy6HpR2OL1JBLMtkSW0rZldnVIzA4pl18l7ViR9kOKcgi0JpKkK046Tg_geQ/w281-h281/220.jpg" width="281" /></span></a></div><span style="font-family: arial;"><br /></span><div><br /></div>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com2tag:blogger.com,1999:blog-7121039760477152462.post-76294822999365273242025-12-12T01:00:00.000-08:002025-12-12T01:00:00.119-08:00Link Dump #219<div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;">It's reading time! And grab a cup of coffee with you - you might lose track of time!<span><a name='more'></a></span></span></div><div class="separator" style="clear: both; text-align: left;"><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="227" href="https://devops.com/designing-for-failure-4-resilience-practices-that-make-outages-boring/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Designing for Failure: 4 Resilience Practices That Make Outages Boring</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Outages are only scary when you can't contain them. Discover four architectural practices that isolate damage and improve system stability.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="226" href="https://dzone.com/articles/event-storming-big-picture-how-to-enforce-the-time" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Event Storming Big Picture: How to Enforce the Timeline</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The "Enforcing Timeline" phase orders chaotic events chronologically on a horizontal timeline to clarify process flows and dependencies.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Growth</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="224" href="https://leadershipfreak.blog/2025/12/08/why-leaders-dont-seek-feedback/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Why Leaders Don’t Seek Feedback</u></a></span><br style="outline: none !important;" />Giving feedback is easier than seeking it, so how do you become a pro at asking? Learn five ways to seek feedback like a pro.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="223" href="https://leadershipfreak.blog/2025/12/11/6-dumb-leadership-mistakes/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">6 Dumb Leadership Mistakes</u></a></span><br style="outline: none !important;" />This post lists 6 persistently dumb leadership blunders that we commit even though we know better. Find out which self-destructive habits are holding you back.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="222" href="https://www.linkedin.com/pulse/ae11-stop-building-teams-like-youre-assembling-backend-kie%C5%82basa-o9laf" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Stop Building Teams Like You're Assembling a Backend Army</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Are you missing the skills you need for your next project? Learn to map your team's real strengths and weaknesses to ensure your team is built to deliver strategic business outcomes.&nbsp;</span></li></ol></li></ol></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: left;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><br /></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJGzykYFhyphenhyphenLs0FQ_UAPH_sMW6G7rCAagOScAXC29hBzZxMTkrojAv4zozT37A2B4UPp0xxfhF_2ZqMjzA36n91TohyeTF7AFhMYNinq0WcN_S2X5OKDB2Xiypd2w25OiUknoABMh9cADzq3YzwAWH7V68bHsjGqK5vgKvAHS1ncDf71YoXC36uIo4GgK0/s500/219.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="250" data-original-width="500" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJGzykYFhyphenhyphenLs0FQ_UAPH_sMW6G7rCAagOScAXC29hBzZxMTkrojAv4zozT37A2B4UPp0xxfhF_2ZqMjzA36n91TohyeTF7AFhMYNinq0WcN_S2X5OKDB2Xiypd2w25OiUknoABMh9cADzq3YzwAWH7V68bHsjGqK5vgKvAHS1ncDf71YoXC36uIo4GgK0/w488-h244/219.jpg" width="488" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com2tag:blogger.com,1999:blog-7121039760477152462.post-24629881434241088772025-12-05T01:00:00.000-08:002025-12-05T01:00:00.115-08:00Link Dump #218<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">There's still a couple of weeks of reading this year in front of us. Let's use it well :)<span></span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;">#BookOfTheMonth</strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="210" href="https://www.oreilly.com/library/view/inspired-2nd-edition/9781119387503/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;"><br style="outline: none !important;" />Inspired</u></a></span><strong style="outline: none !important;"><br style="outline: none !important;" /><br style="outline: none !important;" /></strong></span></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="216" href="https://www.linkedin.com/pulse/buy-vs-build-software-decision-thats-less-magic-more-logic-custers-elwhe/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Buy vs. Build: The Software Decision That’s Less About Magic and More About Logic</u></a></span><br style="outline: none !important;" />Stop treating 'buy vs. build' as an only IT problem! This post argues that the decision must be a strategic organizational one. Learn to apply the core heuristic: If a function differentiates you, build it in-house; otherwise, buy it, and why business leaders must set this direction first.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="215" href="https://www.javacodegeeks.com/2025/11/service-mesh-vs-api-gateway-navigating-modern-microservices-communication.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Service Mesh vs API Gateway</u></a></span><br style="outline: none !important;" />The choice between an API Gateway and Service Mesh depends on your architecture's maturity and needs. Discover the trade-offs between their centralized vs. distributed deployment.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="214" href="https://www.linkedin.com/pulse/we-outsourced-all-our-problems-vendor-now-were-just-left-custers-veo3e/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">We Outsourced All Our IT Problems to an IT Vendor and Now We’re Just Left With Problems</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Choosing the right engagement model is a strategic imperative. Do you need Lean, Six Sigma, or Agile? This article breaks down the three primary models for outsourcing: Product (best for stable, predictable outcomes), Utility (best for standardized, metered resources), and Co-creation (best for complex, evolving digital transformation). Match your methodology to your model!</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="213" href="https://www.javacodegeeks.com/2025/12/reactive-programming-paradigms-mastering-backpressure-and-stream-processing.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Reactive Programming Paradigms: Mastering Backpressure and Stream Processing</u></a></span><br style="outline: none !important;" />Reactive programming is a complete paradigm shift, not just a technical trend. Dive into the four characteristics of the Reactive Manifesto: Responsive, Resilient, Elastic, and Message-Driven.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="212" href="https://www.mountaingoatsoftware.com/blog/ai-doesnt-eliminate-agile-teams-it-increases-the-need-for-great-ones" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">AI Doesn’t Eliminate Agile Teams — It Increases the Need for Great Ones</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />AI accelerates development, leading many teams to unintentionally collaborate less. This article argues that AI doesn't eliminate agile teams - it makes great ones essential. Learn why the risk is not the technology itself, but the resulting misalignment that is magnified by speed.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="211" href="https://leadershipfreak.blog/2025/12/01/problem-solving-that-works/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Problem-Solving that Works</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The problem with problem-solving is distorted thinking. This article argues that true solutions lie in behaviors, not ideas. Learn to distill issues by asking: 'What are people doing that causes this issue?' and 'What behaviors are likely to produce desired outcomes?'&nbsp;<strong style="outline: none !important;"></strong><strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd2PGHl74ileNKa5hC34t7MtaIpSlcpFluXHuk5MlBTCCIk1LbnwbMjnV-itnScYChYO53MPrtaAsb2g6wuhbtZ4nZDs7zU9c-xIgawOLMGbTJv3jYX411WrQ4Flhn6yJ43WsyAm_E_CHMGBOsoVdrdxjUKHAfqQQeszXHPLlL5Uc1HZ7CFPblphVJC2g/s554/218.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="554" data-original-width="500" height="417" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjd2PGHl74ileNKa5hC34t7MtaIpSlcpFluXHuk5MlBTCCIk1LbnwbMjnV-itnScYChYO53MPrtaAsb2g6wuhbtZ4nZDs7zU9c-xIgawOLMGbTJv3jYX411WrQ4Flhn6yJ43WsyAm_E_CHMGBOsoVdrdxjUKHAfqQQeszXHPLlL5Uc1HZ7CFPblphVJC2g/w376-h417/218.jpg" width="376" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com1tag:blogger.com,1999:blog-7121039760477152462.post-45007272951707428362025-11-28T01:00:00.000-08:002025-11-28T01:00:00.116-08:00Link Dump #217<p><span style="font-family: arial;">Every day is good for reading, but Friday is even better :)<span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="202" href="https://www.infoq.com/news/2025/11/migration-recovery/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Five Hard Lessons from&nbsp;Recovering a Catastrophic Microservices Migration</u></a></span><br style="outline: none !important;" />The author explains that successful architectural recovery depends as much on perception management and team dynamics as on technical prowess.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="201" href="https://letstalkaboutjava.blogspot.com/2025/11/so-which-part-of-your-system-is.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">So… Which Part of Your System Is Actually Worth Building?</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><a builder-link-id="188" href="https://letstalkaboutjava.blogspot.com/2025/11/so-which-part-of-your-system-is.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;" target="_blank"><br style="outline: none !important;" /></a>By understanding which parts&nbsp;of the system are core, supporting, or generic, we can decide what to build, what to buy, and what to outsource without guesswork. And as the business evolves, this classification helps us adapt confidently instead of chasing changes blindly. Read the article and learn how to learn more from your domains' classification.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="200" href="https://www.javacodegeeks.com/2025/11/data-privacy-as-strategic-opportunity-in-a-cookieless-future.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Data Privacy as Strategic Opportunity in a Cookieless Future</u></a></span><br style="outline: none !important;" />This article argues that brands treating data privacy as a feature, not a bug, are winning customer loyalty. Learn why first-party data is the new gold, replacing sketchy third-party surveillance.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="199" href="https://www.javacodegeeks.com/2025/11/the-evolution-of-user-experience-design.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Evolution of User Experience Design</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article reveals why design-driven companies outperform the S&amp;P Index by 228% and how a comprehensive UX strategy can increase conversion rates by up to 400%. Discover why investing in user experience isn't a cost but a competitive necessity.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="198" href="https://devops.com/the-coding-assistant-bottleneck-applying-the-3-ways/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Coding Assistant Bottleneck: Applying the 3-Ways</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Learn how local efficiencies lead to global slowdowns. To understand why this is happening and what to do about it, we need to go back to basics. We need to look at this new reality through the lens of the Three Ways of DevOps.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="197" href="https://rieckpil.de/whats-new-for-testing-in-spring-boot-4-0-and-spring-framework-7/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">What’s New for Testing in Spring Boot 4 and Spring Framework 7</u></a></span><br style="outline: none !important;" />This article explores the key testing-related updates for Spring Boot 4.0 and Spring Framework 7. This includes the new modular architecture, the improved test context management, and practical guidance for a smooth transition to this new major release.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="196" href="https://leadershipfreak.blog/2025/11/20/3-quiet-weeks/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">3 Quiet Weeks</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The author advises leaders to avoid the 'shoe-drop' anxiety when things are going well. Instead, view margin as an opportunity to reinvest: improve a process, remove obstacles, or equip competent people for new challenges by delegating.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="195" href="https://devops.com/how-to-build-engineering-teams-that-drive-outcomes-not-outputs/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">How to Build Engineering Teams That Drive Outcomes, not Outputs</u></a></span><br style="outline: none !important;" />Learn how to anchor engineering, product, and design around a shared outcome to drive flexibility and collective ownership.&nbsp;<strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2sRd-G-jT2PtSIoF5ynTM4hWQbJccxVumpeS47RL3WcKdsHwtm_l8CTrA7pwcHhaGMoSVNSmhudLN39vUz9vD5GmqsF7pjHQOoueDQ13_DUY0Gru3312D9lJszuf3vxyJCziiUi4zjCwLNdt4SLfN7S7nBAh4UVY5L-5uWyWVg8vd537r6zuGm4hVmA/s480/217.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="384" data-original-width="480" height="387" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL2sRd-G-jT2PtSIoF5ynTM4hWQbJccxVumpeS47RL3WcKdsHwtm_l8CTrA7pwcHhaGMoSVNSmhudLN39vUz9vD5GmqsF7pjHQOoueDQ13_DUY0Gru3312D9lJszuf3vxyJCziiUi4zjCwLNdt4SLfN7S7nBAh4UVY5L-5uWyWVg8vd537r6zuGm4hVmA/w484-h387/217.jpg" width="484" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-56181208684623320032025-11-27T01:00:00.000-08:002025-11-27T01:00:00.264-08:00So… Which Part of Your System Is Actually Worth Building?<p><span style="font-family: arial;"><a href="https://letstalkaboutjava.blogspot.com/2025/10/core-supporting-generic-how-to-stop.html" target="_blank">Domain types classification</a>&nbsp;is part of the <a href="https://letstalkaboutjava.blogspot.com/2025/08/understanding-problem-and-solution.html" target="_blank">problem space</a>. It increases our understanding of the business, its priorities, and its main aspects. On the other hand, it is not part of the implementation itself. However, this does not mean it lacks value — it still provides insights that help us make better, more informed software architecture decisions. Let's explore how domain classification can support us in this process.<span></span></span></p><a name='more'></a><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbx6DBd5_xjOcEN2Rx_4b8agaTtmjSwPEJ7fY5QnoNa49cmtZ0qemXfBZTgz5g1gBx-5FamrJvVFYhntcP33rIXGDkTSXLIClxOKqx0kvU6fWnchp8txPYkGOTkqxWx7T-lnDtcZw-bAP-zEvU9JfpRwNDi_mAfqdv1VoV224cKrzIeK6echNkJmDPoDo/s1024/domain%20types%20as%20decision.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="494" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbx6DBd5_xjOcEN2Rx_4b8agaTtmjSwPEJ7fY5QnoNa49cmtZ0qemXfBZTgz5g1gBx-5FamrJvVFYhntcP33rIXGDkTSXLIClxOKqx0kvU6fWnchp8txPYkGOTkqxWx7T-lnDtcZw-bAP-zEvU9JfpRwNDi_mAfqdv1VoV224cKrzIeK6echNkJmDPoDo/w494-h494/domain%20types%20as%20decision.png" width="494" /></a></div><br /><p></p><p><br /></p><h2><span style="font-family: arial;">Architecture Evolution</span></h2><p><span style="font-family: arial;">Today we will make a few initial decisions, but they may change later. To be honest, this is not a problem because:</span></p><ul data-spread="false"><li><p><span style="font-family: arial;">every decision moves us forward</span></p></li><li><p><span style="font-family: arial;">accepting the changes that will inevitably come forces us to design architecture in a way that supports evolution — a beneficial characteristic for any product we build</span></p></li></ul><div><span style="font-family: arial;"><br /></span></div><h2><span style="font-family: arial;">Build or Buy?</span></h2><p><span style="font-family: arial;">How can domain classification help us in the solution space?&nbsp;<br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiO8RXJoAVFiJkm5eB3Wf2O564lYNpug7hPGUP1XFSq2Migsx7YPcax9CSU1VwVX5JblyGRWXTPWeGdG_4UNHWtJg3IIgDN2Kxr-HfTh_xGf4185RjIfQ-IcbCC6KOLDF3pjsFpuCOz60CchxaJZSTJRKTZwwextjXmf4mC9sIsrN35Bf5EW1J-Cpfjg/s5595/domain%20types%20-%20after.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2859" data-original-width="5595" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiO8RXJoAVFiJkm5eB3Wf2O564lYNpug7hPGUP1XFSq2Migsx7YPcax9CSU1VwVX5JblyGRWXTPWeGdG_4UNHWtJg3IIgDN2Kxr-HfTh_xGf4185RjIfQ-IcbCC6KOLDF3pjsFpuCOz60CchxaJZSTJRKTZwwextjXmf4mC9sIsrN35Bf5EW1J-Cpfjg/w491-h252/domain%20types%20-%20after.jpg" width="491" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><p><span style="font-family: arial;">First, by guiding us toward understanding which problems we should solve ourselves and where we should explore existing solutions. It’s important to emphasize that “buying” a solution does not have to be literal. It may be something already created and used within our company or an open‑source library. The key point is that it already exists and satisfies our expectations.</span></p><h3><span style="font-family: arial;">Generic Subdomains</span></h3><p><span style="font-family: arial;">Let’s start with generic subdomains. On their own, they can be quite complex. I don’t know anyone who would call Accounting simple. Yet we need these subdomains because they are required. They do not bring competitive advantage and, in most cases, we lack the domain expertise to understand them deeply. These are strong candidates for solutions worth buying. Problems from these domains can be solved in ways supported by their providers. It does not have to be implemented exactly as we would prefer. If the cost is acceptable and the features meet our needs, we can learn to use the existing solution.</span></p><p><span style="font-family: arial;">From an architecture perspective, these external solutions may even remain outside of our direct interest due to minimal or manual integration with the system we implement.</span></p><h3><span style="font-family: arial;">Supporting Subdomains</span></h3><p><span style="font-family: arial;">Now let’s consider another category — supporting subdomains. Here, we should also look for solutions that already exist. However, in this case, we more often talk about services and tools that we will need to integrate with, even if we decide to acquire an external solution. This is simply because these subdomains support our core domains, which implies closer interaction.</span></p><p><span style="font-family: arial;">Sometimes integration will not be enough, and we will need to add extensions crucial for the product we are building.</span></p><p><span style="font-family: arial;">As you can see, coding within these subdomains is quite common. It might not be the most complex part from a business perspective, but it still requires development effort.</span></p><h3><span style="font-family: arial;">Core Domains</span></h3><p><span style="font-family: arial;">When we talk about core domains, we refer to areas where solutions must be built by us — especially where we seek competitive advantage. If that’s not the case, then perhaps our classification was inaccurate.</span></p><p><br /></p><h2><span style="font-family: arial;">Build or Outsource?</span></h2><p><span style="font-family: arial;">Once we know what has to be built, we can move to the next question: what can be outsourced?</span></p><h3><span style="font-family: arial;">Generic Subdomains</span></h3><p><span style="font-family: arial;">If nothing suitable exists on the market, this becomes a good candidate for outsourcing. Perhaps there is already a company specializing in such solutions — use their expertise.</span></p><p><span style="font-family: arial;">However, if no one provides it, maybe your classification was incorrect and you’ve discovered another core domain. Or a new product to build.</span></p><h3><span style="font-family: arial;">Supporting Subdomains</span></h3><p><span style="font-family: arial;">On one hand, this can also be a good candidate for outsourcing. After all, it’s not your core domain. On the other hand, you already know that <a href="https://letstalkaboutjava.blogspot.com/2025/10/core-supporting-generic-how-to-stop.html" target="_blank">domains evolve</a>, and a supporting subdomain may eventually become a core domain.</span></p><p><span style="font-family: arial;">Taking that into account, I recommend outsourcing only if the implementation focuses mostly on integration with another domain. If the supporting subdomain must be built from scratch or requires extending existing solutions, I suggest keeping the implementation in‑house. This ensures you maintain domain expertise and avoid creating a dependency on an external provider — especially important in case the subdomain evolves.</span></p><h3><span style="font-family: arial;">Core Domains</span></h3><p><span style="font-family: arial;">Core domains should be fully implemented by us. Since they represent the most important parts of our system, we must ensure domain expertise stays within the team. We don’t want to share this knowledge or rely on external vendors.</span></p><p><span style="font-family: arial;"><br /></span></p><h2><span style="font-family: arial;">Decisions Can Be Changed</span></h2><p><span style="font-family: arial;">At this stage, we do not yet have full, deep understanding of the business, and some important aspects may still be outside our view. The more we learn, the more accurate our decisions become. This means decisions made now may change — and that’s perfectly fine. It’s better to move forward, adapt, and evolve than wait indefinitely for complete knowledge.</span></p><p><span style="font-family: arial;">New information is not the only reason decisions might shift. When evaluating what we can buy, we may discover solutions we weren’t aware of before. Or we might assume something has the features we need but later find out it doesn’t. Or we expect the price to be acceptable but it turns out not to be. Additionally, something we built ourselves may later appear on the market as an off‑the‑shelf offering worth considering.</span></p><p><span style="font-family: arial;">The market is not set in stone, so it is worth monitoring to stay informed and react when needed.</span></p><p><span style="font-family: arial;"><br /></span></p><h2><span style="font-family: arial;">Summary</span></h2><p><span style="font-family: arial;">Domain types are not only a theoretical classification — they guide us toward better‑informed decisions. Thanks to this classification, it becomes easier to determine what to buy and what to build. It can even challenge our assumptions, especially if all our “core domains” turn out to be available on the market. But that’s not all. Using this classification, we can better manage risk and decide which aspects of the system are safe to outsource and which must stay with us — both in terms of domain expertise and implementation.</span></p><p></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-43542992101007961322025-11-21T01:00:00.000-08:002025-11-21T01:00:00.114-08:00Link Dump #216<p><span style="font-family: arial;">Winter is coming but you shall not be afraid - a new Link Dump is coming too :)<span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="186" href="https://www.javacodegeeks.com/2025/11/platform-engineering-rethinking-developer-experience-in-the-age-of-complexity.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Platform Engineering: Rethinking Developer Experience in the Age of Complexity</u></a></span><br style="outline: none !important;" />This article explains the shift-down philosophy: rather than pushing all operational burden onto developers ('shift left'), the platform team assumes responsibility for infrastructure, security, and compliance</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="185" href="https://event-driven.io/en/requeuing_roulette_in_messaging/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Requeuing Roulette in Event-Driven Architecture and Messaging</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article explains that when messages are 'causally correlated', parallel processing is dangerous. Requeuing Roulette attempts to cheat this trade-off but risks making correlated messages skip the line, leading to race conditions and unexpected failures.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="184" href="https://devops.com/vibe-coding-the-double-edged-sword-in-modern-software-development/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Vibe Coding: The Double-Edged Sword in Modern Software Development</u></a></span><br style="outline: none !important;" />Vibe Coding is development driven by immediate gratification and rapid prototyping, but it creates a Cognitive Load Crisis for security. Discover why this short-term thinking often leads to fundamental architectural flaws and technical debt that are expensive to fix.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="183" href="https://www.javacodegeeks.com/2025/11/agile-git-branching-strategies-in-2026.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Agile Git Branching Strategies in 2026</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Adopting Trunk-Based Development is a cultural shift, not just a process change. This article stresses that moving to daily commits on the trunk requires a high-trust environment where the team collectively owns quality.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="182" href="https://tidyfirst.substack.com/p/why-does-development-slow" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Why Does Development Slow?</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The author explains that the 'mess' in your current code creates a gap. Discover how deliberate tidying closes this gap by creating options—the freedom to build—and how this simple rhythm sustains velocity.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Clean Code</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="181" href="https://www.yegor256.com/2025/11/16/smaller-repository-higher-quality.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Small Repo, High Quality</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article argues that smaller repositories lead to better code because they allow for stricter style enforcement, deeper and faster integration tests, and more pedantic code review due to reduced complexity.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="180" href="https://www.mountaingoatsoftware.com/blog/rethink-the-refinement-session-less-time-better-outcomes" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Rethink the Refinement Session: Less Time, Better Outcomes</u></a></span><br style="outline: none !important;" />Is your team spending too much time in backlog refinement? This article argues that more time is wasted here than in all other meetings combined. The fix: Treat refinement as a quick pre-planning check, not a deep-dive workshop.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Fun</span></strong></li><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="179" href="https://thedailywtf.com/articles/are-you-mocking-me" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Are You Mocking Me?</u></a></span>&nbsp;<strong style="outline: none !important;"></strong></span></li></ol></ol><div><b><span style="font-family: arial;"><br /></span></b></div><div><b><span style="font-family: arial;"><br /></span></b></div><div><b><span style="font-family: arial;"><br /></span></b></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRymzhzKEBD4uPspXQ1YIDpWO3IbLIW6i30xclWfn03L2tdO4EI_uRVak7wEWjRZibJoR48N1OzJSxC2DFDseuYzMofaJCPw_dAeP5pRE0FbxyqA9IF8Uuy44yGDrcEvpoAnM1WogmcVRVA_RQsVZAnWU0caGO9JZoiJUzkboPRy5rZtWn6EbXlBCJvJQ/s247/216.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="247" data-original-width="204" height="465" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRymzhzKEBD4uPspXQ1YIDpWO3IbLIW6i30xclWfn03L2tdO4EI_uRVak7wEWjRZibJoR48N1OzJSxC2DFDseuYzMofaJCPw_dAeP5pRE0FbxyqA9IF8Uuy44yGDrcEvpoAnM1WogmcVRVA_RQsVZAnWU0caGO9JZoiJUzkboPRy5rZtWn6EbXlBCJvJQ/w384-h465/216.jpg" width="384" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-8678807981906677992025-11-14T01:00:00.000-08:002025-11-14T01:00:00.122-08:00Link Dump #215<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">Ready for Friday? With a new set of worth reading articles I bet you are :)</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="152" href="https://www.javacodegeeks.com/2025/11/service-mesh-architecture-istio-and-envoy-in-production.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Service Mesh Architecture<br style="outline: none !important;" /></u></a>This article introduces the Service Mesh as the essential architecture to manage distributed systems. Discover how control planes like Istio and data planes like Envoy standardize traffic control, security, and monitoring outside of your application code.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="153" href="https://www.linkedin.com/pulse/ae9-your-adrs-write-only-documentation-kamil-kie%C5%82basa-pfr3f" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Are Your ADRs Write-Only Documentation?</u></a>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek<br style="outline: none !important;" /></span></strong>Discover how to transform your ADRs from passive historical logs into active communication tools that onboard new team members and align current development.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="154" href="https://www.javacodegeeks.com/2025/11/micrometers-observation-api-unified-observability-for-the-jvm.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Micrometer’s Observation API: Unified Observability for the JVM<br style="outline: none !important;" /></u></a>Learn how Micrometer’s Observation API fundamentally changes the JVM observability landscape by bringing vendor-neutral, unified metrics and tracing with unprecedented sophistication.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="160" href="https://devops.com/vibe-coding-can-create-unseen-vulnerabilities/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Vibe Coding Can Create&nbsp;Unseen Vulnerabilities<br style="outline: none !important;" /></u></a>This article explains how generating software without visibility into the code structure creates significant challenges for security and maintenance. The result is hidden vulnerabilities, increased technical debt, and difficulty with debugging complex integrations.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="161" href="https://www.yegor256.com/2025/11/09/help-me-cant-merge.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Can’t Merge? Don't Despair.&nbsp;</u></a><br style="outline: none !important;" />This guide offers advanced tactics for dealing with un-mergeable code. Discover why you should never use your failed PR as proof of a flaw, but instead submit a separate bug report as if you were a complete stranger who just found a defect in the master branch.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="162" href="https://devops.com/vibe-coding-vs-spec-driven-development-finding-balance-in-the-ai-era/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Vibe Coding vs. Spec-Driven Development</u></a>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The author, dives into the rise of vibe coding versus traditional spec-driven development.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="163" href="https://www.javacodegeeks.com/2025/11/the-abstraction-paradox-why-programming-languages-keep-getting-more-complex.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Abstraction Paradox: Why Programming Languages Keep Getting More Complex</u></a>&nbsp;<br style="outline: none !important;" />Every few years, a new programming language promises to make coding simpler. Yet somehow, the barrier to entry keeps rising. We’ve created an abstraction paradox: the tools meant to make programming easier have made it more complex.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="164" href="https://www.eventuallyinconsistent.com/2025/10/in-age-of-ai-your-data-has-future-but-only-if-it-has-past.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">In the Age of AI, Your Data Has a Future — But Only If It Has a Past</u></a>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article explains the uncomfortable truth: Snapshots tell you what happened; events tell you how and why. In the age of AI, the ability to learn patterns of change, not just static states, makes historical event data suddenly and profoundly strategic.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Languages and Frameworks</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="165" href="https://www.javacodegeeks.com/2025/11/java-25-a-leaner-smarter-and-more-expressive-future.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Java 25: A Leaner, Smarter, and More Expressive Future<br style="outline: none !important;" /></u></a>Java 25 marks a pivotal moment in the evolution of the language—refining its core strengths while embracing modern programming paradigms. With a focus on performance, developer ergonomics, and concurrency, this release builds on the momentum of Java 17 and 21, offering features that feel both familiar and fresh.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="166" href="https://www.javacodegeeks.com/2025/11/spring-ai-integration-building-intelligent-java-applications.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Spring AI Integration: Building Intelligent Java Applications<br style="outline: none !important;" /></u></a>Let’s explore how Spring AI brings familiar Spring patterns&nbsp;to the world of generative AI.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="167" href="https://tidyfirst.substack.com/p/composable-tests" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Composable Tests</u></a>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Kent Beck dives into the difference between Isolation and Composition in testing. He argues that while Isolation ensures tests run independently, Composition is about structuring the overall suite so that combining multiple, focused tests gives you predictive confidence in the system's total coverage.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="168" href="https://www.mountaingoatsoftware.com/blog/how-to-coach-your-team-to-run-a-daily-scrum-meeting-when-you-cannot-attend" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Nurturing a Self-Organizing Team through the Daily Scrum</u></a>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />The daily scrum should be fuel, not a status report. This article coaches Scrum Masters on how to take a back seat and nurture a truly self-organizing team.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="display: inline-block; min-height: 1rem; min-width: 1px; outline: none !important;"></strong><a builder-link-id="169" href="https://leadershipfreak.blog/2025/11/10/7-ways-to-get-more-done-and-still-have-fun/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">7 Ways to Get More Done and Still Have Fun<br style="outline: none !important;" /></u></a>This guide emphasizes that efficiency requires eliminating distractions and novelty. Learn why developing rigid routines saves energy, enabling you to find quiet and focus on what truly matters during your most productive hours.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><a builder-link-id="170" href="https://managementblog.org/2025/11/10/who-is-underperforming/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Who is Underperforming?</u></a>&nbsp;<br style="outline: none !important;" />Stop blaming your staff for missed deadlines. This management insight explains why the responsibility for underperformance flows up, not down.</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4qIFurxGXA2VgPe35pEi2Oi9Tf_6bDQolULk4zHQhEM1AygarS0XQK35epVs3cFZUVnwhQ57LBW-Y9mccF02XnKy7PPOG2Y2xARnRZNbUuR9v21ecqDIugb3__WKzJaveM9bLMpKf9hyqrGpiG8XjArJ_-8HNTC9iE0O4eMDCsBB9hYMK9aZ7hv-sCE/s296/215.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="296" data-original-width="296" height="431" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgG4qIFurxGXA2VgPe35pEi2Oi9Tf_6bDQolULk4zHQhEM1AygarS0XQK35epVs3cFZUVnwhQ57LBW-Y9mccF02XnKy7PPOG2Y2xARnRZNbUuR9v21ecqDIugb3__WKzJaveM9bLMpKf9hyqrGpiG8XjArJ_-8HNTC9iE0O4eMDCsBB9hYMK9aZ7hv-sCE/w431-h431/215.jpeg" width="431" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-8985473964586091282025-11-07T01:00:00.000-08:002025-11-07T01:00:00.111-08:00Link Dump #214<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">Another book or maybe a short article? How about both :)</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span style="outline: none !important;"><b>#BookOfTheMonth</b><br /><a builder-link-id="95" href="https://www.oreilly.com/library/view/architecture-for-flow/9780137392759/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Architecture for Flow: Adaptive Systems with Domain-Driven Design, Wardley Mapping, and Team Topologies</u></a><br /><br /></span></span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="93" href="https://medium.com/nick-tune-tech-strategy-blog/software-architecture-as-living-documentation-series-index-post-9f5ff1d3dc07" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Software Architecture as Living Documentation Series</u></a></span>&nbsp;<br style="outline: none !important;" />This is a series of posts exploring how to automatically extract software architecture and domain concepts from a codebase to have 100% reliable living documentation across a whole system.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="92" href="https://blog.frankel.ch/choosing-dependency/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Choosing a dependency</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Choosing a third-party dependency is a critical risk management activity. This article details the essential steps to handle the risks of external code. It also guides you through the fundamental build vs. buy decision, using practical examples.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="91" href="https://www.thoughtworks.com/insights/blog/technology-strategy/macro-trends-tech-industry-november-2025" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Macro trends in the tech industry | November 2025</u></a></span>&nbsp;<br style="outline: none !important;" />The latest edition of the Thoughtworks Technology Radar is out. This article expands on the macro trends that informed Thoughtworks discussions during the Radar meeting.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="90" href="https://event-driven.io/en/strict_ordering_in_event_handling/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Handling Events Coming in an Unknown Order</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article tackles the toughest ordering problem in Event-Driven Architectures: knowing what data is complete when messages arrive out of sync. Learn the powerful strategy of separating Internal vs. External Events, using a Summary Event as a public contract to minimize ordering issues and prevent cross-module dependencies.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Languages and Frameworks</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="89" href="https://www.javacodegeeks.com/java-25-understanding-stable-values.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Java 25: Understanding Stable Values</u></a></span><br style="outline: none !important;" />Let delve into understanding Java 25 Stable Values and how they simplify concurrency handling, improve application performance, and ensure immutability without compromising thread safety.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="88" href="https://www.javacodegeeks.com/2025/11/unnamed-patterns-and-variables-reducing-boilerplate.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Unnamed Patterns and Variables: Reducing Boilerplate</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Unnamed patterns and variables—often called discards or wildcards—are reshaping how we handle data we don’t care about, making code cleaner, more intentional, and remarkably more readable.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="87" href="https://softwaremill.com/the-long-journey-how-byte-code-gets-interpreted-by-the-machine/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">The Long Journey - How Bytecode Gets Interpreted by the Machine</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article dives deep into the JVM's tiered compilation process, explaining how bytecode is converted into highly optimized native code across five different levels. Discover why the JIT compiler initially uses a fast Interpreter before moving hot methods through the C1 and C2 optimizing compilers.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="86" href="https://leadershipfreak.blog/2025/11/05/simple-skills-strong-leadership/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Simple Skills—Strong Leadership</u></a></span><br style="outline: none !important;" />Discover how to lead from any position by mastering basic yet profound skills.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="85" href="https://www.leadershipnow.com/leadingblog/2025/11/to_achieve_the_extraordinary_f.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">To Achieve the Extraordinary, Focus on the Game Changers</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />What defines a true Game Changer in your organization? Learn how to scout and recognize the few people who can propel your entire team forward.</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFlZlQuSDZtUis3GyxQy-xwlzhRs8HUwALR9aLE2v_-xeZ1gOwdYJBN9-AMy6CsoDYW_gSkpdcCTg70I2pOoCVRlfGpXijWvTL8ASR4kkiKXpoc08PQCJvBxM0pbxGTcfdsS7dlVf5c8JJM7tFKrHeDcWc028IP-pBy7j8VlsQHdnoMoRa9djM8762P9I/s691/214.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="640" data-original-width="691" height="427" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFlZlQuSDZtUis3GyxQy-xwlzhRs8HUwALR9aLE2v_-xeZ1gOwdYJBN9-AMy6CsoDYW_gSkpdcCTg70I2pOoCVRlfGpXijWvTL8ASR4kkiKXpoc08PQCJvBxM0pbxGTcfdsS7dlVf5c8JJM7tFKrHeDcWc028IP-pBy7j8VlsQHdnoMoRa9djM8762P9I/w462-h427/214.jpg" width="462" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-14247847710425784252025-10-31T02:00:00.000-07:002025-10-31T02:00:00.182-07:00Link Dump #213<div><span style="font-family: arial;">I know I do not have to convince&nbsp;you to read but remember that reading&nbsp;improves your focus and memory :)<span><a name='more'></a></span></span></div><div><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="75" href="https://letstalkaboutjava.blogspot.com/2025/10/core-supporting-generic-how-to-stop.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Core, Supporting, Generic – How to Stop Treating All Domains the Same</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Most of the time, we talk about domains as if they were all the same. But they’re not — some drive your business forward, others just keep it running. In this article, we’ll look at how to spot which domains deserve your time, attention, and money — and which ones you can safely buy off the shelf.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="74" href="https://www.javacodegeeks.com/2025/10/functional-choreography-for-microservices-from-theory-to-practice.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Functional Choreography for Microservices: From Theory to Practice</u></a></span><br style="outline: none !important;" />Is your microservices workflow a distributed monolith? This article contrasts rigid orchestration with flexible choreography, where services react to events instead of receiving direct orders.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="73" href="https://dzone.com/articles/building-real-time-event-driven-systems-with-agent" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Emerging Patterns in Large-Scale Event-Driven AI Systems</u></a></span><br style="outline: none !important;" />Build scalable AI event pipelines with Kafka to enable continuous learning systems that perceive, reason, and act in real time.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="72" href="https://devops.com/7-proven-benefits-of-devops-implementation-in-modern-software-development/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">7 Proven Benefits of DevOps Implementation in Modern Software Development</u></a></span><br style="outline: none !important;" />Discover how automation and continuous testing ensure updates are deployed faster, more frequently, and with rock-solid reliability.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="71" href="https://martinfowler.com/articles/agentic-ai-security.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Agentic AI and Security</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Agentic AI systems have an existential security problem. This article explains the fundamental flaw: LLMs cannot reliably separate content from instructions. Learn practical mitigation strategies, like sandboxing agents and avoiding credentials in files, to eliminate at least one factor.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="70" href="https://testdouble.com/insights/5-rules-to-avoid-the-95-ai-project-failure-rate" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">5 rules to avoid the 95% AI project failure rate</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />MIT research shows 95% of corporate AI pilots fail. The problem isn't the technology—it's transformation. In the article, you can find the 5 non-negotiables every C-suite needs to master for AI success.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="69" href="https://www.javacodegeeks.com/2025/10/contract-testing-java-microservices-with-pact-ensuring-safe-deployments-across-teams.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Contract Testing Microservices with Pact: Ensuring Safe Deployments Across Teams</u></a></span><br style="outline: none !important;" />Stop spending money on flaky end-to-end tests. This article shows teams how to use Pact to shift validation left. Understand the process of publishing consumer-generated contracts to a Pact Broker and how it provides a single source of truth for integration testing in distributed systems.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="68" href="https://leadershipfreak.blog/2025/10/28/7-quotes-7-lessons/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">7 Quotes—7 Lessons</u></a></span><br style="outline: none !important;" />Discover the hard lessons behind the humor, such as the need to check manager turnover before signing up and the danger of ignoring jerkholes, even if they are top performers.&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" style="outline: none !important;"><br style="outline: none !important;" /></span></strong></span></li></ol></li></ol></div><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVQqnfowiIlLAM_kMXu_SVl0e0HFiU5nrOUuERs_ahbLNnEzcPj2jo0bGbwLEEA7bRGzevyNU5hLq8ft_UX6TW2mzOA9OCmqCDkpTzeAYjH6LLRt_STK2TU4pjjLCdZsd_MpR-If6WrNfdVaUb4q_f8hNoiv-KV9J7NVUtYpFl6jcfolbSdKv_Cc3KLrM/s720/213.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="720" data-original-width="720" height="417" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVQqnfowiIlLAM_kMXu_SVl0e0HFiU5nrOUuERs_ahbLNnEzcPj2jo0bGbwLEEA7bRGzevyNU5hLq8ft_UX6TW2mzOA9OCmqCDkpTzeAYjH6LLRt_STK2TU4pjjLCdZsd_MpR-If6WrNfdVaUb4q_f8hNoiv-KV9J7NVUtYpFl6jcfolbSdKv_Cc3KLrM/w417-h417/213.png" width="417" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-35984137449927163722025-10-29T02:00:00.000-07:002025-10-31T00:59:39.309-07:00Core, Supporting, Generic – How to Stop Treating All Domains the Same<p><span style="font-family: arial;">Most businesses require knowledge from multiple domains to be successful. Some are essential due to the nature of the business itself, others are mandated by legal regulations and compliance obligations, and some exist simply to meet specific operational requirements.</span></p> <p><span style="font-family: arial;">After the last series of articles, <a href="https://letstalkaboutjava.blogspot.com/2025/10/the-hidden-architecture-of-words.html" target="_blank">you already know how to identify those domains</a>. But what comes next? Once we define all domains, it’s worth categorizing them. This exercise helps us later make better software architecture decisions and organize teams more effectively.<span></span></span></p><a name='more'></a><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGnxKc-quuHJhpHXONUB9t1Fl6vHvvJ0mqwDF_cg0F8WjrwtL0g82WR8jQdAL6RLw21Uc3h1np8wPjs3JTaTCef800FqD2hU2FQv9t6mnLFSkA_2TuRRWDcMLr9gEalE8GMF_t86mxEBo4s4G6mBuBSZb-CnfG8KJjehR7TkAzkdqcZJSKyflcgYTNijg/s1024/domain%20types.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="485" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGnxKc-quuHJhpHXONUB9t1Fl6vHvvJ0mqwDF_cg0F8WjrwtL0g82WR8jQdAL6RLw21Uc3h1np8wPjs3JTaTCef800FqD2hU2FQv9t6mnLFSkA_2TuRRWDcMLr9gEalE8GMF_t86mxEBo4s4G6mBuBSZb-CnfG8KJjehR7TkAzkdqcZJSKyflcgYTNijg/w485-h485/domain%20types.png" width="485" /></a></div><br /><span style="font-family: arial;"><br /></span><p></p> <h2><span style="font-family: arial;">Domain Types</span></h2> <p><span style="font-family: arial;">Domain-Driven Design divides domains into three categories:</span></p> <ul> <li> <p><span style="font-family: arial;">Core domains</span></p> </li> <li> <p><span style="font-family: arial;">Supporting subdomains</span></p> </li> <li> <p><span style="font-family: arial;">Generic subdomains</span></p> </li> </ul> <p><span style="font-family: arial;">This distinction highlights that domains differ in both complexity and business importance.</span></p> <h3><span style="font-family: arial;">Core Domains</span></h3> <p><span style="font-family: arial;">Core domains are the primary reason we create a given solution in the first place. This is where we aim to gain an advantage over competitors — to be better, faster, or more efficient (whatever that means in a particular business context).<br /> To identify your core domains, ask yourself:</span></p> <ul> <li> <p><span style="font-family: arial;">What is the main problem our application solves?</span></p> </li> <li> <p><span style="font-family: arial;">What do we want to achieve by building this solution?</span></p> </li> <li> <p><span style="font-family: arial;">Why should customers choose our solution over the competition?</span></p> </li> <li> <p><span style="font-family: arial;">What do our customers get from us that they won’t get elsewhere — at least not with the same quality?</span></p> </li> </ul> <h3><span style="font-family: arial;">Generic Subdomains</span></h3> <p><span style="font-family: arial;">These are all the areas of your business or application that are necessary but not differentiating. They don’t need to be better or different from what your competitors have. Ideally, you should buy or reuse existing, proven solutions instead of building them from scratch.</span></p> <h3><span style="font-family: arial;">Supporting Subdomains</span></h3> <p><span style="font-family: arial;">Supporting subdomains sit between core and generic domains. They contain requirements that cannot be fulfilled by existing software, so you must develop them yourself. However, they don’t directly create business advantage — they support your core domains in doing so.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">Domain vs. Subdomain</span></h2> <p><span style="font-family: arial;">In the categorization above, you might notice the use of the word <em>domain</em> for core, and <em>subdomain</em> for generic and supporting. To be precise, they’re all domains — areas of knowledge with <a href="https://letstalkaboutjava.blogspot.com/2025/08/ubiquitous-language-boundaries-words.html" target="_blank">their own boundaries and ubiquitous language</a>.<br /> The term <em>subdomain</em> is used next to generic and supporting categories to emphasize their lower business importance. The core domain and everything within its boundaries are the most crucial parts of your business. You should invest most of your time and energy in improving them so your competitive advantage grows over time.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">(Sub)Domain Types Are Local</span></h2> <p><span style="font-family: arial;">Categorization within your business, even if done correctly, is not universally valid. Something that is a generic subdomain for you (e.g., invoicing in a training center) might be a core domain for someone else (e.g., invoicing in an accounting system).<br /> It gets more complex when the categorization differs within the same business. For example, in a training center, one group of stakeholders might want to compete with a rich offer and attractive pricing (making <em>Sales</em> the core domain), while another might aim to provide the best-quality training (<em>Education</em> domain).</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">How Many (Sub)Domains Can You Have?</span></h2> <p><span style="font-family: arial;">You can have as many domains in each category as needed — there’s no strict limit.<br /> There’s also no required minimum. If there are no generic or supporting subdomains, that’s perfectly fine, though it’s hard to imagine a project without at least one core domain.<br /> Even in internal projects or those driven by regulatory needs rather than competition, there’s always a main reason for the project’s existence. Once you identify it, you’ve found your core domain(s).</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">(Sub)Domain Categories Can Change</span></h2> <p><span style="font-family: arial;">Projects evolve, and so can your categorization:</span></p> <ul> <li> <p><span style="font-family: arial;">A <strong>generic subdomain</strong> can become <strong>supporting</strong> when you start adding more business-specific logic.</span></p> </li> <li> <p><span style="font-family: arial;">A <strong>supporting</strong> domain can become <strong>generic</strong> if an external solution later fulfills your needs.</span></p> </li> <li> <p><span style="font-family: arial;">A <strong>supporting</strong> domain can turn <strong>core</strong> if you discover it offers potential business advantage.</span></p> </li> <li> <p><span style="font-family: arial;">A <strong>core</strong> domain can become <strong>supporting</strong> when your business model shifts and you stop investing in that area.</span></p> </li> </ul> <p><span style="font-family: arial;">Can a generic domain become core, or vice versa? Over time — yes. Market changes force adaptation, and many companies have gone through such transformations. Rapid shifts are less likely but still possible, often triggered by major market disruptions that require fast and fundamental business adjustments.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">Example: Training Center</span></h2> <p><span style="font-family: arial;">Let’s revisit the <a href="https://letstalkaboutjava.blogspot.com/2025/10/ubiquitous-language-in-action.html" target="_blank">domains we identified earlier</a>.</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYX-s5kFbJeN3RpZ5TSCB2dR14CD7196w_if1AzQVVlaRe0L77gfghMxHDDNREVo_tARZ8TOLL3VOAI_qvKg4YAgxKa2ZUvE2IJ-klm56iFvZqqnCk1jfrwo0rm1_vgaKYVOi_fSDPa2z1fVkUB46W5CqPlZnWqeNnctp_197iNNNdGx0ureh3acYoZ5Q/s5595/domain%20types%20-%20before.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2859" data-original-width="5595" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYX-s5kFbJeN3RpZ5TSCB2dR14CD7196w_if1AzQVVlaRe0L77gfghMxHDDNREVo_tARZ8TOLL3VOAI_qvKg4YAgxKa2ZUvE2IJ-klm56iFvZqqnCk1jfrwo0rm1_vgaKYVOi_fSDPa2z1fVkUB46W5CqPlZnWqeNnctp_197iNNNdGx0ureh3acYoZ5Q/w500-h256/domain%20types%20-%20before.jpg" width="500" /></a></div><br /><p></p> <p><span style="font-family: arial;">The key question is: how can we differentiate ourselves from competitors? Where can we build our advantage?<br /> In a real project, stakeholders must answer this question — it’s not a technical choice. Still, the answer will strongly influence our architectural decisions later.</span></p> <p><span style="font-family: arial;">In our example, we assume we want to offer the <strong>best-quality trainings</strong> on the market. They don’t have to be the cheapest, but customers should know they’re getting exceptional value for their money. Additionally, we want to <strong>help customers choose the best training</strong> for their needs — whether they are individuals or companies.<br /> Based on this, both <strong>Education</strong> (high-quality training) and <strong>Sales</strong> (customer support in choosing) are our <strong>core domains</strong>.</span></p> <p><span style="font-family: arial;">Which areas can be covered by existing solutions?<br /> From our analysis, <strong>GDPR</strong>, <strong>Archiving</strong>, <strong>Logistics</strong>, <strong>Calendar</strong>, and <strong>Accounting</strong> appear to be <strong>generic subdomains</strong> — we don’t need anything extraordinary there, so off-the-shelf products should suffice.</span></p> <p><span style="font-family: arial;">Finally, since our core domains are Education and Sales, it makes sense to classify <strong>Marketing</strong>, <strong>Customer Relationship Management</strong>, and <strong>Human Resources</strong> as <strong>supporting subdomains</strong>. We could validate whether external tools can help, but since our focus is on training quality (HR supporting skilled trainers) and building great offers (Marketing and CRM), this classification makes sense.<br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiO8RXJoAVFiJkm5eB3Wf2O564lYNpug7hPGUP1XFSq2Migsx7YPcax9CSU1VwVX5JblyGRWXTPWeGdG_4UNHWtJg3IIgDN2Kxr-HfTh_xGf4185RjIfQ-IcbCC6KOLDF3pjsFpuCOz60CchxaJZSTJRKTZwwextjXmf4mC9sIsrN35Bf5EW1J-Cpfjg/s5595/domain%20types%20-%20after.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2859" data-original-width="5595" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxiO8RXJoAVFiJkm5eB3Wf2O564lYNpug7hPGUP1XFSq2Migsx7YPcax9CSU1VwVX5JblyGRWXTPWeGdG_4UNHWtJg3IIgDN2Kxr-HfTh_xGf4185RjIfQ-IcbCC6KOLDF3pjsFpuCOz60CchxaJZSTJRKTZwwextjXmf4mC9sIsrN35Bf5EW1J-Cpfjg/w491-h252/domain%20types%20-%20after.jpg" width="491" /></a></div><br /><p></p> <h2><span style="font-family: arial;">Summary</span></h2> <p><span style="font-family: arial;">Today, we identified and categorized the domains in our training center. We now understand which areas are most important and deserve our time, money, and attention — and which can be bought or outsourced without harming our business.</span></p> <p><span style="font-family: arial;">Next time, we’ll explore how this classification helps shape software architecture and team organization.<br /> In the meantime, feel free to ask questions if you’d like to dive deeper into any aspect of domain types.</span></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com1tag:blogger.com,1999:blog-7121039760477152462.post-50280755795478949872025-10-24T01:00:00.000-07:002025-10-24T01:00:00.120-07:00Link Dump #212<p><span style="font-family: arial;">I've got enough reading - said no one ever.<span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://dzone.com/articles/event-driven-chaos-engineering-for-kubernetes-resilience" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Event-Driven Chaos Engineering: From Failure to Resilience in Kubernetes</u></a></span><br style="outline: none;" />Event-driven chaos in Kubernetes ties alerts to automated failure tests, transforming unexpected disruptions into resilience by design.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://letstalkaboutjava.blogspot.com/2025/10/the-hidden-architecture-of-words.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">The Hidden Architecture of Words — Ubiquitous Language Uncovered</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />In this series, we explore Ubiquitous Language — how the words we use reveal boundaries, clarify meaning, and guide system design. Follow along as we move from theory to real-world examples and see how shared language turns chaos into clarity.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://medium.com/nick-tune-tech-strategy-blog/reverse-engineering-your-software-architecture-with-claude-code-to-help-claude-code-1746a7b941bc" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Reverse Engineering your Software Architecture with Claude Code to Help Claude Code</u></a></span><br style="outline: none;" />This article shows how the author used an AI agent, Claude Code, to reverse-engineer full, end-to-end architecture flows spanning multiple repositories. The goal: to create clear, Mermaid-formatted documentation that helps both humans and other AI agents better understand the system's behavior.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.javacodegeeks.com/2025/10/event-driven-architecture-in-monoliths-incremental-refactoring-for-java-apps.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Event-Driven Architecture in Monoliths: Incremental Refactoring for Java Apps</u></a></span><br style="outline: none;" />Think event-driven architecture (EDA) is only for microservices? Think again. This article shows how implementing EDA within a monolith immediately reduces the rigid coupling caused by direct method calls. Discover how to create more testable and flexible code without the operational complexity of a distributed system.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://event-driven.io/en/dealing_with_race_conditions_in_eda_using_read_models/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Dealing with Race Conditions in Event-Driven Architecture with Read Models</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Stop fighting the chaos in distributed systems. This article advocates for a pragmatic approach: store data as it arrives and 'denoise' in your projections. Learn how to define read models with optional fields to handle partial state and make decisions based on available data, enabling reliable systems on unreliable foundations.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://devops.com/infrastructure-as-code-security-blind-spots-and-the-messy-reality-of-devops/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Infrastructure as Code, Security Blind Spots, and the Messy Reality of DevOps</u></a>&nbsp;</span><strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />This article argues that success depends on respecting human behavior and limitations. Learn why the secure path must be the easiest path, or engineers will inevitably bypass complexity to solve the immediate crisis.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://dzone.com/articles/level-up-your-engineering-workflow-with-copilot" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Level Up Your Engineering Workflow with Copilot Templates</u></a></span><br style="outline: none;" />Templates help you write cleaner code faster by converting repetitive patterns to reusable prompts. Copilot can streamline test generation, reduce manual effort, and accelerate productivity.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://blog.frankel.ch/testing-untestable/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Testing the untestable</u></a></span>&nbsp;<strong style="outline: none;"><span style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />In this post, the author shows how one can test legacy code not built on Dependency Injection.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="gmail-ml-rte-link-wrapper" style="outline: none;"><a href="https://www.javacodegeeks.com/2025/10/black-box-vs-white-box-pen-testing-which-one-is-right-for-you.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none;">Black Box vs. White Box Pen Testing: Which One Is Right for You?</u></a></span><br style="outline: none;" />This article breaks down the fundamental trade-off: Black Box testing provides realism by mimicking an external attacker but is slow and may miss internal flaws, while White Box testing offers comprehensive coverage with full access but costs more upfront.&nbsp;</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbZOXkIVVunKkSc_BpI0R1E7uxsaLmDXoAwmUiDlEJKrc3u3-4_KbPDaGgtmO6aocB_JUwmjSLj6ZXlRpOdxcDmdaw1J4adktVaykF-IXrlveVjBoWm0JcG_VfPXwlaZP8ReueJs8xefGljC_L4ZQkWsaKQDRXl_4H4iQVSlAmS3n-7jWsZO7IuJ-gUNY/s604/212.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="604" data-original-width="600" height="434" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbZOXkIVVunKkSc_BpI0R1E7uxsaLmDXoAwmUiDlEJKrc3u3-4_KbPDaGgtmO6aocB_JUwmjSLj6ZXlRpOdxcDmdaw1J4adktVaykF-IXrlveVjBoWm0JcG_VfPXwlaZP8ReueJs8xefGljC_L4ZQkWsaKQDRXl_4H4iQVSlAmS3n-7jWsZO7IuJ-gUNY/w431-h434/212.png" width="431" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-6466317705820782862025-10-22T01:00:00.000-07:002025-10-22T01:00:00.118-07:00The Hidden Architecture of Words — Ubiquitous Language Uncovered<p><span style="font-family: arial;">Over the past weeks, I’ve been diving into one of the cornerstones of Domain-Driven Design — <strong data-end="309" data-start="286">Ubiquitous Language</strong>. It’s not just about naming things right. It’s about creating a shared language that bridges business and technology, reduces misunderstandings, and makes complex systems easier to reason about.</span></p> <p data-end="723" data-start="508"><span style="font-family: arial;">To make the idea practical, I’ve prepared a short series that walks through it step by step — from understanding what Ubiquitous Language really is, to finding it in your domain, and finally applying it in action.<span></span></span></p><a name='more'></a><p></p> <p data-end="754" data-start="725"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQKW6rdnLCXvOPi9NUip6_bQkKcwJnHgHRLEO2WHkeRhmU3rdLTnuObGh-HCVpwTyd8VFySWC68UGgs-m0GVUfMhUueiCaEshYEWApwBJpc6CPfWkmya1aUs6oY-4mSHbLE6f9-yqySNx4VVsPRxUOsr6oIbyz_K4SXd2sUuLi5wXeAJv0rCuqyNO2D6U/s1024/ubiquitous%20language%20-%20series.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="469" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQKW6rdnLCXvOPi9NUip6_bQkKcwJnHgHRLEO2WHkeRhmU3rdLTnuObGh-HCVpwTyd8VFySWC68UGgs-m0GVUfMhUueiCaEshYEWApwBJpc6CPfWkmya1aUs6oY-4mSHbLE6f9-yqySNx4VVsPRxUOsr6oIbyz_K4SXd2sUuLi5wXeAJv0rCuqyNO2D6U/w469-h469/ubiquitous%20language%20-%20series.png" width="469" /></a></div><p></p><p data-end="754" data-start="725"><span style="font-family: arial;">Here’s the complete series:</span></p> <ol data-end="1372" data-start="756"> <li data-end="968" data-start="756"> <p data-end="968" data-start="759"><span style="font-family: arial;"><strong data-end="840" data-start="759"><a href="https://letstalkaboutjava.blogspot.com/2025/08/ubiquitous-language-boundaries-words.html" target="_blank">Ubiquitous Language — Boundaries, Words, and the Hidden Cost of Ignoring Them</a></strong><br data-end="843" data-start="840" /> Why language matters, how it shapes your domain model, and what happens when teams use the same words for different things.</span></p> </li> <li data-end="1156" data-start="970"> <p data-end="1156" data-start="973"><span style="font-family: arial;"><strong data-end="1014" data-start="973"><a href="https://letstalkaboutjava.blogspot.com/2025/10/speaking-many-languages-in-one-system.html" target="_blank">Speaking Many Languages in One System</a></strong><br data-end="1017" data-start="1014" /> How to recognize that your system already contains multiple languages — and how these signals help you uncover natural domain boundaries.</span></p> </li> <li data-end="1372" data-start="1158"> <p data-end="1372" data-start="1161"><span style="font-family: arial;"><strong data-end="1220" data-start="1161"><a href="https://letstalkaboutjava.blogspot.com/2025/10/ubiquitous-language-in-action.html" target="_blank">Ubiquitous Language in Action: Boundaries Made of Words</a></strong><br data-end="1223" data-start="1220" /> A practical look at applying these ideas in the Training Center domain, showing how analyzing terms and events reveals where domains begin and end.</span></p> </li> </ol> <p data-end="1489" data-start="1374"><span style="font-family: arial;">Together, these posts form a concise journey through Ubiquitous Language — from concept to discovery to practice.</span></p> <p data-end="1645" data-start="1491"><span style="font-family: arial;">If you’ve ever built software where business and developers “speak different worlds,” this series will help you find the words that bring them together.</span></p> <p data-end="1760" data-is-last-node="" data-is-only-node="" data-start="1647"><span style="font-family: arial;">👉 Explore the series and see how shared language can turn communication into one of your strongest design tools.</span></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-79037475936745643132025-10-17T01:00:00.000-07:002025-10-17T01:00:00.120-07:00Link Dump #211<div><span style="font-family: arial;"><span style="background-color: white;">Another Friday, another coffee, and more articles to read</span><span style="background-color: white;">. Routine does not have to be boring:<span><a name='more'></a></span></span></span></div><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="41" href="https://letstalkaboutjava.blogspot.com/2025/10/ubiquitous-language-in-action.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Ubiquitous Language in Action: Boundaries Made of Words</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Have you ever noticed how the same word can mean completely different things depending on who says it? In this article, we dive into the Training Center domain and discover how boundaries shape the language we use — and how they sometimes hide the real meaning behind familiar words.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="40" href="https://devops.com/developer-experience-overcoming-6-ai-induced-challenges/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Developer Experience: Overcoming 6 AI-Induced Challenges</u></a></span><br style="outline: none !important;" />AI tools promise to boost developer productivity, but a recent study found they can actually increase task completion time by 19%. This article explores the six unexpected challenges AI introduces to Developer Experience (DevEx), from tool fragmentation to latency bottlenecks, and offers practical mitigation strategies.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="39" href="https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/7054/Prioritizing-Software-Quality-Requirements.aspx" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Prioritizing Software Quality Requirements</u></a></span><br style="outline: none !important;" />You can’t have the maximum value for all quality characteristics. Read the article to learn how to decide which are most critical.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="38" href="https://dzone.com/articles/responsible-ai-operationalization-ethics-to-engineering" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Operationalizing Responsible AI: Turning Ethics Into Engineering</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article will provide a direction on how to build a reliable AI system in production by incorporating bias mitigation strategies.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="37" href="https://www.thoughtworks.com/insights/blog/generative-ai/why-context-engineering-is-like-teaching-AI-to-skip-stones" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">Why context engineering is like teaching AI to skip stones&nbsp;</u></a></span><strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Discover why overloading an LLM with every possible fact is less effective than curating and routing only the most relevant, actionable context at the right time.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Testing</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="36" href="https://medium.com/@iamfaisalkhatri/what-is-api-testing-2921e3114afb" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">What is API Testing?</u></a></span><br style="outline: none !important;" />Learn what an API is, its different testing types, tools, and benefits to improve software quality and reliability.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="35" href="https://www.linkedin.com/pulse/ae8-from-confusion-clarity-how-raci-daci-can-help-you-kie%C5%82basa-43uaf" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">From Confusion to Clarity: How RACI and DACI Can Help You Prevent Decision Paralysis</u></a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Learn what RACI and DACI matrices are and how these deceptively simple tools transform how teams make decisions and execute work.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Growth</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a builder-link-id="34" href="https://managementblog.org/2025/10/15/to-do-or-not-to-do/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;"><u style="outline: none !important;">To-Do or Not To-Do</u></a></span><br style="outline: none !important;" />Is your to-do list a source of frustration, not completion? This article argues that the problem isn't knowing what to do, but reserving the time to do it.<br style="outline: none !important;" /><strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizFB4uUDWXbmakS3TQtAJzzKvp_3UO1_A2ilBomgtj193Wyvx97YCCZnmLc7ryfq5mirJbY52_8tT4GrlhzrLRmLfssUW7OR998cdC_7b9ZhrfBo8m_H4DBG8nm5yqCUKWROL40lLoob3cizonCHU9SAlEX1fx5-sGekaRasihkLJekTUrISE66aK6si8/s593/211.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="593" data-original-width="443" height="534" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEizFB4uUDWXbmakS3TQtAJzzKvp_3UO1_A2ilBomgtj193Wyvx97YCCZnmLc7ryfq5mirJbY52_8tT4GrlhzrLRmLfssUW7OR998cdC_7b9ZhrfBo8m_H4DBG8nm5yqCUKWROL40lLoob3cizonCHU9SAlEX1fx5-sGekaRasihkLJekTUrISE66aK6si8/w399-h534/211.jpg" width="399" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-30622261721271648722025-10-15T01:00:00.000-07:002025-10-15T01:03:37.742-07:00Ubiquitous Language in Action: Boundaries Made of Words<p><span style="font-family: arial;">You already know <a href="https://letstalkaboutjava.blogspot.com/2025/08/ubiquitous-language-boundaries-words.html" target="_blank">what the Ubiquitous Language is</a> and <a href="https://letstalkaboutjava.blogspot.com/2025/10/speaking-many-languages-in-one-system.html" target="_blank">how to define its boundaries</a>. Equipped with that knowledge, let’s return to the Training Center example and clarify what domains and corresponding ubiquitous languages we have.<span></span></span></p><a name='more'></a><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoC4sLXjOGY5zsLxzFalAxV5fTepfK7lXw4U5pprkMjGa75Mo0-j4hvo6fIEctv7fn377BoMw-VqMRdI8r4gym5243i9D95LdFNLBi1ake_lpKlvi_wWmgHQc6TfyUPuRjhGanSJY_4Yw-lJuG6NJsFR_qaKD1fnURCFW3A46ugK1Rt2wtTBfoLJHd2qg/s1024/ubiquitous%20language%20-%20example.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjoC4sLXjOGY5zsLxzFalAxV5fTepfK7lXw4U5pprkMjGa75Mo0-j4hvo6fIEctv7fn377BoMw-VqMRdI8r4gym5243i9D95LdFNLBi1ake_lpKlvi_wWmgHQc6TfyUPuRjhGanSJY_4Yw-lJuG6NJsFR_qaKD1fnURCFW3A46ugK1Rt2wtTBfoLJHd2qg/w474-h474/ubiquitous%20language%20-%20example.png" width="474" /></a></div><br /><span style="font-family: arial;"><br /></span><p></p> <h2><span style="font-family: arial;">Where were we?</span></h2> <p><span style="font-family: arial;">After our <a href="https://letstalkaboutjava.blogspot.com/2025/10/beyond-mess-complete-look-at-event.html" target="_blank">last Big Picture Event Storming session</a>, we ended up with a lot of information, shared understanding, and a significant amount of knowledge:</span></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2pWbPlhPNz4ACorUUMGRGs39zsnhDX4UMtiEt9EpYQX-jpwoh7sWghC4uXkOw1aqqsm4PXJJ4QeavYUeDrPsNrZoARpkfs9ffpG5Ekuff1SLYJ1PDDrF17fadCBfGbxiUiEofRtWkSgymK91ojLstl0Xize0dFAuRedjgaXUlRYYydw7B4RobEKhDtsw/s10634/ubiquitous%20language%20-%20event%20storming%20timeline.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="4607" data-original-width="10634" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2pWbPlhPNz4ACorUUMGRGs39zsnhDX4UMtiEt9EpYQX-jpwoh7sWghC4uXkOw1aqqsm4PXJJ4QeavYUeDrPsNrZoARpkfs9ffpG5Ekuff1SLYJ1PDDrF17fadCBfGbxiUiEofRtWkSgymK91ojLstl0Xize0dFAuRedjgaXUlRYYydw7B4RobEKhDtsw/w496-h216/ubiquitous%20language%20-%20event%20storming%20timeline.jpg" width="496" /></a></div><p></p> <p><span style="font-family: arial;">Let’s take a closer look at it and apply one by one <a href="https://letstalkaboutjava.blogspot.com/2025/10/speaking-many-languages-in-one-system.html" target="_blank">the hints we learned last time</a> to gain deeper insights into the business.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2 style="text-align: left;"><span style="font-family: arial;">Look for domain experts around you</span></h2> <p><span style="font-family: arial;">Let’s go through some events to identify our domain experts:</span></p> <ul> <li> <p><span style="font-family: arial;">Some events are related to the training program—its creation and future improvements. The person who can tell us more about building it is the <strong>trainer</strong> (education domain).<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEis6z66t2mUcD6Le2J2fG5OI-dHJ4OKPi1QzH0UJ2oB3Wh5J0xkM-jefcgN5G383aGwWM1kSqMTUF28st_vbhkP5WOTaoWs1Np7JvsiE4Kr1ZV8LbahTsbJw531oYiOVDCcv3sGqUf5Zt6EFkwaIhrF6GfbYY2kX5GQvD3D5HE12k_vm2xgTrJvG-pWj7Q" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="127" data-original-width="382" height="113" src="https://blogger.googleusercontent.com/img/a/AVvXsEis6z66t2mUcD6Le2J2fG5OI-dHJ4OKPi1QzH0UJ2oB3Wh5J0xkM-jefcgN5G383aGwWM1kSqMTUF28st_vbhkP5WOTaoWs1Np7JvsiE4Kr1ZV8LbahTsbJw531oYiOVDCcv3sGqUf5Zt6EFkwaIhrF6GfbYY2kX5GQvD3D5HE12k_vm2xgTrJvG-pWj7Q=w339-h113" width="339" /></a></span></div><p></p> </li> <li> <p><span style="font-family: arial;">The trainer is also a domain expert when it comes to <strong>conducting training</strong> (education domain).<br /></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEirOIIFCD0GErBJ0fI2IhS8xqTOb9gggV-QerjCjomWCBqs71c8Ta4ww3sxrGK5MUW5OMVzY5k5uKTFJXuWGnL0mAiw1Mhkf5O1kj0rkzwfHhtNB0Vthdt8RVg5OZMzg-DOUMCGqlL6P2eHrmSzrQ5wc9FBkfNPpHxNUVp740Wqi7bC5UglPLVUnCFQTFY" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="230" data-original-width="257" height="139" src="https://blogger.googleusercontent.com/img/a/AVvXsEirOIIFCD0GErBJ0fI2IhS8xqTOb9gggV-QerjCjomWCBqs71c8Ta4ww3sxrGK5MUW5OMVzY5k5uKTFJXuWGnL0mAiw1Mhkf5O1kj0rkzwfHhtNB0Vthdt8RVg5OZMzg-DOUMCGqlL6P2eHrmSzrQ5wc9FBkfNPpHxNUVp740Wqi7bC5UglPLVUnCFQTFY=w156-h139" width="156" /></a></span></div><p></p> </li> <li> <p><span style="font-family: arial;">After creating the program and before conducting training, we need to <strong>sell</strong> it. Here, the <strong>Sales team</strong> can explain the nuances of this process (sales domain).<br /></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEifUy3fN_gTwQfCB6j-oYcIDMgLHT02HTBHczQJ3BpjuhtzlbLWSywc5PFPWmrh5b5-ixwf_tFtkyCJJuzL8LTS5SoCGD1tfMSLJJ8mKo5JoJF9ADD8mQ5lvubT5twx0u1Mp1HpJlIASpdibXqUA_70jpqw8yW33YpL6TIOUAlnBOd5o67vBoLMTNJ-8Pg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="152" data-original-width="676" height="117" src="https://blogger.googleusercontent.com/img/a/AVvXsEifUy3fN_gTwQfCB6j-oYcIDMgLHT02HTBHczQJ3BpjuhtzlbLWSywc5PFPWmrh5b5-ixwf_tFtkyCJJuzL8LTS5SoCGD1tfMSLJJ8mKo5JoJF9ADD8mQ5lvubT5twx0u1Mp1HpJlIASpdibXqUA_70jpqw8yW33YpL6TIOUAlnBOd5o67vBoLMTNJ-8Pg=w521-h117" width="521" /></a></span></div><p></p> </li> <li> <p><span style="font-family: arial;">Once the training is confirmed, it must be <strong>organized</strong>. Who would know more about that area than the <strong>logistics department</strong>? (logistics domain)<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjhZopi0QzgKHh_cdxJX4zrBh0T4oUhnR4LgLDr3YD9CvcpRFCIL-MR2WG7hwIp9UXMvcFUkg0IBDVN9X_w_M2aZDOVj6PCzmNBttkpA6bpA0F5UJ3knupI1Bw_wBCSiKJ5PseafuADJBCv8x7YfKXdzgdZvGxNfE-W5nhGa0x1wlvwWK52152KL4ttCQQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="163" data-original-width="535" height="126" src="https://blogger.googleusercontent.com/img/a/AVvXsEjhZopi0QzgKHh_cdxJX4zrBh0T4oUhnR4LgLDr3YD9CvcpRFCIL-MR2WG7hwIp9UXMvcFUkg0IBDVN9X_w_M2aZDOVj6PCzmNBttkpA6bpA0F5UJ3knupI1Bw_wBCSiKJ5PseafuADJBCv8x7YfKXdzgdZvGxNfE-W5nhGa0x1wlvwWK52152KL4ttCQQ=w416-h126" width="416" /></a></span></div><p></p> </li> </ul> <p><span style="font-family: arial;">In this way, we increase our understanding and collect details that help us establish domains and the language within their boundaries. We might already have some ideas, but remember: the amount of detail within a domain can be a good indicator of whether to divide it further. We’ll leave that step for later.</span></p> <p><span style="font-family: arial;">Of course, these aren’t all the domain experts we can identify based on the events we placed on our virtual wall. I encourage you to find more on your own and share your observations in the comments.</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Don’t confuse participants with experts</span></h3> <p><span style="font-family: arial;">Remember: a person involved in an event (either initiating or reacting to it) isn’t necessarily a domain expert. For example, someone searching for training for themselves (a <strong>Customer</strong>) isn’t an expert in this area—they don’t prepare our training catalog. Here, the domain experts are the <strong>trainer</strong> (who creates and conducts the training) and someone from the <strong>Sales department</strong> (who builds an offer attractive to customers).</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Use roles, not names</span></h3> <p><span style="font-family: arial;">It’s better to name your domain experts by their <strong>roles</strong>, not their actual names. Why? Because sometimes a single person or department can be responsible for more than one domain. Using role names increases your clarity and prepares you for future organizational growth.</span></p><p><span style="font-family: arial;"><br /></span></p><p></p> <h2 style="text-align: left;"><span style="font-family: arial;">Same word, different meaning</span></h2> <p><span style="font-family: arial;">Let’s look at some of the events we found so far:<br /></span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhw5f5Eo1lH2m_gx7mqoAXKn0M2CVqpZyJZoBT4kfnB4aKiltvWtymZk8WFHO0eKzaJh523Rpj3he_sRPOrjqtesbttME51PkVCdDLBb0lX6185HxmMiIiKErRJ1oJBCnKW7o_eIWEG67uYeTIdxpdjXb0SBiG-2RNEsLwe6bj7Rfyl9RTfdtMRCQ0OOUQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="163" data-original-width="335" height="135" src="https://blogger.googleusercontent.com/img/a/AVvXsEhw5f5Eo1lH2m_gx7mqoAXKn0M2CVqpZyJZoBT4kfnB4aKiltvWtymZk8WFHO0eKzaJh523Rpj3he_sRPOrjqtesbttME51PkVCdDLBb0lX6185HxmMiIiKErRJ1oJBCnKW7o_eIWEG67uYeTIdxpdjXb0SBiG-2RNEsLwe6bj7Rfyl9RTfdtMRCQ0OOUQ=w277-h135" width="277" /></a></span></div><p></p> <p><span style="font-family: arial;">We have two events referring to <strong>resources</strong>, but since they belong to different domains, their definitions differ:</span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Resource (logistics domain):</strong> a trainer, classroom, or piece of equipment needed to deliver a course.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Resource (education domain):</strong> learning materials—slides, videos, or readings shared with participants.</span></p> </li> </ul> <p><span style="font-family: arial;">As you can see, one refers to a person or a place, the other to content. Until we assign them to their respective domains, they remain ambiguous. Once the domain is clear, their meaning becomes obvious.</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Verify meaning differences with experts</span></h3> <p><span style="font-family: arial;">Always validate with domain experts whether certain words truly have different meanings. Sometimes we unintentionally “merge” words with meanings borrowed from their context: </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgHOHEYOyknYNW6WVWkiuxXwlg4JSIwlGyRUA2x88qaS9sC6_BElVAn0OKGupkbgj1MTcDnxs3czfGt92pI0x8ukj6DcrWZkIliMT8rqngShRDVNFEcWpbL6ALkTfZ4O7InEH9LBVjMxX5ii4WqRSuTBs0ZMKSau48zKQ-ku85kezebrIBHnjqTr3_noXg" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="152" data-original-width="310" height="133" src="https://blogger.googleusercontent.com/img/a/AVvXsEgHOHEYOyknYNW6WVWkiuxXwlg4JSIwlGyRUA2x88qaS9sC6_BElVAn0OKGupkbgj1MTcDnxs3czfGt92pI0x8ukj6DcrWZkIliMT8rqngShRDVNFEcWpbL6ALkTfZ4O7InEH9LBVjMxX5ii4WqRSuTBs0ZMKSau48zKQ-ku85kezebrIBHnjqTr3_noXg=w271-h133" width="271" /></a></span></div><p></p> <p><span style="font-family: arial;">In one case, we refer to a <strong>training agenda</strong>, and in another to a <strong>meeting agenda</strong>. There are differences between them (length, topics, purpose, etc.), but those come from the difference between <em>training</em> and <em>meeting</em>. The definition of <strong>agenda</strong> itself remains the same—a plan of things to do or discuss.</span></p> <p><span style="font-family: arial;">Also, note that this distinction tells us nothing about domain boundaries. Both events (<em>Training Agenda Set</em> and <em>Meeting Agenda Shared</em>) could belong to the same domain or to two different ones. The word <em>agenda</em> alone indicates nothing in this case.</span></p><p><span style="font-family: arial;"><br /></span></p><p></p> <h2 style="text-align: left;"><span style="font-family: arial;">Same word, different characteristics</span></h2> <p><span style="font-family: arial;">Let’s look at several events related to <strong>Training</strong>:<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj2Z2L5_f8oVzyvQ5TI4aDG8RNK49Y45QNucwgAtmQwW1XVwQzpIXRoqd7wv3MaEMJj4mTyeFTyd7SuVDArmkMW5rt6RNfQ6ES2N9twNzyOoc87co7PMLsGlGx_sA-lhZlKcZpnblUcth1P6XT1Cu83hrRbXVaNbyqzIbMbOPLUnLVAVs2DqtZEKotWeMY" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="136" data-original-width="472" height="126" src="https://blogger.googleusercontent.com/img/a/AVvXsEj2Z2L5_f8oVzyvQ5TI4aDG8RNK49Y45QNucwgAtmQwW1XVwQzpIXRoqd7wv3MaEMJj4mTyeFTyd7SuVDArmkMW5rt6RNfQ6ES2N9twNzyOoc87co7PMLsGlGx_sA-lhZlKcZpnblUcth1P6XT1Cu83hrRbXVaNbyqzIbMbOPLUnLVAVs2DqtZEKotWeMY=w438-h126" width="438" /></a></span></div><p></p> <p><span style="font-family: arial;">Even though the word <em>training</em> appears in each event, we should validate whether it represents the same concept in all cases:</span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Training Ordered:</strong> here, the training is a <em>product</em> to sell and buy (sales domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Training Scheduled / Conducted:</strong> here, the training is an <em>event</em> to organize, with a beginning and an end (logistics domain).</span></p> </li> </ul> <p><span style="font-family: arial;">This step is easier when domain experts have already been identified. Their perspectives help us see the same event through different lenses.</span></p><p><span style="font-family: arial;"><br /></span></p><p></p> <h2 style="text-align: left;"><span style="font-family: arial;">Same data, different names</span></h2> <p><span style="font-family: arial;">This time, things get trickier. Let’s look at these examples:<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEik3w0hbvrZAj5_x4z4t-R73Ll8RrGewpIIYdeM9Y0-DZBQCiPQIybX_jJCMd1YJh6-q7mCCq4YH9pFhgGbuW4u9jVFjTPyQ4VHhTFgABV7hSCU3H5eHaPdP93UaIZ6aFmp9CQ5gobilQxq1V0riq57-DVgh0LPOuuSF7KgMnSE2xLSCo0mi5X6ChXS0aQ" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="150" data-original-width="303" height="138" src="https://blogger.googleusercontent.com/img/a/AVvXsEik3w0hbvrZAj5_x4z4t-R73Ll8RrGewpIIYdeM9Y0-DZBQCiPQIybX_jJCMd1YJh6-q7mCCq4YH9pFhgGbuW4u9jVFjTPyQ4VHhTFgABV7hSCU3H5eHaPdP93UaIZ6aFmp9CQ5gobilQxq1V0riq57-DVgh0LPOuuSF7KgMnSE2xLSCo0mi5X6ChXS0aQ=w280-h138" width="280" /></a></span></div><p></p> <p><span style="font-family: arial;">Training and webinar share many similarities but also many differences. Yet, if we look at this specific events, both involve a common subset of data: what is scheduled, when, for whom, and where. Looking at these details, this seems like an <strong>Event</strong> (scheduling domain). If we later need to coordinate such events—for example, to verify trainer or sales availability—it might make sense to introduce a separate <strong>Scheduling domain</strong>.</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Don’t overcomplicate the model</span></h3> <p><span style="font-family: arial;">Always validate with domain experts whether creating a new domain or concept is justified. Our goal is to understand the business better and make systems simpler—not add unnecessary complexity just because we can.</span></p><p><span style="font-family: arial;"><br /></span></p><p></p> <h2 style="text-align: left;"><span style="font-family: arial;">Same person, different name across the process</span></h2> <p><span style="font-family: arial;">Let’s analyze the person registering for a training. The same individual is called differently at various stages:<br /></span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Customer:</strong> exploring our offer (sales domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Payer:</strong> confirming their purchase (accounting domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Recipient:</strong> receiving payment confirmation and training details (notification domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Participant:</strong> attending the training and learning (education domain).</span></p></li></ul><div><span style="font-family: arial;"><br /></span></div> <h2 style="text-align: left;"><span style="font-family: arial;">Same item, different name across the process</span></h2> <p><span style="font-family: arial;">A similar pattern applies to non-human entities, like invoices:<br /></span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Invoice:</strong> generated when someone pays for a training (accounting domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Attachment:</strong> when sent to the payer via email (notification domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Document:</strong> when archived for legal reasons (archival domain).</span></p></li></ul><div><span style="font-family: arial;"><br /></span></div> <h2 style="text-align: left;"><span style="font-family: arial;">No interactions and no consistency</span></h2> <p><span style="font-family: arial;">Some events clearly don’t belong in the same domain:<br /> </span></p><div class="separator" style="clear: both; text-align: center;"><span style="font-family: arial;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhI_kxPUgqDGVb8V-17Yd4iDSSLVHnlP48qhXVlPTNIqdewu4rET3kxz_kUBAp5LC40mIezejf4WFqK7NU_GP2GtsakrcA6mGCT3bD2lXnx52JS4GELg2fFhpmAdp1rKY3lYSYhQJS_YvPYlhHaWsSIKTM2kV2nlUc1V3ZHxwSlYrVPmaJ-MH8Bft0BpEM" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="131" data-original-width="298" height="125" src="https://blogger.googleusercontent.com/img/a/AVvXsEhI_kxPUgqDGVb8V-17Yd4iDSSLVHnlP48qhXVlPTNIqdewu4rET3kxz_kUBAp5LC40mIezejf4WFqK7NU_GP2GtsakrcA6mGCT3bD2lXnx52JS4GELg2fFhpmAdp1rKY3lYSYhQJS_YvPYlhHaWsSIKTM2kV2nlUc1V3ZHxwSlYrVPmaJ-MH8Bft0BpEM=w285-h125" width="285" /></a></span></div><p></p> <ul> <li> <p><span style="font-family: arial;"><strong>Training's Fee Paid:</strong> a payment for training (accounting domain).</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Conference Talk Given:</strong> a talk delivered at a conference (education domain).</span></p> </li> </ul> <p><span style="font-family: arial;">It’s hard to find a logical link between these two. There’s simply no shared context.</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Missing knowledge may hide connections</span></h3> <p><span style="font-family: arial;">The fact that you can’t connect two events doesn’t mean a connection doesn’t exist—it might simply be hidden due to missing knowledge. Validate this with domain experts. Either they’ll confirm there’s no link, or you’ll learn something new about the business.</span></p><p><span style="font-family: arial;"><br /></span></p><p></p> <h2><span style="font-family: arial;">Putting it all together</span></h2> <p><span style="font-family: arial;"><a href="https://letstalkaboutjava.blogspot.com/2025/08/ubiquitous-language-boundaries-words.html" target="_blank">The level of detail often determines whether a domain should be split</a>. After walking through all these hints, we can now decide what domains we have. Don’t worry if later you realize some are too broad and need splitting, or too narrow and should be merged. That’s normal—it reflects learning and refinement over time.</span></p> <h3><span style="font-family: arial;">Name your domains (if you haven’t yet)</span></h3> <p><span style="font-family: arial;">Identifying domain boundaries is one thing; naming them is another. I encourage you to name each domain as soon as you identify it using today’s heuristics. This helps continuously validate whether your boundaries make sense.</span></p> <h3><span style="font-family: arial;">Every piece of information belongs somewhere</span></h3> <p><span style="font-family: arial;">After applying all heuristics, many events will already be placed within clearly defined domains. Yet, some may still remain unassigned. It’s important to place every piece of information into a domain, as this validates your overall structure.</span></p> <h3><span style="font-family: arial;">⚠️ Warning: When no domain fits</span></h3> <p><span style="font-family: arial;">Sometimes, an event won’t fit any existing domain. In such cases:</span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Option 1:</strong> place it in the closest group and adjust the domain name if needed.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Option 2:</strong> create a new domain.</span></p> </li> </ul> <p><span style="font-family: arial;">Which option to choose? It depends on how far the event diverges from others. If it’s only a subtle difference, adjust the name of the domain and add event to it. If it’s fundamentally different—create a new domain.</span></p> <h3><span style="font-family: arial;">⚠️ Warning: When event fits multiple domains</span></h3> <p><span style="font-family: arial;">You may encounter disagreements on which domain an event belongs to. Sometimes, this means the event should appear in <strong>both</strong>. That’s fine.</span></p> <p><span style="font-family: arial;">Consider our earlier example:</span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgHOHEYOyknYNW6WVWkiuxXwlg4JSIwlGyRUA2x88qaS9sC6_BElVAn0OKGupkbgj1MTcDnxs3czfGt92pI0x8ukj6DcrWZkIliMT8rqngShRDVNFEcWpbL6ALkTfZ4O7InEH9LBVjMxX5ii4WqRSuTBs0ZMKSau48zKQ-ku85kezebrIBHnjqTr3_noXg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img alt="" data-original-height="152" data-original-width="310" height="133" src="https://blogger.googleusercontent.com/img/a/AVvXsEgHOHEYOyknYNW6WVWkiuxXwlg4JSIwlGyRUA2x88qaS9sC6_BElVAn0OKGupkbgj1MTcDnxs3czfGt92pI0x8ukj6DcrWZkIliMT8rqngShRDVNFEcWpbL6ALkTfZ4O7InEH9LBVjMxX5ii4WqRSuTBs0ZMKSau48zKQ-ku85kezebrIBHnjqTr3_noXg=w271-h133" width="271" /></a></div> <p><span style="font-family: arial;">During our workshop, an event might be written simply as <em>Agenda Set</em>. When assigning it to domains, we may realize it makes sense in more than one place. Just copy it and place it in both domains.</span></p> <h3><span style="font-family: arial;">⚠️ Warning:&nbsp;Duplicates may signal new domain</span></h3> <p><span style="font-family: arial;">If you find similar group of events duplicated across domains, and they have minimal (or no) differences, this might indicate the need for a <strong>new domain</strong>. Duplication often signals underlying complexity worth isolating.</span></p><p></p> <h3><span style="font-family: arial;">Shape of domains in the Training Center</span></h3> <p><span style="font-family: arial;">Let’s combine everything we’ve learned and look at the domains within our Training Center:<br /><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz3LYkuI1ZMseQH8pky-pcADgZWPniOYAbHi0hek1KauREItXFSBk_Xi7-0WzsjV0L3fvm58CF5wjBb8l2C5o8MNPyI0fVnTD3bvmMhGAkjzqBeQ1T6CodGDrfZonUO1dLW6amCBvdeJl8QbfdTblnntFp3xbS2p766vW8EiqJaveZj4Waqf8AGYI9ubo/s9644/ubiquitous%20language%20-%20domains.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="5080" data-original-width="9644" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz3LYkuI1ZMseQH8pky-pcADgZWPniOYAbHi0hek1KauREItXFSBk_Xi7-0WzsjV0L3fvm58CF5wjBb8l2C5o8MNPyI0fVnTD3bvmMhGAkjzqBeQ1T6CodGDrfZonUO1dLW6amCBvdeJl8QbfdTblnntFp3xbS2p766vW8EiqJaveZj4Waqf8AGYI9ubo/w467-h247/ubiquitous%20language%20-%20domains.jpg" width="467" /></a></div><div class="separator" style="clear: both; text-align: left;"><br /></div><p></p><p></p> <h2><span style="font-family: arial;">Summary</span></h2> <p><span style="font-family: arial;">Today, we started with the outcome of the Big Picture Event Storming session and ended with clearly defined domains and unambiguous language. Making it truly ubiquitous will take time, but we’re on the right track. We now have a better understanding of the business and can communicate more effectively.</span></p> <p><span style="font-family: arial;">Now, take a deep breath—it’s time to prepare for the next step.</span></p><p><span style="font-family: arial;"><br /></span></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-28341053630162056772025-10-10T01:00:00.000-07:002025-10-10T01:00:00.115-07:00Link Dump #210<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">Friday is the perfect day for the reading mood:</span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><strong style="outline: none !important;">Software Architecture</strong></span><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/2025/10/breaking-down-monoliths-strategies-to-refactor-legacy-java-into-microservices.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Breaking Down Monoliths: Strategies to Refactor Legacy into Microservices</a></span><br style="outline: none !important;" />This article walks through the reasoning behind breaking a monolith, the strategies that work in practice, and the challenges you should expect along the way.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://testdouble.com/insights/the-anvil-of-alignment-the-value-of-monoliths-over-microservices" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">The anvil of alignment: The value of monoliths over microservices</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Before dismantling your monolith for microservices, understand its crucial role in organizational alignment. We explore hidden costs, Conway's Law, and strategic insights for leaders making architectural decisions.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/2025/10/microservices-madness-practical-patterns-that-keep-your-services-resilient.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Microservices Madness: Practical Patterns That Keep Your Services Resilient</a></span><br style="outline: none !important;" />Is your microservice architecture a headache waiting to happen? This article cuts through the chaos with five practical resilience patterns. Learn how to use Circuit Breakers to prevent cascading failures and Bulkheads to ensure one service overload doesn't sink the entire system.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://devops.com/build-vs-buy-what-it-really-takes-to-harden-your-software-supply-chain/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Build vs. Buy: What it Really Takes to Harden Your Software Supply Chain</a></span><br style="outline: none !important;" />This article urges teams to assess what they can sustainably support over time, covering the four areas where complexity hides: continuous CVE response, automation upkeep, integration testing bottlenecks, and securing the image distribution.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://letstalkaboutjava.blogspot.com/2025/10/speaking-many-languages-in-one-system.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Speaking Many Languages in One System</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Ubiquitous Language only works if we respect its boundaries. Once words start shifting meaning—like&nbsp;<em style="outline: none !important;">customer → payer → recipient</em>—we’re no longer in one domain but crossing into another. In my latest article, I share simple heuristics to spot these boundaries and make your software language consistent and clear.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://letstalkaboutjava.blogspot.com/2025/10/beyond-mess-complete-look-at-event.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Beyond the Mess: A Complete Look at Event Storming Big Picture</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Big Picture Event Storming can look messy, but it’s designed to create clarity. In this series, I share how to start, manage chaos, sequence events, overcome challenges, and turn sticky walls into action. A complete guide for anyone who wants better collaboration between business and tech.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/machine-learning-vs-deep-learning-vs-generative-ai.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Machine Learning vs Deep Learning vs Generative AI</a></span><br style="outline: none !important;" />This article explored Machine Learning vs Deep Learning vs Generative AI, highlighting their core concepts and differences.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://blog.google/technology/ai/techspert-what-is-vibe-coding/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Ask a Techspert: What is vibe&nbsp;coding?</a></span><br style="outline: none !important;" />This article breaks down how this AI-powered method allows users to translate an idea into a functional design. Learn how you can improve your results by refining your prompts in a chat tool first to develop 'taste' and lead the AI process.</span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSu8ELAL5pP-xzCwScwtIpqJJ50GWvYBhXbhuo-zLd1Tc7wGA-HMmz7EAZu3eNQPNNXeww3Z5jkJtSO_vqD9CCYoD-FRmW_7XWVqrRwk6Uglf3v-agmM5IBMoDoyS1KRdVBY9jDEbcxFd2UxH8u943w5FTwyVg14ts-ntB3oEZ7ELLhD5SrzpL5QOkvx0/s800/210.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="599" data-original-width="800" height="370" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSu8ELAL5pP-xzCwScwtIpqJJ50GWvYBhXbhuo-zLd1Tc7wGA-HMmz7EAZu3eNQPNNXeww3Z5jkJtSO_vqD9CCYoD-FRmW_7XWVqrRwk6Uglf3v-agmM5IBMoDoyS1KRdVBY9jDEbcxFd2UxH8u943w5FTwyVg14ts-ntB3oEZ7ELLhD5SrzpL5QOkvx0/w493-h370/210.png" width="493" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-36476810844647632112025-10-09T01:00:00.000-07:002025-10-09T01:00:00.127-07:00Speaking Many Languages in One System<p><span style="font-family: arial;">Last time&nbsp;I explained <a href="https://letstalkaboutjava.blogspot.com/2025/08/ubiquitous-language-boundaries-words.html" target="_blank">what Ubiquitous Language is</a>, why it is crucial to use it, and how it can support software evolution and maintenance. Today, I would like to share several approaches that can help you define the boundaries of domains within your application.<span></span></span></p><a name='more'></a><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeyd7YiIUwBZMIO9ZJ4BP965ysyyY6NhW1uZFYlh5UA_MiiUHvzib5u9YaiANn4M11_pC1PVP65Rm8sYbimBLVAnPGv2N7WqXKDhb1BYVqn4TRB1HdVt4bdJ-Nbfmo2Yp9DViWnA5bp_ojrovwQreYdu5nxndQFA7-BQ7ICAUhUwiqudUekM9u5RaOMvQ/s1024/ubiquitous%20language%20-%20heuristics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="487" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeyd7YiIUwBZMIO9ZJ4BP965ysyyY6NhW1uZFYlh5UA_MiiUHvzib5u9YaiANn4M11_pC1PVP65Rm8sYbimBLVAnPGv2N7WqXKDhb1BYVqn4TRB1HdVt4bdJ-Nbfmo2Yp9DViWnA5bp_ojrovwQreYdu5nxndQFA7-BQ7ICAUhUwiqudUekM9u5RaOMvQ/w487-h487/ubiquitous%20language%20-%20heuristics.png" width="487" /></a></div><br /><span style="font-family: arial;"><br /></span><p></p> <h2><span style="font-family: arial;">What Ubiquitous Language Is – A Quick Reminder</span></h2> <p><span style="font-family: arial;">Ubiquitous Language exists only within clearly defined boundaries. Inside those boundaries, it remains consistent (terms fit together logically) and unambiguous (each word has exactly one meaning).</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">How We Can Identify Domain Boundaries</span></h2> <p><span style="font-family: arial;">Every piece of software contains domain knowledge. It may not yet be documented or expressed in code, but it is present. Words, phrases, and interactions exist, waiting to be explored and understood in depth. However, this knowledge often lacks boundaries, which is why it can be misleading, ambiguous, and misinterpreted.</span></p> <p><span style="font-family: arial;">Fortunately, those very words and terms can help us discover and clarify domain boundaries. Several language-driven heuristics can support this exploration.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Look for the Domain Experts Around You</span></h3> <p><span style="font-family: arial;">When building software, you collaborate with many people who help you understand what needs to be created. Some provide requirements, others support delivery. It is valuable to ask yourself whether these people come from the same area of expertise.</span></p> <p><span style="font-family: arial;">For example, imagine you are opening a shop. You will need to interact with many individuals. Even though the shop unites them under one business, they may live in very different “worlds,” using distinct language and specialized knowledge—for instance, an accountant, a marketer, or someone responsible for product assortment. Although the business connects them, the knowledge they possess belongs to different ubiquitous languages.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Same Word but Different Meaning</span></h3> <p><span style="font-family: arial;">Take the word <em>“date”</em>. Its meaning depends on context: it could represent a calendar point in time, a romantic meeting, or even a fruit. Without clear boundaries, the word is ambiguous.</span></p> <p><span style="font-family: arial;">When examining your software’s domain knowledge, encountering such words is a strong indicator that they belong to different domains. Do not attempt to eliminate them by using synonyms. If the word is valid in a given context, keep it—just separate it across domain boundaries.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Same Word with Different Characteristics</span></h3> <p><span style="font-family: arial;">The word <em>“characteristics”</em> can describe data, interaction, or both. Different experts may look at the same thing but from different perspectives. Consider an apartment:</span></p> <ol> <li> <p><span style="font-family: arial;"><strong>The Architect</strong><br /> <em>Perspective</em>: Focuses on design and structure.<br /> <em>Language</em>: Abstract and technical (e.g., floor plans, load-bearing walls, zoning).<br /> <em>Difference</em>: Describes the blueprint, not daily use.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>The Decorator</strong><br /> <em>Perspective</em>: Focuses on aesthetics and interior functionality.<br /> <em>Language</em>: Artistic and stylistic (e.g., color palette, focal points, furnishings).<br /> <em>Difference</em>: Concerned with visual appeal, not construction.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>The Tenant</strong><br /> <em>Perspective</em>: Focuses on lived experience.<br /> <em>Language</em>: Practical and personal (e.g., rent, storage space, natural light).<br /> <em>Difference</em>: Sees the apartment as a home, separate from design or decoration.</span></p> </li> </ol> <p><span style="font-family: arial;">Even though they all refer to the same apartment, each perspective belongs to a different domain. Within one domain expert’s perspective, the language is cohesive, but when you move to another expert, the terms and understanding change significantly.</span></p> <p><span style="font-family: arial;">When exploring a business domain, you may encounter such experts. Even if you cannot identify them immediately, analyze the language: does the same phrase always mean the same thing? If not, you may be dealing with different domains.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Same Data, Different Names</span></h3> <p><span style="font-family: arial;">Another signal of multiple domains is when the same data set is described differently depending on context. For example, consider a work activity described by: description, assignee, due date, and status. From a project management (domain) perspective, it is a <em>Task</em>—a unit of work in an iteration. For IT support (different domain), however, the same data is referred to as a <em>Ticket</em>.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Same Person Named Differently During a Process</span></h3> <p><span style="font-family: arial;">Consider an online shop. A person browses products, makes a purchase, and receives delivery. Throughout this journey, the same person is referred to differently:</span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Customer</strong> in the sales domain, when browsing and intending to purchase.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Payer</strong> in the payment domain, when completing the order.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Recipient</strong> in the shipping domain, when the goods are delivered.</span></p> </li> </ul> <p><span style="font-family: arial;">Even though it is the same person, each step belongs to a different domain with its own terminology.</span></p><p><span style="font-family: arial;"><br /></span></p> <h3><span style="font-family: arial;">Same Item Named Differently During a Process</span></h3> <p><span style="font-family: arial;">Similar to the previous example, but this time applied to items rather than people. In an online shop:</span></p> <ul> <li> <p><span style="font-family: arial;"><strong>Item</strong> in the shipping domain, where focus is on dimensions, weight, and handling.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>Product</strong> in the sales domain, where marketing details and attributes matter.</span></p> </li> <li> <p><span style="font-family: arial;"><strong>SKU (Stock-Keeping Unit)</strong> in the inventory domain, where storage location and cost are key.</span></p> </li> </ul><div><span style="font-family: arial;"><br /></span></div> <h3><span style="font-family: arial;">No Interactions and No Consistency</span></h3> <p><span style="font-family: arial;">A hallmark of ubiquitous language is consistency: words should fit together and reinforce one another. If terms do not work together coherently, it suggests they may belong to different domains. This indicator, however, can be tricky—sometimes the missing link is simply a gap in understanding. Use it cautiously and as a last resort.</span></p> <p><span style="font-family: arial;">For example: <em>castle, pen, hugging.</em> Do you see them forming a consistent domain? Probably not.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">You Need Domain Experts</span></h2> <p><span style="font-family: arial;">The hints shared above are powerful tools to analyze language and enclose it within clear domain boundaries. Still, it is essential to include domain experts in this process. As developers or architects, our knowledge often only scratches the surface, and without expert input, we risk making poor decisions due to incomplete understanding of the domain’s complexity.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">Where Can You Find Input for This Exercise?</span></h2> <p><span style="font-family: arial;">We have already discussed <a href="https://letstalkaboutjava.blogspot.com/2025/07/event-storming-big-picture-how-to.html" target="_blank">Event Storming Big Picture</a> as a technique to uncover domain knowledge and collect terminology useful for defining boundaries.</span></p> <p><span style="font-family: arial;">But if Event Storming is not an option (though I highly recommend it), you can use other inputs:</span></p> <ul> <li> <p><span style="font-family: arial;">Documentation</span></p> </li> <li> <p><span style="font-family: arial;">Requirements</span></p> </li> <li> <p><span style="font-family: arial;">Backlog tasks</span></p> </li> <li> <p><span style="font-family: arial;">Conversations and Q&amp;A</span></p> </li> <li> <p><span style="font-family: arial;">… and many more</span></p> </li> </ul> <p><span style="font-family: arial;">In fact, any artifact or activity that expands your business-related vocabulary is valuable. Pay special attention to nouns and verbs, as they are particularly effective for domain exploration.</span></p><p><span style="font-family: arial;"><br /></span></p> <h2><span style="font-family: arial;">Summary</span></h2> <p><span style="font-family: arial;">Businesses often come with rich, complex, and unfamiliar vocabularies that can feel overwhelming. Ubiquitous Language is a tool to tame this complexity and make it manageable. The techniques and heuristics shared today should help you apply it more effectively and gain greater benefits from it.</span></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-50296623908710651652025-10-07T01:00:00.001-07:002025-10-07T01:00:00.113-07:00Beyond the Mess: A Complete Look at Event Storming Big Picture<p><span style="font-family: arial;">Over the past months, I’ve been exploring one of my favorite collaborative techniques – <strong>Event Storming Big Picture</strong>. It’s a powerful way to untangle complexity, discover hidden assumptions, and build a shared understanding across business and tech. Instead of explaining everything in one go, I decided to create a series of posts that walk you through the practice step by step.<span></span></span></p><a name='more'></a><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLHaE5AuM5ZHBaCWcWqCQFx8wXtAbmNUD2ALnJXmohL6A4GRKW7NVCzCqD8KFfujyDYUHBF9QKdCrqh_W6Sy_oWi-KbJENNoJpG2waax-oc8k2R7nSCipGdq_4V-WZMgbC177MzeyxY2Ee2RDbTrY7BwpsuCTFbElKarJTyzqtE_irY3XbyEiyNj6Wl5c/s1024/big%20picture%20-%20series.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1024" data-original-width="1024" height="474" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLHaE5AuM5ZHBaCWcWqCQFx8wXtAbmNUD2ALnJXmohL6A4GRKW7NVCzCqD8KFfujyDYUHBF9QKdCrqh_W6Sy_oWi-KbJENNoJpG2waax-oc8k2R7nSCipGdq_4V-WZMgbC177MzeyxY2Ee2RDbTrY7BwpsuCTFbElKarJTyzqtE_irY3XbyEiyNj6Wl5c/w474-h474/big%20picture%20-%20series.png" width="474" /></a></div><br /><span style="font-family: arial;"><br /></span><p></p><p><span style="font-family: arial;">Here’s the full series:</span></p><h3><span style="font-family: arial;">1. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2024/06/navigating-storm-guide-to-big-picture.html">Navigating the Storm: A Guide to Big Picture Event Storming</a></span></h3><p><span style="font-family: arial;">Why run a Big Picture workshop and what you get from it. Introduces the building blocks and main steps, plus tips on when to use chaotic exploration vs timeline.</span></p><h3><span style="font-family: arial;">2. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2024/06/taming-storm-how-chaotic-exploration.html" target="_blank">Taming the Storm: How Chaotic Exploration Leads to Clarity</a></span></h3><p><span style="font-family: arial;">Using the Training Center domain, shows preparation, event discovery with stickies, and de-duplication. A clear example of turning chaos into insights.</span></p><h3><span style="font-family: arial;">3. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2025/07/event-storming-big-picture-how-to.html" target="_blank">Event Storming Big Picture — How to enforce the Timeline?</a></span></h3><p><span style="font-family: arial;">Explains the timeline phase: draw it, pick a starting point, keep discussions focused, and move leftovers to hot spots. Sequencing helps reveal interactions.</span></p><h3><span style="font-family: arial;">4. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2025/07/so-which-event-goes-first.html" target="_blank">So… Which Event Goes First?</a></span></h3><p><span style="font-family: arial;">Shares three strategies to start the timeline: pick any event, one-per-person, or voting. Each has pros and cons but gets the wall moving.</span></p><h3><span style="font-family: arial;">5. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2025/07/big-challenges-of-event-storming-big.html" target="_blank">Big Challenges of Event Storming Big Picture</a></span></h3><p><span style="font-family: arial;">Covers common pitfalls: losing sight of goals, poor time use, dominant voices, or empty walls. Offers facilitator tips to keep value high.</span></p><h3><span style="font-family: arial;">6. <a disabled="true" href="https://letstalkaboutjava.blogspot.com/2025/07/after-big-picture-turning-insights-into.html" target="_blank">After the Big Picture: Turning Insights into Action</a></span></h3><p><span style="font-family: arial;">Explains how to use the wall: assess risks, propose service boundaries, and choose next processes to explore. Big Picture is a starting point, not the end.</span></p><p><span style="font-family: arial;"><br /></span></p><p><span style="font-family: arial;">Taken together, these posts form a </span><strong style="font-family: arial;">complete journey</strong><span style="font-family: arial;"> through Big Picture Event Storming – from the first sticky note to actionable insights. My hope is that they give you both the confidence to try it and the practical tools to succeed.</span></p><p><span style="font-family: arial;">If you’ve ever struggled with messy domains, miscommunication between business and IT, or unclear priorities, this series is for you.</span></p><p><span style="font-family: arial;">👉 Dive in, explore the posts, and let me know which part of the storm resonates most with your work.</span></p><p><span style="font-family: arial;"><br /></span></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-64886985274128502052025-10-03T01:00:00.000-07:002025-10-03T01:01:13.162-07:00Link Dump #209<p><span face="Arial, Helvetica, sans-serif" style="background-color: white; font-family: arial;">Coffee and something to read - day cannot start better than that.</span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none;">#BookOfTheMonth<span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.eventstorming.com/book/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;"><br style="outline: none;" /></a></span></strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.eventstorming.com/book/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Introducing Event Storming</a></span><br style="outline: none;" /></span></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://dzone.com/articles/design-system-team" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">The Design System Team: Goals, Pains, and Successes</a></span><br style="outline: none;" />Starting or scaling a design system? This article offers practical insights into the common goals, such as defining design tokens and ensuring all components are accessible. It also touches on the major pain point: managing visual and user experience inconsistencies during a gradual, horizontal migration away from legacy components.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://netflixtechblog.com/building-a-resilient-data-platform-with-write-ahead-log-at-netflix-127b6712359a" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Building a Resilient Data Platform with Write-Ahead Log at Netflix</a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />Netflix built a Write-Ahead Log (WAL) abstraction to tackle critical data challenges like accidental data loss, system entropy, and unreliable retries. Discover how this distributed system provides strong durability guarantees and ensures data consistency across diverse datastores.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.confluent.io/blog/build-real-time-alerts/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">How to Build Real-Time Alerts to Stay Ahead of Critical Events</a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />This article explains the shift from monitoring dashboards to proactive, real-time alerting. Discover how using Apache Kafka and data streaming enables you to detect critical events—like fraud or system anomalies—in seconds and trigger automated responses before issues can escalate into financial or reputational damage.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.confluent.io/blog/do-microservices-need-event-driven-architectures/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Do Microservices Need Event-Driven Architectures?</a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />The shift to EDA isn't just technical—it's a business advantage. This article shows how event-driven microservices translate to faster innovation cycles, reduced downtime risk through fault isolation, and more responsive customer experiences.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.linkedin.com/pulse/ae7-capability-mapping-bridge-between-strategy-reality-kie%C5%82basa-iu8xf/" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Capability Mapping: The Bridge Between Strategy and Reality</a></span>&nbsp;<strong style="outline: none;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none;">#PickOfTheWeek</span></strong><br style="outline: none;" />This article introduces Capability Mapping as the essential bridge, providing a common visual language to link high-level business goals with the underlying technology and processes. Learn how this powerful tool brings strategy down to reality.</span></li><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://www.javacodegeeks.com/2025/09/secure-mqtt-implementations-tls-authentication-and-access-control-for-iot-networks.html" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Secure MQTT Implementations – TLS, Authentication, and Access Control for IoT Networks</a></span><br style="outline: none;" />This article explores how to secure MQTT deployments with TLS encryption, authentication mechanisms, and fine-grained access control, providing a practical roadmap for building resilient IoT networks.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none;"><a href="https://hbr.org/2025/09/how-to-coach-yourself-through-complex-problems" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">How to Coach Yourself Through Complex Problems</a></span><br style="outline: none;" />Leaders today are facing more complexity, faster change, and higher expectations than ever. But budget cuts, approval bottlenecks, and cultural barriers can put the executive coaching that could help them navigate all this uncertainty out of reach. This is where self-coaching can come in.</span></li></ol></li><li style="outline: none; text-size-adjust: 100%;"><strong style="outline: none;"><span style="font-family: arial;">Fun</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px; outline: none;"><li style="outline: none; text-size-adjust: 100%;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="font-family: arial; outline: none;"><a href="https://thedailywtf.com/articles/property-flippers" style="color: #fd7e14; outline: none; text-decoration-line: none; text-size-adjust: 100%;">Property Flippers</a></span></li></ol></li></ol><p><span face="Arial, Helvetica, sans-serif" style="background-color: white; font-family: arial;"><br /></span></p><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzs3mmDsfnV3ptcKN84cKHt3uFcmbhHWX_bHQ8CLyBitcX46Bc_K5fKu32C_8-oLqCNB2zwHMng1LAHBy2Q-H2-nxohrh4mv-vcyaZXYtD86JZ_1opJlzPztMD04-WJl7hpa0DDD7xQMEtJ1u9EUNRLxj54BvrzHdi3PQ4McKdpz1oBOVTFosHZYi0pkU/s600/209.png" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="593" data-original-width="600" height="452" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzs3mmDsfnV3ptcKN84cKHt3uFcmbhHWX_bHQ8CLyBitcX46Bc_K5fKu32C_8-oLqCNB2zwHMng1LAHBy2Q-H2-nxohrh4mv-vcyaZXYtD86JZ_1opJlzPztMD04-WJl7hpa0DDD7xQMEtJ1u9EUNRLxj54BvrzHdi3PQ4McKdpz1oBOVTFosHZYi0pkU/w457-h452/209.png" width="457" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0tag:blogger.com,1999:blog-7121039760477152462.post-92203666733561000642025-09-26T01:00:00.000-07:002025-09-26T01:00:00.138-07:00Link Dump #208<p><span style="background-color: white; color: #222222;"><span style="font-family: arial;">How about an article on Friday? Or two, three, ...<span></span></span></span></p><a name='more'></a><p></p><ol style="background-color: white; line-height: 17.5px; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Architecture</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><strong style="outline: none !important;"></strong><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/2025/09/hexagonal-architecture-explained-why-its-not-just-another-buzzword.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Hexagonal Architecture Explained: Why It’s Not Just Another Buzzword</a></span><br style="outline: none !important;" />In this article, the author breaks down what Hexagonal Architecture is, why it matters, how it compares to other architectures, and shows real-world examples of applying it effectively.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="http://dzone.com/articles/unified-checkout-experience-microfrontend-architecture" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Unified&nbsp;Checkout Experience Through Micro Frontend Architecture</a></span><br style="outline: none !important;" />Learn about the architecture and design for building a scalable end-to-end product that can integrate front-end apps to provide a cart and payment services.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Software Development</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.thoughtworks.com/insights/blog/data-strategy/top-five-data-modernization-strategies-for-business-success" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Top five data modernization strategies for business success</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Data modernization isn't just about technology—it's about driving business outcomes. Discover how to gain executive buy-in and create a feedback loop that ensures your data initiatives deliver measurable value.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/2025/09/domain-driven-design-in-the-real-world-lessons-from-large-projects.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Domain-Driven Design in the Real World: Lessons from Large Projects</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />In this article, the author walks through lessons learned from applying DDD in substantial projects, showing where it excels, where it stumbles, and how to adapt it pragmatically.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Languages and Frameworks</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.javacodegeeks.com/memory-usage-optimization-in-spring-boot.html" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Memory Usage Optimization In Spring Boot</a></span><br style="outline: none !important;" />In this example, the author examines ways to reduce memory usage without impacting application functionality.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://softwaremill.com/critique-of-jep-505-structured-concurrency-fifth-preview/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Critique of JEP 505: Structured Concurrency</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Java 25 introduces a preview of structured concurrency, but is the design flawless? This article offers a critical look at JEP 505, highlighting problems like non-uniform cancellation and the split between a scope's logic and its Joiner. Discover the "rough edges" that could impact real-world applications.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Agile</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/7041/Applying-Agile-Hybrid-Frameworks-in-Large-Projects.aspx" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Applying Agile &amp; Hybrid Frameworks in Large Projects</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />Succeed in a hybrid Agile-Waterfall world. This article offers practical advice on how to align milestones, provide dual visibility in reporting, and push for incremental validation in complex projects. Equip yourself with the knowledge to keep your large team aligned and focused on delivering strategic business goals.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://www.mountaingoatsoftware.com/blog/agile-needs-to-be-both-iterative-and-incremental" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Agile Is Both Iterative and Incremental</a></span><br style="outline: none !important;" />This article explains how combining iterative refinement and incremental delivery allows teams to provide value early, gather feedback, and adapt their plans, leading to more responsive and valuable outcomes.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Leadership</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://leadershipfreak.blog/2025/09/23/confront-the-lies-of-comfort/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Confront the lies of comfort</a></span><br style="outline: none !important;" />This article offers seven actionable ways to resist the 'seduction of comfort,' including bringing up issues others avoid and asking, 'What would you like to do about that?' Equip yourself to provide support without validating inaction and to confront problems head-on.</span></li><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://leadershipfreak.blog/2025/09/24/5-benefits-of-over-commitment/" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">5 Benefits of Over-Commitment</a></span>&nbsp;<strong style="outline: none !important;"><span data-redactor-span="true" data-redactor-style-cache="color: rgb(255, 0, 0);" style="color: red; outline: none !important;">#PickOfTheWeek</span></strong><br style="outline: none !important;" />This article challenges the conventional wisdom, arguing that a period of 'overload' can act as a crucible for aspirational leaders. Discover how pushing your limits can reveal untapped strengths and expose your true motivations.</span></li></ol></li><li style="outline: none !important; text-size-adjust: 100%;"><strong style="outline: none !important;"><span style="font-family: arial;">Fun</span></strong><ol style="line-height: 17.5px; list-style-type: lower-alpha; margin: 10px 0px !important; outline: none !important;"><li style="outline: none !important; text-size-adjust: 100%;"><span style="font-family: arial;"><span class="ml-rte-link-wrapper" data-redactor-span="true" style="outline: none !important;"><a href="https://thedailywtf.com/articles/identify-a-nap" style="color: #fd7e14; outline: none !important; text-decoration-line: none; text-size-adjust: 100%;">Identify a Nap</a></span>&nbsp;<strong style="outline: none !important;"></strong></span></li></ol></li></ol><p><span style="font-family: arial;"><br /></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO89JNpdXRJHh_rMxNMKV-edGZTUlx0VCeczFT0txyHOAhos6dYWPNKWN4vkgT8v2cdwY0oiMnlDFqIrgfabIUKzkETFCX6UyecJp7GpNDq9eX-huOGSl9Djm7A7AmDUNDHhZKy7xjUzc1Dll1yytNSLzYqYfZOtRaSp9S1_ldoQbtO3AiZdcfiEpIS0g/s500/208.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: arial;"><img border="0" data-original-height="500" data-original-width="500" height="461" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhO89JNpdXRJHh_rMxNMKV-edGZTUlx0VCeczFT0txyHOAhos6dYWPNKWN4vkgT8v2cdwY0oiMnlDFqIrgfabIUKzkETFCX6UyecJp7GpNDq9eX-huOGSl9Djm7A7AmDUNDHhZKy7xjUzc1Dll1yytNSLzYqYfZOtRaSp9S1_ldoQbtO3AiZdcfiEpIS0g/w461-h461/208.png" width="461" /></span></a></div><span style="font-family: arial;"><br /></span><p><br /></p>Sebastian Malacahttp://www.blogger.com/profile/14060393325488538481noreply@blogger.com0