<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simon Martinelli on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/simon-martinelli/</link><description>Articles written by Simon Martinelli on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 02 Feb 2026 11:04:54 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/simon-martinelli/index.xml" rel="self" type="application/rss+xml"/><item><title>Announcing: Sustainability for Java Developers</title><link>https://foojayio.github.io/website/today/announcing-sustainability-for-java-developers-a-new-collaborative-guide-from-the-foojay-io-community/</link><pubDate>Mon, 02 Feb 2026 11:04:54 +0000</pubDate><guid>https://foojayio.github.io/website/today/announcing-sustainability-for-java-developers-a-new-collaborative-guide-from-the-foojay-io-community/</guid><description>&lt;p&gt;Java developers from around the world are writing a book about a question that&amp;rsquo;s becoming impossible to ignore: how do we write software that&amp;rsquo;s good for both our projects and the planet?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Sustainability for Java Developers: Towards an Understanding of Sustainable Java Software Development&lt;/em&gt; is now freely available on Leanpub, bringing together Java Champions, architects, and technical writers to look at sustainability from every angle.&lt;/p&gt;
&lt;figure class="wp-block-image size-large is-resized"&gt;
 &lt;img fetchpriority="high" decoding="async" width="793" height="1024" src="sustainabilitybook-793x1024.png" alt="" class="wp-image-122569" style="width:277px;height:auto"&gt;
&lt;/figure&gt;
&lt;p&gt;The book covers everything from the environmental footprint of our data centers to the ethics of open source supply chains, from efficient data formats to the often-overlooked topic of career longevity.&lt;/p&gt;</description></item><item><title>Testing Emails with Testcontainers and Mailpit</title><link>https://foojayio.github.io/website/today/testing-emails-with-testcontainers-and-mailpit/</link><pubDate>Thu, 29 Jan 2026 08:38:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/testing-emails-with-testcontainers-and-mailpit/</guid><description>&lt;p&gt;Testing email functionality is often painful. SMTP servers are external, tests become slow or flaky, and local setups differ from CI environments. As a result, many teams either mock the mail sender or skip proper email tests completely.&lt;/p&gt;
&lt;p&gt;Both approaches are unsatisfying. Mocking does not test real behavior, and shared SMTP servers introduce hidden dependencies. What we really want is a real SMTP server that runs locally and in CI, is fully isolated per test run, and allows us to inspect sent emails easily.&lt;/p&gt;</description></item><item><title>Spec-Driven Development with AI: A New Approach and a Journey into the Past</title><link>https://foojayio.github.io/website/today/spec-driven-development-with-ai-a-new-approach-and-a-journey-into-the-past/</link><pubDate>Mon, 08 Sep 2025 07:35:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/spec-driven-development-with-ai-a-new-approach-and-a-journey-into-the-past/</guid><description>&lt;p&gt;The software development world is buzzing about AI-assisted coding. Tools like Claude Code, Windsurf, and JetBrains Junie promise to make us more productive. But most approaches focus on generating code faster &amp;ndash; they&amp;rsquo;re still &lt;strong&gt;code-centric&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;What if we took a different approach? What if we made &lt;strong&gt;requirements&lt;/strong&gt; the source of truth and let AI handle everything downstream?&lt;/p&gt;
&lt;p&gt;After years of building business applications, I began developing a methodology that combines ideas from the &lt;a href="https://en.wikipedia.org/wiki/Rational_unified_process" target="_blank" rel="noopener noreferrer"&gt;Rational Unified Process&lt;/a&gt;
 (RUP) with modern AI tooling: The &lt;a href="https://aiup.dev" target="_blank" rel="noopener noreferrer"&gt;AI Unified Process&lt;/a&gt;
