<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Observability on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/observability/</link><description>Recent content in Observability on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 24 Jun 2026 07:15:41 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/observability/index.xml" rel="self" type="application/rss+xml"/><item><title>Quarkus Unpacked: Insights from the Foojay Podcast</title><link>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</link><pubDate>Tue, 23 Jun 2026 12:36:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/quarkus-unpacked-insights-from-the-foojay-podcast/</guid><description>&lt;figure class="alignleft is-resized"&gt;
 &lt;img decoding="async" src="3-Quarkus-Unpacked-2-2.jpeg" alt="Quarkus: A Runtime and Framework for Cloud-Native Java" style="width:300px"&gt;
&lt;/figure&gt;
&lt;p&gt;I recently had the pleasure of joining the &lt;a href="https://www.youtube.com/watch?v=_nJCTTrnZkE" target="_blank" rel="noopener noreferrer"&gt;Foojay podcast&lt;/a&gt;
 to talk about Quarkus in depth. The conversation covered a lot of ground, from what makes Quarkus different to the practical trade-offs between JVM and native mode. This post captures the key questions and answers from that discussion, lightly edited for readability.{#_quarkus_unpacked_insights_from_the_foojay_podcast}&lt;/p&gt;
&lt;p&gt;If you have been following this blog series, note that the third installment on building your own stack with Quarkus is coming next. Consider this a bonus entry that distills the podcast conversation into a format you can read, reference, and share.&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #16</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-16/</link><pubDate>Tue, 09 Jun 2026 18:28:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-16/</guid><description>&lt;p&gt;Over the past two weeks, the field of artificial intelligence has continued its remarkable pace of advancement. As AI becomes increasingly woven into the fabric of daily life, shaping how we work, communicate, and make decisions, it is both timely and valuable to step back and understand the broader trajectory of this technology. Whether the developments around us feel promising or challenging, one truth remains clear: AI is not simply going away. It is here to stay, and understanding its evolution is essential from many perspectives. Have you ever wondered what harness engineering is, how evals attempt to move traditional unit tests onto a probabilistic plane, or how AI is reshaping entire industries across various branches? Let&amp;rsquo;s start.&lt;/p&gt;</description></item><item><title>BoxLang AI 3.2.0 — Image Generation, Web Search, Fluent Audio, Agent Registry &amp; MCP Observability</title><link>https://foojayio.github.io/website/today/boxlang-ai-3-2-0-image-generation-web-search-fluent-audio-agent-registry-mcp-observability/</link><pubDate>Tue, 02 Jun 2026 12:27:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/boxlang-ai-3-2-0-image-generation-web-search-fluent-audio-agent-registry-mcp-observability/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/boxlang-ai-3-2-0-image-generation-web-search-fluent-audio-agent-registry-mcp-observability/BoxLangAI-3.2-700x394.jpg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;BoxLang AI 3.2.0 is here, and it&amp;rsquo;s a landmark release. We&amp;rsquo;re shipping five major features: image generation, web search, a fluent audio builder API, a centralized agent registry, and deep MCP observability along with a suite of analytics improvements and a critical bug fix. Let&amp;rsquo;s dig in. 🎉&lt;/p&gt;
&lt;p&gt;🖼️ Image Generation &amp;mdash; aiImage()&lt;/p&gt;
&lt;p&gt;You can now generate images directly from BoxLang using any provider that supports text-to-image generation. The aiImage() BIF follows the same fluent, chainable philosophy as the rest of bx-ai then act on the result with expressive method calls.&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #14</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-14/</link><pubDate>Tue, 03 Mar 2026 15:11:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-14/</guid><description>&lt;p&gt;&lt;strong&gt;Two&lt;/strong&gt; weeks have passed and a lot have been happening on the field of artificial-intelligence.&lt;/p&gt;
&lt;p&gt;Two weeks have passed and a lot has been silently yet visibly happening in the field of artificial intelligence. This newsletter brings interesting developments, including Dario Amodei&amp;rsquo;s (Anthropic) view on the progress achieved in the LLM field and his response to the utilization of these models for specific kinds of military purposes, as well as OpenAI&amp;rsquo;s response to it. Aside from the fact that development may follow more sigmoids instead of exponential progress, it is important to have awareness of utilization across branches. Does prompting and clarifying the goal influence agent responses, and if so, how? How far are we from reliable robotics applications? How much bias is introduced when clinical data is being analyzed?&lt;/p&gt;</description></item><item><title>Runtime Code Analysis in the Age of Vibe Coding</title><link>https://foojayio.github.io/website/today/runtime-code-analysis-in-the-age-of-vibe-coding/</link><pubDate>Tue, 17 Feb 2026 14:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/runtime-code-analysis-in-the-age-of-vibe-coding/</guid><description>&lt;p&gt;In the era of &lt;strong&gt;vibe coding&lt;/strong&gt;&amp;mdash;where large amounts of code are introduced or refactored in short bursts, often with the help of LLMs&amp;mdash;you need immediate feedback on how new logic actually executes. Not comprehensive analysis. Not nanosecond-precise timing. Just a quick confirmation that your loops aren&amp;rsquo;t spinning 10,000x more than they should.&lt;/p&gt;
&lt;p&gt;However, traditional profilers can feel like overkill for quick validation. In addition, they present results at method/stack granularity and require context-switching to interpret. They also introduce overhead, ranging from negligible (e.g., JFR/sampling) to noticeable (call tracing/instrumentation). As a result, they are less convenient as always-on feedback during rapid iteration.&lt;/p&gt;</description></item><item><title>Unikernel: Profiling and Troubleshooting JVM on Nanos Unikernel</title><link>https://foojayio.github.io/website/today/unikernel-profiling-and-troubleshooting-jvm-on-nanos-unikernel/</link><pubDate>Wed, 11 Feb 2026 13:50:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/unikernel-profiling-and-troubleshooting-jvm-on-nanos-unikernel/</guid><description>&lt;h3 id="h3-0-profiling-a-java-application-running-inside-an-unikernel-with-jprofiler"&gt;Profiling a Java Application Running Inside an Unikernel with JProfiler&lt;/h3&gt;
&lt;p&gt;Unikernels are often associated with minimalism and tight resource control.&lt;/p&gt;
&lt;p&gt;But can we profile a Java application running inside a unikernel using a standard JVM profiler?&lt;/p&gt;
&lt;p&gt;The answer is yes.&lt;/p&gt;
&lt;p&gt;In this guide, we will walk step by step through profiling a Quarkus&lt;/p&gt;
&lt;p&gt;application running inside a Nanos unikernel using &lt;strong&gt;JProfiler&lt;/strong&gt; and&lt;br&gt;
&lt;strong&gt;IBM Semeru JRE 25 (OpenJ9)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;No special hacks. Just standard JVM tooling.&lt;/p&gt;</description></item><item><title>JC-AI Newsletter #13</title><link>https://foojayio.github.io/website/today/jc-ai-newsletter-13/</link><pubDate>Thu, 05 Feb 2026 21:12:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/jc-ai-newsletter-13/</guid><description>&lt;p&gt;Two weeks have passed, and it is time to present a new collection of readings that may shape developments, utilization or ideas in the field of artificial intelligence in 2026.&lt;/p&gt;
&lt;p&gt;While significant activity characterizes the AI field, many unresolved research, design, and implementation challenges continue to impact progress. Future advancement depends heavily on understanding the nature of these challenges to approach probabilistic problems from the appropriate directions. This JC-AI newsletter features insightful interviews with key figures in the field, enabling readers to ask the right questions and compare visions of an &amp;lsquo;uncertain future&amp;rsquo; against current capabilities to maintain a grounded perspective.&lt;/p&gt;</description></item><item><title>Optimizing Java for the Cloud-Native Era with Quarkus</title><link>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</link><pubDate>Tue, 06 Jan 2026 21:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/optimizing-java-for-the-cloud-native-era-with-quarkus/</guid><description>&lt;p&gt;This article explores how Quarkus can help organizations reduce costs, streamline development, and modernize their Java applications for today&amp;rsquo;s cloud-native environments. It outlines the real-world benefits of adopting Quarkus and highlights how its core features address the performance and scalability challenges commonly associated with traditional Java frameworks.&lt;/p&gt;
&lt;p&gt;Quarkus is already being adopted across industries. One example is Orange, a global telecom provider that selected Quarkus to support its 5G API initiative, and benefited from fast startup times, a lightweight footprint, and seamless integration with Kubernetes.&lt;/p&gt;</description></item><item><title>Spring Boot 4 - OpenTelemetry Guide</title><link>https://foojayio.github.io/website/today/spring-boot-4-opentelemetry-explained/</link><pubDate>Wed, 10 Dec 2025 09:09:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-4-opentelemetry-explained/</guid><description>&lt;p&gt;In my previous &lt;a href="https://foojayio.github.io/website/today/preparing-for-spring-framework-7-and-spring-boot-4/"&gt;article&lt;/a&gt;
, I outlined a comprehensive list of features introduced in Spring Framework 7 and Spring Boot 4.&lt;/p&gt;
&lt;p&gt;In this series of articles, we will explore these features in detail using a pragmatic approach. In this second article, I will dive deep into integration of Observability framework i.e., &lt;em&gt;&lt;strong&gt;OpenTelemetry with SpringBoot&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;As an architect and developer, when I engage in system design&amp;mdash;whether it involves monolithic architecture, microservices, or contemporary cloud-native applications&amp;mdash;I have made the integration of &lt;strong&gt;observability&lt;/strong&gt; patterns utilizing &lt;strong&gt;open-telemetry&lt;/strong&gt; tools a standard practice. Through observability, we can monitor application behavior via &lt;strong&gt;metrics, logs, and traces&lt;/strong&gt; that we trigger&lt;/p&gt;</description></item><item><title>Micrometer &amp; Prometheus in Spring Boot: Kafka Burger Orders</title><link>https://foojayio.github.io/website/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</link><pubDate>Fri, 14 Nov 2025 10:13:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/micrometer-prometheus-in-spring-boot-kafka-burger-orders/</guid><description>&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/eSreg0xPGqo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;br /&gt;
&lt;p&gt;👨‍💻 GitHub: &lt;a href="https://github.com/vinny59200/dukeburger" target="_blank" rel="noopener noreferrer"&gt;https://github.com/vinny59200/dukeburger&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;🔵⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪⚪&lt;/p&gt;
&lt;p&gt;This guide shows how to use &lt;strong&gt;Micrometer and Prometheus in Spring Boot&lt;/strong&gt; to track a custom metric for a Kafka-driven Burger Orders app. You&amp;rsquo;ll post a burger order to a REST endpoint, publish it to Kafka, consume the topic, and increment a counter for all &amp;ldquo;DukeBurger&amp;rdquo; orders. Copy the snippets, run, and you&amp;rsquo;ll see your metric on &lt;code&gt;/actuator/prometheus&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>OpenTelemetry configuration gotchas</title><link>https://foojayio.github.io/website/today/opentelemetry-configuration-gotchas/</link><pubDate>Sun, 17 Aug 2025 08:01:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/opentelemetry-configuration-gotchas/</guid><description>&lt;p&gt;Last week, I described &lt;a href="https://blog.frankel.ch/opentelemetry-tracing-jvm/" target="_blank" rel="noopener noreferrer"&gt;several approaches to OpenTelemetry on the JVM&lt;/a&gt;
, their requirements, and their different results. This week, I want to highlight several gotchas found across stacks in the zero-code instrumentation.&lt;/p&gt;
&lt;h2 id="h2-0-the-promise-of-opentelemetry"&gt;The promise of OpenTelemetry&lt;/h2&gt;
&lt;p&gt;Since its inception, OpenTelemetry has unified the 3 pillars of observability. In the distributed tracing space, it replaced proprietary protocols Zipkin and Jaeger. IMHO, it achieved such success for several reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, a huge industry pressure to work across proprietary tools&lt;/li&gt;
&lt;li&gt;Zero-code instrumentation, allowing developers to be unconcerned by OpenTelemetry&lt;/li&gt;
&lt;li&gt;Easy and unified configuration mechanism via environment variables.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The latter is a boon for the Ops team, as they don&amp;rsquo;t have to know the underlying framework (or stack!) details. They only need to check the &lt;a href="https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/" target="_blank" rel="noopener noreferrer"&gt;Environment Variable Specification&lt;/a&gt;
 and they are done.&lt;/p&gt;</description></item><item><title>Challenge yourself with Application Observability Code Challenges</title><link>https://foojayio.github.io/website/today/challenge-yourself-with-application-observability-code-challenges/</link><pubDate>Wed, 22 Jan 2025 13:19:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/challenge-yourself-with-application-observability-code-challenges/</guid><description>&lt;p&gt;Code challenges are a nice way to challenge yourself with programming, resulting in some great challenges like &lt;a href="https://github.com/gunnarmorling/1brc" target="_blank" rel="noopener noreferrer"&gt;#1brc&lt;/a&gt;
 and the yearly &lt;a href="https://adventofcode.com" target="_blank" rel="noopener noreferrer"&gt;Advent of Code (#AoC)&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;While these challenges often include a competitive element, the Application Observability Code Challenges are focussed on the learning about observability practices.&lt;/p&gt;
&lt;h2 id="h2-0-what-are-the-application-observability-code-challenges"&gt;What are the Application Observability Code Challenges?&lt;/h2&gt;
&lt;p&gt;The idea of these challenges came to me based on the challenges above and the fact that I see in practice that quite a few developers are struggling to get up to speed with applying observability practices.&lt;/p&gt;</description></item><item><title>Foojay Podcast #58: How Java Developers Can Secure Their Code</title><link>https://foojayio.github.io/website/today/foojay-podcast-58/</link><pubDate>Mon, 30 Sep 2024 07:43:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-58/</guid><description>&lt;p&gt;Three years after Log4Shell caused a significant security issue, we still struggle with insecure dependencies and injection problems.&lt;/p&gt;
&lt;p&gt;In this podcast, we&amp;rsquo;ll discuss how developers can secure their code.&lt;/p&gt;
&lt;p&gt;I talked with three authors who posted a security and code quality post on Foojay.io.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/sRVcqILDuSo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Be a Better Java Developer: 19 Tips for Staying Ahead in 2024</title><link>https://foojayio.github.io/website/today/become-a-better-java-developer-19-tips-for-staying-ahead-in-2024/</link><pubDate>Tue, 11 Jun 2024 12:31:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/become-a-better-java-developer-19-tips-for-staying-ahead-in-2024/</guid><description>&lt;p&gt;Recently I reached out to one of my fellow Java developers who is very experienced and has been working in the industry forever and asked for his thoughts about the observability improvements in JDK 21 and Spring Boot 3.2 and if he has already migrated from 17 to 21 and to Spring Boot 3.2.&lt;/p&gt;
&lt;p&gt;This is the reply I got from him:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;ldquo;Lately, I&amp;rsquo;ve been feeling quite rusty, my current job has me solely focused on building an IntelliJ plugin, it&amp;rsquo;s been almost two years now. And I&amp;rsquo;m concerned I&amp;rsquo;m not keeping up to date. I&amp;rsquo;ve promised myself to take a tutorial and learn everything from Java versions 17 to 21. With Java 22 nearly released and Spring 3.2 out, I&amp;rsquo;m not familiar with all the improvements. I&amp;rsquo;ve already heard about the exciting new features of Java 22 like the non-Java interop and access to important libraries like LAPACK and BLAS. These libraries power significant Python libraries like NumPy, offering new opportunities for Java.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>SQL Query Optimization: How to Identify and Optimize Slow SQL Queries</title><link>https://foojayio.github.io/website/today/sql-query-optimization-how-to-identify-and-optimize-slow-sql-queries/</link><pubDate>Thu, 09 May 2024 21:44:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/sql-query-optimization-how-to-identify-and-optimize-slow-sql-queries/</guid><description>&lt;p&gt;&lt;strong&gt;In this article, we want to share our experience with fellow developers and offer insights using real-life examples on how to identify and optimize slow SQL queries, especially when working with relational database management systems like PostgreSQL, MySQL, MSSQL, Oracle, etc.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are a developer who doesn&amp;rsquo;t use database ORMs like Hibernate that much, you are no stranger to the concept of SQL query optimization. As developers, we know that a slow SQL query can reduce our application&amp;rsquo;s efficiency and performance, leaving our users with a bad experience.&lt;/p&gt;</description></item><item><title>How to Detect Cache Misses Using Observability</title><link>https://foojayio.github.io/website/today/how-to-detect-cache-misses-using-observability/</link><pubDate>Thu, 04 Apr 2024 07:44:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-detect-cache-misses-using-observability/</guid><description>&lt;p&gt;&lt;strong&gt;All of us know about caching in system design and software architecture, It is applicable everywhere in the computer industry, even in hardware. Caching is a quick and shortcut solution to improve performance, of course, we need to be careful of using the cache, misusing the cache can directly affect the system&amp;rsquo;s consistency.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this article, we will learn about cache miss and, in general, about the caching concept and how to implement it in Spring Boot. Eventually, we will see how Digma can help us detect cache misses locally during development.&lt;/p&gt;</description></item><item><title>How to improve your spring boot skills</title><link>https://foojayio.github.io/website/today/how-to-improve-your-spring-boot-skills/</link><pubDate>Wed, 20 Mar 2024 15:10:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-improve-your-spring-boot-skills/</guid><description>&lt;p&gt;&lt;strong&gt;Does anyone else ever feel overwhelmed by Spring Boot? With a rich set of options and eco-system libraries on the one hand, and a very opinionated framework on the other, I often spend considerable time deciphering the &amp;ldquo;Spring Way&amp;rdquo; of doing things. I&amp;rsquo;ve been working with &lt;a href="https://digma.ai/10-spring-boot-performance-best-practices/" target="_blank" rel="noopener noreferrer"&gt;Spring Boot&lt;/a&gt;
 for over three years, yet there are moments when I sense I&amp;rsquo;m not fully harnessing the capabilities of this remarkable framework and that I need to improve my Spring Boot skills.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Hello eBPF: Recording data in event buffers (3)</title><link>https://foojayio.github.io/website/today/hello-ebpf-recording-data-in-event-buffers-3/</link><pubDate>Fri, 02 Feb 2024 14:45:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/hello-ebpf-recording-data-in-event-buffers-3/</guid><description>&lt;p&gt;&lt;strong&gt;Welcome back to my article series on eBPF. Last week, I showed you how the &lt;a href="https://foojayio.github.io/website/today/hello-ebpf-recording-data-in-basic-ebpf-maps-2/"&gt;eBPF program and Java application can communicate using eBPF maps&lt;/a&gt;
. This allowed us to write an application that counts the number of &lt;code&gt;execve&lt;/code&gt; calls per user.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This week, I&amp;rsquo;ll show you briefly how to use another kind of eBPF maps, the perf event buffer, and run tests with docker and &lt;a href="https://junit.org/junit5/docs/current/user-guide/" target="_blank" rel="noopener noreferrer"&gt;JUnit 5&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This article is shorter than the previous one as I&amp;rsquo;m preparing for the OpenJDK committers workshop in Brussels and my &lt;a href="https://fosdem.org/2024/schedule/speaker/WS77F8/" target="_blank" rel="noopener noreferrer"&gt;Python and Java DevRoom talks&lt;/a&gt;
 at FOSDEM. I&amp;rsquo;m happy to meet my readers; say hi when you&amp;rsquo;re there.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Foojay Podcast #38: Java in the Cloud</title><link>https://foojayio.github.io/website/today/foojay-podcast-38/</link><pubDate>Mon, 25 Dec 2023 12:02:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-38/</guid><description>&lt;p&gt;Java was born in 1995, when the internet as we know it today didn&amp;rsquo;t exist yet.&lt;/p&gt;
&lt;p&gt;Cloud servers, Docker, Kubernetes, distributed systems, scaling up and down&amp;hellip; these things are now part of our daily job, but Java wasn&amp;rsquo;t originally designed for it.&lt;/p&gt;
&lt;p&gt;In this episode, we want to learn if the recent evolutions in OpenJDK, and ongoing related projects, will make Java a full Cloud member.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/xU4rKnzkSpo?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Couch to fully-observed code with Spring Boot 3.2, Micrometer Tracing, and Digma</title><link>https://foojayio.github.io/website/today/couch-to-fully-observed-code-with-spring-boot-3-2-micrometer-tracing-and-digma/</link><pubDate>Wed, 06 Dec 2023 10:42:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/couch-to-fully-observed-code-with-spring-boot-3-2-micrometer-tracing-and-digma/</guid><description>&lt;p&gt;&lt;strong&gt;Collecting important data about your code in dev and test has become trivial, it&amp;rsquo;s now also getting easier to put that data to use.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;{#more-103351}&lt;/p&gt;
&lt;h2 id="h2-0-tracing-debugging"&gt;Tracing &amp;gt; Debugging&lt;/h2&gt;
&lt;p&gt;There are many benefits to being able to follow what your Spring Boot code is doing using tracing. When used effectively, traces can reveal a lot about the inner workings of complex systems, or provide early feedback when you make mistakes in introducing new code changes.&lt;/p&gt;</description></item><item><title>Patterns For The Design Of Microservices – Part 3</title><link>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-3/</link><pubDate>Thu, 16 Nov 2023 04:35:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-3/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-1/" title="part1"&gt;part1&lt;/a&gt;
, &lt;a href="https://foojayio.github.io/website/today/patterns-for-the-design-of-microservices-part-2/" title="part2"&gt;part2&lt;/a&gt;
, we discussed several design patterns that aid in the development of microservices.&lt;/p&gt;
&lt;p&gt;This blog post will cover the subsequent design patterns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Observability Patterns&lt;/li&gt;
&lt;li&gt;Cross-cutting Concern Patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-103034" src="MSPatternsOne-700x394.png" alt="Microservice Architecture" width="700" height="394"&gt;
&lt;p&gt;Microservice Architecture Patterns&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Undoubtedly, the logging mechanism benefits troubleshooting issues that arise when executing operations or transactions on multiple deployed microservices.&lt;/p&gt;
&lt;p&gt;We can further categorize the observability patterns into six distinct patterns.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Log Aggregation&lt;/li&gt;
&lt;li&gt;Application Metrics&lt;/li&gt;
&lt;li&gt;Audit Logging&lt;/li&gt;
&lt;li&gt;Distrubuted Tracing&lt;/li&gt;
&lt;li&gt;Exception Tracking&lt;/li&gt;
&lt;li&gt;Health Check API&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the subsequent segment, we will discuss each topic separately.&lt;/p&gt;</description></item><item><title>Beyond Pass/Fail- a Modern Approach to Java Integration Testing</title><link>https://foojayio.github.io/website/today/beyond-pass-fail-a-modern-approach-to-java-integration-testing/</link><pubDate>Wed, 18 Oct 2023 15:15:14 +0000</pubDate><guid>https://foojayio.github.io/website/today/beyond-pass-fail-a-modern-approach-to-java-integration-testing/</guid><description>&lt;h2 id="h2-0-tests-can-run-limited-sets-of-assertions-on-your-code-or-reveal-important-insights-about-how-your-application-really-works"&gt;Tests can run limited sets of assertions on your code, or reveal important insights about how your application really works!&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/beyond-pass-fail-a-modern-approach-to-java-integration-testing/1_JAiQsj-ez608WsovCheXVQ-1024x512.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Automated testing will assuredly go down in the annals of software development history as one of these industry-changing trends. Although few actually adhere to full-metal, OCD mode, TDD discipline (I am in awe of those that do, just to be clear), most developers make sure to prioritize and include testing in their dev cycle.&lt;/p&gt;</description></item><item><title>It's 2AM Do you Know What Your Code is Doing?</title><link>https://foojayio.github.io/website/today/its-2am-do-you-know-what-your-code-is-doing/</link><pubDate>Fri, 01 Sep 2023 06:53:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/its-2am-do-you-know-what-your-code-is-doing/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="#observability-isnt-pillars"&gt;Observability isn&amp;rsquo;t Pillars&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tracing-and-opentelemetry"&gt;Tracing and OpenTelemetry&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#background-developer-observability"&gt;Background Developer Observability&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#enough-exposition"&gt;Enough Exposition&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-does-this-help-at-2am"&gt;How Does This Help at 2AM?&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#final-word"&gt;Final Word&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Once we press the merge button, that code is no longer our responsibility. If it performs sub-optimally or has a bug, it is now the problem of the DevOps team, the SRE, etc. Unfortunately, those teams work with a different toolset. If my code uses up too much RAM, they will increase RAM. When the code runs slower, they will increase CPU. In case the code crashes, they will increase concurrent instances.&lt;/p&gt;</description></item><item><title>Observing Java on Docker Compose Using OpenTelemetry</title><link>https://foojayio.github.io/website/today/observing-java-applications-running-via-docker-compose-using-opentelemetry/</link><pubDate>Wed, 09 Aug 2023 21:51:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/observing-java-applications-running-via-docker-compose-using-opentelemetry/</guid><description>&lt;h2 id="h2-0-an-easy-non-obtrusive-way-to-collect-data-about-your-dockerized-app-without-changing-your-existing-docker-compose-yml-or-docker-files"&gt;An easy non-obtrusive way to collect data about your dockerized app without changing your existing docker-compose.yml or docker files!&lt;/h2&gt;
&lt;p&gt;This is just a neat trick that I discovered when I was trying to collect &lt;a href="https://opentelemetry.io/docs/instrumentation/java/automatic/" target="_blank" rel="noopener noreferrer"&gt;OTEL&lt;/a&gt;
 data about my application which was running via Docker Compose. I was trying to understand more about the code using tracing. However, I definitely didn&amp;rsquo;t want to modify any of the code or deployment-related artifacts, or risk checking in any changes by mistake.&lt;/p&gt;</description></item><item><title>Effective Coding with Java Observability</title><link>https://foojayio.github.io/website/today/effective-coding-with-java-observability/</link><pubDate>Tue, 18 Jul 2023 07:02:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/effective-coding-with-java-observability/</guid><description>&lt;h2 id="h2-0-things-you-can-do-right-now-to-learn-new-and-valuable-things-that-can-improve-your-code"&gt;Things you can do right now to learn new and valuable things that can improve your code.&lt;/h2&gt;
&lt;p&gt;There are many common mistakes I&amp;rsquo;ve seen repeated over the years while trying to make observability initiatives successful. However, the most critical and fundamental of these organizational stumbles is the irresistible infatuation with technology and toolings themselves.&lt;/p&gt;
&lt;p&gt;It should not come as a surprise. Many &amp;rsquo;let&amp;rsquo;s add observability platform X&amp;rsquo; projects start off with plenty of fanfare but also a very hazy sense of direction and extremely muddled criteria for success. The vision of what effective observability can do to&lt;strong&gt;actually help&lt;/strong&gt; developers work better is suspiciously missing from the preaching of many of its commercial vendors and oracles. Ask yourself, how often do you find yourself taking your eyes off the code in the IDE to find out what you can learn from its execution data?&lt;/p&gt;</description></item><item><title>Announcing the Digma Beta: First Runtime Linter for Java Code</title><link>https://foojayio.github.io/website/today/announcing-the-digma-beta-first-runtime-linter-for-java-code/</link><pubDate>Mon, 22 May 2023 13:52:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/announcing-the-digma-beta-first-runtime-linter-for-java-code/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/announcing-the-digma-beta-first-runtime-linter-for-java-code/doppleware_a_hipster_developer_following_a_yarn_thread_connecte_0aadda36-bf51-4283-90c5-54ff5f976af7-1-1024x512.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-call-for-developers"&gt;Call for Developers&lt;/h2&gt;
&lt;p&gt;We are looking for senior Java developers who are interested in exploring how to use observability to improve their code to join the beta program for Digma: a free runtime linter plugin for Jetbrains/Java.&lt;br&gt;
&lt;a href="https://digma.ai" target="_blank" rel="noopener noreferrer"&gt;Digma&lt;/a&gt;
 analyzes your code in runtime, improving coding practices and confidence when working on complex Java code.&lt;/p&gt;
&lt;p&gt;The plugin runs locally and doesn&amp;rsquo;t require sharing data.&lt;/p&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/QP8RqYLbIbs?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;p&gt;We have 20 slots currently open for the beta.&lt;/p&gt;</description></item><item><title>A Java Library’s New Approach To Observability</title><link>https://foojayio.github.io/website/today/not-your-grandfathers-logs-a-java-librarys-new-approach-to-observability/</link><pubDate>Tue, 18 Apr 2023 08:10:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/not-your-grandfathers-logs-a-java-librarys-new-approach-to-observability/</guid><description>&lt;h3 id="h3-0-how-a-java-library-is-taking-a-completely-new-approach-to-understanding-what-the-code-does-and-why-it-makes-perfect-developer-sense"&gt;How a Java library is taking a completely new approach to understanding what the code does, and why it makes perfect developer sense.&lt;/h3&gt;
&lt;p&gt;A while back, I &lt;a href="https://medium.com/gitconnected/breaking-the-fourth-wall-in-coding-189055955c85" title="wrote" target="_blank" rel="noopener noreferrer"&gt;wrote&lt;/a&gt;
 about the fact that logs need an overhaul, and that practices that were relevant when logs were still text messages in files may no longer be relevant in an age when logs traces and metrics are as artifacts and observations stored in cloud platforms.&lt;/p&gt;</description></item><item><title>Observability is Cultural</title><link>https://foojayio.github.io/website/today/observability-is-cultural/</link><pubDate>Fri, 04 Nov 2022 15:23:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/observability-is-cultural/</guid><description>&lt;p&gt;I&amp;rsquo;m guilty of applying the word debugging for practically anything.&lt;/p&gt;
&lt;p&gt;My kids&amp;rsquo; legos won&amp;rsquo;t fit, let&amp;rsquo;s debug that.&lt;/p&gt;
&lt;p&gt;Observability is one of the few disciplines that actually warrant that moniker, it is debugging. But traditional debugging doesn&amp;rsquo;t really fit with observability practices. I usually call it &amp;ldquo;precognitive debugging&amp;rdquo;. We need to have a rough idea in advance of what our debugging process will look like for effective observability troubleshooting.&lt;/p&gt;
&lt;p&gt;Note that this doesn&amp;rsquo;t apply to developer observervability which is a special case. That&amp;rsquo;s a more dynamic process that more closely resembles a typical debugging session. This is about more traditional monitoring and observability. Where we need to first instrument the system and add logs, metrics, etc. to cover the information we would need as we will later investigate the issue.&lt;/p&gt;</description></item><item><title>Remote Debugging and Developer Observability</title><link>https://foojayio.github.io/website/today/remote-debugging-and-developer-observability/</link><pubDate>Fri, 10 Jun 2022 10:12:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/remote-debugging-and-developer-observability/</guid><description>&lt;p&gt;In this post, we&amp;rsquo;ll go over remote debugging. Debugging production with developer observability tools and debugging asynchronous code which presents its own unique challenges!&lt;/p&gt;
&lt;p&gt;This is actually material from four separate videos because I wanted to pool some ideas together into a single blog post and the asynchronous stuff got pulled in. So without further ado, these are the applicable videos&amp;hellip; Read on for the analysis and discussion:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🦆 Duckling the 15th:&lt;/p&gt;</description></item><item><title>Observability for JVM Frameworks with Grafana in Java and Kotlin</title><link>https://foojayio.github.io/website/today/observability-for-jvm-frameworks-with-grafana-in-java-and-kotlin/</link><pubDate>Wed, 30 Mar 2022 06:30:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/observability-for-jvm-frameworks-with-grafana-in-java-and-kotlin/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/observability-for-jvm-frameworks-with-grafana-in-java-and-kotlin/observ_img1-700x470.png" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Grafana dashboard for all running frameworks&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;In times of Cloud and distributed applications, it is becoming more and more important to be able to evaluate a functionality at runtime, an aspect which is referred to as &lt;a href="https://en.wikipedia.org/wiki/Observability" target="_blank" rel="noopener noreferrer"&gt;observability&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;A Cloud-based application is usually set up as a collection of different subsystems that may be located in one or more network zones or machines. These subsystems communicate with each other by passing messages (signals) and executing desired actions to each other. The whole collection then appears to the end user as a single coherent system.&lt;/p&gt;</description></item><item><title>Continuous Production Profiling and Diagnostics</title><link>https://foojayio.github.io/website/today/continuous-production-profiling-and-diagnostics/</link><pubDate>Mon, 09 Nov 2020 15:57:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/continuous-production-profiling-and-diagnostics/</guid><description>&lt;p&gt;I&amp;rsquo;ve gotten a lot of questions about continuous production profiling lately. Why would anyone want to profile in production, or, if production profiling seems reasonable, why the heck leave it on continuously? I thought I&amp;rsquo;d take a few moments and share my take on the problem and the success I&amp;rsquo;ve seen the past years applying continuous production profiling in systems in the real world.&lt;/p&gt;
&lt;p&gt;Trigger warning: this blog will not contain code samples.&lt;/p&gt;</description></item></channel></rss>