<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Blogs on Hot coffee - devBlog ☕</title>
    <link>https://blog.hot-coffee.dev/en/blog/</link>
    <description>Recent content in Blogs on Hot coffee - devBlog ☕</description>
    <generator>Hugo -- 0.162.0</generator>
    <language>en-US</language>
    <copyright>Ivan Béthus (CC BY 4.0) - 2024-2025</copyright>
    <lastBuildDate>Tue, 26 May 2026 09:00:00 +0200</lastBuildDate>
    <atom:link href="https://blog.hot-coffee.dev/en/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Automating My Blog Workflow with the Pi Coding Agent</title>
      <link>https://blog.hot-coffee.dev/en/blog/pi-workflow/</link>
      <pubDate>Tue, 26 May 2026 09:00:00 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/pi-workflow/</guid>
      <description>Discover how the Pi coding agent automates my entire blog publishing workflow — from ticket creation to deployment — with practical examples straight from this blog&amp;#39;s source code.</description>
    </item>
    <item>
      <title>Replace Your IDE with a CDE!</title>
      <link>https://blog.hot-coffee.dev/en/blog/cde/</link>
      <pubDate>Thu, 25 Sep 2025 09:23:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/cde/</guid>
      <description>&lt;h1 id=&#34;cloud-development-environments-cde---all-aboard&#34;&gt;Cloud Development Environments (CDE) - All Aboard!&lt;/h1&gt;
&lt;p&gt;In the world of software development, onboarding new developers can be a real headache. Tool installation, environment configuration, resolving incompatibilities&amp;hellip; These are all problems that Cloud Development Environments (CDEs) promise to solve. But before diving into the world of CDEs, it&amp;rsquo;s essential to understand the technologies that underpin them: DevContainers and DevFiles.&lt;/p&gt;
&lt;h2 id=&#34;devcontainers-and-devfiles&#34;&gt;DevContainers and DevFiles&lt;/h2&gt;
&lt;h3 id=&#34;what-is-a-devcontainer&#34;&gt;What is a DevContainer?&lt;/h3&gt;
&lt;p&gt;A &lt;strong&gt;DevContainer&lt;/strong&gt; is a specification that formalizes the description of a containerized development environment. Initiated by Microsoft in 2022, this specification is now adopted by many IDEs like VS Code, IntelliJ, and many others. But long before the massive funding by Microsoft (via Github, VSCode, &amp;hellip;), it was &lt;strong&gt;Red Hat&lt;/strong&gt; that was the pioneer in this field with its &lt;a href=&#34;https://devfile.io/&#34;&gt;DevFile&lt;/a&gt; through the &lt;a href=&#34;https://eclipse.dev/che/&#34;&gt;Eclipse Che&lt;/a&gt; project (adopted by the &lt;a href=&#34;https://www.cncf.io/projects/devfile/&#34;&gt;CNCF&lt;/a&gt; in 2022).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Devoxx France 2025</title>
      <link>https://blog.hot-coffee.dev/en/blog/devoxx2025/</link>
      <pubDate>Mon, 21 Apr 2025 14:45:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/devoxx2025/</guid>
      <description>&lt;p&gt;From April 16th to 18th was held &lt;strong&gt;the&lt;/strong&gt; annual developers&amp;rsquo; gathering: Devoxx France! It was an opportunity for me and a delegation of colleagues to go to Paris, more precisely to the congress center, to attend and give multiple talks.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my top 3 presentations.&lt;/p&gt;
&lt;h2 id=&#34;-how-to-debug-in-production---jean-philippe-bempel&#34;&gt;🔧 How to Debug in Production? - &lt;a href=&#34;https://www.linkedin.com/in/jeanphilippebempel/&#34;&gt;Jean-Philippe Bempel&lt;/a&gt;&lt;/h2&gt;
&lt;div style=&#34;display:flex;justify-content: space-evenly;&#34;&gt;
    &lt;img alt=&#34;java apm image&#34; src=&#34;apm.png&#34; width=&#34;400&#34; height=&#34;auto&#34;&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Jean-Philippe Bempel&lt;/strong&gt; is a performance expert and Java Champion at Datadog. During his talk, we discovered advanced techniques for debugging in production environments.
Leveraging the JVM&amp;rsquo;s &lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/Instrumentation.html&#34;&gt;instrumentation API&lt;/a&gt;, available since JDK 1.5, Jean-Philippe demonstrated how to use a Java Agent to transform bytecode on the fly. This method allows adding advanced features like OpenTelemetry metrics without restarting the application, while maintaining low overhead (though still present!). The practical example showcased the effectiveness of this approach in solving production issues in real-time.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mockoon: The Mocks Strike Back!</title>
      <link>https://blog.hot-coffee.dev/en/blog/mockoon_conf/</link>
      <pubDate>Mon, 14 Apr 2025 09:23:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/mockoon_conf/</guid>
      <description>&lt;p&gt;In modern application development, interaction with web services has become essential. However, what happens when these services are unavailable, still under development, or simply unstable? This is where Mockoon comes in to save the day.&lt;/p&gt;