. The results are remarkable: better business alignment, maintainable code, and complete traceability from business needs to implementation.&lt;/p&gt;</description></item><item><title>How to Deploy a Vaadin Application as a WAR on Tomcat 11</title><link>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-as-a-war-on-tomcat-11/</link><pubDate>Mon, 19 May 2025 07:40:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-as-a-war-on-tomcat-11/</guid><description>&lt;p&gt;&lt;strong&gt;If you want to run a Vaadin application on an external servlet container like Apache Tomcat 11, you need to package your application as a WAR (Web Application Archive) instead of the usual executable JAR.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In this post, I&amp;rsquo;ll show you step-by-step how I did it.&lt;/p&gt;
&lt;h2 id="h2-0-step-1-download-tomcat-11"&gt;Step 1: Download Tomcat 11&lt;/h2&gt;
&lt;p&gt;First, download Tomcat 11 from the &lt;a href="https://tomcat.apache.org/download-11.cgi" target="_blank" rel="noopener noreferrer"&gt;official Apache Tomcat website&lt;/a&gt;
. After extracting it to a local folder, you have a clean Tomcat installation ready to use.&lt;/p&gt;</description></item><item><title>Securing Vaadin Applications with Microsoft Entra</title><link>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</link><pubDate>Wed, 26 Feb 2025 12:55:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/securing-vaadin-applications-with-microsoft-entra/</guid><description>&lt;p&gt;Many companies use Microsoft 365, so letting users log in with their Microsoft account is a good choice. This blog post shows how to secure your Vaadin applications using Microsoft Entra for authentication and authorization and explains how Karibu Testing must be configured.&lt;/p&gt;
&lt;h2 id="h2-0-step-1-create-an-application-in-entra"&gt;Step 1: Create an Application in Entra&lt;/h2&gt;
&lt;p&gt;The first step is to create an application, configure roles, assign users, and set the redirect URI.&lt;/p&gt;
&lt;p&gt;To create an application, log in to &lt;a href="http://entra.microsoft.com" target="_blank" rel="noopener noreferrer"&gt;http://entra.microsoft.com&lt;/a&gt;
 and select &amp;ldquo;Applications&amp;rdquo; -&amp;gt; &amp;ldquo;Enterprise applications.&amp;rdquo; There, you can create a new application. Select &amp;ldquo;Register an application to integrate with Microsoft Entra ID (App you&amp;rsquo;re developing).&amp;rdquo;&lt;/p&gt;</description></item><item><title>Integrating Google Analytics With Vaadin Flow: A Step-By-Step Guide</title><link>https://foojayio.github.io/website/today/integrating-google-analytics-with-vaadin-flow-a-step-by-step-guide/</link><pubDate>Wed, 08 Jan 2025 11:55:48 +0000</pubDate><guid>https://foojayio.github.io/website/today/integrating-google-analytics-with-vaadin-flow-a-step-by-step-guide/</guid><description>&lt;p&gt;&lt;strong&gt;Want to track how users interact with your Vaadin Flow application? Learn how to integrate Google Analytics with a clean, reusable component. This guide shows you step-by-step instructions on how to set up tracking, monitor page views, and capture custom events in your Vaadin application.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Analytics are crucial for understanding how users interact with your web application. In this guide, I&amp;rsquo;ll show you how to integrate Google Analytics with your Vaadin Flow application in a clean, maintainable way.&lt;/p&gt;</description></item><item><title>Browserless Testing of Vaadin Applications with Karibu Testing</title><link>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</link><pubDate>Mon, 09 Sep 2024 06:27:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/browserless-testing-of-vaadin-applications-with-karibu-testing/</guid><description>&lt;p&gt;I&lt;strong&gt;n modern web development, testing is essential for ensuring the reliability and performance of applications. For developers working with Vaadin, one of the best testing tools is Karibu Testing. This testing framework stands out for its ability to run browserless testing, offering several advantages over traditional end-to-end testing approaches, such as Selenium, Playwright, or Cypress.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;This article will highlight the benefits of browserless testing with Karibu Testing and how it compares to the end-to-end testing approach (E2E).&lt;/p&gt;</description></item><item><title>The Best Way to Handle Phone Numbers</title><link>https://foojayio.github.io/website/today/the-best-way-to-handle-phone-numbers/</link><pubDate>Fri, 05 Jul 2024 07:00:23 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-best-way-to-handle-phone-numbers/</guid><description>&lt;p&gt;Processing phone numbers seems complicated at first glance because of the many different formats. In this post, I&amp;rsquo;ll show you that with libphonenumber, it becomes child&amp;rsquo;s play. I&amp;rsquo;ll also recommend how to store the phone number in the database.&lt;/p&gt;
&lt;h2 id="h2-0-introduction-google-s-libphonenumber"&gt;Introduction Google&amp;rsquo;s libphonenumber&lt;/h2&gt;
&lt;p&gt;According to the GitHub repository &lt;a href="https://github.com/google/libphonenumber/" target="_blank" rel="noopener noreferrer"&gt;https://github.com/google/libphonenumber/&lt;/a&gt;
 libphone number is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;br /&gt;
