I recently had a discussion with two fellow engineers about secure coding practices. After the discussion I realized that I am neglecting one of the most important practices: signing my commits.
There are tons of articles on the internet explaining why and how. These are my notes on the subject that I decided to publish.
These notes actually use literate programming so they are a mix of notes and code you can actually use via org-mode.
You can find the actual notes file here.
A couple of weeks ago I came across Roberto Carratalla’s blog post on Function calling on OpenShift AI. At the time I was preparing for RedHat Summit Connect Zurich 2025 where I was meant to run a workshop on Quarkus and Langchain4j with Kyra Goud, Dimitris Andreadis and Codrin Bucur. We had an issue however, related to enabling functions on OpenShift AI.
Roberto pointed us to the blog post, but I couldn’t spot what I was doing wrong. So, I decided to port the examples in the blog post to Java to make sure that I was comparing apples to apples.
This year I decided to put some personal time in learning reactjs. While I enjoy using Javascript for the frontend, I’d say that it’s not the language of choice for me for backend use. I don’t have anything against nodejs, but I prefer use java frameworks, which is the focus of my day job. So, I wanted to combine reactjs with Quarkus. A combination that just became more fun with the Quinoa. Quinoa allows users to use their favorite javascript framework with Quarkus with no additional configuration. On top of that it allows development of both backend and fronted from via the Quarkus dev mode. Last but not least it allows for native compilation that produces a single binary containing both fronted and backend.
Kubernetes is around for almost 7 years now! Ever since the beggining there have been efforts to make consuming / binding to services simpler. And while discovering the actual service is not so much of an issue (if you employ a set of conventions), getting the credentials etc is slightly trickier.
The Service Catalog has been an effort that promised to simplify provisioning and binding to services, but it seems that it has lost its momentum. The lack of uniformity between providers, the differences in how each service communicated the binding information and the fact that people tend to favor operators for provisioning services made it pretty hard to use in practice.
I used to be pretty vocal about things I work on. I used to write blogs, give conference talks or occasionally create short vlog kind of videos. If there is one topic I’ve completely missed, that is sundrio.
So, what is sundrio ?
sundrio is a code generation toolkit for generating code that no one wants to write by hand and everyone enjoys using. Besides the code generation frameworks, it also comes with modules (they are actually framework applications) for generating things like:
ap4k is a collection of java annotations and processors for generating, customizing and testing kubernetes and openshift manifests.
The idea of using java annotations for customizing kubernetes and openshift manifests is not something entirely new. In 2015 fabric8 provided an artifact called `kubernetes-generator` (not to be confused with other generators under the fabric8 umbrella) that allowed developers to hook into the compilation process code that customized these manifests. The way the code was hooked into the compilation processors was via java annotations. The idea was nice but did required developers to write actual code, and thus was soon abandoned as in favor of the fabric8-maven-plugin which was rewritten at the same time by Rolland Huss.
As I am approaching my 40s its becoming harder and harder to get really excited with a new framework. There are of course some exception to this rule and micronaut is such an exception. I won’t get into details here, but in many ways I feel that micronaut is a framework I would like to have written myself…
So, this post is going to be a first look at micronaut. It will include:
In some previous blog post, I designed and implemented Cellar (a small clustering engine for Apache Karaf powered by Hazelcast). Since then Cellar grew in features and eventually was accepted inside Karaf as a subproject.
This post will provide a brief description of Cellar as it is today.
Cellar is designed so that it can provide Karaf the following high level features
The core concept behind cellar is that each node can be a part of one ore more groups, that provide the node distributed memory for keeping data (e.g. configuration, features information, other) and a topic which is used to exchange events with the rest group members.
The last couple of years OSGi and Cloud Computing are two buzz words, that you don’t see go hand in hand that often. JClouds is going to change that, since 1.0.0 release is OSGi ready and it also provide direct integration with Apache Karaf.
The last couple of weeks I have been working with the jclouds team in order to improve the OSGification of jclouds and also to provide integration with Apache Karaf. I will not go into much detail in this post, since there is a [[wiki. I will add however a small demo that shows how easy it is.

Presented on OSGi and Apache Karaf on Java Hellenic User Group.
It was a great event with very interesting presentations. The full list of presentations can be found here.
Regarding my presentation, I was a bit nervous at first, since I hadn’t practiced my “presentation” skills for a while, but things got better as time went by. I’ve had the chance to meet a lot of interesting people and discuss about OSGi, Apache Karaf & Apache ServiceMix. The slides of the presentation can be found at: Slide Share.
EDIT: The project “cellar” has been upgraded with a lot new features, which are not described by this post. A new post will be added soon.
I have been playing a lot with Hazelcast lately, especially pairing it with Karaf. If you haven’t done already you can read my previous post on using Hazelcast on Karaf.
In this post I am going to take things one step further and use Hazelcast to build a simple clustering engine on Karaf.
The last months Hazelcast caught my attention. I first saw the JIRA of the camel-hazelcast component, then I read about it, I run some examples and eventually I fell in love with it.
If you are not already familiar with it, Hazelcast is an opensource clustering platform, which provdies a lot of features such as:
You can visit the Hazelcast Documentation for more information. In this blog post I will show how to run hazelcast on Apache Karaf or Apache ServiceMix and I will provide an example application that creates a hazelcast instance, deploys the hazelcast monitoring web application and adds a couple of shell commands on Apache Karaf.
Karaf 2.1.0 has been just released! Among other new features, it includes a major revamp in the JAAS module support:
This post will use all 3 features, in order to create a secured Wicket application on Karaf, using Karaf’s JAAS modules and Wicket’s auth-roles module.
The application that we are going to build is a simple wicket application. It will be deployed on Karaf and the user credentials will be stored in a mysql database. For encrypting the password we will use Karaf’s Jasypt encryption service implementation, to encrypt passwords using MD5 algorithm in hexadecimal format.
EDIT: Hibernate is now OSGi ready so most of those stuff are now completely outdated.
The full source for this post has moved to github under my blog project on branch: wicket-spring-3-jpa2-hibernate-osgi-application-on-apache-karaf.
Recently I attempted to modify an existing crud web application for OSGi deployment. During the process I encountered a lot of issues such as
Lack of OSGi bundles. Troubles wiring the tiers of the application together. Issues on the OSGi container configuration. Lack of detailed examples on the web. So, I decided to create such a guide & provide full source for a working example (A very simple person crud application).
EDIT: I am more than happy that this post is now completely obsolete. Hibernate is now OSGi ready, Yay!
I was trying to migrate an application that uses JPA 2.0 / Hibernate to OSGi. I found out that hibernate does not provide OSGi bundles. There are some Hibernate bundles provided in the Spring Enterprise Bundle repository, however they are none available for Hibernate 3.5.x which implements JPA 2.0. So I decided to create them myself and share the experience with you.