<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sumith Puri on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/sumith-puri/</link><description>Articles written by Sumith Puri on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 07 Aug 2023 09:39:39 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/sumith-puri/index.xml" rel="self" type="application/rss+xml"/><item><title>Starting Apache Kafka on Java 8, Win 10</title><link>https://foojayio.github.io/website/today/starting-apache-kafka-java-producer-consumer-windows-10/</link><pubDate>Mon, 07 Aug 2023 09:39:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/starting-apache-kafka-java-producer-consumer-windows-10/</guid><description>&lt;p&gt;This is part 2 of a two part series on Starting Apache Kafka Server, Configuring Kafka Topic, and Creating a Core Java Based Kafka Consumer, as also a Core Java Based Kafka Producer.&lt;/p&gt;
&lt;p&gt;All this is demonstrated in step-by-step examples. All of this is for Java v8.0, Apache Kafka v3.4 on Windows 10. &lt;a href="https://foojayio.github.io/website/today/starting-apache-kafka-on-windows-10-kafka-v3-4/"&gt;Part 1&lt;/a&gt;
 focused on Kafka Consumer and Kafka Producer from the Command Line. This article focuses on the Core Java counterparts. It is important that the reader reads part 1 and completes the example so that the reader has a basic foundation in Kafka.&lt;/p&gt;</description></item><item><title>Starting Apache Kafka v3.4 on Win 10</title><link>https://foojayio.github.io/website/today/starting-apache-kafka-on-windows-10-kafka-v3-4/</link><pubDate>Sat, 29 Jul 2023 07:43:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/starting-apache-kafka-on-windows-10-kafka-v3-4/</guid><description>&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;This is part one of a two part articles series on Running Apache Kafka Server, Configuring Kafka Topics, and Creating a Kafka Consumer and Kafka Producer.&lt;/p&gt;