&lt;p&gt;Google&amp;rsquo;s common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. The Java version is optimized for running on smartphones, and is used by the Android framework since 4.0 (Ice Cream Sandwich).&lt;/p&gt;</description></item><item><title>Foojay Podcast #53: JCON Report, Part 5 – CQRS, JOOQ, GraphQL, API, Vaadin, OpenRewrite, ErrorProne, Gateways, Proxies,...</title><link>https://foojayio.github.io/website/today/foojay-podcast-53/</link><pubDate>Mon, 17 Jun 2024 09:24:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-53/</guid><description>&lt;p&gt;This is the final part of the JCON interviews. Did I save the best for last? It&amp;rsquo;s up to you to decide&amp;hellip;&lt;/p&gt;
&lt;p&gt;In this episode you&amp;rsquo;ll hear Simon Martinelli, Nicolas Fränkel, Marcus Hellberg, Rick Ossendrijver, and Abdel Sghiouar.&lt;/p&gt;
&lt;p&gt;We talked about a bunch of topics like evolving your APIs, GraphQL, Java versus Kotlin versus Rust, Vaadin, AI and ChatGPT, OpenRewrite, ErrorProne, Infrastructure, and a lot more.&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/6ops5sU_UiY?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Foojay Podcast #46: JUG Switzerland</title><link>https://foojayio.github.io/website/today/foojay-podcast-46/</link><pubDate>Tue, 02 Apr 2024 09:42:09 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-46/</guid><description>&lt;p&gt;In this podcast, once a month, we discuss the history of a Java User Group and the people behind it.&lt;/p&gt;
&lt;p&gt;In this episode, I&amp;rsquo;m leaving the European Union and stepping over the border of Switzerland, the country where the Red Cross was started, and many international institutions have their headquarters.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s find out if there is also a big Java community&amp;hellip;&lt;/p&gt;
&lt;h2 id="h2-0-video"&gt;Video&lt;/h2&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
			&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/onYRMp1sFhk?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;
		&lt;/div&gt;

&lt;h2 id="h2-1-podcast-apps"&gt;Podcast Apps&lt;/h2&gt;
&lt;p&gt;You can listen and subscribe to the Foojay Podcast on:&lt;/p&gt;</description></item><item><title>Video: Spring Boot Testcontainers Support for Local Development</title><link>https://foojayio.github.io/website/today/video-spring-boot-testcontainers-support-for-local-development/</link><pubDate>Fri, 16 Feb 2024 09:07:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-spring-boot-testcontainers-support-for-local-development/</guid><description>&lt;p&gt;Spring Boot has supported TestsContainers for running services during tests for quite a while.&lt;/p&gt;
&lt;p&gt;With Spring Boot 3.1, Testcontainers support for local development was added. This video will show you how this works and how to use it.&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/GoBm7BoufIM?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;</description></item><item><title>Video: Spring Boot Docker Compose Support</title><link>https://foojayio.github.io/website/today/video-spring-boot-docker-compose-support/</link><pubDate>Wed, 31 Jan 2024 07:50:17 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-spring-boot-docker-compose-support/</guid><description>&lt;p&gt;In Spring Boot 3.1, Docker Compose support was added to simplify local development with external resources.&lt;/p&gt;
&lt;p&gt;In this video, I show you how this works and how to use it!&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/BQkvCxmaiqU?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;br /&gt;</description></item><item><title>Durable Subscription with JMS and Spring Boot</title><link>https://foojayio.github.io/website/today/durable-subscription-with-jms-and-spring-boot/</link><pubDate>Thu, 28 Dec 2023 12:45:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/durable-subscription-with-jms-and-spring-boot/</guid><description>&lt;p&gt;&lt;strong&gt;When using the publish-subscribe domain with JMS, we often want to use durable subscriptions. But how can this be done with Spring Boot?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-what-is-jms"&gt;What is JMS?&lt;/h2&gt;
&lt;p&gt;The Java Message Service (JMS) API is a standard for creating, sending, receiving, and reading messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.&lt;/p&gt;
&lt;p&gt;JMS supports two message delivery modes: Point-to-Point and Publish/Subscribe&lt;/p&gt;
&lt;p&gt;In the point-to-point domain, a producer can send a message to one consumer through a destination called &amp;ldquo;queue&amp;rdquo;. A given queue may have multiple receivers, but only one receiver may consume each message.
&lt;img src="https://foojayio.github.io/website/today/durable-subscription-with-jms-and-spring-boot/image.png" alt="" loading="lazy"&gt;
&lt;/p&gt;</description></item><item><title>Testing Spring Boot JMS with ActiveMQ Artemis and Testcontainers</title><link>https://foojayio.github.io/website/today/testing-spring-boot-jms-with-activemq-artemis-and-testcontainers/</link><pubDate>Tue, 12 Dec 2023 07:55:03 +0000</pubDate><guid>https://foojayio.github.io/website/today/testing-spring-boot-jms-with-activemq-artemis-and-testcontainers/</guid><description>&lt;p&gt;&lt;strong&gt;Currently, I&amp;rsquo;m teaching JMS with Spring Boot at the University of Applied Science in Bern, Switzerland. We use &lt;a href="https://activemq.apache.org/components/artemis/" target="_blank" rel="noopener noreferrer"&gt;Apache ActiveMQ Artemis&lt;/a&gt;
 as the JMS message broker. But how can we test our Spring Boot application?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="h2-0-testcontainers-to-the-rescue"&gt;Testcontainers to the Rescue&lt;/h2&gt;
