<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simon Verhoeven on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/simon-verhoeven/</link><description>Articles written by Simon Verhoeven on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 26 Jan 2024 18:30:35 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/simon-verhoeven/index.xml" rel="self" type="application/rss+xml"/><item><title>Book review: "Tidy first?"</title><link>https://foojayio.github.io/website/today/book-review-tidy-first/</link><pubDate>Fri, 26 Jan 2024 18:30:35 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-tidy-first/</guid><description>&lt;p&gt;&lt;img src="https://learning.oreilly.com/library/cover/9781098151232/250w/" alt="Tidy first" loading="lazy"&gt;
&lt;/p&gt;
&lt;p&gt;price: €39.99 for the eBook&lt;/p&gt;
&lt;p&gt;publication date: October 2023&lt;/p&gt;
&lt;p&gt;publisher: O&amp;rsquo;Reilly Media, Inc.&lt;/p&gt;
&lt;p&gt;pages: 99&lt;/p&gt;
&lt;p&gt;ISBN: 9781098151249&lt;/p&gt;
&lt;p&gt;Kent Beck, who certainly is not an unknown name in the software development world, recently published this book, which is based upon his newsletter with the same name.&lt;/p&gt;
&lt;p&gt;In this book, which is the start of a new series, we dive into the world of tidyings which are small changes that do not alter the behaviour of our applications.&lt;/p&gt;</description></item><item><title>Soft Assertions - testing kindly</title><link>https://foojayio.github.io/website/today/soft-assertions-testing-kindly/</link><pubDate>Fri, 19 Jan 2024 10:17:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/soft-assertions-testing-kindly/</guid><description>&lt;p&gt;Given it&amp;rsquo;s the advent of a new year, I thought let&amp;rsquo;s start with something nice and fun that can make live more enjoyable for everyone.&lt;/p&gt;
&lt;p&gt;As developers, we write testcases all the time to help us in our development process, and to help us detect potential regressions in the future.&lt;/p&gt;
&lt;p&gt;Now ideally we want our testcases to be as efficient as possible, and ideally to require as few reruns as possible. And this is where Soft Assertions come into play.&lt;/p&gt;</description></item><item><title>Book review: "Persistence Best Practices for Java Applications"</title><link>https://foojayio.github.io/website/today/book-review-persistence-best-practices-for-java-applications/</link><pubDate>Fri, 27 Oct 2023 08:56:21 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-persistence-best-practices-for-java-applications/</guid><description>&lt;p&gt;&lt;strong&gt;In todays ever-evolving world, fast and efficient data management is becoming ever more important. With the explosion of digital data and diverse data sources, selecting the right database type, whether it&amp;rsquo;s traditional relational, NoSQL, or emerging options like NewSQL, has become pivotal. This also leads us to the next challenge for us, how do we integrate with this? Do we use JPA/JOOQ/&amp;hellip; ? Where/how do we map our data? What is a polyglot setup, and should we be using it?&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Book review: “Developing Apps with GPT-4 and ChatGPT”</title><link>https://foojayio.github.io/website/today/book-review-developing-apps-with-gpt-4-and-chatgpt/</link><pubDate>Sun, 22 Oct 2023 06:05:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-developing-apps-with-gpt-4-and-chatgpt/</guid><description>&lt;p&gt;Whether you&amp;rsquo;re pro or con the usage of AI, LLMs, and ChatGPT one cannot deny that there are a plethora of possibilities now available to us.&lt;/p&gt;
&lt;p&gt;Now, given the rapid shift in this field, a lot of us are left with a lot of queries such as: what are the differences between the models, how do I query them and of course, how can I use them to my advantage?&lt;/p&gt;</description></item><item><title>Book review: "Get Your Hands Dirty on Clean Architecture - Second Edition"</title><link>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture-second-edition/</link><pubDate>Sat, 14 Oct 2023 11:51:34 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-get-your-hands-dirty-on-clean-architecture-second-edition/</guid><description>&lt;p&gt;&lt;strong&gt;Clean Architecture helps us ensure a solid foundation for our applications&lt;/strong&gt; ,&lt;strong&gt;and helps keep our code organized and maintainable. Furthermore when properly applied it helps keep ones team on the same page and ensures our applications stay robust and flexible over time. Of course there are a lot of pitfalls to take into account, and a lot of pros/cons to each approach. There certainly is no one size fits all approach. But luckily this book by &lt;a href="https://www.linkedin.com/in/thombergs/" target="_blank" rel="noopener noreferrer"&gt;Tom Hombergs&lt;/a&gt;
 provides a lot of valuable practical insights.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Contributing to Open Source: Hacktoberfest</title><link>https://foojayio.github.io/website/today/contributing-to-open-source-hacktoberfest/</link><pubDate>Tue, 03 Oct 2023 09:07:45 +0000</pubDate><guid>https://foojayio.github.io/website/today/contributing-to-open-source-hacktoberfest/</guid><description>&lt;p&gt;Quite frequently when it comes to contributing to open source I hear questions/doubts such as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;where do I start&lt;/li&gt;