&lt;p&gt;All this is demonstrated step-by-step example that works from the Command Line.&lt;/p&gt;
&lt;p&gt;All of this is for Apache Kafka v3.4 on Windows 10.&lt;/p&gt;
&lt;h3 id="h3-1-pre-requisites"&gt;Pre-Requisites&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Install Java ( v8.0 is used in this Example )&lt;/li&gt;
&lt;li&gt;Install Apache Kafka v3.4.0 from the Given Link&lt;/li&gt;
&lt;li&gt;Set Java Classpath &amp;gt; Set JAVA_HOME Correctly&lt;/li&gt;
&lt;li&gt;UnZIP/UnTAR Apache Kafka Downloaded in (2)&lt;/li&gt;
&lt;li&gt;Use a Text Editor like [ Notepad++ ] for Editing&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="https://blogger.googleusercontent.com/img/a/AVvXsEhDK7xTGu-H4ZyFHWetkwEfKxIEjdMZuqYwimNrD-hIblKuBYqaW1Fttr8V_f19Q73z0MS09mNQYEhjuX8noY92cQ0dy4koVTnEmGSV76byHwHgM2uJ9ePcLSQYwFlcqBiWRI4QgXHE1nZYNsFPV3v0Nf2ozGkGc91DE3aKxOrDZV2IsPGlzFEKpNB8txrF" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Spring Boot Annotation Reference-01/b</title><link>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-b/</link><pubDate>Fri, 06 Jan 2023 09:54:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-b/</guid><description>&lt;p&gt;&lt;strong&gt;In the second part of my article series on Spring Boot Annotations, we focus on REST and Spring Stereotype Annotations.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In continuation of &lt;a href="https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/"&gt;part 01/a of this article&lt;/a&gt;
, let&amp;rsquo;s continue our Spring Boot Annotations journey.&lt;/p&gt;
&lt;p&gt;What percentage (depth and extent) of Spring Boot Annotations do you think you really know? This includes annotations in all their glory and the power that they bring via all of their options. I am sure whatever your answer may be, you will appreciate this quote from Albert Einstein: &amp;ldquo;The more I learn, the more I realize how much I don&amp;rsquo;t know.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Spring Boot Annotation Reference - 01/a</title><link>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/</link><pubDate>Thu, 22 Dec 2022 09:57:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-annotation-reference-01-a/</guid><description>&lt;p&gt;In 2018, I was introduced to the topic of Microservices and Spring Boot via a formal training, during my brief stint as a Senior Architect in Manila, Philippines.&lt;/p&gt;
&lt;p&gt;Though I had worked on a &amp;lsquo;similar architecture&amp;rsquo; way back in 2007-&amp;lsquo;08 while working as a Software Engineer at Symantec - I found the idea of the Uber JAR really exciting. Also, since it will now be enforced via the most popular framework brings in more possibilities.&lt;/p&gt;</description></item><item><title>Clean Ways to Shutdown Spring Boot Applications</title><link>https://foojayio.github.io/website/today/clean-shutdown-of-spring-boot-applications/</link><pubDate>Fri, 04 Nov 2022 14:11:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/clean-shutdown-of-spring-boot-applications/</guid><description>&lt;p&gt;For the last three to four years, I have been working on Spring Boot and its associations, such as Spring Cloud, Spring Data, and Spring Security.&lt;/p&gt;
&lt;p&gt;I have always been tempted to use the combination of Ctrl+C and task kill for the purpose of killing Spring Boot applications or processes. It can be automated by a batch script, but usually I was quite lazy to do this myself, as the combination of actions used to serve the purpose!&lt;/p&gt;</description></item><item><title>Starting Docker Desktop with Spring Boot</title><link>https://foojayio.github.io/website/today/starting-docker-desktop-with-spring-boot/</link><pubDate>Fri, 30 Sep 2022 05:37:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/starting-docker-desktop-with-spring-boot/</guid><description>&lt;br /&gt;
&lt;p&gt;I came across Docker Desktop for the first time about three years ago, when I was working as a Principal Architect (Strategic R &amp;amp; D) on the Microservices Reference Architecture for a product development organization.&lt;/p&gt;
&lt;p&gt;At that time, when I was working on my corporate laptop - It became a tedious task to configure virtualization and settings to get it to work. Once I got it running smoothly, I realized that the memory requirements required to run it is quite high. At times, I found it tough to use my laptop for daily development with it running. It was also because I was working on microservices and had almost 6+ spring boot applications running.&lt;/p&gt;</description></item><item><title>GoF Design Patterns Using Java - Part 02</title><link>https://foojayio.github.io/website/today/gof-design-patterns-using-java-part-02/</link><pubDate>Fri, 04 Feb 2022 16:46:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/gof-design-patterns-using-java-part-02/</guid><description>&lt;p&gt;&lt;a href="https://youtu.be/vq9zkZBjWkw/" target="_blank" rel="noopener noreferrer"&gt;Link to YouTube Video - Introduction to Design Patterns&lt;/a&gt;
&lt;br&gt;
&lt;a href="https://foojayio.github.io/website/today/gang-of-four-design-patterns-using-core-java-part-01/" title="Link to Article : GoF Design Patterns Using Java - Part 01"&gt;Link to Article : GoF Design Patterns Using Java - Part 01&lt;/a&gt;
&lt;br&gt;
&lt;a href="https://github.com/sumithpuri/skp-code-marathon-pattaya" title="Link to GitHub Code Samples in Core Java for this Article" target="_blank" rel="noopener noreferrer"&gt;Link to GitHub Code Samples in Core Java for this Article&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-adapter-pattern-sample-code"&gt;&lt;strong&gt;Adapter Pattern [&lt;a href="https://github.com/sumithpuri/skp-code-marathon-pattaya/tree/master/src/main/java/me/sumithpuri/github/pattaya/adapter" title="Sample Code" target="_blank" rel="noopener noreferrer"&gt;Sample Code&lt;/a&gt;
]&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;What can one do if he needs to use an Asian Hairdryer in a European Country, each with different socket types? I would seek an Adapter! As in real life, when we want to plug and play with similar but incompatible interfaces we use the Adapter. The Adapter adapts the Adaptee to the desired interface, by composing the Adaptee object and inheriting the desired interface or by multiple inheritance.&lt;/p&gt;</description></item><item><title>SKP's Agile Cheatsheet : Part 03</title><link>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-03/</link><pubDate>Wed, 17 Nov 2021 21:18:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-03/</guid><description>&lt;p&gt;SKP&amp;rsquo;s Agile Cheatsheet is a three part series of articles focused on daily agile terminology, ideal to be printed out and pinned up near your workstation. Part 1 is available &lt;a href="https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-01" title="Here"&gt;here&lt;/a&gt;
 and part 2 &lt;a href="https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-02" title="Here"&gt;here&lt;/a&gt;
