A Java Geek weekly 111

Cherry-pick automation with Bash

I manage my Jekyll blog in a Git repo. My publication process uses 2 branches:

  • master contains all production content
  • feature/newposts has the new blog posts, ready to get published, one commit per post

To publish an existing post:

  1. I check the to-be-published post in the feature/newposts branch
  2. Then, get the associated commit
  3. And cherry pick it in the master branch
  4. Finally, I push

While not that slow, this is very boring. This post explains how I "automated" the above process using bash magic.

What’s new in Kotlin 2.2.21 (and 2.2.20!)
Jackson 3.0.0 (GA) released
  • Java Baseline is now 17
  • Maven groupId, Java package changed to tools.jackson
  • Removal of all Deprecated 2.x functionality
  • Changes to Default Configuration Settings
  • Immutable ObjectMappers, Configure using Builder
  • Unchecked exceptions
  • Embedding of "Java 8 Modules"
  • Improved Tree Model
  • Deprecated Modules: Hibernate data type, JSON Schema
FFmpeg to Google: Fund Us or Stop Sending Bugs

And here we go again: a megacorp with gazillions of money leans on OpenSource committers. Not only do they make profit out of free workforce, but they expect bugs to be fixed in a limited timeframe. Can you be more cynical?

The Root Cause Fallacy: Hidden Causes

TL;DR: There probably isn’t one single root cause, but multiple ones with varying levels of severity. Gotta catch 'em all!

MockK: Under the cover

The post is less about MockK than how it uses specific Kotlin features to offer a friendly API checked at compile-time.

  • Default Value
  • vararg
  • T.() → Unit
7 Common Kubernetes Pitfalls
  • Skipping resource requests and limits
  • Underestimating liveness and readiness probes
  • "We’ll just look at container logs"
  • Treating dev and prod exactly the same
  • Leaving old stuff floating around
  • Diving too deep into networking too soon
  • Going too light on security and RBAC
Agentic Pelican on a Bicycle

The post describes quite an interesting experiment: asking generative AI agents to "improve" upon their first attempt, and see what happens.

Software Development in the Time of Strange New Angels

Perhaps a good prediction of times to come. Worth thinking about.

Mergiraf: syntax-aware merging for Git

As soon as you use any Source Code Management system with a big enough team, you are bound to run into merging conflicts. In Subversion, the granularity was the file: conflicts arised as soon as a file was modified by multiple parties. Git is better in that the granularity is the line. Yet, it can still be a huge PITA to solve 3-way merges. Semantic merging goes beyond the characters to understand the code. This is a great help!

Running Java on iOS: Gluon Introduces OpenJDK Mobile Resources and Automated Build Pipelines

Last month, I mentioned that Swift is going to Android. At the same time, the opposite is happening: Java enters iOS.

Spring Framework 7.0 Release Notes

Spring is in the air!

  • HttpHeaders changes
  • Servlet 6.1 and WebSocket 2.2
  • JPA 3.2 and Hibernate ORM 7.1/7.2
  • Persistence unit management for JPA 3.2/4.0
  • JMS destination handling
  • Jackson 3.x support
  • kotlinx.serialization support
  • Google Gson support in WebFlux
  • GraalVM Native applications
  • CORS Pre-Flight requests behavior change
  • Null safety
  • Class-File API usage for Java 24+ apps
  • Programmatic bean registration
  • Consistent proxy type defaulting and consistent opting out for specific beans
  • Resilience features: RetryTemplate, @Retryable, @ConcurrencyLimit
  • Embracing JPA 3.2 and Hibernate StatelessSession
  • Introducing JmsClient and revisiting JdbcClient
  • API versioning
  • HTTP Interface Client configuration
  • HTTP Interface Client support for InputStream and OutputStream
  • Easier message converters configuration with HttpMessageConverters
  • Pausing of Test Application Contexts
  • Improved Dependency Injection in @Nested Test Class Hierarchies
  • RestTestClient
  • Bean Overrides for non-singleton Beans
  • Context Propagation for Kotlin Coroutines
Nicolas Fränkel

Nicolas Fränkel

Nicolas Fränkel is a technologist focusing on cloud-native technologies, DevOps, CI/CD pipelines, and system observability. His focus revolves around creating technical content, delivering talks, and engaging with developer communities to promote the adoption of modern software practices. With a strong background in software, he has worked extensively with the JVM, applying his expertise across various industries. In addition to his technical work, he is the author of several books and regularly shares insights through his blog and open-source contributions.

Read More
A Java Geek weekly 111
Share this