<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Muaath Bin Ali on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/abo-saad-muaath/</link><description>Articles written by Muaath Bin Ali on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 18 Feb 2025 16:44:14 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/abo-saad-muaath/index.xml" rel="self" type="application/rss+xml"/><item><title>Event-Driven Architecture and Change Data Capture Made Easy</title><link>https://foojayio.github.io/website/today/event-driven-architecture-and-change-data-capture-made-easy/</link><pubDate>Tue, 18 Feb 2025 16:44:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/event-driven-architecture-and-change-data-capture-made-easy/</guid><description>&lt;p&gt;Hello again! In this article (Part 1), we will discuss two common ways to build modern &lt;a href="https://mezocode.com/microservice-journey-part-2-design-principles-for-well-crafted-architecture/" target="_blank" rel="noopener noreferrer"&gt;software systems&lt;/a&gt;
: &lt;strong&gt;Event-Driven Architecture (EDA) and Change Data Capture (CDC)&lt;/strong&gt;. They serve different purposes but can work well together in some situations.&lt;/p&gt;
&lt;p&gt;we&amp;rsquo;ll explain &lt;strong&gt;EDA&lt;/strong&gt; and &lt;strong&gt;CDC&lt;/strong&gt;, discuss their use cases, and explain when to use them and when not to. Using plain language and relatable examples, we&amp;rsquo;ll also explore how they work together.&lt;/p&gt;</description></item><item><title>SQL Best Practices Every Java Engineer Must Know</title><link>https://foojayio.github.io/website/today/sql-best-practices-every-java-engineer-must-know/</link><pubDate>Tue, 01 Oct 2024 17:52:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/sql-best-practices-every-java-engineer-must-know/</guid><description>&lt;p&gt;In the world of software development, best practices for SQL optimization are a critical skill that every Java engineer must master. Efficient database interactions can significantly enhance the performance of your applications, leading to faster response times and a better user experience.&lt;/p&gt;
&lt;p&gt;This comprehensive guide dives into the best practices for SQL query optimization, tailored specifically for Java engineers. From understanding the importance of indexes to mastering joins and leveraging connection pooling, this article covers all the essential techniques you need to write efficient and performant SQL queries and best practices for SQL.&lt;/p&gt;</description></item><item><title>Effective Java Logging</title><link>https://foojayio.github.io/website/today/effective-java-logging/</link><pubDate>Mon, 22 Jul 2024 11:39:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/effective-java-logging/</guid><description>&lt;p&gt;Effective Logging is an essential aspect of any Java application, providing insights into its operational state. It is especially crucial in production environments, where it aids in debugging, monitoring, and incident response. In this comprehensive guide, we will explore the effective practices for using SLF4J with Logback, ensuring a reliable and maintainable logging strategy.&lt;/p&gt;
&lt;p&gt;By following these best practices, developers and operations teams can leverage SLF4J and Logback to turn logs into strategic resources for application management and incident resolution. Embracing these guidelines will lead to improved observability, quicker troubleshooting, and a deeper understanding of system behavior, establishing a solid foundation for application reliability and performance.&lt;/p&gt;</description></item><item><title>Calling Microservices in Java: Part 1</title><link>https://foojayio.github.io/website/today/calling-microservices-in-java/</link><pubDate>Fri, 17 May 2024 19:41:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/calling-microservices-in-java/</guid><description>&lt;p&gt;&lt;strong&gt;When building applications that need to call other parts of the system (&lt;a href="https://mezocode.com/microservices-soa-introduction-part1/" title="microservices" target="_blank" rel="noopener noreferrer"&gt;microservices&lt;/a&gt;
), Java programmers have access to a variety of tools and techniques that they can use for their development tasks.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This article guides you through different ways of calling Microservices in Java, from basic methods to more advanced ones, and will share tips on best practices and common mistakes.&lt;/p&gt;
&lt;h3 id="h3-0-1-basic-http-requests-with-httpurlconnection"&gt;1. Basic HTTP Requests with HttpURLConnection&lt;/h3&gt;
&lt;p&gt;The simplest way to calling a microservice in Java is using the &lt;code&gt;HttpURLConnection&lt;/code&gt; class. This lets your application send HTTP requests and receive responses directly.&lt;/p&gt;</description></item><item><title>Smarter Logging in Spring Boot with AOP</title><link>https://foojayio.github.io/website/today/smarter-logging-in-spring-boot-with-aop/</link><pubDate>Tue, 16 Apr 2024 06:25:36 +0000</pubDate><guid>https://foojayio.github.io/website/today/smarter-logging-in-spring-boot-with-aop/</guid><description>&lt;p&gt;Hey &lt;strong&gt;AOP&lt;/strong&gt; fan, after explaining the basics of AOP in &lt;em&gt;&lt;strong&gt;&lt;a href="https://foojayio.github.io/website/today/aspect-oriented-programming-aop/"&gt;Part 1&lt;/a&gt;
&lt;/strong&gt;&lt;/em&gt;, we will dive deeper and demonstrate hands-on how to implement smart logging in Spring Boot using AOP.&lt;/p&gt;
&lt;p&gt;The complete example can be found on &lt;em&gt;&lt;strong&gt;&lt;a href="https://github.com/mezocode/healthcare-management-system/blob/main/src/main/java/com/mezocode/healthcare/shared/aop/LoggingAspect.java" target="_blank" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="h2-0-the-problem-with-logging-everywhere"&gt;&lt;strong&gt;The Problem with Logging Everywhere&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;As software developers, we know the importance of logging 📝. But scattering log statements everywhere comes with drawbacks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Code duplication as the same logs show up in multiple places&lt;/p&gt;</description></item><item><title>Aspect-Oriented Programming (AOP) Made Easy With Java</title><link>https://foojayio.github.io/website/today/aspect-oriented-programming-aop/</link><pubDate>Thu, 28 Mar 2024 06:58:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/aspect-oriented-programming-aop/</guid><description>&lt;p&gt;Aspect-oriented programming (AOP) is a programming paradigm that seeks to increase modularity by separating cross-cutting concerns from core application logic.&lt;/p&gt;
&lt;p&gt;Cross-cutting concerns refer to functionality like logging, security, and transactions that span across multiple areas of an application.&lt;/p&gt;
&lt;p&gt;AOP allows these concerns to be encapsulated in reusable modules called aspects.&lt;/p&gt;
&lt;p&gt;This improves modularity and makes the codebase easier to maintain.&lt;/p&gt;
&lt;p&gt;In large-scale Java applications, AOP is invaluable for avoiding code duplication and keeping the core code focused on business goals.&lt;/p&gt;</description></item><item><title>Microservices Design Principles</title><link>https://foojayio.github.io/website/today/microservices-design-principles-for-well-crafted-architecture/</link><pubDate>Wed, 06 Mar 2024 10:48:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/microservices-design-principles-for-well-crafted-architecture/</guid><description>&lt;h4 id="introduction-to-microservices-design-principles"&gt;Introduction to Microservices Design Principles&lt;/h4&gt;
&lt;p&gt;Welcome back to the second part of our Microservice Journey series! In this edition, we will delve into the core principles of microservice design principles, including the important topics of coupling and cohesion in Object-Oriented Programming (OOP).&lt;/p&gt;
&lt;p&gt;This innovative approach to software system development prioritizes modularity and scalability, and understanding coupling and cohesion is essential for improving coding skills and designing architecture.&lt;/p&gt;
&lt;p&gt;If you missed the first part, you can catch up here: &lt;a href="https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/" title="The Evolution of Microservices with SOA"&gt;The Evolution of Microservices with SOA&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Evolution of Microservices &amp; SOA -- the Architectural Landscape</title><link>https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/</link><pubDate>Fri, 09 Feb 2024 09:30:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/evolution-of-microservices-from-soa-to-modern-architecture/</guid><description>&lt;h4 id="the-evolution-of-microservices-with-soa-navigating-the-architectural-landscape-"&gt;The Evolution of Microservices with SOA: Navigating the Architectural Landscape 🗺️&lt;/h4&gt;
&lt;p&gt;Microservices represent a paradigm shift in the way we construct distributed systems. This comprehensive guide dives into the heart of microservices and service-oriented architecture (SOA), comparing their roles in current development ecosystems.&lt;/p&gt;
&lt;p&gt;By understanding the evolution and the modern application of microservices, developers can harness their full potential for creating flexible, scalable, and resilient applications. 🚀&lt;/p&gt;
&lt;h4 id="microservices-and-soa-a-comprehensive-guide-"&gt;Microservices and SOA: A Comprehensive Guide 📚&lt;/h4&gt;
&lt;p&gt;Microservices and service-oriented architecture (SOA) are two popular architectural styles for building distributed systems. Both approaches share the goal of breaking down a large, complex system into smaller, more manageable components. However, there are some key differences between the two approaches. 🤔&lt;/p&gt;</description></item><item><title>A Day in the Life of a Software Engineer in a Scrum Team Part-2</title><link>https://foojayio.github.io/website/today/a-day-in-the-life-of-a-software-engineer-in-a-scrum-team-part-2/</link><pubDate>Wed, 17 Jan 2024 13:52:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-day-in-the-life-of-a-software-engineer-in-a-scrum-team-part-2/</guid><description>&lt;p&gt;Welcome back to the journey through the world of &lt;strong&gt;Scrum&lt;/strong&gt; ! If you&amp;rsquo;ve read &lt;a href="https://foojayio.github.io/website/today/unlocking-scrum-a-software-engineers-journey-part-1/"&gt;Part 1&lt;/a&gt;
, you&amp;rsquo;re already familiar with the basics of Scrum and how it can help teams manage their work efficiently. Now, let&amp;rsquo;s dive deeper and explore a day in the life of Alex, a software engineer in a Payment Scrum Team.&lt;/p&gt;
&lt;p&gt;Alex is part of an elite team called &amp;ldquo;The Payment Pioneers.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This team is working on adding Apple Pay to their company&amp;rsquo;s online payment options.&lt;/p&gt;</description></item><item><title>Unlocking Scrum: A Software Engineer's Journey - Part 1</title><link>https://foojayio.github.io/website/today/unlocking-scrum-a-software-engineers-journey-part-1/</link><pubDate>Thu, 04 Jan 2024 16:12:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/unlocking-scrum-a-software-engineers-journey-part-1/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/unlocking-scrum-a-software-engineers-journey-part-1/scrum-700x376.webp" alt="https://medium.com/@johnwilliams1756/embracing-scrum-while-ensuring-timely-delivery-of-software-features-20b82ee1abcd" loading="lazy"&gt;
&lt;/p&gt;
&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Hey there 🖐️, have you heard of Agile and Scrum?&lt;/p&gt;
&lt;p&gt;If not, buckle up because we&amp;rsquo;re about to embark on a journey to Scrumland!&lt;/p&gt;
&lt;p&gt;Scrum is a framework under the Agile umbrella that makes software development a breeze (or at least, less of a hurricane 🌪️).&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s all about collaboration, flexibility, and delivering value in small, tasty chunks. 🍫&lt;/p&gt;
&lt;h3 id="h3-1-understanding-scrum"&gt;Understanding Scrum&lt;/h3&gt;
&lt;p&gt;Scrum is like a game with its own rules and players. It&amp;rsquo;s anchored on principles like transparency, inspection, and adaptation. Imagine a GPS that reroutes you when you take a wrong turn &amp;ndash; that&amp;rsquo;s Scrum! 🗺️&lt;/p&gt;</description></item></channel></rss>