while the PDF cheatsheet is &lt;a href="https://rebrand.ly/skp-agile-cheat-sheet-all" title="Here" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src="https://imgur.com/LGzevOM.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Release Train&lt;/strong&gt;. The Agile Release Train (ART) is a long-lived team of Agile teams, which, along with other stakeholders, incrementally develops, delivers, and where applicable operates, one or more solutions in a value stream. [Type &amp;ndash; Agile Product Management]&lt;/p&gt;</description></item><item><title>SKP's Agile Cheatsheet: Part 02</title><link>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-02/</link><pubDate>Fri, 05 Nov 2021 07:58:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-02/</guid><description>&lt;p&gt;SKP&amp;rsquo;s Agile Cheatsheet is a three part series of articles focused on daily agile terminology, ideal to be printed out and pinned up near your workstation. Part 1 of this article is available &lt;a href="https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-01" title="Here"&gt;here&lt;/a&gt;
 and you can download the PDF of this cheatsheet &lt;a href="https://rebrand.ly/skp-agile-cheat-sheet-all" title="Here" target="_blank" rel="noopener noreferrer"&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://imgur.com/3Fzra1d.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;**Epic.**An epic is a large user story. [Type &amp;ndash; Agile Estimation / Agile Product Management]&lt;/p&gt;
