Grafana as proxy

Your local development of a Grafana plugin or dashboard may lack representative data. Connecting to production data sources may be impossible, but there are other ways to connect. Read more to find out how to use Grafana as a proxy to access the data.

JDK23: Gatherers upgrades pipeline design pattern JEP-473

CC by https://www.hippopx.com/en/playmobil-toy-garbage-collector-miniature-183453

A Stream API meets the requirements for most standard use cases, but when an additional complex conditional transformation is required, these steps lead to a complex definition of a terminal function, which is represented by the use of a Collector. Such collector usage can be not only difficult to understand but also difficult to maintain. In other words, there is an obvious lack of ability to define advanced intermediate operations on the pipeline…

JDK23: Builder pattern simplicity with JEP-455s

CC by https://www.hippopx.com/en/building-joy-planning-plans-professional-employee-builder-106923

The factory design may be a good fit for many cases but it may also create obstacles due to the pattern code centralized nature. In this post we review how to shift an object initiation process across various parties with creational pattern builder and JEP-455…

JDK23: Null object pattern to avoid null pointer exception with JEP-455

CC by https://www.hippopx.com/en/notebook-empty-paper-designer-table-book-open-131463#google_vignette

The newest release JDK 23 comes with a neat extension to pattern matching for switch and instanceof statements, JEP-455: Primitive Types in Patterns, instanceof and switch. While the introduction of pattern matching can be considered a crucial element in moving the Java platform into a functional paradigm, it introduced several limitations…

JDK23: Factory pattern with flexible constructor bodies, JEP-482

CC by https://www.hippopx.com/en/racing-car-engine-engine-mechanical-auto-racing-car-vehicle-car-engine-168723

Lately released JDK 23 has arrived together with great collection of new enhancements. This blog post reviews one particular, namely JEP-482: Flexible contructors bodies. This JEP is one of many kicking the Java platform into a long-term pursuit of a functional programming style. How? Let’s review Factory method, one of the most used creational design patterns…

Checkly and OpenTelemetry traces

This week I came across Checkly, a code-first synthetic monitoring solution that can do API checks and browser checks using PlayWright. It would have saved me a lot of time if this had been around 8 years ago.

Code Green - What is AI Anyway? - Blog Series part 2

The blog post, part of the Project Code Green series, explores how AI tools like ChatGPT function, focusing on concepts such as Large Language Models (LLMs), vectors, semantic meaning, and the attention mechanism. It aims to provide a foundational understanding of AI’s role in sustainable software development.

Code Green - Sustainable Software Development - Blog Series part 1

Curious about how much energy your code consumes? In this blog, we explore the impact of software efficiency on energy consumption and introduce Project Code Green, a research initiative aimed at optimizing code for sustainability using AI tools. Dive in to learn how careful code optimization can not only save energy but also sharpen your development skills.

Replace Promtail with new Grafana Alloy

An announcement was made at GrafanaCON. Alloy is introduced in the family of Grafana tools. Alloy is an open source distribution of the OpenTelemetry Collector, but is will also replace Promtail.

Lessons learned using ML in Java

In this talk, Jago shares his journey of using machine learning in Java to build a visual recognition system that can identify Lego blocks.

Grafana Scenes - 10 development tips

Grafana Scenes can enhance your experience with Grafana dashboards by bringing observability data together and guiding users to the right data. But how to get started with Grafana Scenes? In this blog post, I will share several tips based on my experience over the last few months.

Observability Toolkit

Last year I was involved in the investigation of major incidents where I used Promtail, Loki and Grafana to find the cause. Colleagues asked: Can you share the setup you use locally? Of course, and I shared a zip file with a docker-compose.yml and some config files. That is what I want to share with Observability Toolkit.

Adding deployment.environment to Grafana Faro traces