&lt;li&gt;how do I find projects/issues&lt;/li&gt;
&lt;li&gt;can I help out as a newbie&lt;/li&gt;
&lt;li&gt;are there other ways I can contribute besides coding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Which is why I&amp;rsquo;d love to share a little bit about Hacktoberfest, which is an event organized by DigitalOcean that runs through the whole month of October that is celebrating its tenth anniversary this year. It&amp;rsquo;s an event encourages people from all over the world, from all walks of life and all skill levels to contribute to open source projects.&lt;/p&gt;</description></item><item><title>Exposing your data using Spring GraphQL</title><link>https://foojayio.github.io/website/today/exposing-your-data-using-spring-graphql/</link><pubDate>Tue, 19 Sep 2023 05:25:46 +0000</pubDate><guid>https://foojayio.github.io/website/today/exposing-your-data-using-spring-graphql/</guid><description>&lt;p&gt;&lt;strong&gt;In this article, we&amp;rsquo;ll take an introductory look at how we can use Spring GraphQL in our Java applications.&lt;/strong&gt; &lt;strong&gt;GraphQL is a query language (hence the QL) that in conjunction with a framework such as &lt;code&gt;Spring GraphQL&lt;/code&gt; can be used to efficiently manage our data, and even reuse existing services.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It has 2 core concepts:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;queries: used to define which data should be fetched, and which fields thereof should be included&lt;/li&gt;
&lt;li&gt;mutations: used to manage our dataset&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&amp;rsquo;s an alternative to REST, SOAP, or gRPC, and supports calls over HTTP, WebSocket and RSocket.&lt;/p&gt;</description></item><item><title>ArchUnit - test your architecture</title><link>https://foojayio.github.io/website/today/archunit-testing-your-architecture/</link><pubDate>Thu, 14 Sep 2023 14:09:56 +0000</pubDate><guid>https://foojayio.github.io/website/today/archunit-testing-your-architecture/</guid><description>&lt;p&gt;&lt;a href="https://www.archunit.org/" target="_blank" rel="noopener noreferrer"&gt;ArchUnit&lt;/a&gt;
 is a library that allows us to test our architecture (layering/slicing/(naming) conventions, and more).&lt;/p&gt;
&lt;p&gt;Why does this matter? It&amp;rsquo;s all about leaving a legacy and safeguarding it. During the lifecycle of a project, people might shift roles, join the team, &amp;hellip; And might not be aware of the conventions within the team/organization.&lt;/p&gt;
&lt;p&gt;Testing your architecture is both an aid to ascertain that the architecture is being implemented consistently and also makes it easier for people onboarding to get a grasp of what that agreed architecture is.&lt;/p&gt;</description></item><item><title>Load testing - shoot your application with Gatling</title><link>https://foojayio.github.io/website/today/load-testing-shoot-your-application-with-gatling/</link><pubDate>Wed, 06 Sep 2023 09:32:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/load-testing-shoot-your-application-with-gatling/</guid><description>&lt;h2 id="_what_is_load_testing"&gt;What is load testing?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Load testing entails testing how our application performs under a significant load so we can be certain it behaves as expected when there&amp;rsquo;s an influx of users.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Or at least so we know what it can cope it, and at what point we might potentially need to take action.&lt;/p&gt;
&lt;p&gt;After all, it might not (only) be the code that&amp;rsquo;s the issue.&lt;/p&gt;
&lt;p&gt;This is a process that requires quite a bit of cooperation between testers, developers, and those using it to properly determine the scenarios, and a smooth &amp;amp; swift feedback loop is important to make sure our solutions work properly. And it will likely be some of the most expensive tests given both the people involved and the need for a testing environment that&amp;rsquo;s representative of the production configuration.&lt;/p&gt;</description></item><item><title>Book review: "OpenJDK Migration for Dummies"</title><link>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies-2/</link><pubDate>Fri, 01 Sep 2023 07:42:43 +0000</pubDate><guid>https://foojayio.github.io/website/today/book-review-openjdk-migration-for-dummies-2/</guid><description>&lt;p&gt;&lt;strong&gt;In the past couple of years, there have been quite a lot of Oracle Java licensing changes which can have quite the impact on how much using the Oracle JDK will cost your organization, especially since under the latest terms it&amp;rsquo;s quite easy to have a &amp;ldquo;rogue&amp;rdquo; install cost you quite a bit.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is where the new &lt;strong&gt;free&lt;/strong&gt; book &lt;a href="https://www.azul.com/openjdk-migration-for-dummies/" target="_blank" rel="noopener noreferrer"&gt;OpenJDK Migration for Dummies&lt;/a&gt;
 by &lt;a href="https://www.linkedin.com/in/siritter/" target="_blank" rel="noopener noreferrer"&gt;Simon Ritter&lt;/a&gt;
 offers a very useful resource.&lt;/p&gt;</description></item><item><title>Spring 6.1 - RestClient</title><link>https://foojayio.github.io/website/today/spring-6-1-restclient/</link><pubDate>Wed, 30 Aug 2023 16:23:40 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-6-1-restclient/</guid><description>&lt;p&gt;As you might have read in this &lt;a href="https://spring.io/blog/2023/07/13/new-in-spring-6-1-restclient" target="_blank" rel="noopener noreferrer"&gt;blogpost&lt;/a&gt;
