<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IntelliJ IDEA on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/category/intellij-idea/</link><description>Recent content in IntelliJ IDEA on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 10 Jul 2026 08:54:25 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/category/intellij-idea/index.xml" rel="self" type="application/rss+xml"/><item><title>Getting Started with Exposed: Kotlin ORM Made Simple</title><link>https://foojayio.github.io/website/today/exposed-kotlin-orm-complete-guide/</link><pubDate>Mon, 06 Jul 2026 03:39:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/exposed-kotlin-orm-complete-guide/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;For quite some time, I have been a huge fan of and fascinated by JetBrains products, tools, and libraries because of their masterful craftsmanship in product creation and their pristine focus on building high-quality developer tools.&lt;/p&gt;
&lt;p&gt;Even more excitingly, JetBrains Java Annotated Monthly newsletters have featured most of the technical articles I wrote for Foojay on topics such as Java, Spring, Spring Boot 4, and OpenRewrite.&lt;/p&gt;
&lt;p&gt;Recently, one Kotlin Domain-Specific Language (DSL) library caught my attention. I immediately tried converting my existing Spring Boot 4 application from Java to Kotlin using Exposed, an ORM framework for Kotlin.
&lt;img src="https://foojayio.github.io/website/today/exposed-kotlin-orm-complete-guide/Exposed-1024x683.png" alt="Exposed" loading="lazy"&gt;
 Kotlin SQL Libary&lt;/p&gt;</description></item><item><title>You’re invited to IntelliJ IDEA Conf 2026!</title><link>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2026/</link><pubDate>Mon, 29 Jun 2026 18:35:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2026/</guid><description>&lt;p&gt;&lt;strong&gt;We are excited to invite you to IntelliJ IDEA Conf 2026, a free virtual event on September 8-9, 2026.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on September 8-9, 2026.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll be able to learn about a broad range of topics relevant to modern Java and Kotlin development, including language evolution, enterprise Java, Spring-based applications, build tooling, containerized workflows, JVM performance, and data access technologies. For more details, see the agenda below.&lt;/p&gt;</description></item><item><title>Ask a Lille Dev</title><link>https://foojayio.github.io/website/today/ask-a-lille-dev-what-java-developers-really-think-about-quality-frameworks-communities-and-careers/</link><pubDate>Tue, 16 Jun 2026 00:35:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/ask-a-lille-dev-what-java-developers-really-think-about-quality-frameworks-communities-and-careers/</guid><description>&lt;p&gt;During the DevLille 2026 conference in Lille, I interviewed several Java developers and tech professionals with one simple goal: collecting authentic and spontaneous insights from the Java ecosystem. ☕🎤&lt;/p&gt;
&lt;p&gt;The result became &lt;strong&gt;&amp;ldquo;Ask a Lille Dev&amp;rdquo;&lt;/strong&gt;, a mini podcast made of short interviews recorded directly during the conference. Instead of long talks or polished marketing speeches, the idea was simple: ask practical questions to people working in tech every day.&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK – Amazon Bedrock AgentCore – Part 3</title><link>https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/</link><pubDate>Sun, 10 May 2026 09:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/</guid><description>&lt;p&gt;In &lt;a href="https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;Part 1&lt;/a&gt;
 and &lt;a href="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/"&gt;Part 2&lt;/a&gt;