One of the great things about OpenTelemetry is the standardisation of span attributes and resource attributes. An example of this is deployment.environment. With Grafana Faro you can configure the environment. This adds the environment variable to the setup. The data is sent as logs and as traces. The logs include the environment attribute which you can find as `app_environment1 attribute.

Grafana Scenes & Codespaces

With Grafana Scenes it is possible to create more than just dashboards. There are options to create dashboards that guide the user. But how do you start developing with Grafana Scenes? One trend is to develop remotely, rather than on your local machine. Let’s see how we can combine this.

Technical deep dive into Grafana Faro

As shown in my previous post, you can add Grafana Faro to get more information about users who visit a website, in my case my own blog. But what kind of data is available now?

Communicating our APIs: Three methodologies of API Development

This blog is the Part 2 of the “Communication our APIs” series. In this part we implement a Recipes API based on Code First, API First and Consumer First methodologies and analyze how each approach impacts the interactions between a fictional provider and consumer.

Fine-Tuning GPT-2 for Generating Scientific Abstracts

This blog explores fine-tuning GPT-2 to generate scientific abstracts, comparing its efficiency and accuracy with custom transformer models, demonstrating GPT-2’s superior performance in text generation quality and training time.

5 hard to swallow pills for Java developers

In an increasingly unpredictable world, predictable software development and deployment methodologies are losing their value quickly. In this talk, Piet will explain how Java software engineers can learn to move from slow and predictable to agile and competitive.

Foojay Developer Certification - measure skills!

In short, this post explains why and how Foojay with a group of enthusiastic people from OpenValue and other organizations is implementing a new sort of developer certification that objectively measures dev skills. We also invite you to join our initiative if your interested via #certification on the Foojay slack

10 things to convert you to the subatomic side of force

Nothing in this world is forever, unless we’re talking about developer’s laziness. Introducing Quarkus, a Kubernetes Native Java stack tailored for OpenJDK HotSpot and GraalVM, crafted from the best of breed Java libraries and standards!

Countdown 101: How I Become a Book Author

CC by https://www.hippopx.com/en/rocket-ses-9-launch-cape-canaveral-rocket-launch-satellite-orbit-space-19342

I started working on the book almost a year ago and 5,4,3,2,1… now it’s done! The book is published!

Why testing is great, but blocking your build on code coverage is not

Recently at work guidelines were being developed for the department. Part of those guidelines were related to SonarQube quality gates that would be used inside of our CI/CD pipelines. I noticed during the discussion that even though everyone agrees that code coverage is not a direct measure of quality, it is still quite hard to argue that it therefore should not be part of the quality gate. I decided to write down my thoughts in a bit more of a structured way to see if I can convince my peers.

Conference Speaker 101

Interested to speak on conferences? But you don’t really know what to except or where to start? I invite you to read this article.

JavaOne Las Vegas 2022 Report

We even got cool T-Shirts!

OpenValue’s 11 team has visited JavaOne 2022 in Las Vegas. One talk given, over hundred of sessions attended and a couple of weeks to let it soak in later - here is what we have to share with you!

Am I testing the right way?

What can or should be considered the right size of a unit with regard to what is tested in isolation? Two unit-testing approaches explained!

MongoDB Time Series

MongoDB 5 added support for Time Series data. With the release of version 6, the feature matured. We will take a closer look at this feature and learn: how we can use it in a Java Spring Application; how to store your data and how to access it in meaningful ways.

Testing AWS lambdas

There are a lot of resources and best practices about testing of microservices. Serverless functions like AWS Lambdas are still mostly tested manually after a deployment, especially concerning logic provided by AWS. Through smart usage of LocalStack, TestContainers and the AWS SDK it is possible to automatically execute component tests and uncover possible errors in the usage of the lambda function.

Am I Testing the Right Way?

CC by https://www.hippopx.com/en/hacking-coding-code-hack-computer-technology-data-400020

What can or should be considered the right size of a unit with regard to what is tested in isolation? Two unit-testing approaches explained!

Observability and Profiling - not only for Java developers

Cloud computing brings new challenges to application development. The concept of Microservices is pushing on distributed solutions design. In this talk we examine, over examples, conventional observability and profiling techniques available for the popular JVM frameworks (Ktor, Spring, Quarkus, etc.).

What Can We Expect In OpenJDK 19?

CC by https://www.hippopx.com/en/cup-cup-of-come-nature-work-spoon-table-coffee-245321

Although the Java 19 release is coming in September (2022-09-20), we already know what will happen in that release!

Tekton CI/CD, to build more and to maintain less

Tekton CI/CD is all about leveraging your existing Kubernetes cluster to build, test and deploy your applications and uses the same syntax as you’re used to when creating resources on Kubernetes using YAML. No more maintaining your own Jenkins servers and all about creating pipelines.

Diving into JVM framework monitoring and profiling!

CC by https://www.hippopx.com/en/planet-earth-globe-space-world-continents-blue-120005

Managing available resources on demand in a cloud environment can be a very challenging topic. It is worth the effort, since it may however utilize resources far more efficiently. Companies or projects are therefore very keen to migrate to the cloud providers, such as Azul, AWS, Google Cloud or others….

Thinking about massive through-put? Virtual Threads in game

CC by https://www.hippopx.com/en/background-digitization-3d-model-structure-virtual-world-presentation-form-82596

The goal of this article is to examine known facts about an upcoming Java threading model extension. No, no-worries, the current java threading model remains but behind the curtains something good is already knocking . Yes, we are talking about JEP-425: Virtual Threads…

Moving to Kotlin, Powered by Engineers

About a year ago Rabobank started fully embracing Kotlin. In this non-technical session so I can take you through the journey of the Kotlin Movement! How it started, and how it plans to increase Kotlin adoption in a durable matter within a complex environment that is the Rabobank.

Create APIs with jwebserver from jshell to docker 

CC by https://www.hippopx.com/en/it-server-server-cabinet-network-cable-patch-cable-network-cables-125167

In the age of cloud computing it is very handy to have the ability to run very simple web-server. A simple web-server that delivers static content, like JSON, read more…

Mastering command-line with factory pattern in three JVM languages

CC by https://www.hippopx.com/en/industry-factory-abandoned-abandoned-factory-old-339718

The article investigates the code verbosity in three different JVM languages. It examines a program selection control mechanism in naive factory pattern implementation. For the example puroses the command-line is used for compiliation and programs execution…

Understanding Spring4Shell: vulnerability, attacks and mitigations

Image source: https://www.cyberkendra.com/2022/03/springshell-rce-0-day-vulnerability.html

Spring Core on JDK9+ is vulnerable to remote code execution, as described in CVE-2022-22965, also known as Spring4Shell. But what is Spring4Shell? How does it work? What types of attacks are possible and which mitigations exist? We’ll answer these questions in this article.

4+1 important features coming with Java 18 SE/JDK

CC by https://www.hippopx.com/en/coffee-java-hot-fuming-smoke-coffee-cup-cup-384990

Time is running forward without any compromises and the six month JDKrelease period is over. Similar to people expecting spring and nice weather, the Java community is excited about the next SE and JDK release that holds number 18. Yes, Java 18 is here and in this article we explore the most important changes together with features added since the preview.

Plugin and Play

How to verify your Kotlin project in a Kotlin way? Simone is talking about test coverage and about style linter. Wouldn’t it be great if we can really use Kotlin in the full spectrum and use tools that support those features?

Observability 4 JVM Frameworks with Grafana in Java and Kotlin

CC by https://www.hippopx.com/en/back-view-hair-observing-ocean-outdoors-person-pose-360145

In the time of cloud and distributed applications it is becoming more and more important to be able to evaluate a functionality at runtime, an aspect which is referred to as observability. A cloud based application is usually set up as the collection of different subsystems that may be located in one or more network zones or machines. These subsystems communicate between each other by passing messages (signals) and executing desired actions to each other. The whole collection then appears to the end user as a single coherent system.

Building a career as a speaker

How do you build a career as a speaker? What are the ingredients for a great talk? Why is sharing knowledge important? Watch this interview with our CTO Bert Jan Schrijver and learn how to kickstart your speaking career.

Understanding Log4Shell: vulnerability, attacks and mitigations

Log4Shell (CVE-2021-44228) is a zero-day vulnerability in Log4j, a popular Java logging framework. But what is the Log4Shell vulnerability? How does it work? What types of attacks are possible and which mitigations exist? Watch this video for answers!

Java Flight Recorder: Knocking on the Java & Kotlin apps profiling doors

CC by https://www.hippopx.com/en/backlit-blogging-business-coding-computer-keyboard-light-356602

Nowadays the IT world often spells terms like SRE or latencies, but how to measure this in an accurate way without relying on ‘random’ samples. The goal of this article is to examine the possibilities of profiling a Kotlin and a similar Java application with Java Flight Recorder to get a better understanding of their behavior compared to each other.

Software architecture in a DevOps world

Most modern software teams strive for Continuous Delivery of business impact with a DevOps mindset: you build it, you run it. With short iterations and continuous feedback loops, teams deploy new software to production daily. But how about the role of a software architect in such a fast-paced world? With daily deployments, is there even time for software architecture?

Why is testing so difficult?

There are hundreds, if not thousands of blogs, papers, videos and talks that describe how and what to test and especially why! In my talk I want to shed light on possible reasons for test fatigue and show possible solutions on how test coverage can be increased in large enterprise projects and how developers can enjoy testing more!

Debugging distributed systems

Debugging distributed systems is not easy. When two components don’t play nice together, the cause could be virtually anything: software, DNS, routing, firewalls, proxies, load balancers, TLS.. and more! In this talk, I’ll share my experience with debugging distributed systems. We’ll look at typical issues and I’ll introduce a structured ways to debug those issues and find their root causes.

From Spring Boot to Quarkus

When you’re building (micro)services, you have lots of framework options. Spring Boot is no doubt a popular choice. But there’s more! Take Quarkus, a framework that’s considered the rising star for Kubernetes-native Java. It always depends what’s best for your situation, but how to choose the best solution if you’re comparing 2 frameworks?

Embrace the Kotlin ecosystem at the back-end side

Kotlins ecosystem for server-side development is growing very fast. While Spring is also hopping on the Kotlin train, the rest of Kotlins ecosystem is growing fast. More and more new frameworks are popping up implementing different point of views on how to build your service. Those new frameworks might change our ways of developing back-end applications. Lets have a look out there!

Testing of email notifications with GreenMail

Sending emails or receiving and processing emails is something that a lot of applications feature to their users. But how do you know that the code doing this actually works? GreenMail is an open source, intuitive and easy-to-use suite of mock email servers for testing purposes. In this presentation you will learn how to leverage GreenMail to manually and integration test your email functionality.

Introduction to remote debugging of Java applications

In this talk, I will show you how you can connect your remote Java application with your local IDE to start debugging. You’ll learn how to use SSH to connect to a secured environment for debugging and profiling the Java application. And I’ll also show you some easy tricks, you can use for your future analyzing sessions. After this talk, you’ll be ready to start remote debugging Java applications yourself!

What makes a good developer?

CC by https://www.hippopx.com/en/person-infront-gray-laptop-computer-programming-codes-43278

In the past 20 years I’ve been able to work with many developers. Together we’ve worked on very large to the tiniest of projects, from huge corporate applications to simple web forms that deliver enormous business value. From beautiful new ‘greenfield’ applications to software written long before I was born.

Building a platform native CLI in Kotlin with Clikt and GraalVM

Most developers love working with command-line interfaces (CLI’s) to speed up and automate tasks. But how about building a beautiful and feature rich CLI in a JVM language? Sounds impractical, since JVM languages need a virtual machine to run on. Well, not anymore! With Clikt and GraalVM, it is possible to create these CLIs with ease, and even create native platform binaries for every major platform architecture.

Mutants to the rescue: How effective are your unit tests?

We write tests to tackle bugs, verify functionality and to ease maintenance. Using code coverage as our metric we might deem ourselves safe and our tests flawless. But how can we be sure that our tests are okay? In this talk we will enter the world of mutation testing. We will cover mutation tools, how they work, how to get started and how to integrate it in your builds.

What do you know about Java compiler optimizations?

The Java HotSpot compilers support a suite of advanced optimizations to enable high performance programs. Some of these optimizations include method inlining, removing unnecessary checks and loop unrolling. The compiler does this at different times, but what do you already know about these optimizations? In this talk, Ill test your knowledge of different optimizations via an interactive quiz.

End-2-End test environments, a dead End road

With the rise of Distributed Architecture, independent DevOps teams and automated CI/CD the End-to-End test environments needs to be reconsidered. They become flaky, shaky, untrustworthy and hard to maintain. Why are End-to-End test environments a dead End road and what are the alternatives.

The Magic of Music Matching

The first time I used Shazam (the music matching app) it felt just like that: pure magic. The app shortly listens with the microphone and tells you which song is playing. After a weekend of studying, reading scientific papers and experimenting and coding: I had a working Shazam clone written in Java. During this talk I’ll reveal what I’ve learned and what algorithms and tricks being used.

Going full stack with GraphQL

REST is a great convention on paper, but is it actually good enough for today’s variety of clients like web, mobile, IoT etc? Is there a better alternative? GraphQL’s query language can drastically change the way you think about data models and state-management. In this talk we’ll learn how to put GraphQL (Java) in front of an existing Java REST backend and how to introduce compile time coupling between clients and server.

Concurrency in Kotlin: how coroutines make it easier

Concurrent software is hard to get right, as we’ve seen in the previous article, “When flows split”. Concurrency is even harder to express. Most concurrent code is being written in a way that makes our heads spin every time we need to read it. Let us see how Kotlin helps us write concurrent code that is clearer and more efficient from the start.

A guided tour through automated testing with Cypress.io

Cypress is a complete end-to-end testing experience for anything that runs in a browser. Cypress promises to be more developer friendly than Selenium; let’s see if that’s true. In this session we’ll show how we’ve used Cypress to make feature development easier at a Dutch education company, write end-to-end tests at a Kenyan healthcare company, and test individual components at bol.com.

Spring Boot: From Java Web MVC to Kotlin WebFlux

Spring Boot has been around for some time and still seems to be the most popular framework when it comes to building modern web applications. Similarly about Kotlin language. It’s not as old as Spring framework but it’s been highly accepted and used by many developers. In this post, we’ll look at moving from Java Web MVC to Kotlin WebFlux.

Building serverless Java applications using Micronaut and OpenFaaS

Image by Tayeb MEZAHDIA from Pixabay

When working on microservices in the Java ecosystem, especially using Spring (Boot), you will notice the long start-up time that applications will have, let alone the high memory consumption they will have. Looking at a framework such as Micronaut could help out to reduce this overhead without loosing any developer’s productivity. Let’s dive into it!

Why we gave 50+ tech talks at 19 conferences

Photo by Headway on Unsplash

We started OpenValue almost 2 years ago. One of the key values of our company is sharing knowledge. Next to fun and craftsmanship. This all comes together with our activities in the international Java community. I’ll explain why.