A Java Geek weekly 155

Writing an agent skill. Why we built Pion. What are Open Weights?. Smetana. On learning programming in an age of LLMs. Shopify Drops React Native for Swift and Kotlin as AI Changes Cross-Platform Development Tradeoffs. DNS-AID will make AI agents easier to discover, says Linux Foundation. HarnessTax: How Much Does the Harness Matter for Coding Agents?. Cloudflare Introduces the Agent Development Lifecycle to Replace Traditional SDLC. Unit tests mark territory more than squash bugs. Python 3.

Writing an agent skill

Most developers now use coding assistants. I do too—Copilot at work, Claude Code at home. As a developer, I prefer not to repeat myself. This post explains why and how to avoid repetition as a skill.

Why we built Pion

I didn’t know about the AI-managed vending machine. I wish I had the capital to try the full-fledged version on an actual business.

What are Open Weights?

Open Weights refer to the final weights and biases of a trained neural network. These values, once locked in, determine how the model interprets input data and generates outputs. When AI developers share these parameters under an OSI Approved License, they empower others to fine-tune, adapt, or deploy the model for their own projects.

Smetana

Smetana is a partial translation of Graphviz/Dot sources from C to Java. More precisely, the intent is to create a Java library (and not a program).

TIL:

This project is not updated anymore because it is now integrated into the main stream of PlantUML.

My blog is using PlantUML. Until now, I had to install dot in my Docker image. With one additional line in PlantUML diagrams, i.e., !pragma layout smetana.

In case you’re wondering what is smetana, Wikipedia is your friend.
On learning programming in an age of LLMs

The author’s answers are as good as any. As for me, I’m clueless. I learned a lot by trial-and-error, but what if the LLM makes errors, but you don’t learn anything from it?

I wanted to teach me Gleam because it runs on the BEAM, but its syntax is pretty much Rust-like. I also wanted to leverage my OpenTelemetry Tracing demo repo. In the end, I only prompted, it worked. There was no tension or challenge for me to overcome and learn from it, and I learned nothing.

Shopify Drops React Native for Swift and Kotlin as AI Changes Cross-Platform Development Tradeoffs

After a successful proof of concept led by a single engineer in just one week, six engineers rebuilt the flagship Shop app from the ground up to production deployment in 12 weeks, further reinforcing the clean-slate greenfield rewrite option over a migration.

This is the new world we live in.

DNS-AID will make AI agents easier to discover, says Linux Foundation
HarnessTax: How Much Does the Harness Matter for Coding Agents?

Very interesting read, especially because my (limited) experience is the opposite on the correctness part. I used the same models, Claude Opus 4.1 and 4.2, with both Claude Code and Copilot CLI. On every attempt, I felt that Claude Code offered the outcome faster.

Disclaimers: I didn’t implement the same task with the two harnesses. There were different tasks, and I didn’t measure anything, least of all the tokens consumption. Hence, the word above "felt" is the exact word I mean.

Cloudflare Introduces the Agent Development Lifecycle to Replace Traditional SDLC

I think every team lead has the same issue at the moment. How do we un-pile the ton of PRs currently waiting?

Unit tests mark territory more than squash bugs

Writing tests is an economic problem: do you spend more money by writing them and catching bugs before production, or by saving on the writing?

I happen to have written a book on Integration Testing, so I can speak a bit on the subject. The problem is of integration tests is threefold: slow, fragile, and flaky. These properties means they cost a lot to run.

In any case, I want to try Property-based Testing.

Python 3.15 Is Bigger Than You Think: 7 New Features Worth Using in 2026
  • lazy import Finally Makes Lazy Imports a Language Feature
  • Python Finally Has frozendict
  • sentinel() `Replaces the `_MISSING = object() Trick
  • Comprehensions Can Finally Unpack
  • UTF-8 Is Finally the Default
  • Python Gets a Serious Sampling Profiler
  • The JIT Is Starting to Matter
Arguing about arguments

I don’t know how easy it would be to implement it in Rust, but I must admit that I love it in Kotlin.