&lt;p&gt;**Fibonacci Scale.**In Agile software development, the Fibonacci scale consists of a sequence of numbers used for estimating the relative size of user stories in points. Agile Scrum is based on the concept of working iteratively in short sprints, typically two weeks long, where the requirements and development are continuously being improved. The Fibonacci sequence consists of numbers that are the summation of the two preceding numbers, starting with [0, 1]. Agile uses the Fibonacci sequence to achieve better results by reducing complexity, effort, and doubt when determining the development time required for a task, which can range from a few minutes to several weeks. [Type &amp;ndash; Agile Estimation / Agile Product Management]&lt;/p&gt;</description></item><item><title>SKP's Agile Cheatsheet: Part 01 | On Foojay.io Today</title><link>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-01/</link><pubDate>Thu, 28 Oct 2021 17:39:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/skps-agile-cheatsheet-part-01/</guid><description>&lt;p&gt;SKP&amp;rsquo;s Agile Cheatsheet is a three part series of articles focused on daily agile terminology, ideal to be printed out and pinned up near your workstation.&lt;/p&gt;
&lt;p&gt;**Acceptance Testing.**An acceptance test is a formal description of the behavior of a software product, generally expressed as an example or a usage scenario. Several different notations and approaches have been proposed for such examples or scenarios. In many cases the aim is that it should be possible to automate the execution of such tests by a software tool, either ad-hoc to the development team or off the shelf. [Type &amp;ndash; Software Testing / Product Management]&lt;/p&gt;</description></item><item><title>SKP's Primer: Failures, Pitfalls, and Disadvantages of Microservices</title><link>https://foojayio.github.io/website/today/skps-definitive-primer-failures-pitfalls-and-disadvantages-of-microservices/</link><pubDate>Mon, 02 Aug 2021 09:35:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/skps-definitive-primer-failures-pitfalls-and-disadvantages-of-microservices/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Definitive Microservices Primer]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Microservices Architecture. They Revolve Around Microservices Strategy, Decision Making, Monolithic vs Microservices, Microservices Infrastructure, Failures &amp;amp; Pitfalls of Microservices, Microservices Design Patterns, Database Design, Security, Logging, Messaging, Containerization, Cloud Providers and Everything that is Microservices and More!&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-intro-to-microservices-adoption-in-real-world"&gt;Intro to Microservices Adoption in Real World&lt;/h2&gt;
&lt;p&gt;Microservices Adoption is almost becoming the normal in almost all software product and it services organizations. Hereby, i am taking this opportunity to make you aware of the Real-World Issues (Case Studies) that are faced by organizations (small, mid, large) of all sizes in migrating or adopting microservices. Since learning from other&amp;rsquo;s mistakes and knowing the pitfalls upfront help us prepare and plan better - this article will be helpful for those planning a shift to the Microservices Strategy organization-wide or simply making a move from Monolithic to Microservices Architecture.&lt;/p&gt;</description></item><item><title>SKP's Core Java/Java EE Roots : Gang of Four Design Patterns - Part 01</title><link>https://foojayio.github.io/website/today/gang-of-four-design-patterns-using-core-java-part-01/</link><pubDate>Wed, 28 Apr 2021 13:43:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/gang-of-four-design-patterns-using-core-java-part-01/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Core Java/Java EE Roots]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Rooted Concepts in Core Java and J2EE. They Revolve Around Memory Architecture, Connection &amp;amp; Memory Leaks, Core Java Syntax &amp;amp; Semantics, Java Object Layout/Anatomy, Multi-Threading, Asynchronous Task Execution, Design Patterns, Java Agents, Class Loading, API Design, OOPs &amp;amp; SOLID.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;To understand the philosophical and historical perspective on the Gang of Four&amp;rsquo;s design patterns, I made a short, 10-minute video. (This was also my PluralSight Author Audition). Please take time to view the [Introduction to Gang of Four Design Patterns] Video.&lt;/p&gt;</description></item><item><title>Taking A Deep Dive Into Multi-Threading in Java</title><link>https://foojayio.github.io/website/today/deep-dive-into-multi-threading-in-java/</link><pubDate>Tue, 13 Apr 2021 07:21:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/deep-dive-into-multi-threading-in-java/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Core Java/Java EE Roots]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Rooted Concepts in Core Java and J2EE. They Revolve Around Memory Architecture, Connection &amp;amp; Memory Leaks, Core Java Syntax &amp;amp; Semantics, Java Object Layout/Anatomy, Multi-Threading, Asynchronous Task Execution, Design Patterns, Java Agents, Class Loading, API Design, OOPs &amp;amp; SOLID.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Multi-threading represents a very intriguing topic, even after years of research and development for high quality, robust, and efficient software. With equal emphasis on hardware improvements and the software that runs on it &amp;ndash; we have newer paradigms for parallelism. The most important yet basic concepts are the ones which I present here. I then explain the intricacies of multi-threading in the Java programming language. Some of these are newer features and supported only from the Java Platform Standard Edition 5.0. Let us start with a quick overview and understanding of the core concepts.&lt;/p&gt;</description></item><item><title>Evolution of Java Memory Architecture (Post Java 7.0)</title><link>https://foojayio.github.io/website/today/evolution-of-java-memory-architecture-post-java-7-0/</link><pubDate>Wed, 03 Mar 2021 16:19:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/evolution-of-java-memory-architecture-post-java-7-0/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Core Java/Java EE Roots]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Rooted Concepts in Core Java and J2EE. They Revolve Around Memory Architecture, Connection &amp;amp; Memory Leaks, Core Java Syntax &amp;amp; Semantics, Java Object Layout/Anatomy, Multi-Threading, Asynchronous Task Execution, Design Patterns, Java Agents, Class Loading, API Design, OOPs &amp;amp; SOLID.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-java-memory-architecture-pre-java-8-0"&gt;&lt;strong&gt;Java Memory Architecture (Pre Java 8.0)&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Before we get started, you might want to take a look at Part 1. It explains the core concepts of the Java Memory Architecture, the ones that should get you started to understand this evolution better.&lt;/p&gt;</description></item><item><title>Evolution of Java Memory Architecture (Pre Java 8.0)</title><link>https://foojayio.github.io/website/today/java-roots-1-java-memory-architecture/</link><pubDate>Thu, 25 Feb 2021 14:59:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-roots-1-java-memory-architecture/</guid><description>&lt;p&gt;&lt;strong&gt;[About SKP&amp;rsquo;s Core Java/Java EE Roots]&lt;/strong&gt;&lt;br&gt;
Series of Articles on Rooted Concepts in Core Java and J2EE. They Revolve Around Memory Architecture, Connection &amp;amp; Memory Leaks, Core Java Syntax &amp;amp; Semantics, Java Object Layout/Anatomy, Multi-Threading, Asynchronous Task Execution, Design Patterns, Java Agents, Class Loading, API Design, OOPs &amp;amp; SOLID.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-java-memory-architecture-java-memory-model"&gt;→ Java Memory Architecture (Java Memory Model)&lt;/h2&gt;
&lt;p&gt;The diagram below is the Java Memory Model for the Heap as well as the PermGen for any Java Application running in the Java Virtual Machine (JVM). The ratios are also provided to get a fair understanding of how the distribution of allowed memory is done across each of the generation types. All of the info is completely applicable up to Java 1.7 (inclusive). This diagram is also known as the &amp;lsquo;Managed Area&amp;rsquo; of the memory model.&lt;/p&gt;</description></item></channel></rss>