, Spring is introducing a &lt;code&gt;RestClient&lt;/code&gt; in Spring 6.1 to interact with HTTP backends.&lt;/p&gt;
&lt;p&gt;Now some of you might be wondering as to the why, given we already have a plethora of other options such as &lt;code&gt;RestTemplate&lt;/code&gt;, &lt;code&gt;WebClient&lt;/code&gt;, &lt;code&gt;HttpUrlConnection&lt;/code&gt;, &amp;hellip;​&lt;/p&gt;
&lt;p&gt;As we can see on the &lt;a href="https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html" target="_blank" rel="noopener noreferrer"&gt;javadoc&lt;/a&gt;
 page &lt;code&gt;RestTemplate&lt;/code&gt; got quite massive over time.&lt;/p&gt;
&lt;p&gt;The Spring team drew lessons from this, and the reactive &lt;code&gt;WebClient&lt;/code&gt; was created with a fluent interface.&lt;/p&gt;</description></item><item><title>Spring Boot: local development enhancements, let's compose!</title><link>https://foojayio.github.io/website/today/spring-boot-local-development-enhancements-lets-compose/</link><pubDate>Fri, 25 Aug 2023 11:16:05 +0000</pubDate><guid>https://foojayio.github.io/website/today/spring-boot-local-development-enhancements-lets-compose/</guid><description>&lt;p&gt;Quite often when we are developing an application we need external services such as rabbitMQ, Kafka, etc.&lt;/p&gt;
&lt;p&gt;When you are developing locally, you are quite likely using a docker-compose file to start these up, and I am certainly (hopefully) not the only one that has forgotten at least once to start these instances up.&lt;/p&gt;
&lt;p&gt;And maybe you are even already using Testcontainers for your testing.&lt;/p&gt;
&lt;p&gt;Luckily, Spring Boot 3.1 introduced some nice improvements to make our lives a bit easier.&lt;/p&gt;</description></item><item><title>Pitest: Do You Test Your Tests?</title><link>https://foojayio.github.io/website/today/pitest-do-you-test-your-tests/</link><pubDate>Tue, 15 Aug 2023 14:32:55 +0000</pubDate><guid>https://foojayio.github.io/website/today/pitest-do-you-test-your-tests/</guid><description>&lt;h2 id="_what_is_pitest"&gt;What is Pitest?&lt;/h2&gt;
&lt;p&gt;Pitest is a library that helps us do mutation testing.&lt;/p&gt;
&lt;p&gt;Mutation testing is a process in which random variations of the code under test are generated.&lt;/p&gt;
&lt;p&gt;Hence, our tests will run against variants of the code that we&amp;rsquo;re intending to test.&lt;/p&gt;
&lt;p&gt;If the test fails, the mutation is killed, if it still passes it lives. So in subsequent runs, you will see this mutation once again. Surviving mutations may indicate issues with our test set since application code changes should lead to different end results, and thus to failing tests. So to further reduce the survivors we will need to enhance our test cases and/or add extra.&lt;/p&gt;</description></item><item><title>OpenRewrite: we all grow older, but do our projects really have to?</title><link>https://foojayio.github.io/website/today/we-all-grow-older-but-do-our-projects-really-have-to-openrewrite/</link><pubDate>Tue, 08 Aug 2023 09:24:44 +0000</pubDate><guid>https://foojayio.github.io/website/today/we-all-grow-older-but-do-our-projects-really-have-to-openrewrite/</guid><description>&lt;p&gt;&lt;strong&gt;We have all likely worked on a project, that has grown quite &amp;ldquo;mature&amp;rdquo; over time, who knows we might even have forgotten to keep our dependencies up to date? Mayhap we finally got the green light to move from JDK 8 to 17?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This will quite likely entail a lot of library updates, and maybe some interesting changes (cough javax =&amp;gt; jakarta).&lt;/p&gt;
&lt;p&gt;This is where a rewrite tool like OpenRewrite can come in handy, and I would like to walk through some of the options of this tool in this article.&lt;/p&gt;</description></item></channel></rss>