&lt;p&gt;Currently, there is no &lt;a href="https://java.testcontainers.org%24/" target="_blank" rel="noopener noreferrer"&gt;Testcontainers Java&lt;/a&gt;
 module for ActiveMQ Artemis. As you can see in the &lt;a href="https://github.com/testcontainers/testcontainers-java" target="_blank" rel="noopener noreferrer"&gt;Testcontainers GitHub repository&lt;/a&gt;
, there is an active activemq branch that may be released soon. But in the meantime, we need another solution.&lt;/p&gt;</description></item><item><title>Video: Vaadin Drag &amp; Drop Support. It's so easy!</title><link>https://foojayio.github.io/website/today/video-vaadin-drag-drop-support-its-so-easy/</link><pubDate>Fri, 01 Dec 2023 13:24:06 +0000</pubDate><guid>https://foojayio.github.io/website/today/video-vaadin-drag-drop-support-its-so-easy/</guid><description>&lt;p&gt;In this video I show how simple it can be to add drag and drop to a Vaadin application! Drag and Drop can be helpful in many situations, but often it&amp;rsquo;s complicated to implement. That&amp;rsquo;s not the case with Vaadin. Vaadin makes it easy to have drag-and-drop support for all components.&lt;/p&gt;
&lt;p&gt;More information about drag and drop can be found in the &lt;a href="https://vaadin.com/docs/latest/create-ui/dnd" target="_blank" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;
.&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/WIyT9PqhbqA?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;</description></item><item><title>Vaadin, OAuth2, and Keycloak</title><link>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</link><pubDate>Tue, 24 Jan 2023 09:34:41 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-oauth2-and-keycloak/</guid><description>&lt;p&gt;This article shows how to configure Vaadin and Spring Security to use OAuth2 with Keycloak.&lt;/p&gt;
&lt;h2 id="h2-0-keycloak"&gt;Keycloak&lt;/h2&gt;
&lt;p&gt;First, we must start Keycloak and configure a realm. The easiest way is to start Keycloak with Docker.&lt;br&gt;
&lt;em&gt;Caution: This is just for development purposes. Don&amp;rsquo;t use the setup in production.&lt;/em&gt;&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;docker run -d -p 8180:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \ 
 quay.io/keycloak/keycloak:20.0.1 start-dev&lt;/pre&gt;
&lt;p&gt;Now you can log in to the admin console: &lt;a href="http://localhost:8180/admin" target="_blank" rel="noopener noreferrer"&gt;http://localhost:8180/admin&lt;/a&gt;
 (user: admin, password: admin)&lt;/p&gt;</description></item><item><title>How to deploy a Vaadin application to Google Cloud App Engine</title><link>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-to-google-cloud-app-engine/</link><pubDate>Tue, 26 Jul 2022 08:27:20 +0000</pubDate><guid>https://foojayio.github.io/website/today/how-to-deploy-a-vaadin-application-to-google-cloud-app-engine/</guid><description>&lt;p&gt;I tried to deploy a Vaadin application to Google Cloud App Engine.&lt;/p&gt;
