Nicolas is a developer advocate with 15+ years experience consulting for many different customers, in a wide range of contexts (such as telecoms, banking, insurances, large retail and public sector). Usually working on Java/Java EE and Spring technologies, but with focused interests like Rich Internet Applications, Testing, CI/CD and DevOps. Currently working for Hazelcast. Also double as a trainer and triples as a book author.
previous articles of this series were dedicated to frameworks that adopted the same traditional Object-Oriented-Programming approach. Components were modeled as classes.
This week’s article is dedicated to Jet Compose for Desktop, the new kid on the block that offers a completely different approach.Nicolas Frankel
Some, if not most, of our judgments regarding technology stacks come either from third-party opinions or previous experiences. Yet, we seem to be adamant about them!Nicolas Frankel
Learn about shopping cart implementations and the idea to add computed values, as in an eager approach, but only triggering the computation when you need to access its result.
The implementation relies on two properties: a result read-only property (the cost in our e-commerce shop) and a dirty internal flag.Nicolas Frankel
Since Docker announced that it would remove unused images from Docker Hub, I’ve been interested in listing places where I could host mine.
As it’s for personal purposes, I’m interested in free plans. Here’s what I found!Nicolas Frankel
I decided to switch to an alternative approach in GitHub Actions.
Instead of committing, I updated the script to open a Pull Request. If I need to run the demo, I’ll merge it (and pull locally); if not, it will stay open. If an opened PR already exists, the action will overwrite it.
Now, I can schedule the action more frequently.Nicolas Frankel
This article shows how one could offload the Docker part of your build pipeline from your local machine to GitLab using the Kaniko image.
It saves on time and resources.
The only regret I have is that I should have done it much earlier as I’m a huge proponent of automation!Nicolas Frankel
The JVM automatically releases objects from memory when they are not needed anymore. This process is known as Garbage Collection.
In languages with no GC, developers have to take care of releasing objects. With legacy languages and within big codebases, releasing was not applied consistently, and bugs found their way in production.
As the ecosystem around the JVM is well developed, it makes sense to develop applications using the JVM and delegate the most memory-sensitive parts to Rust.Nicolas Frankel
Foojay community members discuss recent news: JavaFX Skins for cross-platform apps on Android, iOS, and regular computers, BlockHound, for detecting cases of blocking in reactive (non-blocking) application, JEP 411, the SecurityManager deprecation, and the recent Snyk/Azul community survey.
BlockHound will transparently instrument the JVM classes and intercept blocking calls (e.g., IO) if they are performed from threads marked as “non-blocking operations only” (ie. threads implementing Reactor’s NonBlocking marker interface, like those started by Schedulers.parallel()).
If and when this happens (but remember, this should never happen!), an error will be thrown.Nicolas Frankel
The JVM ecosystem is mature and offers plenty of libraries, so you don’t need to reinvent the wheel. Basic – and not so basic – functionalities are just a dependency away. Sometimes, however, the dependency and your use-case are slightly misaligned.
The correct way to fix this would be to create a Pull Request. But your deadline is tomorrow: you need to make it work now! It’s time to hack the provided API.
In this article, we are going through some alternatives that allow you to make third-party APIs behave in a way that their designers didn’t intend to.Nicolas Frankel
In this post, we went through several core concepts covering querying your data on Hazelcast.
It makes sense to query your in-memory data because data access is fast.
By default, Hazelcast offers the Criteria API; you can use SQL as an alternative.
Use indexes judiciously to speed up your queries.Nicolas Frankel