A Java Geek weekly 123

Getting my feet wet with Crossplane. Transparent IT Job Market Report 2025. The Cult of Clean Code. Agent skill. Fixing Noisy Logs with OpenTelemetry Log Deduplication. How to Reduce Telemetry Volume by 40% Smartly. How IBM is Destroying Red Hat’s Independence: The $34 Billion Betrayal. Context Engineering for Coding Agents. Star Trek Comm Badge for Home Assistant Voice Control. Java UI in 2026: The Complete Guide. Europe’s $24 Trillion Breakup With Visa and Mastercard Has Begun.

Getting my feet wet with Crossplane

Crossplane is like an engine, using Kubernetes registry and reconciling behavior to manage resources. Resources include virtually anything: cloud resources, GitHub projects, and organizations, Terraform (!), or software stacks, such as Kafka and Keycloak, etc. By default, it doesn’t know about these resources, but you can extend its capabilities via packages.

Transparent IT Job Market Report 2025

I believe it’s safe to say that it’s the end of the developer king.

The Cult of Clean Code

A few days ago, I watched a senior developer spend 3 days refactoring a perfectly functional feature because the functions were "too long." The code worked. Users were happy. Tests were green. But somewhere, Robert C. Martin’s ghost was apparently crying, so we had to fix it.

Spoiler alert: the refactored version introduced two bugs and made the codebase harder to understand. But hey, at least the functions were under 10 lines each, right?

This.

Agent skill

Agents are increasingly capable, but often don’t have the context they need to do real work reliably. Skills solve this by giving agents access to procedural knowledge and company-, team-, and user-specific context they can load on demand. Agents with access to a set of skills can extend their capabilities based on the task they’re working on.

Fixing Noisy Logs with OpenTelemetry Log Deduplication

Good insight into how to prevent being overwhelmed with data. And a great tip on top:

The most cost-effective way to handle noise is to prevent it from being created in the first place. If your logging framework supports sampling or deduplication, that’s always the cheapest and cleanest option. Telemetry that’s never emitted saves CPU cycles, network bandwidth, and processing overhead downstream.

How to Reduce Telemetry Volume by 40% Smartly

By happenstance, another post on how to reduce the data produced. This one isn’t about deduplication, but how to avoid generated surplus data.

  • URL Path and target attributes
  • Controller spans
  • Thread name in run-time telemetry
  • Duplicate Library Instrumentation
  • Resource attributes
  • JDBC and Kafka Internal Signals
  • Scheduler and Periodic Jobs
  • SDK Misalignment
How IBM is Destroying Red Hat’s Independence: The $34 Billion Betrayal
  1. Acquire with promises of independence (check)
  2. Keep the brand, replace leadership (Jim Whitehurst promoted to IBM President in April 2020, then resigned from IBM in July 2021; Paul Cormier became Red Hat CEO)
  3. Extract maximum revenue (check, $6.5B in 2025)
  4. "Streamline operations" (check, September 2025 announcement)
  5. Absorb remaining functions gradually (in progress)
  6. Original identity erased (coming)

    It’s basically the playbook of every merger I have witnessed or experienced. It sucks of course, especially if you have skin in the game, but calling it a betrayal is very naive.

Context Engineering for Coding Agents

Context engineering is an evolving "discipline". The following table is amazingly useful to me to get my head wrap around all possible options.

What Who When to use / things to know Example use cases Other coding assistants

CLAUDE.md

Guidance

Claude Code - Always used at start of a session

For most frequently repeated general conventions that apply to the whole project

  • "we use yarn, not npm"
  • "don’t forget to activate the virtual environment before running anything"
  • "when we refactor, we don’t care about backwards compatibility"

Basically all coding assistants have this feature of a main "rules file"; There are attempts to standardise it as AGENTS.md

Rules

Guidance

Claude Code, when files at the configured paths have been loaded

Helps organise and modularise guidance, and therefore limit size of the always loaded CLAUDE.md. Rules can be scoped to files (e.g. *.ts for all TypeScript files), which means they will then only be loaded when relevant.

"When writing bash scripts, variables should be referred to as ${var} not $var." paths: */.sh

More and more coding assistants allow this path-based rules configuration, e.g. GH Copilot and Cursor

Slash commands

Instructions

Human

Common tasks (review, commit, test, …) that you have a specific longer prompt for, and that you want to trigger yourself, inside the main context DEPRECATED in Claude Code, superceded by Skills

  • /code-review
  • /e2e-test
  • /prep-commit