&lt;p&gt;It was not as straightforward as expected, so I want to share my findings.&lt;/p&gt;
&lt;p&gt;The example project is available on GitHub: &lt;a href="https://github.com/simasch/vaadin-appengine-demo" target="_blank" rel="noopener noreferrer"&gt;https://github.com/simasch/vaadin-appengine-demo&lt;/a&gt;
&lt;/p&gt;
&lt;h2 id="h2-0-the-vaadin-application"&gt;The Vaadin Application&lt;/h2&gt;
&lt;p&gt;First, I&amp;rsquo;ve created a new Vaadin application: &lt;a href="https://start.vaadin.com" target="_blank" rel="noopener noreferrer"&gt;https://start.vaadin.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Then I did a production build:&lt;/p&gt;
&lt;pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""&gt;mvn package -Pproduction&lt;/pre&gt;
&lt;p&gt;That will generate an executable JAR file in the target directory.&lt;/p&gt;</description></item><item><title>Master-Detail with Hilla</title><link>https://foojayio.github.io/website/today/master-detail-with-hilla/</link><pubDate>Tue, 21 Jun 2022 12:13:24 +0000</pubDate><guid>https://foojayio.github.io/website/today/master-detail-with-hilla/</guid><description>&lt;p&gt;In this article, I&amp;rsquo;ll explain how to use the web application framework &lt;a href="https://hilla.dev" target="_blank" rel="noopener noreferrer"&gt;Hilla&lt;/a&gt;
 to create a master-detail view with a Grid to display the data and a Form to edit the data.&lt;/p&gt;
&lt;h2 id="h2-0-what-is-hilla"&gt;What is Hilla?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Hilla integrates a Spring Boot Java back end with a reactive TypeScript front end. It helps you build apps faster with type-safe server communication, including UI components, and integrated tooling. &amp;ndash; From &lt;a href="https://hilla.dev/" target="_blank" rel="noopener noreferrer"&gt;hilla.dev&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Hilla uses TypeScript with &lt;a href="https://lit.dev/" target="_blank" rel="noopener noreferrer"&gt;Lit&lt;/a&gt;
and &lt;a href="https://developer.mozilla.org/de/docs/Web/Web_Components" target="_blank" rel="noopener noreferrer"&gt;Webcomponents&lt;/a&gt;
 in the frontend and Spring Boot in the backend. In the backend you&amp;rsquo;ll create endpoints from which the API and the TypeScript will be generated. This makes the access to the backend much easier and it&amp;rsquo;s also typesafe and compile-time-checked.&lt;/p&gt;</description></item><item><title>Visualization of Business Function Message Flow with Vaadin and Neo4j</title><link>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</link><pubDate>Wed, 16 Mar 2022 08:21:10 +0000</pubDate><guid>https://foojayio.github.io/website/today/visualization-of-the-message-flow-between-business-functions-with-vaadin-and-neo4j/</guid><description>&lt;h2 id="_the_project"&gt;The Project&lt;/h2&gt;
&lt;p&gt;Analyzing and visualizing the message flow between business functions was the goal of my current project. At first we considered using a UML tool for this job, but we came to the conclusion that it might not be as flexible as we need it to be. Finally I&amp;rsquo;ve got the assigment to create a custom web application.&lt;/p&gt;
&lt;p&gt;Since business functions and messages are related to each other, it made sense to represent them as a graph. That&amp;rsquo;s why I chose &lt;a href="https://neo4j.com/" target="_blank" rel="noopener noreferrer"&gt;Neo4j&lt;/a&gt;
 as the database. Now the question was how to manage and visualize the graph. As I&amp;rsquo;m expierenced with the &lt;a href="https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/"&gt;Vaadin&lt;/a&gt;
 framework I want to use it also in this project.&lt;/p&gt;</description></item><item><title>Vaadin and jOOQ: Match Made in Heaven</title><link>https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/</link><pubDate>Wed, 09 Mar 2022 08:25:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/vaadin-and-jooq-match-made-in-heaven/</guid><description>&lt;p&gt;Have you ever had to write an application that didn&amp;rsquo;t do much other than display and change data? And did you use a Single Page Application framework like Angular, a REST API, and Hibernate?&lt;/p&gt;
&lt;p&gt;How about if that was a lot easier?&lt;/p&gt;
&lt;h2 id="_introducing_vaadin_and_jooq"&gt;Introducing Vaadin and jOOQ&lt;/h2&gt;
&lt;p&gt;Vaadin exists already for 20 years but was completely overhauled three years ago. Vaadin Flow is a web framework that allows the development of a web application in Java. It&amp;rsquo;s based on web components and the state is synchronized between browser and server.&lt;/p&gt;</description></item></channel></rss>