A Java Geek weekly 130

OpenTelemetry Tracing on Spring Boot, Java Agent vs. Micrometer Tracing. Semantic Conventions for GenAI agent and framework spans. Claude Code Cheat Sheet. AI Coding Assistants Haven’t Sped up Delivery Because Coding Was Never the Bottleneck. cq: Stack Overflow for Agents. Should I Switch From Git to Jujutsu. The Curious Case of Enum and Map Serialization. From zero to a RAG system: successes and failures. Awesome-Selfhosted. Anatomy of the .claude/ folder.

OpenTelemetry Tracing on Spring Boot, Java Agent vs. Micrometer Tracing

My demo of OpenTelemetry Tracing features two Spring Boot components. One uses the Java agent, and I noticed a different behavior when I recently upgraded it from v1.x to v2.x. In the other one, I’m using Micrometer Tracing because I compile to GraalVM native, and it can’t process Java agents. I want to compare these three different ways in this post: Java agent v1, Java agent v2, and Micrometer Tracing.

Semantic Conventions for GenAI agent and framework spans
Key Description

gen_ai.operation.name

Name of the operation being performed.

gen_ai.provider.name

Generative AI provider.

error.type

Class of error.

gen_ai.agent.description

Free-form description of the GenAI agent.

gen_ai.agent.id

Unique identifier of the GenAI agent.

gen_ai.agent.name

Human-readable name of the GenAI agent.

gen_ai.agent.version

Version of the GenAI agent.

gen_ai.request.model

Name of the GenAI model.

server.port

GenAI server port.

server.address

GenAI server address.

gen_ai.system_instructions

System message or instructions provided to the GenAI model.

Claude Code Cheat Sheet
  • Keyboard Shortcuts
  • Slash Commands
  • Workflows & Tips
  • Skills & Agents
  • MCP Servers
  • Memory & Files
  • Config & Env
  • CLI & Flags
AI Coding Assistants Haven’t Sped up Delivery Because Coding Was Never the Bottleneck

Another article mentioning that writing code was never the bottleneck, reviewing is. With code being written faster and faster, organization will face a tough choice: either aim for zero risk and continue demanding manual code reviews, or change their paradigm. What will it be?

cq: Stack Overflow for Agents

Today’s AI agents operate in isolation. Each time an agent encounters a known pitfall — an undocumented API behaviour, a library version incompatibility, a common architectural anti-pattern — it must discover the problem from scratch, consuming compute, energy, and time in the process. There is no mechanism for agents to learn from each other’s experiences.

Should I Switch From Git to Jujutsu

I read more an more stuff about Jujutsu. I should really kick its tires.

The Curious Case of Enum and Map Serialization

One of Vavr’s users hit a peculiar bug recently: a serialized map containing enum keys, deserialized in another process, appeared to hold the right entries but the map… just could not find them.

The root cause turns out to be a subtle property of Java enums that most Java developers are not aware of.

From zero to a RAG system: successes and failures
  • Problem 1: selecting the right technology
  • Problem 2: the document chaos
  • Problem 3: indexing 451GB of documents without dying in the attempt
  • Problem 4: my graphics card is not a rocket
  • Problem 5: the user experience
  • Problem 6: serving documents without filling the disk
Awesome-Selfhosted

Lots of categories. If you are interested, have a look.

Details
  • Analytics
  • Archiving and Digital Preservation (DP)
  • Automation
  • Backup
  • Blogging Platforms
  • Booking and Scheduling
  • Bookmarks and Link Sharing
  • Calendar & Contacts
  • Communication
  • Community-Supported Agriculture (CSA)
  • Conference Management
  • Content Management Systems (CMS)
  • Customer Relationship Management (CRM)
  • Database Management
  • DNS
  • Document Management
  • E-commerce
  • Federated Identity & Authentication
  • Feed Readers
  • File Transfer & Synchronization
  • Games
  • Games - Administrative Utilities & Control Panels
  • Genealogy
  • Generative Artificial Intelligence (GenAI)
  • Groupware
  • Health and Fitness
  • Human Resources Management (HRM)
  • Identity Management
  • Internet of Things (IoT)
  • Inventory Management
  • Knowledge Management Tools
  • Learning and Courses
  • Manufacturing
  • Maps and Global Positioning System (GPS)
  • Media Management
  • Media Streaming
  • Miscellaneous
  • Money, Budgeting & Management
  • Monitoring & Status Pages
  • Network Utilities
  • Note-taking & Editors
  • Office Suites
  • Password Managers
  • Pastebins
  • Personal Dashboards
  • Photo Galleries
  • Polls and Events
  • Proxy
  • Recipe Management
  • Remote Access
  • Resource Planning
  • Search Engines
  • Self-hosting Solutions
  • Software Development
  • Static Site Generators
  • Task Management & To-do Lists
  • Ticketing
  • Time Tracking
  • URL Shorteners
  • Video Surveillance
  • VPN
  • Web Servers
  • Wikis
Anatomy of the .claude/ folder
  • CLAUDE.md
  • /rules
  • /commands
  • /skills
  • /agents
  • settings.json
Spring Boot Done Right: Lessons From a 400-Module Codebase

Good advices if you want to use Spring Boot at scale:

  • The Thin Auto-Configuration Wrapper
  • Building a Custom Feature Flag System on Spring’s @Conditional
  • Every Bean is Replaceable
  • The Execution Plan Configurer Pattern
  • BeanSupplier: Runtime Conditional Bean Creation
  • @RefreshScope and proxyBeanMethods = false
  • Events as a First-Class Architectural Concept
Microsoft Copilot is now injecting ads into pull requests on GitHub

This is getting ridiculous. Fortunately, people realized very quickly what mistake they made and activated damage control mode.

Tim from the Copilot coding agent team here. We’ve now disabled these tips in pull requests created by or touched by Copilot, so you won’t see this happen again for future PRs.

We’ve been including product tips in PRs created by Copilot coding agent. The goal was to help developers learn new ways to use the agent in their workflow. But hearing the feedback here, and on reflection, this was the wrong judgement call. We won’t do something like this again.