, we explored the Spring AI SDK and Amazon Bedrock AgentCore features, including the agentcore runtime starter and integration of agentcore memory. In this article, we will explore the integration of AgentCore built-in tools, including the Browser and Code Interpreter features.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Repository containing the companion code for the tutorial. &lt;a href="https://github.com/bsmahi/simple-spring-boot-agent" target="_blank" rel="noopener noreferrer"&gt;Go to GitHub&lt;/a&gt;
{#https://github.com/bsmahi/simple-spring-boot-agent}.&lt;/strong&gt;
&lt;img src="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-3/AgentcoreBrowser.png" alt="AgentCore Built-In Tool Browser" loading="lazy"&gt;
 Built-In Tool Browser&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;The use case I am trying to build here is for the given URL; it navigates the entire website and retrieves the content and gives key points and the summary of the page using &lt;strong&gt;the AgentCore Browser&lt;/strong&gt; tool.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK – Amazon Bedrock AgentCore – Part 2</title><link>https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</link><pubDate>Mon, 27 Apr 2026 09:09:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/</guid><description>&lt;br /&gt;
&lt;p&gt;&lt;em&gt;If you&amp;rsquo;re joining us from &lt;a href="https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;Part 1&lt;/a&gt;
 or need a quick refresher on the architecture, listen to this brief overview of how Spring AI and Amazon Bedrock work together.&lt;/em&gt;
&lt;em&gt;Generated using Notebook LLM for my previous &lt;a href="https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/"&gt;article&lt;/a&gt;
{#https://foojay.io/today/spring-ai-amazon-bedrock-sdk-guide/}&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In this article, we explore one of the AgentCore capabilities i.e., &lt;em&gt;&lt;strong&gt;memory&lt;/strong&gt;&lt;/em&gt;
&lt;img src="https://a.b.cdn.console.awsstatic.com/a/v1/ACHOUHHJ3XZF7J5AYP2XIR2NCZIPH56WAM33AFJA44HJSRMAO4DA/assets/images/Overview/ac_overviewchart_04_07.png" alt="" loading="lazy"&gt;
 &lt;em&gt;&lt;strong&gt;Source: Amazon&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;To begin, enable &lt;strong&gt;AgentCore memory&lt;/strong&gt; for the agent you built earlier.&lt;br&gt;
&lt;img src="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/SpringAISDK.png" alt="SpringAI SDK" loading="lazy"&gt;
&lt;/p&gt;
&lt;h3 id="h3-0-step-1-add-the-ai-model-and-agentcore-memory-dependencies"&gt;Step 1: Add the Ai model and AgentCore memory dependencies&lt;/h3&gt;
&lt;br /&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="xml" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;org.springframework.ai&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;spring-ai-model&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;
&amp;lt;dependency&amp;gt;
 &amp;lt;groupId&amp;gt;org.springaicommunity&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;spring-ai-agentcore-memory&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/pre&gt;
&lt;h3 id="h3-1-step-2-create-short-long-term-in-aws-management-console"&gt;Step 2: Create Short/Long Term in AWS Management Console&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;Navigate to &lt;strong&gt;Amazon Bedrock AgentCore &amp;gt; Memory&lt;/strong&gt; to create short/long-term memories.&lt;/em&gt;
&lt;img src="https://foojayio.github.io/website/today/explore-spring-ai-sdk-amazon-bedrock-agentcore-part-2/AgentCoreMemory-1024x441.png" alt="AgentCore Memory" loading="lazy"&gt;
 AgentCore Memory&lt;/p&gt;</description></item><item><title>Explore Spring AI SDK - Amazon Bedrock AgentCore - Part 1</title><link>https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/</link><pubDate>Mon, 20 Apr 2026 13:44:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-ai-amazon-bedrock-sdk-guide/</guid><description>&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Artificial intelligence has rapidly expanded across every industry since the inception of ChatGPT. It represents a breakthrough in how we build and use software. Moreover, this breakthrough technology has driven major transformation. At the same time, it has created significant noise and hype.&lt;/p&gt;
&lt;p&gt;Today, AI is no longer experimental. Instead, it has become essential, much like electricity and the internet. As a result, it now plays a key role in our daily lives. Overall, this shift reflects strong technological acceleration across industries.&lt;/p&gt;</description></item><item><title>25 Years of IntelliJ IDEA: The IDE That Grew Up With Java</title><link>https://foojayio.github.io/website/today/foojay-podcast-91/</link><pubDate>Mon, 02 Mar 2026 07:21:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-91/</guid><description>&lt;p&gt;In this Foojay Podcast, we&amp;rsquo;re celebrating a major milestone in Java development history: 25 years of IntelliJ IDEA.&lt;/p&gt;
&lt;p&gt;Think about it: IntelliJ IDEA launched in 2000, and since then, it has become the go-to IDE for millions of Java developers worldwide. From its revolutionary code completion and refactoring tools to AI-powered features and the recent unified Community and Ultimate release, IntelliJ has shaped how we write Java, and keeps reinventing itself to stay ahead.&lt;/p&gt;</description></item><item><title>Command completion (..) in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/command-completion-intellij-idea/</link><pubDate>Tue, 20 Jan 2026 07:31:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/command-completion-intellij-idea/</guid><description>&lt;p&gt;How many shortcuts can you remember? Three? Five? More? I try to learn as many as I can and still forget some of them&amp;hellip;&lt;/p&gt;
&lt;p&gt;What if you could unlock IntelliJ IDEA features, without having to remember shortcuts? You can still use shortcuts if you want. But you don&amp;rsquo;t &lt;em&gt;&lt;strong&gt;have&lt;/strong&gt;&lt;/em&gt;to.&lt;/p&gt;
&lt;p&gt;Command completion (..) is a new feature in IntelliJ IDEA that lets you discover and execute IDE actions right from your editor.&lt;/p&gt;</description></item><item><title>TornadoInsight - Compatibility with TornadoVM SDK 2.0+ &amp; Configuration Guide</title><link>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</link><pubDate>Tue, 30 Dec 2025 09:00:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadoinsight-compatibility-with-tornadovm-sdk-2-0-configuration-guide/</guid><description>&lt;figure class="wp-block-image size-full is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="298" height="298" src="tornado-insight.webp" alt="" class="wp-image-106112" style="width:138px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;This blog updates the previously published &lt;strong&gt;TornadoInsight&lt;/strong&gt; configuration &lt;a href="https://www.tornadovm.org/post/introducing-tornadoinsight-unleashing-the-power-of-tornadovm-in-intellij-idea" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;++guidelines++&lt;/strong&gt;&lt;/a&gt;
 and explains how to configure the required environment variable to ensure that TornadoInsight correctly detects the TornadoVM SDK when IntelliJ IDEA is launched from a graphical environment.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6bbq84970"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;TornadoInsight requires access to a compatible Java Development Kit (JDK) and the TornadoVM SDK.{#o7o5c20810}&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important update:&lt;/strong&gt;{#mvwo920904}&lt;/p&gt;
&lt;p&gt;Since version &lt;a href="https://github.com/beehive-lab/tornado-insight/releases/tag/v1.4.0" target="_blank" rel="noopener noreferrer"&gt;++v1.4.0++&lt;/a&gt;
, TornadoInsight can also use the &lt;strong&gt;JDK configured directly in IntelliJ IDEA&lt;/strong&gt; via &lt;strong&gt;Project Structure&lt;/strong&gt;. This means that, in many cases, users no longer need to configure the Java SDK in the plugins settings.{#welj420814}&lt;/p&gt;</description></item><item><title>Java developer's guide : Sync Rules &amp; Stop CI Failures</title><link>https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-2/</link><pubDate>Tue, 16 Dec 2025 15:53:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-2/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;
&lt;p&gt;Welcome back. In &lt;a href="https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-1/"&gt;&lt;strong&gt;Part 1&lt;/strong&gt;&lt;/a&gt;
, we installed &lt;strong&gt;SonarQube for IDE&lt;/strong&gt; in IntelliJ. You are now catching those nasty NullPointerExceptions and Optional.get() risks &lt;em&gt;before&lt;/em&gt; they leave your keyboard.&lt;/p&gt;
&lt;p&gt;But&amp;hellip; you are not working alone. You are part of a team pushing code to a repo full of XML configs, DTOs, and Services.&lt;/p&gt;
&lt;p&gt;Here is the nightmare scenario: You spend all day refactoring your &lt;strong&gt;Spring Boot&lt;/strong&gt; service. It looks perfect. You run your tests. They pass. You push it to Git. You grab a coffee. ☕ And then&amp;hellip; &lt;strong&gt;FAIL.&lt;/strong&gt; 🔴&lt;/p&gt;</description></item><item><title>SonarQube for IDE in IntelliJ: The Ultimate Java Developer’s Guide</title><link>https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-1/</link><pubDate>Fri, 12 Dec 2025 15:43:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/developers-guide-to-sonarqube-part-1/</guid><description>&lt;p&gt;Hola Java developers! 👋&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s be honest. We have all been there. You write a piece of code, it compiles perfectly, the unit tests pass, and you think: &lt;em&gt;&amp;ldquo;This is solid.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Then&amp;hellip; boom. The CI/CD pipeline fails 20 minutes later because of a security vulnerability. Or worse, a NullPointerException wakes you up on the weekend because you forgot to check if that Optional was actually present.&lt;/p&gt;
&lt;p&gt;We want to deliver &lt;strong&gt;High&lt;/strong&gt; &lt;strong&gt;Code Quality and Security&lt;/strong&gt;, but we are humans. We get tired, we lose focus.&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>Spring Framework 7 API Versioning Explained</title><link>https://foojayio.github.io/website/today/explore-spring-framework-7-features-api-versioning/</link><pubDate>Wed, 29 Oct 2025 06:45:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/explore-spring-framework-7-features-api-versioning/</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. To begin, I will deep dive into the &lt;em&gt;&lt;strong&gt;API&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;&lt;strong&gt;versioning&lt;/strong&gt;&lt;/em&gt; feature introduced in Spring Framework 7.
&lt;img src="https://foojayio.github.io/website/today/explore-spring-framework-7-features-api-versioning/Sb4version_1.png" alt="API Versioning" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;Any architectural or feature change stems from evolving business requirements, and API versioning is no exception. In today&amp;rsquo;s app-driven ecosystem, APIs are central to product integration and user experience.&lt;/p&gt;</description></item><item><title>Spring Cloud Stream for Real-Time Event-Driven Systems</title><link>https://foojayio.github.io/website/today/spring-cloud-stream-event-driven-architecture-part-1/</link><pubDate>Mon, 21 Jul 2025 13:33:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-cloud-stream-event-driven-architecture-part-1/</guid><description>&lt;p&gt;&lt;strong&gt;Envision operating a successful e-commerce platform where every moment is crucial. Customers make purchases, adjust inventory levels, process payments, and dispatch shipping alerts&amp;mdash;all in real time. In the background, microservices diligently function to guarantee seamless operations. However, how do these services interact effectively, particularly during peak traffic occurrences such as flash sales or holiday shopping events?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An efficient method to execute this use case involves utilizing Spring Cloud Stream (SCS) as the messaging infrastructure. SCS facilitates seamless interaction among microservices, enhancing the system&amp;rsquo;s responsiveness and scalability. A significant benefit of SCS is that it provides an abstraction layer, allowing developers to transition between messaging technologies such as Kafka or RabbitMQ or Pulsar or Amazon Kinesis without altering their fundamental business logic.&lt;/p&gt;</description></item><item><title>You’re Invited to IntelliJ IDEA Conf 2025!</title><link>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2025/</link><pubDate>Mon, 05 May 2025 10:20:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2025/</guid><description>&lt;h2 id="h2-0-we-are-excited-to-invite-you-to-intellij-idea-conf-2025-a-free-virtual-event"&gt;We are excited to invite you to IntelliJ IDEA Conf 2025, a free virtual event.&lt;/h2&gt;
&lt;p&gt;IntelliJ IDEA Conf is a celebration of the developer community, bringing together professionals who strive for excellence in software development. Join us for this free, live online conference and learn from industry leaders and experts on June 3&amp;ndash;4, 2025.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll be able to learn about a variety of topics, including Core Java, Kotlin, Java and AI, Spring Boot, GraalVM, Gradle, Junit and Kafka. For more details, see the agenda below.
&lt;img src="https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2025/IntelliJ-IDEA-Conf-2025.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Code Reviews with AI a developer guide</title><link>https://foojayio.github.io/website/today/code-reviews-with-ai-a-developer-guide/</link><pubDate>Fri, 07 Mar 2025 12:10:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/code-reviews-with-ai-a-developer-guide/</guid><description>&lt;p&gt;Code reviews are a cornerstone of software development. They&amp;rsquo;re where we share knowledge, catch bugs early, and ensure our code meets the highest standards.&lt;/p&gt;
&lt;p&gt;But let&amp;rsquo;s be honest&amp;hellip;&lt;/p&gt;
&lt;p&gt;Traditional code reviews can be time-consuming and tedious and sometimes even miss subtle yet critical issues. Enter the age of AI-powered code review, a game-changer that addresses these challenges and elevates code quality to new heights.&lt;/p&gt;
&lt;p&gt;This article dives into the common pitfalls of code reviews and explores how AI tools can revolutionize each phase of the development lifecycle.&lt;/p&gt;</description></item><item><title>Review of Junie, a coding agent by JetBrains – Revie</title><link>https://foojayio.github.io/website/today/checking-out-junie-a-coding-agent-by-jetbrains/</link><pubDate>Wed, 26 Feb 2025 01:38:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/checking-out-junie-a-coding-agent-by-jetbrains/</guid><description>&lt;p&gt;Other languages: &lt;a href="https://flounder.dev/es/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/ko/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;한국어&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
 &lt;a href="https://flounder.dev/zh/posts/trying-out-junie/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Recently, I talked about &lt;a href="https://flounder.dev/duplicate-finder/" target="_blank" rel="noopener noreferrer"&gt;Duplicate Finder&lt;/a&gt;
 on the &lt;a href="https://foojayio.github.io/website/today/category/podcast/"&gt;Foojay Podcast&lt;/a&gt;
 hosted by &lt;a href="https://foojay.social/@frankdelporte" target="_blank" rel="noopener noreferrer"&gt;Frank Delporte&lt;/a&gt;
. We briefly touched upon implementing support for other formats, and Frank asked if I&amp;rsquo;m planning on adding AsciiDoc, as it could be useful for his technical writing at Azul.&lt;/p&gt;
&lt;p&gt;We agreed to think about adding the support soon. At the same time I got access to &lt;a href="https://www.jetbrains.com/junie/" target="_blank" rel="noopener noreferrer"&gt;Junie&lt;/a&gt;
, a newly announced coding agent by JetBrains, which is currently in early access. After a while, a thought came to me that this is a great opportunity to try it in action.&lt;/p&gt;</description></item><item><title>More Free Shells for your Java IDE</title><link>https://foojayio.github.io/website/today/more-free-shells-for-your-java-ide/</link><pubDate>Tue, 31 Dec 2024 14:30:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/more-free-shells-for-your-java-ide/</guid><description>&lt;p&gt;You may be using one of the terminal applications installed on your operating system or use the included terminal panel of the IDE.&lt;/p&gt;
&lt;p&gt;Not all shells are included in your IDE. Here is a list of shells by default supported for the IDE&amp;rsquo;s based on my &lt;strong&gt;Windows&lt;/strong&gt; computer.&lt;/p&gt;
&lt;p&gt;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;|&amp;mdash;&amp;mdash;&amp;mdash;|&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;ndash;|
| &lt;strong&gt;Shell&lt;/strong&gt; | IntelliJ IDEA | Eclipse | Apache NetBeans |
| Command Prompt | ✅ | ✅ | |
| Powershell | ✅ | | |
| WSL (Windows Subsystem for Linux) | ✅ | ✅ | |
| Git Bash | (1) | ✅ | |
| Cygwin | (1) | | ✅ |
| SSH (Secure SHell) | | ✅ | ✅ |&lt;/p&gt;</description></item><item><title>Build and Run TornadoVM with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</link><pubDate>Wed, 20 Nov 2024 19:08:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/build-and-run-tornadovm-with-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://www.tornadovm.org/" target="_blank" rel="noopener noreferrer"&gt;TornadoVM&lt;/a&gt;
 is an open-source Java technology that is developed to aid Java programmers in adapting their code bases for hardware acceleration.&lt;/p&gt;
&lt;p&gt;This blog aims to explain how Java programmers can build TornadoVM with IntelliJ IDEA, and how they can run TornadoVM unit-tests or other Java programs.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="h2-0-prerequisites"&gt;&lt;em&gt;Prerequisites&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;This blog uses IntelliJ IDEA 2024.2.4 version and the list of required plugins are as follows:{#r55ph1440}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Python &lt;a href="https://plugins.jetbrains.com/plugin/631-python" target="_blank" rel="noopener noreferrer"&gt;++plugin++&lt;/a&gt;
 to be installed in IntelliJ. This plugin allows python scripting from the IDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;{#x95ro33520}&lt;/p&gt;</description></item><item><title>Spring Boot: Java Template Engine (JTE)</title><link>https://foojayio.github.io/website/today/spring-boot-java-template-engine-jte/</link><pubDate>Wed, 13 Nov 2024 09:03:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-java-template-engine-jte/</guid><description>&lt;h3 id="h3-0-hello-to-all-java-and-spring-enthusiasts-i-am-the-java-template-engine-a-fresh-newcomer-to-the-spring-initializer-ecosystem"&gt;Hello to all Java and Spring enthusiasts. I am the Java Template Engine, a fresh newcomer to the Spring Initializer Ecosystem.&lt;/h3&gt;
&lt;p&gt;I have gained popularity as a template engine for developing user interface applications that use Java syntax within Spring Boot applications, alongside other engines such as Freemarker, Thymeleaf, Mustache, and Velocity. Many developers widely use Spring Boot, a framework that simplifies Java application development, and incorporating a template engine like mine streamlines the process of creating dynamic and responsive user interfaces.&lt;/p&gt;</description></item><item><title>Book Review: Mastering the Java Virtual Machine</title><link>https://foojayio.github.io/website/today/book-review-mastering-the-java-virtual-machine/</link><pubDate>Fri, 18 Oct 2024 13:54:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-mastering-the-java-virtual-machine/</guid><description>&lt;p&gt;&lt;strong&gt;Otávio Santana&amp;rsquo;s&lt;/strong&gt; &lt;strong&gt;&amp;ldquo;Mastering the Java Virtual Machine&amp;rdquo;&lt;/strong&gt; takes readers on an insightful journey through the inner workings of the JVM. As I read this book, I found myself reconnecting with the fundamentals of Java programming while also discovering new depths of understanding.&lt;/p&gt;
&lt;p&gt;The book strikes a perfect balance between nostalgia and innovation. It reminded me of my early programming days, while also introducing cutting-edge concepts that are crucial for modern Java development. Santana uses clever technical metaphors to make complex JVM internals more accessible, bridging the gap between theory and practical application.&lt;/p&gt;</description></item><item><title>Profile IntelliJ IDEA with its own profiler</title><link>https://foojayio.github.io/website/today/profile-intellij-idea-with-its-own-profiler/</link><pubDate>Wed, 16 Oct 2024 15:49:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/profile-intellij-idea-with-its-own-profiler/</guid><description>&lt;p&gt;Other languages: &lt;a href="https://flounder.dev/es/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/ko/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;한국어&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
 &lt;a href="https://flounder.dev/zh/posts/profile-idea-with-idea/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Just like my &lt;a href="https://foojayio.github.io/website/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/"&gt;previous post&lt;/a&gt;
, this one is going to be slightly meta. Obviously, you can use IntelliJ IDEA &lt;a href="https://flounder.dev/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;to profile another process&lt;/a&gt;
, but did you know IntelliJ IDEA can profile itself?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This might be useful if you are writing an &lt;a href="https://plugins.jetbrains.com/docs/intellij/sdk.html" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA plugin&lt;/a&gt;
 and need to address issues related to your plugin&amp;rsquo;s performance.&lt;/p&gt;
&lt;p&gt;Also, regardless of whether you are a plugin author, the described case might be interesting to you because the profiling strategy that I&amp;rsquo;ll cover is not exclusive to IntelliJ IDEA &amp;ndash; you can use it to troubleshoot similar bottlenecks in other types of projects and using other tools.&lt;/p&gt;</description></item><item><title>Allocation Profiling in Java</title><link>https://foojayio.github.io/website/today/get-started-with-allocation-profiling/</link><pubDate>Fri, 09 Aug 2024 08:44:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/get-started-with-allocation-profiling/</guid><description>&lt;p&gt;&lt;strong&gt;Read in other languages&lt;/strong&gt; : &lt;a href="https://flounder.dev/zh/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/allocation-profiling/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;We often find ourselves in situations when code is not working properly, and we have no idea where to even begin investigating.&lt;/p&gt;
&lt;p&gt;Can&amp;rsquo;t we just stare at the code until the solution eventually comes to us? Sure, but this method probably won&amp;rsquo;t work without deep knowledge of the project and a lot of mental effort. A smarter approach would be to use the tools you have at hand. They can point you in the right direction.&lt;/p&gt;</description></item><item><title>A Beginner's Guide to IntelliJ Profiler</title><link>https://foojayio.github.io/website/today/beginners-guide-to-java-profiler/</link><pubDate>Thu, 04 Jul 2024 06:26:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/beginners-guide-to-java-profiler/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/get-started-with-profiling/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Sometimes your app works, but you want to increase performance by boosting its throughput or reducing latency. Other times, you just want to know how code behaves at runtime, determine where the hot spots are, or figure out how a framework operates under the hood.&lt;/p&gt;
&lt;p&gt;This is a perfect use case for profilers. They offer a bird&amp;rsquo;s eye view of arbitrarily large execution chunks, which helps you see problems at scale.&lt;/p&gt;</description></item><item><title>Hack a Java application with the debugger</title><link>https://foojayio.github.io/website/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/</link><pubDate>Thu, 13 Jun 2024 04:58:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugger-godmode-hacking-a-jvm-application-with-the-debugger/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/debugger-god-mode/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Back in the day, computer games were different. Not only have graphics and mechanics evolved since, but there&amp;rsquo;s also one characteristic that doesn&amp;rsquo;t seem very common in games today: nearly all of them had cheat codes.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Cheat codes were sequences of keys that would give you something extraordinary, such as infinite ammo or the ability to walk through walls. The most common and powerful of them was &amp;lsquo;god mode&amp;rsquo; &amp;ndash; it made you invincible.&lt;/p&gt;</description></item><item><title>Foojay Podcast #50: JCON Report, Part 2 - Maven, Software Security, Code Quality</title><link>https://foojayio.github.io/website/today/foojay-podcast-50/</link><pubDate>Mon, 27 May 2024 08:07:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-50/</guid><description>&lt;p&gt;This is part 2 of the interviews we recorded at the JCON conference earlier this month in Germany. In this episode, you get two main topics: &lt;strong&gt;Maven and Code Quality&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the first part, you&amp;rsquo;ll hear Karl Heinz Marbaise and Steve Poole discuss the Maven project, the repository, Sonaytype, and the security impact of dependencies.&lt;/p&gt;
&lt;p&gt;But next to security, we developers are also responsible for creating readable and maintainable code. Miro Wengner, Marit van Dijk, and Hinse ter Schuur dive into this topic, in the second part!&lt;/p&gt;</description></item><item><title>Learn how to debug unresponsive Java/JVM applications, then reload the fix on the fly, using a hands-on example</title><link>https://foojayio.github.io/website/today/debug-unresponsive-apps/</link><pubDate>Thu, 23 May 2024 07:14:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/debug-unresponsive-apps/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/debug-unresponsive-apps/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There are a lot of debugger tutorials out there that teach you how to set line breakpoints, log values, or evaluate expressions. While this knowledge alone gives you a lot of tools for debugging your application, real-world scenarios may be somewhat trickier and require a more advanced approach.&lt;/strong&gt;
&lt;img src="https://flounder.dev/img/debug-unresponsive-apps-banner.png" alt="Debug Unresponsive Apps – post banner" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;In this article, we will learn how to locate code that causes a UI freeze without much prior knowledge of the project and fix faulty code on the fly.&lt;/p&gt;</description></item><item><title>Debug Without Breakpoints – Guide to IntelliJ IDEA's Pause</title><link>https://foojayio.github.io/website/today/debug-without-breakpoints/</link><pubDate>Mon, 22 Apr 2024 06:59:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/debug-without-breakpoints/</guid><description>&lt;p&gt;Read in other languages: &lt;a href="https://flounder.dev/zh/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;中文&lt;/a&gt;
 &lt;a href="https://flounder.dev/es/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;Español&lt;/a&gt;
 &lt;a href="https://flounder.dev/pt/posts/debug-without-breakpoints/" target="_blank" rel="noopener noreferrer"&gt;Português&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In a typical debugging scenario, you would set breakpoints to tell the debugger when to suspend your program. A breakpoint usually corresponds to the moment that marks the starting point of the further investigation.&lt;/p&gt;
&lt;p&gt;However, in some situations you aren&amp;rsquo;t certain about where to set a breakpoint. Other times, you might prefer to suspend the program at a particular &lt;em&gt;time&lt;/em&gt; rather than aiming at a specific &lt;em&gt;line&lt;/em&gt;.
&lt;img src="https://foojayio.github.io/website/today/debug-without-breakpoints/debug-without-breakpoints-banner-1024x538.png" alt="post banner" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>IntelliJ IDEA and Open Liberty - Effective Java app development</title><link>https://foojayio.github.io/website/today/effective-cloud-native-java-app-development-with-open-liberty-in-intellij-idea/</link><pubDate>Fri, 12 Apr 2024 13:36:25 +0000</pubDate><guid>https://foojayio.github.io/website/today/effective-cloud-native-java-app-development-with-open-liberty-in-intellij-idea/</guid><description>&lt;p&gt;&lt;strong&gt;See how you can use Liberty Tools for IntelliJ IDEA to enable rapid, easy, and efficient development of cloud-native Java applications with Open Liberty and WebSphere Liberty&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When it comes to integrated development environments, within the Java community, IntelliJ IDEA is the most popular IDE amongst professional developers. It is the preferred IDE of choice by two-fifths of developers, making up the biggest majority of IDE users in this community, according to JRebel&amp;rsquo;s &lt;a href="https://www.jrebel.com/resources/java-developer-productivity-report-2023" target="_blank" rel="noopener noreferrer"&gt;2023 Java Developer Productivity Report&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Tips for reading code</title><link>https://foojayio.github.io/website/today/tips-for-reading-code/</link><pubDate>Tue, 26 Mar 2024 11:46:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/tips-for-reading-code/</guid><description>&lt;p&gt;&lt;strong&gt;As developers, we read code more than we write it. When adding new features or fixing bugs, we first need to understand existing code, so we can make the right changes in the right place.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When reading code inside the IDE, &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
 helps us to read and understand code by providing helpful features like syntax highlighting and inlay hints. But there are more features to help us understand a piece of code.&lt;/p&gt;</description></item><item><title>TornadoInsight: Harness the Power of TornadoVM from IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/</link><pubDate>Fri, 08 Mar 2024 11:59:07 +0000</pubDate><guid>https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/tornadoinsight-an-intellij-plugin-for-tornavovm/tornado-insight.webp" alt="" loading="lazy"&gt;
&lt;br&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TornadoInsight is an open-source IntelliJ IDEA plugin for enhancing the developer experience when working with TornadoVM.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It provides a built-in on-the-fly static checker, empowering developers to identify unsupported Java features in TornadoVM and understand the reasons behind these limitations.&lt;/p&gt;
&lt;p&gt;Additionally, TornadoInsight introduces a dynamic testing framework that enables developers to easily test individual TornadoVM tasks. It automatically wraps TornadoVM tasks, invoking the native TornadoVM runtime on the developer&amp;rsquo;s machine for seamless debugging and testing. In this blog, we expand on TornadoInsight by:&lt;/p&gt;</description></item><item><title>You’re Invited to IntelliJ IDEA Conf 2024!</title><link>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2024/</link><pubDate>Tue, 27 Feb 2024 08:13:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/youre-invited-to-intellij-idea-conf-2024/</guid><description>&lt;p&gt;We are back and excited to invite you to &lt;a href="http:https://lp.jetbrains.com/intellij-idea-conf-2024/?utm_source=partners&amp;amp;amp;utm_medium=foojay&amp;amp;amp;utm_campaign=intellijideaconf//" title="IntelliJ IDEA Conf 2024"&gt;IntelliJ IDEA Conf 2024&lt;/a&gt;
, a developer-focused, live, online event that is free for all to attend!&lt;/p&gt;
&lt;p&gt;IntelliJ IDEA Conf celebrates the developer community and its desire to learn and improve every day.&lt;/p&gt;
&lt;p&gt;Join us for this free, live online conference and learn from industry leaders and experts on March 6&amp;ndash;7, 2024.&lt;/p&gt;
&lt;p&gt;You&amp;rsquo;ll be able to learn about a variety of topics, like Core Java, Kotlin, Java and AI, Apache Maven 4, Spring Boot, Micronaut, Testcontainers, Secure Coding, and testing frameworks like JUnit, Mockito, and AssertJ.&lt;/p&gt;</description></item><item><title>lntelliJ IDEA: Selectively Commit Changes to a File</title><link>https://foojayio.github.io/website/today/lntellij-idea-selectively-commit-changes-to-a-file/</link><pubDate>Thu, 21 Dec 2023 06:15:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/lntellij-idea-selectively-commit-changes-to-a-file/</guid><description>&lt;p&gt;&lt;strong&gt;Sometimes you&amp;rsquo;re making multiple changes to a file that you don&amp;rsquo;t want to commit together. For example, if you&amp;rsquo;re working on a new feature, but notice some other small things you want to fix. If these changes are in separate files, we can commit each file separately. But what if they&amp;rsquo;re in the same file?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
 (as of version &lt;a href="https://blog.jetbrains.com/idea/2023/12/intellij-idea-2023-3/" target="_blank" rel="noopener noreferrer"&gt;2023.3&lt;/a&gt;
), we can now select which chunks and specific lines we want to add to our commit.&lt;/p&gt;</description></item><item><title>Profiling Maven Projects with my IntelliJ Profiler Plugin</title><link>https://foojayio.github.io/website/today/profiling-maven-projects-with-my-intellij-profiler-plugin/</link><pubDate>Thu, 14 Dec 2023 10:41:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/profiling-maven-projects-with-my-intellij-profiler-plugin/</guid><description>&lt;h3 id="h3-0-or-i-just-released-version-0-0-11-with-a-cool-new-feature-that-i-can-t-wait-to-tell-you-about"&gt;Or: I just released version 0.0.11 with a cool new feature that I can&amp;rsquo;t wait to tell you about&amp;hellip;&lt;/h3&gt;
&lt;p&gt;According to the recent &lt;a href="https://www.jetbrains.com/lp/devecosystem-2023/java/" target="_blank" rel="noopener noreferrer"&gt;JetBrains survey&lt;/a&gt;
, most people use Maven as their build system and build Spring Boot applications with Java. Yet my profiling plugin for IntelliJ only supports profiling pure Java run configurations. Configurations where the JVM gets passed the main class to run. This is great for tiny examples where you directly right-click on the &lt;code&gt;main&lt;/code&gt; method and profile the whole application using the context menu:
&lt;img src="https://mostlynerdless.de/wp-content/uploads/2023/12/image-2.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Explore project structure with IntelliJ IDEA's Dependency Matrix</title><link>https://foojayio.github.io/website/today/explore-project-structure-with-intellij-ideas-dependency-matrix/</link><pubDate>Mon, 20 Nov 2023 10:28:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/explore-project-structure-with-intellij-ideas-dependency-matrix/</guid><description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll look at exploring project structure with &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
&amp;rsquo;s Dependency Matrix.&lt;/p&gt;
&lt;p&gt;When working with large, complex software projects, we need to understand the dependencies between components in your projects. IntelliJ IDEA has a feature called &lt;strong&gt;Dependency Structure Matrix&lt;/strong&gt; (&lt;strong&gt;DSM&lt;/strong&gt; ), or &lt;strong&gt;Dependency Matrix&lt;/strong&gt;, that can help us with this.&lt;/p&gt;
&lt;p&gt;When you are new to a project, the Dependency Matrix can help you get an overview of the dependencies in the project. The Dependency Matrix can also help us get an idea of how hard it will be to split a project, based on the dependencies between components. Finally, it can help us find and untangle cyclic dependencies.&lt;/p&gt;</description></item><item><title>OpenAPI Generator: From YAML to JetBrains HTTP Client</title><link>https://foojayio.github.io/website/today/creating-an-openapi-generator-from-scratch-from-yaml-to-jetbrains-http-client/</link><pubDate>Fri, 10 Nov 2023 10:41:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-an-openapi-generator-from-scratch-from-yaml-to-jetbrains-http-client/</guid><description>&lt;h3 id="h3-0-in-this-article-i-ll-be-implementing-an-openapi-generator-from-scratch-so-you-can-too-we-ll-be-creating-a-very-simple-generator-for-the-jetbrains-http-client"&gt;&lt;strong&gt;In this article, I&amp;rsquo;ll be implementing an OpenAPI generator from scratch so you can too! We&amp;rsquo;ll be creating a very simple generator for the Jetbrains HTTP Client.&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://lengrand.fr/content/images/2023/11/F9_7HZZW4AEvcHF.jpeg" alt="Creating an OpenAPI generator from scratch : From YAML to JetBrains HTTP Client" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;This is the online version of the article with the same name I wrote for the Dutch Java Magazine.&lt;/p&gt;
&lt;p&gt;In the previous edition of the magazine, we discussed how the &lt;a href="https://www.jetbrains.com/help/idea/http-client-reference.html?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;JetBrains HTTP Client&lt;/a&gt;
 could be used to run HTTP Queries, automate them and even use them in your CI/CD pipelines. Just like &lt;a href="https://www.postman.com/?ref=lengrand.fr" target="_blank" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;
, but text based and can be part of your source code. Pretty cool.&lt;/p&gt;</description></item><item><title>Working with GitLab Merge Requests in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/working-with-gitlab-merge-requests-in-intellij-idea/</link><pubDate>Thu, 10 Aug 2023 09:57:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/working-with-gitlab-merge-requests-in-intellij-idea/</guid><description>&lt;p&gt;&lt;strong&gt;In this tutorial, we will take a look at working with GitLab Merge Requests inside IntelliJ IDEA.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;When reviewing Merge Requests in a web interface, we don&amp;rsquo;t have the same support that our IDE gives us, like syntax highlighting and the context within which the code was written.&lt;/p&gt;
&lt;p&gt;IntelliJ IDEA has support for reviewing and merging GitLab Merge Requests. These features are available if the IntelliJ IDEA project has a remote that points to GitLab.&lt;/p&gt;</description></item><item><title>How to Create an Open Source Pull Request (PR)</title><link>https://foojayio.github.io/website/today/creating-an-open-source-pull-request/</link><pubDate>Wed, 19 Jul 2023 11:26:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-an-open-source-pull-request/</guid><description>&lt;p&gt;&lt;strong&gt;In this tutorial, we are going to take a look at contributing to Open Source Software, specifically how to do a pull request (PR).&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We will look at forking and cloning the project, making the changes, committing and pushing these changes, creating the pull request, the review and hopefully merge of your PR.&lt;/p&gt;
&lt;p&gt;The same process may apply when making contributions to a project at work that you don&amp;rsquo;t own. In this example, the project is on GitHub. Other Git code repositories may use a similar process.&lt;/p&gt;</description></item><item><title>Reactive Programming Made Easy</title><link>https://foojayio.github.io/website/today/reactive-programming-made-easy/</link><pubDate>Fri, 14 Jul 2023 08:47:11 +0000</pubDate><guid>https://foojayio.github.io/website/today/reactive-programming-made-easy/</guid><description>&lt;p&gt;This article discusses essential features and tools in IntelliJ IDEA for Reactor developers. These include live templates, a dedicated debug mode, and a couple of inspections.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve got all of the project Reactor adepts and enthusiasts out there covered! Whether you&amp;rsquo;re a seasoned pro or just taking your first steps in the field, IntelliJ IDEA will make reactive coding a breeze. It simplifies the complexities of Reactive Streams, ensuring a smooth and efficient experience for all skill levels.&lt;/p&gt;</description></item><item><title>Foojay Podcast #26: The Future of Source Control and CI/CD</title><link>https://foojayio.github.io/website/today/foojay-podcast-26/</link><pubDate>Mon, 26 Jun 2023 08:35:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-26/</guid><description>&lt;p&gt;As developers, we like to automate the boring parts of our job. This automation includes the source control system, build pipelines, and code analysis tools.&lt;/p&gt;
&lt;p&gt;In recent decades, we have seen evolutions from CVS to Subversion to Git. Is this the endpoint? Did we find the holy grail in version control? Or what evolutions are waiting for us?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s find out together with these fantastic guests&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is the final episode of season 2 of the Foojay Podcast. See you in September for the start of our new season with more JUGs, the launch of Java 21, and much more!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Manifold vs. Lombok: Enhancing Java with Property Support</title><link>https://foojayio.github.io/website/today/manifold-vs-lombok-enhancing-java-with-property-support/</link><pubDate>Mon, 19 Jun 2023 18:04:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/manifold-vs-lombok-enhancing-java-with-property-support/</guid><description>&lt;p&gt;Today, we&amp;rsquo;ll explore an intriguing aspect of Manifold: its property support.&lt;/p&gt;
&lt;p&gt;In comparison, we&amp;rsquo;ll also examine Lombok, a popular library that offers similar features.&lt;/p&gt;
&lt;p&gt;By analyzing the differences between these two projects, we can gain insight into their core philosophies and advantages.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s dive in and discover how Manifold&amp;rsquo;s property support stands out.&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/z-9jSMq_Yk8?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;As always, you can find the code examples and additional resources for this post on my &lt;a href="https://github.com/shai-almog/java-book/" target="_blank" rel="noopener noreferrer"&gt;GitHub page&lt;/a&gt;
.&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>Write Once, Run Embedded in any IDE</title><link>https://foojayio.github.io/website/today/write-once-run-embedded-in-any-ide/</link><pubDate>Tue, 16 May 2023 13:34:19 +0000</pubDate><guid>https://foojayio.github.io/website/today/write-once-run-embedded-in-any-ide/</guid><description>&lt;p&gt;&lt;a href="https://foojayio.github.io/website/time-zones.png"&gt;&lt;img src="https://foojayio.github.io/website/today/write-once-run-embedded-in-any-ide/time-zones-1024x192.png" alt="Same Time Zones application running in IntelliJ IDEA, Eclipse and NetBeans" title="Same application running in IntelliJ IDEA, Eclipse and NetBeans" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Having written many Java GUI applications, I thought it would be cool to run them embedded in IntelliJ IDEA, Eclipse and NetBeans. I didn&amp;rsquo;t want to write three plugins per application so I came up with this solution.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-the-embedded-panel-criteria"&gt;The embedded panel criteria&lt;/h2&gt;
&lt;p&gt;To convert my Java Swing applications to run embedded in an IDE, I had to put the user interface in a panel with minimal implementation changes. I came up with these &lt;em&gt;should ideally&lt;/em&gt; criteria:&lt;/p&gt;</description></item><item><title>Analyzing dependencies in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/analyzing-dependencies-in-intellij-idea/</link><pubDate>Thu, 11 May 2023 09:33:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/analyzing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;If you&amp;rsquo;re working on a real world project, you&amp;rsquo;re probably using external dependencies.&lt;/p&gt;
&lt;p&gt;You might need to analyze which dependencies your application uses.&lt;/p&gt;
&lt;p&gt;For example, you may want to find out how a particular version of a dependency ended up in your application.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at how IntelliJ IDEA can help you to analyze dependencies.&lt;/p&gt;
&lt;p&gt;We can view our dependencies in the Maven or Gradle tool window.&lt;/p&gt;
&lt;p&gt;Here, we can expand dependencies to show their transitive dependencies, or collapse them again.&lt;/p&gt;</description></item><item><title>Replacing Postman with the Jetbrains HTTP Client</title><link>https://foojayio.github.io/website/today/replacing-postman-with-the-jetbrains-http-client/</link><pubDate>Thu, 13 Apr 2023 06:59:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/replacing-postman-with-the-jetbrains-http-client/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;TL;DR: I&amp;rsquo;ve created the first version of an openapi-generator for the JetBrains HTTP Client, and together with the CLI runner it allows you to play against APIs without ever going out of your terminal and it can even run in your CI/CD pipeline.&lt;/strong&gt; &lt;a href="https://github.com/jlengrand/dotaClient" title="See repository here" target="_blank" rel="noopener noreferrer"&gt;&lt;strong&gt;See repository here&lt;/strong&gt;&lt;/a&gt;
&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I work a lot with APIs, whether for an app I develop myself, or to interact with others. Most people I know tend to use Postman for this. But &lt;a href="https://twitter.com/jlengrand/status/1620343955127689216" title="I personally don&amp;#39;t quite like the product any more" target="_blank" rel="noopener noreferrer"&gt;I personally don&amp;rsquo;t quite like the product any more&lt;/a&gt;
, and it forces me to move out of my IntelliJ environment which really kills my productivity.&lt;/p&gt;</description></item><item><title>Cherry-Pick: Move a Commit to a Different Branch</title><link>https://foojayio.github.io/website/today/cherry-pick-move-a-commit-to-a-different-branch/</link><pubDate>Wed, 05 Apr 2023 13:53:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/cherry-pick-move-a-commit-to-a-different-branch/</guid><description>&lt;p&gt;There are several reasons why you might want to move a commit to a different branch.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look at some of them.&lt;/p&gt;
&lt;h2 id="h2-0-committed-to-the-wrong-branch"&gt;Committed to the wrong branch&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;re working on a new feature, but an urgent bug came in.&lt;/p&gt;
&lt;p&gt;You fixed the bug and committed the fix, but oops&amp;hellip; you forgot to create a new branch for the bugfix!&lt;/p&gt;
&lt;p&gt;Now this bugfix is on the wrong branch. How do we fix this?
&lt;img src="https://foojayio.github.io/website/today/cherry-pick-move-a-commit-to-a-different-branch/CommitOnWrongBranch-1024x575.png" alt="IntelliJ IDEA Git log window showing a bugfix commit on a new-feature branch" loading="lazy"&gt;
 Bugfix commit is on the wrong branch&lt;/p&gt;</description></item><item><title>Watch Area and Renderers</title><link>https://foojayio.github.io/website/today/watch-area-and-renderers/</link><pubDate>Sat, 25 Mar 2023 07:25:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/watch-area-and-renderers/</guid><description>&lt;p&gt;This is it. The &lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;debugging book is live&lt;/a&gt;
. I would really appreciate reviews and feedback!&lt;/p&gt;
&lt;p&gt;I also finished recording and editing the &lt;a href="https://course.debugagent.com/" target="_blank" rel="noopener noreferrer"&gt;entire course&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;There are 50 total videos which total in 7 hours&amp;hellip; I also recorded additional videos for the two other free courses &lt;a href="https://www.youtube.com/watch?v=1Bum2gYETUQ&amp;amp;amp;list=PL8GhfcywW9YMucwRw2IbpeCp1FBMEgsmk" target="_blank" rel="noopener noreferrer"&gt;for beginners&lt;/a&gt;
 and for &lt;a href="https://www.youtube.com/watch?v=3oNT_VRrfqE&amp;amp;amp;list=PL8GhfcywW9YNuNHrG0FAg5xiprfYcYyuL" target="_blank" rel="noopener noreferrer"&gt;modern Java&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;So keep an eye on those!&lt;/p&gt;
&lt;h2 id="h2-0-renderers"&gt;Renderers&lt;/h2&gt;
&lt;p&gt;In today&amp;rsquo;s video we discuss one of my favorite obscure IDE features: renderers. Very few people are aware of them. I explained them in the past but I feel I didn&amp;rsquo;t properly explain why they are so much better than any other alternative. This time I think I got the explanation right.&lt;/p&gt;</description></item><item><title>Efficient Memory Mapping for Terabyte Sparse Files in Java</title><link>https://foojayio.github.io/website/today/efficient-memory-mapping-for-terabyte-sparse-files-in-java/</link><pubDate>Wed, 15 Mar 2023 11:50:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/efficient-memory-mapping-for-terabyte-sparse-files-in-java/</guid><description>&lt;p&gt;On Linux, you can create &lt;a href="https://en.wikipedia.org/wiki/Sparse_file" title="sparse files" target="_blank" rel="noopener noreferrer"&gt;sparse files&lt;/a&gt;
, where only the pages (of 4 KiB) that are touched utilise either memory or disk space.&lt;/p&gt;
&lt;p&gt;This allows you to memory map large virtual regions without worrying about wasted memory or disk&lt;/p&gt;
&lt;p&gt;In this program, you can see it reserves 8 TiB (8,192 GiB)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/efficient-memory-mapping-for-terabyte-sparse-files-in-java/Screen-Shot-2023-03-06-at-11.11.24-AM-1024x480.png" alt="" loading="lazy"&gt;
&lt;br&gt;
&lt;em&gt;Figure 1. Test 1: Sparse file&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tip: x &amp;lt;&amp;lt; y means x × 2y therefore:&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic"&gt;1L &amp;lt;&amp;lt; 10 = 1 KiB (1024 bytes),
1L &amp;lt;&amp;lt; 20 = 1 MiB (10242 bytes),
1L &amp;lt;&amp;lt; 30 = 1 GiB (10243 bytes),
1L &amp;lt;&amp;lt; 40 = 1 TiB etc&lt;/pre&gt;
&lt;p&gt;Using multiples of 10 for the shift makes them easier to read.&lt;/p&gt;</description></item><item><title>Getting Started with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/getting-started-with-intellij-idea/</link><pubDate>Mon, 13 Mar 2023 08:26:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-intellij-idea/</guid><description>&lt;p&gt;First up, I have&lt;a href="https://www.jetbrains.com/idea/guide/tutorials/getting-started-intellij-idea/" target="_blank" rel="noopener noreferrer"&gt;created a tutorial on the IntelliJ IDEA Guide&lt;/a&gt;
 if you want to view the content with videos. I&amp;rsquo;ll concentrate on text-based for this article.&lt;/p&gt;
&lt;p&gt;When someone new joins your team, it can be quite an overwhelming experience.&lt;/p&gt;
&lt;p&gt;There are lots of people to meet, new technologies to learn, different processes to learn and of course, an IDE to learn!&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s helpful to remember what every new starter wants, they want to make a difference, they want to add value, they want to &lt;em&gt;move the needle&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Using Bookmarks in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/using-bookmarks-in-intellij-idea/</link><pubDate>Tue, 07 Mar 2023 15:07:04 +0000</pubDate><guid>https://foojayio.github.io/website/today/using-bookmarks-in-intellij-idea/</guid><description>&lt;p&gt;In this tutorial, we&amp;rsquo;re going to take a look at using bookmarks in &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Bookmarks can come in handy while navigating a codebase, when you see something interesting that you want to come back to later.&lt;/p&gt;
&lt;p&gt;You could use Recent Files (&lt;strong&gt;⌘E&lt;/strong&gt; on macOS, or &lt;strong&gt;Control+E&lt;/strong&gt; on Windows/Linux) to find it, but then you have to remember which file it was. This is where bookmarks come in handy.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s take a look!&lt;/p&gt;</description></item><item><title>Is There a Best OS to Develop a Java Application on?</title><link>https://foojayio.github.io/website/today/is-there-a-best-os-to-develop-a-java-application-on/</link><pubDate>Wed, 22 Feb 2023 11:43:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/is-there-a-best-os-to-develop-a-java-application-on/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;One subject that often evokes a lot of debate is which is the best OS to develop a Java application on. This article gives my view on the issue.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Java runs very well on Windows, macOS and Linux Distributions.&lt;/p&gt;
&lt;p&gt;I work for &lt;a href="https://ga-dev-tools.web.app/campaign-url-builder/" title="Chronicle Software" target="_blank" rel="noopener noreferrer"&gt;Chronicle Software&lt;/a&gt;
, and much of our software is open-source Java libraries, so we don&amp;rsquo;t, or rather we can&amp;rsquo;t, require our customers to run on a particular operating system. You may be surprised to hear that we don&amp;rsquo;t mandate which operating system our staff should use either. We let them use the one that causes the least friction, the one that they are most productive with.&lt;/p&gt;</description></item><item><title>What are you Missing by Debugging in VS Code?</title><link>https://foojayio.github.io/website/today/what-are-you-missing-by-debugging-in-vs-code/</link><pubDate>Fri, 17 Feb 2023 16:20:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/what-are-you-missing-by-debugging-in-vs-code/</guid><description>&lt;p&gt;In the first chapter of my debugging book, I discuss IDE debugging.&lt;/p&gt;
&lt;p&gt;In that chapter, I mostly talk about IntelliJ/IDEA.&lt;/p&gt;
&lt;p&gt;People often ask me why I didn&amp;rsquo;t write as much about VS Code&amp;hellip;&lt;/p&gt;
&lt;p&gt;The reason is that there isn&amp;rsquo;t much to write about. Its debugger is simpler for better and for worse. It isn&amp;rsquo;t as powerful as other IDEs. I created the following video that covers the content of this post:&lt;/p&gt;</description></item><item><title>How to Find &amp; Fix Vulnerabilities with IntelliJ IDEA Ultimate</title><link>https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</link><pubDate>Mon, 13 Feb 2023 09:09:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to take a look at the &lt;a href="https://plugins.jetbrains.com/plugin/18337-package-checker" target="_blank" rel="noopener noreferrer"&gt;Package Checker plugin&lt;/a&gt;
, that&amp;rsquo;s bundled with &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA Ultimate&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll have a look at how to view known vulnerabilities in your Maven or Gradle projects, how to get more information about the known vulnerabilities in a specific dependency and how to remediate these vulnerabilities inside IntelliJ IDEA Ultimate if a new version with a fix is available.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://foojayio.github.io/website/plugin.png" title="Package Checker plugin"&gt;&lt;img src="https://foojayio.github.io/website/today/package-checker-find-fix-vulnerabilities-with-intellij-idea-ultimate/plugin.png" alt="Package Checker plugin" title="Package Checker plugin" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Remote Debugging Dangers and Pitfalls</title><link>https://foojayio.github.io/website/today/remote-debugging-dangers-and-pitfalls/</link><pubDate>Fri, 10 Feb 2023 10:14:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/remote-debugging-dangers-and-pitfalls/</guid><description>&lt;p&gt;This is the last part of the debugging series, to learn the rest you&amp;rsquo;ll need to get &lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;the book&lt;/a&gt;
 or &lt;a href="https://course.debugagent.com/" target="_blank" rel="noopener noreferrer"&gt;the course&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;One of the most frequently asked questions I receive is: can we do these things in VS Code?&lt;/p&gt;
&lt;p&gt;The answer is unfortunately no. But I elaborate on the debugging capabilities of VS Code in &lt;a href="https://www.youtube.com/watch?v=OBgLeRwjlAc" target="_blank" rel="noopener noreferrer"&gt;this video&lt;/a&gt;
. I&amp;rsquo;ll do a blog post that covers that next week.&lt;/p&gt;
&lt;p&gt;Below is the last video in the series:&lt;/p&gt;</description></item><item><title>Memory Debugging - a Deep Level of Insight</title><link>https://foojayio.github.io/website/today/memory-debugging-a-deep-level-of-insight/</link><pubDate>Fri, 03 Feb 2023 10:08:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/memory-debugging-a-deep-level-of-insight/</guid><description>&lt;p&gt;When I mention memory debugging the first thing that comes to the minds of many developers is the profiler. That isn&amp;rsquo;t wrong but it&amp;rsquo;s still a partial picture. Profilers are amazing at mapping that &amp;ldquo;big picture&amp;rdquo; but when you want to understand the domain, they fall short.&lt;/p&gt;
&lt;p&gt;Modern debuggers let us gain a level of insight into the application that&amp;rsquo;s unrivaled. We can inspect and locate a specific object instance with surgical precision.&lt;/p&gt;</description></item><item><title>Debugging Threads and Asynchronous Code</title><link>https://foojayio.github.io/website/today/debugging-threads-and-asynchronous-code/</link><pubDate>Fri, 03 Feb 2023 10:07:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-threads-and-asynchronous-code/</guid><description>&lt;p&gt;I&amp;rsquo;m doing a community interview in the &lt;a href="https://coderanch.com/f/157/Cloud-Virtualization" target="_blank" rel="noopener noreferrer"&gt;Code Ranch&lt;/a&gt;
 drop by and ask a question to win a free book!&lt;/p&gt;
&lt;p&gt;This week we&amp;rsquo;ll discuss one of the harder problems in programming: threading. For many cases threading issues aren&amp;rsquo;t as difficult to debug. At least not in higher abstractions.&lt;/p&gt;
&lt;p&gt;Asynchronous programming is supposed to simplify the threading model but oftentimes it makes a bad situation worse by detaching us from the core context.&lt;/p&gt;</description></item><item><title>Firefox Profiler Beyond the Web: IntelliJ plugin for JFR</title><link>https://foojayio.github.io/website/today/firefox-profiler-beyond-the-web/</link><pubDate>Thu, 02 Feb 2023 13:13:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/firefox-profiler-beyond-the-web/</guid><description>&lt;p&gt;&lt;em&gt;This blog post is the base of the first half of my upcoming talk at FOSDEM 2023 on the topic &amp;ldquo;&lt;a href="https://fosdem.org/2023/schedule/event/mozilla_firefox_profiler_beyond_the_web/" target="_blank" rel="noopener noreferrer"&gt;Firefox Profiler beyond the web: Using Firefox Profiler to view Java profiling data&lt;/a&gt;
.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;For the impatient:&lt;/strong&gt; Take a look at my &lt;a href="https://plugins.jetbrains.com/plugin/20937-java-jfr-profiler" target="_blank" rel="noopener noreferrer"&gt;Java JFR Profiler&lt;/a&gt;
 IntelliJ plugin to easily profile your application and view JFR files directly in your IDE.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I got involved in the &lt;a href="https://profiler.firefox.com/" target="_blank" rel="noopener noreferrer"&gt;Firefox Profiler&lt;/a&gt;
 development, spending significant portions of my time at SAP in the last half year on it. It has been an exciting ride. I learned a lot and contributed a few features. So I was essentially developing React code when I wasn&amp;rsquo;t working on ASGST or other OpenJDK-related tools.&lt;/p&gt;</description></item><item><title>Foojay Podcast #12: State and Future of the IDEs</title><link>https://foojayio.github.io/website/today/foojay-podcast-12/</link><pubDate>Mon, 23 Jan 2023 10:14:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-12/</guid><description>&lt;p&gt;In this podcast, we are talking to some of the key people working on different IDEs, Integrated Development Environments.&lt;/p&gt;
&lt;p&gt;Those are applications that provide tools to computer programmers for software development.&lt;/p&gt;
&lt;p&gt;An IDE typically consists of at least a source code editor, build automation tools, and a debugger.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s learn how these tools evolved, and the challenges they face to stay up-to-date with the many evolutions in Java and all other programming languages.&lt;/p&gt;</description></item><item><title>Debugging Streams and Collections</title><link>https://foojayio.github.io/website/today/debugging-streams-and-collections/</link><pubDate>Fri, 13 Jan 2023 14:59:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-streams-and-collections/</guid><description>&lt;p&gt;I will run a book giveaway promotion on the &lt;a href="https://coderanch.com/wiki/660305/Book-Promotions-Schedule" target="_blank" rel="noopener noreferrer"&gt;Code Ranch on January 17th&lt;/a&gt;
. Be sure to be there and let your friends know. It would be great to answer your questions about debugging. I&amp;rsquo;m very excited by this and by the feedback I&amp;rsquo;m getting for &lt;a href="https://course.debugagent.com/" target="_blank" rel="noopener noreferrer"&gt;the course&lt;/a&gt;
 and new videos.&lt;/p&gt;
&lt;p&gt;I also launched a &lt;a href="https://www.youtube.com/playlist?list=PL8GhfcywW9YMucwRw2IbpeCp1FBMEgsmk" target="_blank" rel="noopener noreferrer"&gt;free new Java course for complete beginners&lt;/a&gt;
. No prior knowledge needed. This is probably not the audience for this course. But if you know someone that might be interested I&amp;rsquo;ll appreciate a share. I hope people find it useful and learn a bit about Java. I&amp;rsquo;m working on a cadence of one video per week in this beginner course.&lt;/p&gt;</description></item><item><title>The Massive Hidden Power of Breakpoints</title><link>https://foojayio.github.io/website/today/the-massive-hidden-power-of-breakpoints/</link><pubDate>Fri, 13 Jan 2023 14:58:57 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-massive-hidden-power-of-breakpoints/</guid><description>&lt;p&gt;It&amp;rsquo;s been a big week. I&amp;rsquo;m currently reviewing the final draft of &lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;my upcoming debugging book&lt;/a&gt;
. This is always a sobering, and exciting moment. A moment in which all of a sudden all the months of work become &amp;ldquo;real&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;I also recorded 9 videos for youtube bringing up the total videos in the course to 29 (with many more on the way). I&amp;rsquo;m starting two additional free courses &lt;a href="https://www.youtube.com/playlist?list=PL8GhfcywW9YMucwRw2IbpeCp1FBMEgsmk" target="_blank" rel="noopener noreferrer"&gt;one targeted at absolute beginners&lt;/a&gt;
. Another one about modern Java programming which I&amp;rsquo;ll launch really soon. Both will be free on &lt;a href="https://youtube.com/@debugagent" target="_blank" rel="noopener noreferrer"&gt;my youtube channel&lt;/a&gt;
 (obligatory &amp;ldquo;like, subscribe and share&amp;rdquo;).&lt;/p&gt;</description></item><item><title>Managing Dependencies in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/managing-dependencies-in-intellij-idea/</link><pubDate>Tue, 10 Jan 2023 15:13:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/managing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;In this tutorial, following on from &lt;a href="https://foojayio.github.io/website/today/viewing-dependencies-in-intellij-idea/"&gt;viewing dependencies&lt;/a&gt;
, we&amp;rsquo;re going to take a look at managing dependencies in IntelliJ IDEA.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ll look at different ways to add dependencies to your project, and how to add, upgrade and remove dependencies using Package Search.&lt;/p&gt;
&lt;p&gt;There are several ways to add new dependencies to your project.&lt;/p&gt;
&lt;h2 id="h2-0-from-the-build-file-using-copy-paste"&gt;From the build file using copy-paste&lt;/h2&gt;
&lt;p&gt;You have probably copied a dependency from &lt;a href="https://mvnrepository.com/" target="_blank" rel="noopener noreferrer"&gt;Maven Repository&lt;/a&gt;
 (or another website) and pasted into your build file.&lt;/p&gt;</description></item><item><title>Debugging Program Control Flow</title><link>https://foojayio.github.io/website/today/debugging-program-control-flow/</link><pubDate>Fri, 23 Dec 2022 07:36:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-program-control-flow/</guid><description>&lt;p&gt;As of now I published the first three videos of &lt;a href="https://course.debugagent.com" target="_blank" rel="noopener noreferrer"&gt;the course&lt;/a&gt;
 and will publish the fourth tomorrow. I plan to publish two videos per week on YouTube to maximize the impact but here I&amp;rsquo;ll only blog one lesson per week to avoid oversaturation. I shot about four hours of video content and still haven&amp;rsquo;t finished the 2nd module out of eight. This course will be very detailed and intensive.&lt;/p&gt;</description></item><item><title>Debug Like a Senior Developer</title><link>https://foojayio.github.io/website/today/debug-like-a-senior-developer/</link><pubDate>Fri, 16 Dec 2022 06:34:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/debug-like-a-senior-developer/</guid><description>&lt;p&gt;My book on debugging is &lt;a href="https://www.amazon.com/dp/1484290410/" target="_blank" rel="noopener noreferrer"&gt;already on preorder&lt;/a&gt;
 and I&amp;rsquo;m super thrilled to announce I&amp;rsquo;m doing a full online course to go along with it.&lt;/p&gt;
&lt;p&gt;The course website isn&amp;rsquo;t ready yet but I already have the full outline and a lot of recorded material. I will try to drop videos at a rate of two per week in the next few months until the full course will be online.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s shaping up to be a very detailed course. I recorded the first module and half of the second module and I&amp;rsquo;m already close to 3 hours of dense recorded material!&lt;/p&gt;</description></item><item><title>Viewing Maven and Gradle Dependencies in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/viewing-dependencies-in-intellij-idea/</link><pubDate>Wed, 07 Dec 2022 08:54:13 +0000</pubDate><guid>https://foojayio.github.io/website/today/viewing-dependencies-in-intellij-idea/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to take a look at different ways to view your external dependencies in IntelliJ IDEA.&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re working on a real-world application, your project will probably use external libraries and frameworks.&lt;/p&gt;
&lt;p&gt;Occasionally, you might want to see which dependencies your project uses, for various reasons.&lt;/p&gt;
&lt;p&gt;There are several ways to view dependencies in &lt;a href="https://www.jetbrains.com/idea/" title="IntelliJ IDEA" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Each view has a different focus.&lt;/p&gt;
&lt;h2 id="h2-1-dependency-management-config-file"&gt;Dependency management config file&lt;/h2&gt;
&lt;p&gt;You can find direct dependencies in the dependency management config file. Direct dependencies are the dependencies that your project depends on directly.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – October 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-october-2022/</link><pubDate>Mon, 07 Nov 2022 22:04:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-october-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to the October update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce our new roadmap in the next few months.&lt;/p&gt;
&lt;p&gt;In addition, we have made improvements for developers to use deployment slots for Azure Functions in IDEs directly with our latest release.&lt;/p&gt;
&lt;p&gt;Please download and install &lt;a href="https://aka.ms/azuretoolkit/intellijidea" title="the Azure Toolkit for IntelliJ" target="_blank" rel="noopener noreferrer"&gt;the Azure Toolkit for IntelliJ&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;We hope you like these features and enjoy a smooth experience with our Azure toolkit. So let us get started.&lt;/p&gt;</description></item><item><title>When Breakpoints Don't Break</title><link>https://foojayio.github.io/website/today/when-breakpoints-dont-break/</link><pubDate>Mon, 24 Oct 2022 07:24:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/when-breakpoints-dont-break/</guid><description>&lt;p&gt;I discussed tracepoints quite a bit in my blog and videos.&lt;/p&gt;
&lt;p&gt;They are wonderful, but I feel the nuance of non-breaking is a bit lost.&lt;/p&gt;
&lt;p&gt;The true power of this amazing tool is hidden due to our debugging habits and our preconceived notions about debugging. It&amp;rsquo;s indeed difficult to make the mental shift required for these tools.&lt;/p&gt;
&lt;p&gt;The payoff for that mental shift is tremendous when dealing with &amp;ldquo;weird&amp;rdquo; bugs. Especially in large systems and with concurrency related issues.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – September 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-september-2022/</link><pubDate>Mon, 17 Oct 2022 09:25:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-september-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to September update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the Azure Cosmos DB Support, Azure Virtual Machine Enhancement.&lt;/p&gt;
&lt;p&gt;In addition, we have made some improvements for users to create/update the dependencies with Azure SDK Reference Book.&lt;/p&gt;
&lt;p&gt;Please download and install &lt;a href="https://aka.ms/azuretoolkit/intellijidea" title="the Azure Toolkit for IntelliJ" target="_blank" rel="noopener noreferrer"&gt;the Azure Toolkit for IntelliJ&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;We hope you like these features and enjoy the smooth experience with our Azure toolkit. So let us get started.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – August 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-august-2022/</link><pubDate>Mon, 17 Oct 2022 09:15:27 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-august-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to August update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the AKS support and Virtual Machine support.&lt;/p&gt;
&lt;p&gt;In addition, we make some improvements for users to search for subscriptions and find our tutorials easily.&lt;/p&gt;
&lt;p&gt;We hope these features could improve your user experience. So let us get started.&lt;/p&gt;
&lt;h2 id="h2-0-azure-toolkit-for-intellij-improvements"&gt;Azure Toolkit for IntelliJ Improvements&lt;/h2&gt;
&lt;h3 id="h3-1-aks-management-support"&gt;AKS Management Support&lt;/h3&gt;
&lt;p&gt;Azure Kubernetes Service (AKS) simplifies deploying a managed Kubernetes cluster in Azure by offloading the operational overhead to Azure. You can find more details about &lt;a href="https://docs.microsoft.com/en-us/azure/aks/" title="Azure Kubernetes Service (AKS)" target="_blank" rel="noopener noreferrer"&gt;Azure Kubernetes Service (AKS)&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Presenting with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/presenting-with-intellij-idea/</link><pubDate>Tue, 11 Oct 2022 07:14:30 +0000</pubDate><guid>https://foojayio.github.io/website/today/presenting-with-intellij-idea/</guid><description>&lt;p&gt;In this article, we will take a look at ways to level up your presentation skills with IntelliJ IDEA.&lt;/p&gt;
&lt;h2 id="h2-0-presentation-assistant-plugin"&gt;Presentation Assistant plugin&lt;/h2&gt;
&lt;p&gt;Our first tip is to use the Presentation Assistant plugin. The Presentation Assistant plugin will show which shortcuts are being used.&lt;/p&gt;
&lt;img fetchpriority="high" decoding="async" class="size-medium wp-image-60174" src="presentation-assistant-example-700x137.png" alt="Presentation Assistant plugin example" width="700" height="137"&gt;
&lt;br /&gt;
&lt;p&gt;To install the plugin, open Preferences using &lt;strong&gt;⌘,&lt;/strong&gt; (on Mac) or &lt;strong&gt;Ctrl+Alt+S&lt;/strong&gt; (on Windows/Linux). Go to Plugins and search for &amp;ldquo;Presentation assistant&amp;rdquo; on the Marketplace tab. Click &lt;strong&gt;Install&lt;/strong&gt; and when it&amp;rsquo;s done, click &lt;strong&gt;OK&lt;/strong&gt; to apply the changes and close the dialog or click &lt;strong&gt;Apply&lt;/strong&gt; to keep the dialog open.&lt;/p&gt;</description></item><item><title>Resolving Git Merge Conflicts in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/resolving-git-merge-conflicts-in-intellij-idea/</link><pubDate>Wed, 21 Sep 2022 11:04:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/resolving-git-merge-conflicts-in-intellij-idea/</guid><description>&lt;p&gt;At some point in your career, probably many points, you&amp;rsquo;ll have to resolve merge conflicts.&lt;/p&gt;
&lt;p&gt;A common cause of merge conflicts is when you&amp;rsquo;re working on a &lt;code&gt;feature&lt;/code&gt; branch while other changes have been applied to the &lt;code&gt;main&lt;/code&gt; branch.&lt;/p&gt;
&lt;h2 id="h2-0-merge-feature-branch-into-main"&gt;Merge feature branch into main&lt;/h2&gt;
&lt;p&gt;In this tutorial, we are currently on the &lt;code&gt;main&lt;/code&gt; branch, and we want to merge the &lt;code&gt;feature&lt;/code&gt; branch into &lt;code&gt;main&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can do this by selecting the feature branch in the &lt;em&gt;Git&lt;/em&gt; tool window which you can open with &lt;strong&gt;⌘9&lt;/strong&gt; (macOS), or &lt;strong&gt;Alt+9&lt;/strong&gt; (Windows/Linux).&lt;/p&gt;</description></item><item><title>Using Git Interactive Rebase</title><link>https://foojayio.github.io/website/today/using-git-interactive-rebase/</link><pubDate>Thu, 25 Aug 2022 09:32:22 +0000</pubDate><guid>https://foojayio.github.io/website/today/using-git-interactive-rebase/</guid><description>&lt;p&gt;This tutorial will cover how to clean up your Git commit history with Git interactive rebase, both via the IntelliJ IDEA UI and from the command line.&lt;/p&gt;
&lt;p&gt;Git interactive rebase allows you to change individual commits, squash commits together, drop commits or change the order of the commits. This allows you to clean up your Git commit history to make it linear and meaningful, which can make it easier to understand the history of the project in the future.&lt;/p&gt;</description></item><item><title>Debugging Java Collections Framework Issues in Production</title><link>https://foojayio.github.io/website/today/debugging-java-collections-framework-issues-in-production/</link><pubDate>Fri, 15 Jul 2022 08:49:59 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-java-collections-framework-issues-in-production/</guid><description>&lt;p&gt;The Java Collections Framework was a huge leap forward when it was introduced as part of Java 2 (JDK 1.2).&lt;/p&gt;
&lt;p&gt;Thanks to the included collection classes we finally moved beyond the limits of &lt;code&gt;Vector&lt;/code&gt; and &lt;code&gt;Hashtable&lt;/code&gt; to more mature and generic solutions. With the introduction of streams and functional concepts in Java 8 the framework took everything to the next level.&lt;/p&gt;
&lt;p&gt;One of the core principles underlying the framework is coding to the interface. As such you would use the List interface or a Collection interface instead of the concrete implementation. This is great engineering but it makes debugging the Java Collections far more challenging.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – July 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-july-2022/</link><pubDate>Mon, 11 Jul 2022 07:21:16 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-july-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to the July update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the brand new getting started experience with the Azure toolkit for IntelliJ.&lt;/p&gt;
&lt;p&gt;In addition, we have added support for Managed Identity Authentication.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s see what these new features are.&lt;/p&gt;
&lt;h2 id="h2-0-azure-toolkit-for-intellij-improvements"&gt;Azure Toolkit for IntelliJ Improvements&lt;/h2&gt;
&lt;h3 id="h3-1-new-guided-getting-started-experience"&gt;New Guided Getting Started Experience&lt;/h3&gt;
&lt;p&gt;In &lt;a href="https://devblogs.microsoft.com/java/azure-toolkit-for-intellij-update-april-2022/" title="April’s blog" target="_blank" rel="noopener noreferrer"&gt;April&amp;rsquo;s blog&lt;/a&gt;
, we first talked about why we needed better getting started experience. Currently, there are several challenges for a developer who is new to Azure:&lt;/p&gt;</description></item><item><title>Debugging Gson, Moshi and Jackson JSON Frameworks in Production</title><link>https://foojayio.github.io/website/today/debugging-gson-moshi-and-jackson-json-frameworks-in-production/</link><pubDate>Fri, 08 Jul 2022 07:14:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-gson-moshi-and-jackson-json-frameworks-in-production/</guid><description>&lt;p&gt;Parsing bugs are the gift that keeps on giving in the age of APIs.&lt;/p&gt;
&lt;p&gt;We use a service, it works perfectly in debugging, QA, etc.&lt;/p&gt;
&lt;p&gt;Then some user input that made its way to the web request returns a result we just can&amp;rsquo;t parse.&lt;/p&gt;
&lt;p&gt;Unfortunately, there isn&amp;rsquo;t much we can do at this stage. We need to understand why the failure occurred and how we can workaround it and fix it.&lt;/p&gt;</description></item><item><title>Debugging jsoup Java Code in Production Using Lightrun</title><link>https://foojayio.github.io/website/today/debugging-jsoup-java-code-in-production-using-lightrun/</link><pubDate>Fri, 17 Jun 2022 09:35:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-jsoup-java-code-in-production-using-lightrun/</guid><description>&lt;p&gt;Scraping websites built for modern browsers is far more challenging than it was a decade ago.&lt;/p&gt;
&lt;p&gt;jsoup is a convenient API that makes scraping websites trivial via DOM traversal, CSS Selectors, JQuery-Like methods and more. But it isn&amp;rsquo;t without its caveat. Every scraping API is a ticking time bomb.&lt;/p&gt;
&lt;p&gt;Real-world HTML is flaky. It changes without notice since it isn&amp;rsquo;t a documented API. When our Java program fails in scraping, we&amp;rsquo;re suddenly stuck with a ticking time bomb.&lt;/p&gt;</description></item><item><title>Java on Azure Tooling Update – June 2022</title><link>https://foojayio.github.io/website/today/java-on-azure-tooling-update-june-2022/</link><pubDate>Mon, 13 Jun 2022 07:40:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-on-azure-tooling-update-june-2022/</guid><description>&lt;p&gt;Hi everyone, welcome back to June update of Java on Azure Tooling.&lt;/p&gt;
&lt;p&gt;In this update, we will introduce the new application-centric view on Azure toolkit for IntelliJ that will make the interface more user-friendly.&lt;/p&gt;
&lt;p&gt;In addition, we have added support for more Azure services.&lt;/p&gt;
&lt;p&gt;For Gradle plugins, we have some new features for Azure Web Apps and Azure Functions.&lt;/p&gt;
&lt;p&gt;We hope you like these new features and share your feedback with us. So let us get right into it&amp;hellip;&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>Debugging the Java Message Service (JMS) API using Lightrun</title><link>https://foojayio.github.io/website/today/debugging-the-java-message-service-jms-api-using-lightrun/</link><pubDate>Fri, 03 Jun 2022 09:26:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-the-java-message-service-jms-api-using-lightrun/</guid><description>&lt;p&gt;The Java Message Service API (JMS) was developed by Sun Microsystems in the days of &lt;a href="https://en.wikipedia.org/wiki/Jakarta_EE" target="_blank" rel="noopener noreferrer"&gt;Java EE&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;The JMS API provides us with simple messaging abstractions including Message Producer, Message Consumer, etc. Messaging APIs let us place a message on a &amp;ldquo;queue&amp;rdquo; and consume messages placed into said queue.&lt;/p&gt;
&lt;p&gt;This is immensely useful for high throughput systems &amp;ndash; instead of wasting user time by performing a slow operation in real-time, an enterprise application can send a message. This non-blocking approach enables extremely high throughput, while maintaining reliability at scale.&lt;/p&gt;</description></item><item><title>Debugging Deadlocks and Race Conditions</title><link>https://foojayio.github.io/website/today/debugging-deadlocks-and-race-conditions/</link><pubDate>Fri, 20 May 2022 08:08:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-deadlocks-and-race-conditions/</guid><description>&lt;p&gt;Thread debugging has the reputation of being one of the most arduous tasks for developers. I beg to differ.&lt;/p&gt;
&lt;p&gt;Asynchronous debugging is so much worse. It&amp;rsquo;s supposed to solve the problems of threading and to some degree async helps&amp;hellip;&lt;/p&gt;
&lt;p&gt;But it doesn&amp;rsquo;t make debugging simpler. I will get into that in the next post.&lt;/p&gt;
&lt;p&gt;In the last two ducklings, I talked about threading issues:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🦆 Duckling the 13th:&lt;/p&gt;
&lt;p&gt;Debug race conditions and deadlocks easily.&lt;/p&gt;</description></item><item><title>Azure Toolkit for IntelliJ – April 2022 Update</title><link>https://foojayio.github.io/website/today/azure-toolkit-for-intellij-april-2022-update/</link><pubDate>Mon, 16 May 2022 08:28:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/azure-toolkit-for-intellij-april-2022-update/</guid><description>&lt;p&gt;Welcome to a new series of articles on Azure Toolkit for IntelliJ.&lt;/p&gt;
&lt;p&gt;Azure Toolkit for IntelliJ is a plugin that allows you to easily create, develop, configure, test, and deploy Java applications to Azure.&lt;/p&gt;
&lt;p&gt;Our goal of this series is to keep you posted on the latest product updates, features, and other exciting news.&lt;/p&gt;
&lt;p&gt;In this first article, we are going to take a look at our product roadmap for next few months.&lt;/p&gt;</description></item><item><title>How to run the Java Incubator Module from the Command Line and IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/how-to-run-the-java-incubator-module-from-the-command-line-and-intellij-idea/</link><pubDate>Tue, 10 May 2022 16:52:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-run-the-java-incubator-module-from-the-command-line-and-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://openjdk.java.net/jeps/425" target="_blank" rel="noopener noreferrer"&gt;JEP 425: Virtual Threads (Preview)&lt;/a&gt;
 has been proposed recently. It has been a long-awaited feature in Java. It opens the door to Structured Concurrency. This article isn&amp;rsquo;t about it, in case you are interested, you can read, the &lt;a href="https://openjdk.java.net/jeps/8277129" target="_blank" rel="noopener noreferrer"&gt;JEP draft: Structured Concurrency (Incubator)&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Also, if you are interested in how the incubator module works, please read: &lt;a href="https://openjdk.java.net/jeps/11" target="_blank" rel="noopener noreferrer"&gt;JEP 11: Incubator Modules&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;I downloaded the &lt;a href="https://jdk.java.net/loom/" target="_blank" rel="noopener noreferrer"&gt;early access build&lt;/a&gt;
 and wrote the following very simple program that demonstrates structure concurrency.&lt;/p&gt;</description></item><item><title>Setting up and Working with Apache Tomcat in IntelliJ IDEA Ultimate</title><link>https://foojayio.github.io/website/today/setting-up-and-working-with-apache-tomcat-in-intellij-idea-ultimate/</link><pubDate>Tue, 10 May 2022 08:46:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/setting-up-and-working-with-apache-tomcat-in-intellij-idea-ultimate/</guid><description>&lt;p&gt;In this article, you will learn how to set up IntelliJ IDEA Ultimate to work with Apache Tomcat, herein referred to simply as &lt;em&gt;Tomcat&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;We will create a new project that uses Tomcat and then talk about using Tomcat in IntelliJ IDEA so you can benefit from the rich integration capabilities.&lt;/p&gt;
&lt;h2 id="h2-0-downloading-apache-tomcat"&gt;Downloading Apache Tomcat&lt;/h2&gt;
&lt;p&gt;To use Tomcat with IntelliJ IDEA, it needs to be installed on your machine. If you don&amp;rsquo;t already have Tomcat installed, you can download the latest version, which at the time of writing, is &lt;a href="https://tomcat.apache.org/download-10.cgi" target="_blank" rel="noopener noreferrer"&gt;Tomcat 10&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>How to enable java preview feature and run code from IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/how-to-run-project-loom-from-intellij-idea/</link><pubDate>Sun, 08 May 2022 10:07:50 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-run-project-loom-from-intellij-idea/</guid><description>&lt;p&gt;&lt;a href="https://openjdk.java.net/jeps/425" target="_blank" rel="noopener noreferrer"&gt;JEP 425: Virtual Threads (Preview)&lt;/a&gt;
 has been proposed recently. It has been a long-awaited feature in Java. I wanted to give it a try. So I download the &lt;a href="https://jdk.java.net/loom/" target="_blank" rel="noopener noreferrer"&gt;early release&lt;/a&gt;
 of JDK which has the &lt;a href="https://wiki.openjdk.java.net/display/loom/Main" target="_blank" rel="noopener noreferrer"&gt;project loom&lt;/a&gt;
 in it. However, it is under preview.&lt;/p&gt;
&lt;p&gt;The following snippet was pretty much my first program written for testing virtual threads.&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="java"&gt;public class Main {
 public static void main(String[] args) throws InterruptedException {
 Thread.startVirtualThread(() -&amp;gt; {
 System.out.println("Hello from virtual thread");
 }).join();
 }
}&lt;/pre&gt;
&lt;p&gt;It is so simple that I could just run it in the command line using the &lt;a href="https://openjdk.java.net/jeps/330" target="_blank" rel="noopener noreferrer"&gt;source code launcher&lt;/a&gt;
 :&lt;/p&gt;</description></item><item><title>Spring Transaction Debugging in Production with Lightrun</title><link>https://foojayio.github.io/website/today/spring-transaction-debugging-in-production-with-lightrun/</link><pubDate>Fri, 06 May 2022 15:00:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-transaction-debugging-in-production-with-lightrun/</guid><description>&lt;p&gt;Spring makes building a reliable application much easier thanks to its declarative transaction management.&lt;/p&gt;
&lt;p&gt;It also supports programmatic transaction management, but that&amp;rsquo;s not as common.&lt;/p&gt;
&lt;p&gt;In this article, I want to focus on the declarative transaction management angle, since it seems much harder to debug compared to the programmatic approach. This is partially true. We can&amp;rsquo;t put a breakpoint on a transactional annotation.&lt;/p&gt;
&lt;p&gt;But I&amp;rsquo;m getting ahead of myself!&lt;/p&gt;
&lt;h2 id="h2-0-what-is-spring-s-method-declarative-transaction-management"&gt;What is Spring&amp;rsquo;s Method Declarative Transaction Management?&lt;/h2&gt;
&lt;p&gt;When writing a spring method or class, we can use annotations to declare that a method or a bean (class) is transactional. This annotation lets us tune transactional semantics using attributes. This lets us define behavior such as:&lt;/p&gt;</description></item><item><title>Debugging Collections, Streams, and Watch Renderers</title><link>https://foojayio.github.io/website/today/debugging-collections-streams-and-watch-renderers/</link><pubDate>Fri, 29 Apr 2022 07:54:01 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-collections-streams-and-watch-renderers/</guid><description>&lt;p&gt;In the last two ducklings, I finished the extensive discussion on breakpoints and switched my focus to the watch area. In it, we have several amazing and lesser known tools that let us build insight into our running application. Being able to tell at a glance if something works correctly is crucial for many applications.&lt;/p&gt;
&lt;p&gt;This is very important for collections and arrays. We can have thousands or millions of elements within a collection. Debugging this is very difficult without some basic tools.&lt;/p&gt;</description></item><item><title>Migrating from Java EE to Jakarta EE with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/migrating-from-java-ee-to-jakarta-ee-with-intellij-idea/</link><pubDate>Fri, 08 Apr 2022 17:02:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/migrating-from-java-ee-to-jakarta-ee-with-intellij-idea/</guid><description>&lt;p&gt;In this post, we&amp;rsquo;re going to migrate some sample code from the &lt;code&gt;javax&lt;/code&gt; namespace to &lt;code&gt;jakarta&lt;/code&gt;. If you want the history on this change, check out &lt;a href="https://blogs.oracle.com/javamagazine/post/transition-from-java-ee-to-jakarta-ee" target="_blank" rel="noopener noreferrer"&gt;this helpful blog post&lt;/a&gt;
 from Java Magazine. Fundamentally the &lt;em&gt;Java Persistence API&lt;/em&gt; was renamed to &lt;em&gt;Jakarta Persistence API&lt;/em&gt; meaning that the &lt;code&gt;javax&lt;/code&gt; namespace changed to &lt;code&gt;jakarta&lt;/code&gt; for frameworks whose APIs have moved to Jakarta EE (which is not all of them).&lt;/p&gt;
&lt;p&gt;However, Apache Tomcat recently released version 10 which updated package names from &lt;code&gt;javax&lt;/code&gt; to &lt;code&gt;jakarta&lt;/code&gt;. SpringBoot also made &lt;a href="https://spring.io/blog/2021/09/02/a-java-17-and-jakarta-ee-9-baseline-for-spring-framework-6" target="_blank" rel="noopener noreferrer"&gt;this change&lt;/a&gt;
 in version 6.&lt;/p&gt;</description></item><item><title>Debugging JAXB Production Issues</title><link>https://foojayio.github.io/website/today/debugging-jaxb-production-issues/</link><pubDate>Mon, 04 Apr 2022 14:13:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-jaxb-production-issues/</guid><description>&lt;p&gt;Java Architecture for XML Binding (AKA JAXB API) is a popular API for marshalling XML data. It&amp;rsquo;s a framework for mapping between XML documents and Java POJOs (Plain Old Java Objects, AKA regular Java classes) almost seamlessly. The API is very easy to use and many frameworks leverage it to provide their XML support. JAXB2.0 has gained popularity both in desktop applications (Java SE) and in application server code (Spring Boot, Java EE/Jakarta EE, Microprofile etc.).&lt;/p&gt;</description></item><item><title>Debugging Race Conditions in Production</title><link>https://foojayio.github.io/website/today/debugging-race-conditions-in-production/</link><pubDate>Wed, 23 Mar 2022 07:45:15 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-race-conditions-in-production/</guid><description>&lt;p&gt;Race conditions can occur when a multithreaded application accesses a shared resource using over one thread. Unless we have guards in place, the result might depend on which thread &amp;ldquo;got there first&amp;rdquo;. This is especially problematic when the state is changed externally.&lt;/p&gt;
&lt;p&gt;A race can cause more than just incorrect behavior. It can enable a security vulnerability when the resource in question can be corrupted in the right way. A good example of race condition vulnerabilities is mangling memory. Let&amp;rsquo;s say we have an admin user name which is restricted and privileged. You can&amp;rsquo;t change your user name to admin because of validation. But you can change it to anything else&amp;hellip;&lt;/p&gt;</description></item><item><title>The Basics of Breakpoints you Might not Know</title><link>https://foojayio.github.io/website/today/the-basics-of-breakpoints-you-might-not-know/</link><pubDate>Thu, 17 Mar 2022 10:41:08 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-basics-of-breakpoints-you-might-not-know/</guid><description>&lt;p&gt;In episodes 4 and 5 of &amp;ldquo;140 Second Ducklings&amp;rdquo;, I got deeper into the more advanced underpinnings of breakpoints. There&amp;rsquo;s still a lot more to learn to move forward, but even at this stage it&amp;rsquo;s surprising how many things are relatively unknown in the developer community. And I&amp;rsquo;m just getting started&amp;hellip;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🦆 Duckling the 5th:&lt;/p&gt;
&lt;p&gt;Did you know you can disable a breakpoint until you hit another breakpoint?&lt;/p&gt;
&lt;p&gt;Do you know what&amp;rsquo;s a tracepoint?&lt;/p&gt;</description></item><item><title>Java Return Value, IntelliJ Jump to Line</title><link>https://foojayio.github.io/website/today/debugging-tutorial-java-return-value-intellij-jump-to-line-and-more/</link><pubDate>Wed, 02 Mar 2022 15:33:39 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-tutorial-java-return-value-intellij-jump-to-line-and-more/</guid><description>&lt;p&gt;I just published the 3rd episode of the &amp;ldquo;140 Second Duckling&amp;rdquo; tutorial series and I&amp;rsquo;m getting into the rhythm of doing them. I posted the 2nd episode last week and in this post I&amp;rsquo;ll dig deeper into both.&lt;/p&gt;
&lt;p&gt;I tackled a lot of basic stuff about debugging but I picked two big headliners that a surprising amount of developers aren&amp;rsquo;t familiar with. E.g. How many times did you step over a return statement and cursed?&lt;/p&gt;</description></item><item><title>Working with Multiple Carets in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/working-with-multiple-carets-in-intellij-idea/</link><pubDate>Sun, 14 Nov 2021 12:21:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/working-with-multiple-carets-in-intellij-idea/</guid><description>&lt;p&gt;Sometimes you need to modify multiple lines of code on separate lines inside IntelliJ IDEA with the same change. The fastest way to achieve that is with &lt;a href="https://www.jetbrains.com/help/idea/working-with-source-code.html?keymap=primary_windows#multiple_cursor" target="_blank" rel="noopener noreferrer"&gt;multiple carets&lt;/a&gt;
. In IntelliJ IDEA you can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create multiple carets in a vertical line&lt;/li&gt;
&lt;li&gt;Create multiple carets at the end of lines&lt;/li&gt;
&lt;li&gt;Create multiple carets at any point in your code&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3 id="h3-0-create-multiple-carets-in-a-vertical-line"&gt;Create Multiple Carets in a Vertical Line&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://www.jetbrains.com/help/idea/working-with-source-code.html?keymap=primary_windows#multiple_cursor" target="_blank" rel="noopener noreferrer"&gt;Creating carets&lt;/a&gt;
 that are stacked vertically where you have content on different lines, like a list, can save you a lot of time when you&amp;rsquo;re editing your code.&lt;/p&gt;</description></item><item><title>Debugging Tutorial 1 – Introduction: Conditional Breakpoints &amp; Set Value</title><link>https://foojayio.github.io/website/today/debugging-tutorial-1-introduction-conditional-breakpoints-set-value/</link><pubDate>Wed, 27 Oct 2021 08:03:53 +0000</pubDate><guid>https://foojayio.github.io/website/today/debugging-tutorial-1-introduction-conditional-breakpoints-set-value/</guid><description>&lt;p&gt;In this series, I&amp;rsquo;ll walk you through the process of debugging applications and finding issues within them. As we debug, we&amp;rsquo;ll cover the techniques important for most developers. I will cover the following debuggers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IntelliJ/IDEA &amp;ndash; with Java/Kotlin&lt;/li&gt;
&lt;li&gt;PyCharm &amp;ndash; Python&lt;/li&gt;
&lt;li&gt;VSCode &amp;ndash; for JavaScript&lt;/li&gt;
&lt;li&gt;WebStorm &amp;ndash; for JavaScript&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These should cover most use cases you&amp;rsquo;ll run into and some things will seem duplicate/redundant so you can just skip to the applicable section if you feel you &amp;ldquo;got the gist&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Git Archeology: Removing the Sands of Time from Code</title><link>https://foojayio.github.io/website/today/git-archeology/</link><pubDate>Sat, 23 Oct 2021 06:55:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/git-archeology/</guid><description>&lt;p&gt;Working on a large codebase, it&amp;rsquo;s pretty normal to not remember every small or large subsystem or implementation choice. Be it whether you&amp;rsquo;re new to a codebase, or you&amp;rsquo;ve been focused on a specific area of the codebase.&lt;/p&gt;
&lt;p&gt;When working on refactorings or bug fixes, I often end up in areas I might not be too familiar with. Generally not dramatic, it happens quite often that I&amp;rsquo;m stopping what I&amp;rsquo;m doing because I need to decide on how to move forward. As software engineers, we have to make so many micro-decisions every minute that we&amp;rsquo;re pretty used to it.&lt;/p&gt;</description></item><item><title>Debug Real World Applications using a Systemic Proven Process</title><link>https://foojayio.github.io/website/today/the-debugger-checklist-part-ii/</link><pubDate>Tue, 28 Sep 2021 08:54:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-debugger-checklist-part-ii/</guid><description>&lt;p&gt;In the &lt;a href="https://foojayio.github.io/website/today/the-debugger-checklist-part-i/"&gt;Debugger Checklist (Part I)&lt;/a&gt;
, I introduced some of the high level concepts and reviewed some of the common things you can do. In this part, we&amp;rsquo;ll get down to the process. Again, it&amp;rsquo;s important to stress that this is boiled down and concentrated!&lt;/p&gt;
&lt;p&gt;I don&amp;rsquo;t want to discuss issue trackers, unit testing and proper TDD. I think there are many resources covering all of these. The focus of these posts is the debug process itself which often gets neglected as &amp;ldquo;tools&amp;rdquo;. There&amp;rsquo;s a lot of technique that separates the seasoned developer from a junior. Furthermore, there are many small advancements and changes we can&amp;rsquo;t possibly keep up with. I&amp;rsquo;d like to cover all of those things (some in future posts).&lt;/p&gt;</description></item><item><title>Debugger Checklist: Bug Solving Process</title><link>https://foojayio.github.io/website/today/the-debugger-checklist-part-i/</link><pubDate>Tue, 21 Sep 2021 09:37:32 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-debugger-checklist-part-i/</guid><description>&lt;p&gt;&lt;img src="https://foojayio.github.io/website/today/the-debugger-checklist-part-i/Blog-Header-1200x600-px1-700x350.jpeg" alt="" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Win at debugging by following an organized process and leveraging the tools you already have!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m a disorganized person by nature. When I follow a process it&amp;rsquo;s by habit and intuition. But when a debugging problem keeps me up at night and gets me to that state of mind where a career of raising sheep in New Zealand seems like an attractive option&amp;hellip; That&amp;rsquo;s when I need to back off and walk through this process in an orderly fashion. This process never fails. When you walk through it, you can track any problem.&lt;/p&gt;</description></item><item><title>Getting Started with Java 17 and IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/getting-started-with-java-17-and-intellij-idea/</link><pubDate>Tue, 14 Sep 2021 09:20:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/getting-started-with-java-17-and-intellij-idea/</guid><description>&lt;p&gt;A new Java release every six months can be exciting, overwhelming, or both. Given that &lt;a href="https://openjdk.java.net/projects/jdk/17/" target="_blank" rel="noopener noreferrer"&gt;Java 17&lt;/a&gt;
 is also an &lt;a href="https://www.oracle.com/java/technologies/java-se-support-roadmap.html" target="_blank" rel="noopener noreferrer"&gt;LTS&lt;/a&gt;
 release, it&amp;rsquo;s not just the developers but enterprises also noticing it. If you have been &lt;a href="https://www.ted.com/talks/tim_urban_inside_the_mind_of_a_master_procrastinator" target="_blank" rel="noopener noreferrer"&gt;waiting&lt;/a&gt;
 to move on from Java 8 or 11, now is the time to weigh its advantages.&lt;/p&gt;
&lt;p&gt;In this article, I will limit the coverage of Java 17 to its language features &amp;ndash; &lt;a href="https://openjdk.java.net/jeps/409" target="_blank" rel="noopener noreferrer"&gt;Sealed Classes&lt;/a&gt;
 and &lt;a href="https://openjdk.java.net/jeps/406" target="_blank" rel="noopener noreferrer"&gt;Pattern Matching for switch&lt;/a&gt;
. I&amp;rsquo;ll cover what these features are, why you might need them, and how you can start using them in &lt;a href="https://blog.jetbrains.com/idea/2021/08/intellij-idea-2021-2-1/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
. I will also highlight how these features can reduce the &lt;em&gt;cognitive complexity&lt;/em&gt; for developers. You can use &lt;a href="https://openjdk.java.net/projects/jdk/17/" target="_blank" rel="noopener noreferrer"&gt;this link&lt;/a&gt;
 for a comprehensive list of all the new Java 17 features.&lt;/p&gt;</description></item><item><title>8 Debugging Tips for IntelliJ IDEA Users You Never Knew Existed</title><link>https://foojayio.github.io/website/today/eight-debugging-tips-for-intellijidea-users-you-never-knew-existed/</link><pubDate>Thu, 09 Sep 2021 07:15:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/eight-debugging-tips-for-intellijidea-users-you-never-knew-existed/</guid><description>&lt;p&gt;As developers, we&amp;rsquo;re all familiar with debuggers. We use debugging tools on a daily basis &amp;ndash; they&amp;rsquo;re an essential part of programming. But let&amp;rsquo;s be honest. Usually, we only use the breakpoint option. If we&amp;rsquo;re feeling frisky, we might use a conditional breakpoint.&lt;/p&gt;
&lt;p&gt;But guess what, the &lt;a href="https://www.jetbrains.com/idea/" title="IntelliJ IDEA" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
 debugger has many powerful and cutting-edge features that are useful for debugging more easily and efficiently. To help, we&amp;rsquo;ve compiled a list of tips and tricks from our very own developers here at &lt;a href="https://go.lightrun.com/request-a-demo?utm_source=blog&amp;amp;amp;utm_medium=LR_blog&amp;amp;amp;utm_campaign=eight-debugging-tips-for-intellijidea" title="Lightrun" target="_blank" rel="noopener noreferrer"&gt;Lightrun&lt;/a&gt;
. We hope these tips will help you find and resolve bugs faster.&lt;/p&gt;</description></item><item><title>Everyday Shortcuts in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/everyday-shortcuts-in-intellij-idea/</link><pubDate>Mon, 06 Sep 2021 07:27:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/everyday-shortcuts-in-intellij-idea/</guid><description>&lt;p&gt;Let&amp;rsquo;s take a look at some of my favourite keyboard shortcuts in &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s really helpful to use keyboard shortcuts because it speeds you up and keeps you in the flow of coding!&lt;/p&gt;
&lt;h2 id="h2-0-intention-actions-alt-enter"&gt;Intention Actions - ⌥⏎ / Alt+Enter&lt;/h2&gt;
&lt;p&gt;You can use &lt;a href="https://www.jetbrains.com/help/idea/intention-actions.html" target="_blank" rel="noopener noreferrer"&gt;this shortcut&lt;/a&gt;
 in a number of places, even when it&amp;rsquo;s not an error or when IntelliJ IDEA has not given you any indication that you could use it. It&amp;rsquo;s always worth trying it just to see what your options are.&lt;/p&gt;</description></item><item><title>How To Get Your JDK As Easily As Possible!</title><link>https://foojayio.github.io/website/today/get-your-jdk-as-easily-as-possible/</link><pubDate>Tue, 20 Jul 2021 07:00:31 +0000</pubDate><guid>https://foojayio.github.io/website/today/get-your-jdk-as-easily-as-possible/</guid><description>&lt;p&gt;Have you ever been in the situation where you&amp;rsquo;ve been looking for a specific JDK version of a specific distribution? I think most of us have been there and, I don&amp;rsquo;t know how you handle this, but in the past I used to save links to distributions in my browser and then I usually I started searching through the vendor website for the package I was looking for.&lt;/p&gt;
&lt;p&gt;Sometimes that was easy&amp;hellip; sometimes it was hard&amp;hellip; but it never was fun. And if you&amp;rsquo;re used to working with JavaFX, the whole thing got even harder when JDK 11 came out and JavaFX was not bundled with the distribution any longer.&lt;/p&gt;</description></item><item><title>Gluon Update, Dual Screen Raspberry Pi , IntelliJ JavaFX Project Wizard</title><link>https://foojayio.github.io/website/today/javafx-gluon-status-update-dual-screen-on-raspberry-pi-sample-intellij-new-javafx-project-wizard/</link><pubDate>Fri, 04 Jun 2021 07:27:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/javafx-gluon-status-update-dual-screen-on-raspberry-pi-sample-intellij-new-javafx-project-wizard/</guid><description>&lt;p&gt;Last week, Johan Vos of Gluon, released a video with a status update of JavaFX. In this post we are going to take a deeper look into one of the announcements: dual screen support on Raspberry Pi.&lt;/p&gt;
&lt;h2 id="h2-0-announcements-by-gluon"&gt;Announcements by Gluon&lt;/h2&gt;
&lt;p&gt;Since Java switched to a 6-month release cycle, JavaFX has done the same, so next version will be number 17. Keep in mind, although Java and JavaFX are on the same version-number, you can still use Java 11 and combine it with the JavaFX 17 runtime if you want to benefit from its improvements. Up till now, there were no breaking changes in either of the frameworks which force you to use a Java-version higher than 11.&lt;/p&gt;</description></item><item><title>Creating a Simple Spring Boot Application in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/creating-a-simple-spring-boot-application-in-intellij-idea/</link><pubDate>Mon, 31 May 2021 17:06:51 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-simple-spring-boot-application-in-intellij-idea/</guid><description>&lt;p&gt;This tutorial uses IntelliJ IDEA Ultimate because we want to create a new project using Spring Initializr. This functionality is only available with IntelliJ IDEA Ultimate. It is based off &lt;a href="https://spring.io/guides/gs/spring-boot/" target="_blank" rel="noopener noreferrer"&gt;Building an Application with Spring Boot&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id="h2-0-creating-your-spring-boot-project"&gt;Creating your Spring Boot Project&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;If you&amp;rsquo;re in an IntelliJ IDEA project already, select &lt;strong&gt;File&lt;/strong&gt; &amp;gt; &lt;strong&gt;Project&lt;/strong&gt; . Alternatively click the &lt;strong&gt;New Project&lt;/strong&gt; button on the Welcome screen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Select &lt;strong&gt;Spring Initializr&lt;/strong&gt; on the left-hand side and then enter the following options:&lt;/p&gt;</description></item><item><title>Fix Java Security Issues While Coding in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/fix-java-security-issues-while-coding-in-intellij-idea/</link><pubDate>Thu, 29 Apr 2021 17:10:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/fix-java-security-issues-while-coding-in-intellij-idea/</guid><description>&lt;p&gt;Nowadays, developers are responsible for more than just creating the application. Besides working on features, developers have to focus on their applications&amp;rsquo; maintainability, scalability, reliability, &lt;strong&gt;and&lt;/strong&gt; security. Many developers are unsure of where to start with security. In addition, most companies still work with a dedicated security team instead of having security expertise inside the team.&lt;/p&gt;
&lt;p&gt;A lot of developers practically live in their integrated development environment (IDE). A good IDE is like a swiss army knife: it is your go-to tool to do almost everything. Having everything I need to build, run, test, debug, and&lt;strong&gt;secure&lt;/strong&gt; my application, makes a good IDE invaluable for many developers.&lt;/p&gt;</description></item><item><title>Beginning JavaFX Applications with IntelliJ IDE</title><link>https://foojayio.github.io/website/today/beginning-javafx-with-intellij/</link><pubDate>Wed, 28 Apr 2021 19:33:58 +0000</pubDate><guid>https://foojayio.github.io/website/today/beginning-javafx-with-intellij/</guid><description>&lt;figure class="alignleft size-large"&gt;
 &lt;img src="https://foojayio.github.io/website/today/beginning-javafx-with-intellij/duke-intellij-shirt.png" alt="" width="174" height="313" loading="lazy" class="is-zoomable"&gt;&lt;figcaption class="wp-element-caption"&gt;JavaFX in IntelliJ IDE&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;This article is for the beginner who wants to get started developing JavaFX applications using &lt;a href="https://www.jetbrains.com/idea/" target="_blank" rel="noopener noreferrer"&gt;Jetbrains&amp;rsquo; IntelliJ&lt;/a&gt;
 IDE. The article will create three flavors of a HelloWorld JavaFX application as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plain - Create a new project from scratch using no build tools&lt;/li&gt;
&lt;li&gt;Maven - Create a new project using the Maven build tool&lt;/li&gt;
&lt;li&gt;Gradle - Create a new project using the Gradle build tool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While this article may seem elementary for some, I believe it can help newcomers to the JavaFX platform avoid some pitfalls and really hit the ground running.&lt;/p&gt;</description></item><item><title>About IntelliJ IDEA Changelists and Git Staging</title><link>https://foojayio.github.io/website/today/intellij-idea-changelists-and-git-staging/</link><pubDate>Fri, 16 Apr 2021 07:13:37 +0000</pubDate><guid>https://foojayio.github.io/website/today/intellij-idea-changelists-and-git-staging/</guid><description>&lt;p&gt;Since the release of IntelliJ IDEA 2020.3, there are now two ways to manage your commits to Git. The first one is through existing functionality with &lt;a href="https://www.jetbrains.com/help/idea/managing-changelists.html" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA changelists&lt;/a&gt;
, the second is through support for &lt;a href="https://www.jetbrains.com/help/idea/commit-and-push-changes.html#use-git-staging-area-to-commit-changes" target="_blank" rel="noopener noreferrer"&gt;Git staging&lt;/a&gt;
. This blog will take you through both approaches and highlight the differences. There is no right or wrong answer, it&amp;rsquo;s a case of choosing the method that works best for you, or that you&amp;rsquo;re most familiar with.&lt;/p&gt;</description></item><item><title>Getting Started with Java 16 and IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/java-16-and-intellij-idea/</link><pubDate>Tue, 06 Apr 2021 07:11:02 +0000</pubDate><guid>https://foojayio.github.io/website/today/java-16-and-intellij-idea/</guid><description>&lt;p&gt;If you are still working with Java 8, you might have mixed feelings about the news of the release of &lt;a href="http://openjdk.java.net/projects/jdk/16/" target="_blank" rel="noopener noreferrer"&gt;Java 16&lt;/a&gt;
. However, you&amp;rsquo;ll see these numbers are going to increment at a much faster and predictable rate with Java&amp;rsquo;s six-month release cadence.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m personally excited about Java 16! It adds &lt;a href="https://openjdk.java.net/jeps/395" target="_blank" rel="noopener noreferrer"&gt;Records&lt;/a&gt;
 and &lt;a href="https://openjdk.java.net/jeps/394" target="_blank" rel="noopener noreferrer"&gt;Pattern Matching for instanceof&lt;/a&gt;
 as standard language features with &lt;a href="https://openjdk.java.net/jeps/397" target="_blank" rel="noopener noreferrer"&gt;Sealed classes&lt;/a&gt;
 continuing to be a &lt;a href="https://openjdk.java.net/jeps/12" target="_blank" rel="noopener noreferrer"&gt;preview feature&lt;/a&gt;
 (in the second preview).&lt;/p&gt;</description></item><item><title>Generating Boilerplate Code with IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/generating-code-with-intellij-idea/</link><pubDate>Wed, 10 Feb 2021 09:17:18 +0000</pubDate><guid>https://foojayio.github.io/website/today/generating-code-with-intellij-idea/</guid><description>&lt;p&gt;One of the super cool things about IntelliJ IDEA is how much code you can generate with minimum effort. Yes, it&amp;rsquo;s not the 1990s anymore, we&amp;rsquo;re no longer measured on how many lines of code we generate (thankfully), but you also know that Java has its fair share of &lt;em&gt;boilerplate&lt;/em&gt; code.&lt;/p&gt;
&lt;p&gt;Well, there&amp;rsquo;s a &lt;a href="https://www.jetbrains.com/help/idea/generating-code.html" title="shortcut in IntelliJ IDEA" target="_blank" rel="noopener noreferrer"&gt;shortcut in IntelliJ IDEA&lt;/a&gt;
 that generates a lot of code for you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;⌘N&lt;/code&gt; on macOS&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Alt+Insert&lt;/code&gt; on Windows and Linux&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These shortcuts load the &lt;strong&gt;Generate&lt;/strong&gt; menu. Here&amp;rsquo;s a quick tour of where you can use it in Java projects in IntelliJ IDEA. It&amp;rsquo;s not a complete list; let me know where else we can use it please!&lt;/p&gt;</description></item><item><title>IntelliJ IDEA: Let's Go Beyond The Basics!</title><link>https://foojayio.github.io/website/today/intellij-idea-beyond-the-basics/</link><pubDate>Mon, 25 Jan 2021 08:32:47 +0000</pubDate><guid>https://foojayio.github.io/website/today/intellij-idea-beyond-the-basics/</guid><description>&lt;p&gt;IntelliJ IDEA Ultimate is the most powerful IDE for JVM developers in the market by now. It has support for various JVM frameworks, complex refactorings, Integration with VCS, and many more.&lt;/p&gt;
&lt;p&gt;Java developers spend a tremendous amount of time in front of their IDEs. Unfortunately, I&amp;rsquo;ve noticed that developers don&amp;rsquo;t take advantage of IDEA&amp;rsquo;s powerful features.&lt;/p&gt;
&lt;p&gt;In this article, I&amp;rsquo;ll talk about some tricks I use in my day to day job. And show you some best practices that can boost your productivity.&lt;/p&gt;</description></item><item><title>3 Ways to Refactor Your Code in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/3-ways-to-refactor-your-code-in-intellij-idea/</link><pubDate>Tue, 12 Jan 2021 08:24:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/3-ways-to-refactor-your-code-in-intellij-idea/</guid><description>&lt;p&gt;In this article, we&amp;rsquo;re going to look at 3 ways to refactor your code in IntelliJ IDEA.&lt;/p&gt;
&lt;p&gt;Simplifying your code has lots of advantages, including improving readability, tackling technical debt, and managing ever-changing requirements. The three types of refactoring we will look at in this blog are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Extracting and Inlining&lt;/li&gt;
&lt;li&gt;Change Signature&lt;/li&gt;
&lt;li&gt;Renaming&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The code samples are available in the &lt;a href="https://github.com/JetBrains/intellij-samples" target="_blank" rel="noopener noreferrer"&gt;IntelliJ IDEA sample code repository&lt;/a&gt;
, specifically the &lt;a href="https://github.com/JetBrains/intellij-samples/blob/main/standard-java/src/main/java/com/jetbrains/refactoring/PlanetExtractions.java" target="_blank" rel="noopener noreferrer"&gt;PlanetExtractions&lt;/a&gt;
 and &lt;a href="https://github.com/JetBrains/intellij-samples/blob/main/standard-java/src/main/java/com/jetbrains/refactoring/Planet.java" target="_blank" rel="noopener noreferrer"&gt;Planet&lt;/a&gt;
 class.&lt;/p&gt;</description></item><item><title>Creating a JavaFX World Clock from Scratch (Part 1)</title><link>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/</link><pubDate>Mon, 14 Dec 2020 09:27:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/creating-a-javafx-world-clock-from-scratch-part-1/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Good design&amp;rsquo;s not about what medium you&amp;rsquo;re working in. It&amp;rsquo;s about thinking hard about what you want to do and what you have to work with before you start.&amp;quot; &amp;ndash; Susan Kare &lt;a href="https://en.wikipedia.org/wiki/Susan_Kare" title="Susan Kare" target="_blank" rel="noopener noreferrer"&gt;[6]&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="h3-0-introduction"&gt;Introduction&lt;/h3&gt;
&lt;p&gt;Welcome to &lt;em&gt;Creating a JavaFX World Clock from Scratch (Part 1)&lt;/em&gt;! In this series of blog entries I would like to show you how I created a &amp;ldquo;sci-fi&amp;rdquo; looking world clock that happens to be a cross-platform Java desktop application.&lt;/p&gt;</description></item><item><title>Why I Love IntelliJ IDEA for Java Development</title><link>https://foojayio.github.io/website/today/why-i-love-intellij-idea-for-java-development/</link><pubDate>Mon, 30 Nov 2020 09:16:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/why-i-love-intellij-idea-for-java-development/</guid><description>&lt;p&gt;If you&amp;rsquo;re a Java developer like me, you like to crank out code and get shit done. I like many things about IntelliJ IDEA, but I thought it&amp;rsquo;d be fun to write about the ones that make me most productive. First, a bit of my development history.&lt;/p&gt;
&lt;p&gt;When I first started doing Java development in the late 90s, I used HomeSite as my editor. HomeSite was an HTML editor initially developed by Nick Bradbury. I liked it because it defaulted to a view of your code rather than being WYSIWYG like Dreamweaver and FrontPage. It&amp;rsquo;s funny to look back now and laugh about how inefficient I was: I used to google for import statements, then copy/pasted them into the editor.&lt;/p&gt;</description></item><item><title>Apple Silicon with Zulu OpenJDK and IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/apple-silicon-with-zulu-openjdk-and-intellij-idea/</link><pubDate>Thu, 26 Nov 2020 09:01:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/apple-silicon-with-zulu-openjdk-and-intellij-idea/</guid><description>&lt;p&gt;Azul has been leading the OpenJDK community effort (&lt;a href="http://openjdk.java.net/jeps/391" target="_blank" rel="noopener noreferrer"&gt;JEP 391&lt;/a&gt;
) initiated in August 2020 to add support for Apple Silicon, Arm-based Macs, in future versions of OpenJDK.&lt;/p&gt;
&lt;p&gt;In addition to targeting future Java versions, Azul has made OpenJDK builds of currently popular Java versions, including Zulu builds of OpenJDK 8, 11, and 13, as well as 16-ea, widely available for use on Apple Silicon, Arm-based Macs.
&lt;a href="https://www.azul.com/downloads/zulu-community/?os=macos&amp;amp;architecture=arm-64-bit&amp;amp;package=jdk" target="_blank" rel="noopener noreferrer"&gt;&lt;img src="https://foojayio.github.io/website/today/apple-silicon-with-zulu-openjdk-and-intellij-idea/image-1024x761.png" alt="" loading="lazy"&gt;
&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;In June 2020, Apple announced a two-year plan to transition the CPUs in its Macintosh line of computers from Intel&amp;rsquo;s x86-64 processors to Apple-designed chips that use the ARM64 architecture. At its &amp;ldquo;One More Thing&amp;rdquo; event on November 10 2020, Apple followed through on its promise and debuted new MacBook Air, MacBook Pro and Mac Mini Arm-based models powered by Apple Silicon.&lt;/p&gt;</description></item><item><title>It's all IntelliJ IDEA's Fault: IntelliJ IDEA Made Me Lazy</title><link>https://foojayio.github.io/website/today/intellij-idea-made-me-lazy/</link><pubDate>Tue, 24 Nov 2020 08:58:42 +0000</pubDate><guid>https://foojayio.github.io/website/today/intellij-idea-made-me-lazy/</guid><description>&lt;p&gt;I haven&amp;rsquo;t always been lazy; it&amp;rsquo;s a fairly recent addition to my repertoire of skills. And do you know who I blame? I blame IntelliJ IDEA. I used to check that I&amp;rsquo;d completed a statement correctly, I used to look at &lt;em&gt;javadoc&lt;/em&gt;, I used to check I&amp;rsquo;d closed my parentheses correctly, but now I don&amp;rsquo;t give things a second glance.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://helenjoscott-blogs.s3.eu-west-2.amazonaws.com/lazy-cat.jpg" alt="Lazy cat" loading="lazy"&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-it-s-all-intellij-idea-s-fault"&gt;It&amp;rsquo;s all IntelliJ IDEA&amp;rsquo;s Fault&lt;/h2&gt;
&lt;p&gt;No, really, it is. Back when I was a &lt;em&gt;cough&lt;/em&gt; younger adult, we had to type out &lt;em&gt;&lt;strong&gt;all the code&lt;/strong&gt;&lt;/em&gt;, we also thought it was cool to mix drinks that turned into something akin to gorilla snot. Maybe we weren&amp;rsquo;t that smart, but I am discovering one thing at a rapid rate, IntelliJ IDEA was smarter than me, even 20 years ago (I&amp;rsquo;d like to say it was a low bar).&lt;/p&gt;</description></item><item><title>Starting a JavaFX Project with Gluon Tools</title><link>https://foojayio.github.io/website/today/starting-a-javafx-project-with-gluon-tools/</link><pubDate>Tue, 17 Nov 2020 08:38:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/starting-a-javafx-project-with-gluon-tools/</guid><description>&lt;p&gt;Here on foojay.io you can already find two posts by Carl Dea to get you started with JavaFX:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/blog/beginning-javafx-with-intellij/"&gt;Beginning JavaFX Applications with IntelliJ IDE&lt;/a&gt;
: step-by-step how to start a new JavaFX project without any tools, are by using the Maven and Gradle tools.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://foojayio.github.io/website/blog/a-javafx-app-on-zulufx-in-60-seconds/"&gt;A JavaFX App on ZuluFX in 60 Seconds&lt;/a&gt;
: how to use a popular distribution from &lt;a href="https://www.azul.com/" target="_blank" rel="noopener noreferrer"&gt;Azul&lt;/a&gt;
 to build a JavaFX HelloWorld Application in 60 seconds.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In this post, I want to show you yet another approach that uses the tools provided by &lt;a href="https://gluonhq.com/" target="_blank" rel="noopener noreferrer"&gt;Gluon&lt;/a&gt;
, who are the maintainers, and the driving force behind &lt;a href="https://openjfx.io/" target="_blank" rel="noopener noreferrer"&gt;OpenJFX&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>Live Templates for Java Developers in IntelliJ IDEA</title><link>https://foojayio.github.io/website/today/live-templates-in-intellij-idea/</link><pubDate>Mon, 26 Oct 2020 08:31:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/live-templates-in-intellij-idea/</guid><description>&lt;p&gt;Okay, I did the math. If you use all 38 of the Live Templates for Java that are available out of the box in IntelliJ IDEA 2020.2, you will save your finger pads approximately 2092 presses of wear and tear, and that&amp;rsquo;s just each one once, the reality is likely to be substantially higher.&lt;/p&gt;
&lt;p&gt;I will caveat this by saying that I counted the unresolved variables, yours may be longer or shorter. Still, it&amp;rsquo;s impressive!&lt;/p&gt;</description></item><item><title>New to IntelliJ IDEA by JetBrains? Me Too!</title><link>https://foojayio.github.io/website/today/new-to-intellij-idea-me-too/</link><pubDate>Fri, 02 Oct 2020 10:07:49 +0000</pubDate><guid>https://foojayio.github.io/website/today/new-to-intellij-idea-me-too/</guid><description>&lt;p&gt;Until recently, I last wrote Java in anger in 2002. IntelliJ IDEA had just been released; it wasn&amp;rsquo;t remotely on my radar. I honestly can&amp;rsquo;t remember what IDE we were using back then, but it certainly was a very long way to the fully featured IDE that JetBrains produce today.&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s my experience of using IntelliJ IDEA for the first time!&lt;/p&gt;
&lt;h3 id="h3-0-1-downloading-intellij-idea"&gt;1. Downloading IntelliJ IDEA&lt;/h3&gt;
&lt;p&gt;There&amp;rsquo;s a lot going on when you first load IntelliJ IDEA, but I learned pretty quickly that there are also some good first steps you can take to make your experience a little more comfortable.&lt;/p&gt;</description></item></channel></rss>