&lt;h2 id=&#34;what-is-mockoon&#34;&gt;What is Mockoon?&lt;/h2&gt;
&lt;p&gt;Mockoon is a powerful tool for simulating web services. But before diving into its features, let&amp;rsquo;s clarify the concept:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A &lt;strong&gt;mock&lt;/strong&gt; is a controlled imitation of a real component. In the context of web services, it can be an HTTP response containing mock data.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JEP 502: Initialize Immutable Objects with StableValue</title>
      <link>https://blog.hot-coffee.dev/en/blog/jep_502/</link>
      <pubDate>Fri, 11 Apr 2025 18:20:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/jep_502/</guid>
      <description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;StableValue&lt;/code&gt; is a new feature introduced in the preview version of JDK 25, aimed at improving the handling of immutable objects in Java. This innovation allows certain dynamic values to be treated as constants, offering performance optimizations similar to &lt;code&gt;final&lt;/code&gt; fields, while providing greater flexibility regarding when they are initialized.&lt;/p&gt;
&lt;p&gt;The JEP related to this evolution is &lt;a href=&#34;https://openjdk.org/jeps/502&#34;&gt;JEP-502&lt;/a&gt;, with the following defined objectives:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improve Java application startup time by &lt;strong&gt;fragmenting the monolithic initialization&lt;/strong&gt; of application state.&lt;/li&gt;
&lt;li&gt;Decouple the &lt;strong&gt;creation&lt;/strong&gt; of stable values from their &lt;strong&gt;initialization&lt;/strong&gt;, without significant performance penalties.&lt;/li&gt;
&lt;li&gt;Ensure stable values are initialized &lt;strong&gt;at most once&lt;/strong&gt;, even in &lt;strong&gt;multi-threaded&lt;/strong&gt; programs.&lt;/li&gt;
&lt;li&gt;Allow user code to safely benefit from &lt;strong&gt;constant folding&lt;/strong&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; optimizations, just like variables declared as &lt;code&gt;final&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;what-is-a-stable-value&#34;&gt;What is a Stable Value?&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;sealed&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;interface&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;StableValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;T&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;A &lt;code&gt;StableValue&lt;/code&gt; is an object encapsulating immutable data. Unlike &lt;code&gt;final&lt;/code&gt; fields, which must be initialized upon object or class creation, Stable Values can be initialized on demand, after their declaration. This means they are only defined when their value is needed, which can improve startup performance of Java applications by avoiding loading the application&amp;rsquo;s complete state at startup.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Power of SVG for the Web</title>
      <link>https://blog.hot-coffee.dev/en/blog/links-in-svg/</link>
      <pubDate>Mon, 03 Feb 2025 18:20:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/links-in-svg/</guid>
      <description>&lt;style&gt;
    a:hover{
        text-decoration: underline;
    }
&lt;/style&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;SVG images (Scalable Vector Graphics) are widely used on the web due to their ability to scale without losing quality. They are XML-based files that can be easily included and modified in a web page.&lt;br&gt;
In this article, we will explore how to add HTML links to these images, dynamically change their style with CSS, and finally how to make them &lt;em&gt;responsive&lt;/em&gt;.&lt;/p&gt;
&lt;h2 id=&#34;adding-html-links-to-svg-images&#34;&gt;Adding HTML Links to SVG Images&lt;/h2&gt;
&lt;p&gt;Adding HTML links to an SVG image is very simple. Just wrap any SVG element with the &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag to make it clickable:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git: update-refs in a nutshell</title>
      <link>https://blog.hot-coffee.dev/en/blog/git_update_refs/</link>
      <pubDate>Mon, 22 Apr 2024 22:20:06 +0200</pubDate>
      <guid>https://blog.hot-coffee.dev/en/blog/git_update_refs/</guid>
      <description>&lt;p&gt;When working on a versioned project, it is relatively common to end up with a &amp;ldquo;stack&amp;rdquo; of branches. What could be more frustrating than having to rebase all the other branches on top of the first one when updating it? This process becomes even more tedious when the number of branches is high or when they are regularly modified.&lt;/p&gt;
&lt;p&gt;Git version 2.38&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; introduces a solution to this problem: the &lt;code&gt;update-refs&lt;/code&gt; rebase option.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
