Who's behind Java Pills?
Massimiliano Cova, a senior backend developer passionate about Spring Reactive and tech communication. Java Pills started on LinkedIn. Here you can explore them all, sorted and gathered in a single archive.
-
18 Jun 2026
💊 #26: Scraping over 300 IT job ads – architecture, anti-bot and real salaries
A semi-automatic Python scraper for Italian dev job ads: a phased pipeline, anti-throttling tricks, semantic parsing of salaries and what the numbers say about pay transparency.
-
12 Jun 2026
💊 #25: From 0.4.0 to 1.0.0 – two weeks of enhancements on Java Pills
Two weeks after launch, javapills.com reaches 1.0.0: database, dark theme, tags and seasons, reactions, sharing and an About in Vue. The release diary, one after another.
-
26 May 2026
💊 #24: The Java Pills website rewritten from scratch in «vibe coding» with Claude Code
The pill that launches javapills.com by telling the story of the site itself: built from scratch in «vibe coding» with Claude Code – architecture, tests, security, deploy.
-
28 Apr 2026
💊 #23: The illusion of coverage and the combinatorial trap
Branch coverage as a tool to hunt down missing tests and dead code, and why unit tests are the 'cheat code' against the combinatorial explosion of integration tests.
-
24 Apr 2026
💊 #22: That time repeat() + empty() melted my CPU
A Mono.empty() put inside a repeat() becomes a silent hot loop: millions of subscriptions per second, CPU at 100% and zero elements emitted. A test to reproduce it and a few ideas to avoid it.
-
08 Jan 2026
💊 #21: Christmas Trilogy, p. 2 – AI, panettoni and cognitive cost
In this second part, GPT-5.2 as an intensive working tool: prototypes, refactoring, learning a new language, and all the «hassle» around it.
-
06 Jan 2026
💊 #20: Christmas Trilogy, p. 1 – C, Game Boy and nostalgia
A text file reader app written in C for the Game Boy Advance, running on real hardware via EverDrive. Low-level embedded programming, real constraints, and a restored console.
-
05 Oct 2025
💊 #19: AI isn't the future, it's already the present
A spike on using generative AI as a copilot to design BuilderAwareRowMapperR2dbc, an elegant solution for mapping R2DBC responses onto immutable objects via reflection.
-
29 Jul 2025
💊 #18: Optimising your code with WebFlux, p. 2 – the share method
The .share() method turns a cold Flux into a hot one: the source runs only once and concurrent subscribers receive the same stream.
-
21 Jul 2025
💊 #17: Optimising your code with WebFlux, p. 1 – the cache method
Flux's .cache() method stores the values emitted on the first subscription and reuses them for the following ones, avoiding recomputation on the source.