Common feature, e.g. GH Copilot and Cursor

Skills

Guidance, instructions, documentation, scripts, …

LLM (based on skill description) or Human

In its simplest form, this is for guidance or instructions that you only want to "lazy load" when relevant for the task at hand. But you can put whatever additional resources and scripts you want into a skill’s folder, and reference them from the main SKILL.md to be loaded.

  • JIRA access (skill e.g. describes how agent can use CLI to access JIRA)
  • "Conventions to follow for React components"
  • "How to integrate the XYZ API"

Cursor’s "Apply intelligently" rules were always a bit like this, but they’re now also switching to Claude Code style Skills

Subagents

Instructions + Configuration of model and set of available tools; Will run in its own context window, can be parallelised

LLM or Human

  • Common larger tasks that are suitable for and worth running in their own context for efficiency (to improve results with more intentional context), or to reduce costs).
  • Tasks for which you usually want to use a model other than your default model
  • Tasks that need specific tools / MCP servers that you don’t want to always have available in your default context
  • Orchestratable workflows
  • Create an E2E test for everything that was just built
  • Code review done by a separate context and with a different model to give you a "second opinion" without the baggage of your original session
  • subagents are foundational for swarm experiments like claude-flow or Gas Town

Roo Code has had subagents for quite a while, they call them "modes"; Cursor just got them; GH Copilot allows agent configuration, but they can only be triggered by humans for now

MCP Servers

A program that runs on your machine (or on a server) and gives the agent access to data sources and other actions via the Model Context Protocol

LLM

Use when you want to give your agent access to an API, or to a tool running on your machine. Think of it as a script on your machine with lots of options, and those options are exposed to the agent in a structured way. Once LLM decides to call this, the tool call itself is usually a deterministic thing. There is a trend now to supercede some MCP server functionality with skills that describe how to use scripts and CLIs.

  • JIRA access (MCP server that can execute API calls to Atlassian)
  • Browser navigation (e.g. Playwright MCP)
  • Access to a knowledge base on your machine

All common coding assistants support MCP servers at this point

Hooks

Scripts

Claude Code lifecycle events

When you want something to happen deterministically every single time you edit a file, execute a command, call an MCP server, etc.

  • Custom notifications
  • After every file edit, check if it’s a JS file and if so, then run prettier on it
  • Claude Code observability use cases, like logging all executed commands somewhere

Hooks are a feature that is still quite rare. Cursor has just started supporting them.

Plugins

A way to distribute all or any of these things

Distribute a common set of commands, skills and hooks to teams in an organisation

Star Trek Comm Badge for Home Assistant Voice Control

It’s so nerdy, I want it!

Java UI in 2026: The Complete Guide
  • Web UI Frameworks
    • Vaadin
    • Apache Wicket
    • TeaVM
    • HTMX + Spring Boot
    • j2html
    • PrimeFaces
    • Jakarta Faces
    • Thymeleaf
  • Desktop UI Frameworks
    • JavaFX
    • Java Chromium Embedded Framework
    • Swing + FlatLaf
    • Swing-Tree
    • NetBeans Platform
    • Eclipse Rich Client Platform
    • SnapKit
    • JxBrowser
  • Mobile UI Frameworks
    • Codename One
    • Gluon Mobile
  • Terminal UI Frameworks
Europe’s $24 Trillion Breakup With Visa and Mastercard Has Begun

ECB President Christine Lagarde told Irish radio that Europe needs its own digital payment system “urgently,” warning that virtually all European card and mobile payments currently run through non-European infrastructure controlled by Visa, Mastercard, PayPal or Alipay. Days later, on 2 February, the European Payments Initiative (EPI) and the EuroPA Alliance signed a landmark agreement to build a pan-European interoperable payment network covering 130 million users across 13 countries. The system, built around the digital wallet Wero, aims to let Europeans pay and transfer money across borders without touching a single American network.

GitHub Agentic Workflows

I want to try that!

Imagine a world where improvements to your repositories are automatically delivered as pull requests each morning, ready for you to review. Issues are automatically triaged, CI failures analyzed, documentation maintained, test coverage improved and compliance monitored. All defined via simple markdown files.

GitHub Agentic Workflows deliver this: repository automation, running the coding agents you know and love, in GitHub Actions, with strong guardrails and security-first design principles.