- 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
-
- Acquire with promises of independence (check)
- 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)
- Extract maximum revenue (check, $6.5B in 2025)
- "Streamline operations" (check, September 2025 announcement)
- Absorb remaining functions gradually (in progress)
- 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.mdRules
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.mdto 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
- JLine
- Lanterna
- Casciian
- Latte
- AsciiTable
I did a focus on the state of JVM desktop frameworks. I checked less technologies, but deeper.
- Web 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.
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.