
How 3 Java Champions are using GitHub Copilot for increased productivity
Interviews with three Java Champions (Vlad Mihalcea, Patrick Baumgartner, Frank Delporte) on using GitHub Copilot in production and open source. Examples include a 900-slide Reveal.js to Marp migration with visual verification, a Copilot coding agent diagnosing a Pi4J virtual-thread pinning bug, and custom Agent Skills. Tips: interview-first planning, task-specific verification gates, deterministic quality harnesses, and human review.
What it claims
GitHub interviewed three Java Champions about their Copilot practice. Each gives numbers on their own work. Vlad Mihalcea built an Optimizer event-history web app for Hypersistence Optimizer in two days, a job he estimated at weeks. Patrick Baumgartner migrated 900 slides in 15 presentations from Reveal.js to Marp in eight to ten hours, a job he estimated at a week or more. Frank Delporte had the Copilot coding agent open a pull request for Pi4J issue #622 about half an hour after he assigned it. All of these are self-reported anecdotes with no controlled comparison.
How it works
The Pi4J diagnosis. Pi4J V4, released February 2026, added a plugin built on the Foreign Function & Memory API. A user reported that with five input buttons, the fifth never fired. The older gpiod plugin worked on the same hardware. Delporte gave the agent two file paths: the provider class and FFMDigitalInput.
The agent found the cause:
- Each input's event watcher blocks in a native
poll()call inside a virtual thread. - A virtual thread blocked in a native call stays pinned to its carrier thread.
- A Raspberry Pi 4 has four cores, so it has four carriers.
- Four watchers occupy all four carriers, so the fifth watcher is never scheduled.
The page says the fix was "simple" but does not show it. Maintainers reviewed every merged PR.
Baumgartner's practices.
- Ask the agent to interview you before planning, to surface implicit assumptions.
- Review the plan on four points: are assumptions visible, are verification gates defined, does it fit the architecture, does it avoid unnecessary work.
- Define gates per task. For the slide migration, the gates were screenshots of both versions compared visually and algorithmically, a side-by-side app for checking animations by hand, PDF comparison and content completeness.
- When test descriptions outgrew the context window, he replaced verbose tables with a compact
step → step → inputnotation, adding detail only where it was critical.
He also wraps Checkstyle, PMD and Spring Modulith architecture checks into one consolidated report the agent reads. Hooks run it in a loop:
flowchart LR
A[Agent changes code] --> B[Run harness checks]
B --> C{Findings left?}
C -- yes --> D[Agent reads report, fixes]
D --> B
C -- no --> E[Human runs and inspects app]His maintainer-audit skill checks and fixes repository baselines: documentation, CI, Dependabot, CodeQL and cleanup. He updates his skills whenever an execution exposes a missed convention or check. He names an external skill, unlazy, that enforces explicit gates.
Tamboui bug. He reproduced a Windows-only bug, where Enter was ignored in some forms, using UI tests. The agent drove them with tmux on Linux and psmux in PowerShell. The fix went upstream into Tamboui and was merged.
Mihalcea's setup. He works in IntelliJ IDEA. A custom skill trained on 65 of his published articles keeps generated documentation in his voice. Other skills make generated code follow existing conventions. He uses Opus with the 1M-token context and Extra High or Max reasoning for design work. Lighter models handle release notes, reports and documentation checks.
Delporte's rules. Point the agent to likely files. Require a unit test with each fix, now a rule in his instructions file, because a wrong diagnosis yields a test that does not fail on the old code. Ask for explanations and store them in the PR or docs.
Evidence
Every time figure is the interviewee's own estimate against their own guess at manual effort. Baumgartner also says he steered the coding agent from his phone during a roughly four-hour trip. He arrived with a working Maven plugin that optimises Spring Boot auto-configuration loading, plus CI, performance tests and reports. The page links the Pi4J PR conversation but quotes only part of it.
Limits
- Baumgartner built support for both Spring Boot 3.5 and 4.x, then found removing the unneeded 3.5 path painful. He also warns that large, generic specifications produce large, generic implementations that are hard to clean up.
- Mihalcea says responses are sometimes unsatisfactory and need his intervention.
- Delporte says agents often create duplicate methods or reimplement existing code, so review stays mandatory.
- Baumgartner prefers a good CLI over an MCP server when one exists. He has used Context7 and Logseq integrations.
- The page publishes no skill files, harness code or configuration.
Organisations named here
- GitHub
- Context7
- Frank Delporte
- GitHub Copilot
- Hypersistence
- Hypersistence Optimizer
- Hypersistence Utils
- Patrick Baumgartner
- Pi4J
- Tamboui
- Vlad Mihalcea
Technologies named here
- Opus
- GitHub Copilot
- GitHub Copilot app
- VS Code
- Agent Skills
- unlazy
- Context7
- tmux
- GitHub Pages
- Model Context Protocol
- Spring Boot
- Adobe Premiere Pro
- Checkstyle
- GitHub Copilot coding agent
- Hypersistence Optimizer
- Hypersistence Utils
- IntelliJ IDEA
- Java
- Logseq
- maintainer-audit
- Marp
- Maven
- Pi4J
- PMD
- psmux
- Raspberry Pi
- Reveal.js
- Spring Modulith
- Tamboui
Techniques named here
- Agentic workflows
- Compact arrow notation for tests
- Deterministic check loop
- Interview-first planning
- Model selection by task
- Task-specific verification gates
Related in coding-agents
