Sign in

Guillaume Laforge

@glaforge.dev
2.7K followers 962 following 767 posts

🥑 Developer Advocate for Google Cloud ☁️ 🧠 Focusing on Generative AI 🤖 ⭐ Co-founder of the 🪶 Apache Groovy programming language ☕ Java Champion 🏆 📣 Co-host of Les Cast Codeurs Podcast 🐘 @glaforge@uwyn.net on #Mastodon

PostsRepliesMedia
Guillaume Laforge @glaforge.dev · 3h
The Open Java formatter mentioned in the article seems to say it's agent friendly. Might be it?
100
Guillaume Laforge @glaforge.dev · 10h
I might give this new #java code formatter a try!
120
Guillaume Laforge @glaforge.dev · 29/09/2026
But it doesn't rhyme!
100
Guillaume Laforge @glaforge.dev · 29/09/2026
Rhymes or not, safe travels!
110
Guillaume Laforge @glaforge.dev · 29/09/2026
Maybe "for hours again", so that it rhymes better?
210
Guillaume Laforge @glaforge.dev · 28/09/2026
Read the full write-up, test the live app, or grab the code: Article: glaforge.dev/posts/2026/0... GitHub: github.com/glaforge/dev... Live app: devoxx-ai-schedule.cloud.run
glaforge.dev
Crafting a Devoxx Conference Schedule with Gemini, LangChain4j, and Micronaut
How I built an AI agent workflow using Gemini 3.5 Flash-Lite, LangChain4j parallel mappers on Java 25 virtual threads, and Micronaut to curate personalized, conflict-free conference schedules for Devo...
010
Guillaume Laforge @glaforge.dev · 28/09/2026
Instead of one monolithic prompt (30-40s), LangChain4j runs 5 parallel day agents on Java 25 virtual threads via `ParallelMapperAgent`. Run time dropped to ~5s, costing ~1¢. A guardrail agent catches injections early, and deterministic Java code eliminates room collisions.
210
Guillaume Laforge @glaforge.dev · 28/09/2026
Planning your #Devoxx Belgium schedule? With 200+ talks across 8 parallel tracks, picking sessions takes time. I built a personalized agenda generator using #Micronaut, #LangChain4j, and #Gemini 3.5 Flash-Lite on #Java 25 virtual threads! Here is how it works 🧵👇
152
Guillaume Laforge @glaforge.dev · 25/09/2026
At least, it should say that it's not a cat!
010
Guillaume Laforge @glaforge.dev · 25/09/2026
For more information and details, I explained how to use Google Gemma's diffusion model with @LangChain4j.dev in #Java here: glaforge.dev/posts/2026/...
glaforge.dev
Multimodal Decision Models: From DiffusionGemma and Jev to LangChain4j
How I adapted Matt Mastracci's djev and Daniel Lee's Cloud Run deployment to run multimodal visual classification on Blackwell GPUs, and proposed multimodal extensions to LangChain4j's StructuredDecisionModel.
010
Guillaume Laforge @glaforge.dev · 25/09/2026
Once you've picked up a picture or uploaded your own, the #DiffusionGemma model running on #NVidia GPUs will tell you if the photo contains a cat, what kind of fur pattern it has, and how fluffy it is:
210
Guillaume Laforge @glaforge.dev · 25/09/2026
Is it a 😺 or not? System 1 models like @typesafeai #jev classify, evaluate truthiness, or give a score. I built an app in #java w/ @micronautfw & @langchain4j hosted on #CloudRun to discover if a picture depicts a cat or not, thanks to #DiffusionGemma purrfect-match.cloud.run/
231
Reposted by Guillaume Laforge
Astropierre @astropierre.com · 24/09/2026
Le saviez-vous ? 99,95% de votre masse est contenue dans le noyau des atomes qui composent votre corps. Mais 99% de la masse de ces noyaux est... de l'énergie (les quarks ne comptent que pour 1%). Conclusion, la masse totale de votre corps est à 98,95%... de l'énergie (et 1,05% de particules).
static.klipy.com
Amazing Joey King
ALT: Amazing Joey King
5032170
Guillaume Laforge @glaforge.dev · 24/09/2026
Full story, architecture & code: 👉 glaforge.dev/posts/2026/... Kudos to Matt, & Daniel Lee! Where could you use instant decision models instead of heavy LLMs? Let me know!
glaforge.dev
Multimodal Decision Models: From DiffusionGemma and Jev to LangChain4j
How I adapted Matt Mastracci's djev and Daniel Lee's Cloud Run deployment to run multimodal visual classification on Blackwell GPUs, and proposed multimodal extensions to LangChain4j's StructuredDecisionModel.
010
Guillaume Laforge @glaforge.dev · 24/09/2026
Bringing it to #Java with @LangChain4j.dev: LangChain4j was adding StructuredDecisionModel for text. I proposed & implemented native multimodal support. In Java, pass ImageContent with typed Question models (Choice, Noul, Score) for clean, zero-shot visual classification!
110
Guillaume Laforge @glaforge.dev · 24/09/2026
What about images? DiffusionGemma includes a SigLIP vision tower. I turned vision back on in Cloud Run and sent a photo of my cat: 😺 Is it a cat? (99.99%) 👁️ Eye color: Blue (99.99%) ☁️ Fluffiness: Extra fluffy All three questions evaluated concurrently in just 129 ms! 🕑
100
Guillaume Laforge @glaforge.dev · 24/09/2026
The open-source foundation: Matt Mastracci (github.com/mmastrac) built djev on #DeepMind's DiffusionGemma. Using Daniel Lee's recipe (github.com/taeold), I deployed it on Cloud Run with NVIDIA Blackwell GPUs. With min-instances=0, it scales to zero idle (answering in ~140 ms!)
github.com
taeold - Overview
taeold has 80 repositories available. Follow their code on GitHub.
100
Guillaume Laforge @glaforge.dev · 24/09/2026
Instead of generating text token by token, "System 1" decision models (like Jev) act as fast, deterministic decision engines. In a single forward pass, they output calibrated probabilities. Here's how I turned DiffusionGemma into a multimodal visual classifier in Java! 🧵👇
1102
Guillaume Laforge @glaforge.dev · 24/09/2026
Walkthrough & code: 👉 glaforge.dev/posts/2026/... Release notes: 👉 github.com/glaforge/ge... What creative voice applications would you build? Let me know!
github.com
Release Release v2.0.2 · glaforge/gemini-interactions-api-sdk
🎙️ What's New in v2.0.2 This release introduces comprehensive support for the new Gemini 3.8 Flash TTS models, along with first-class Voice Design, Voice Replication, and conversational turn st...
020
Guillaume Laforge @glaforge.dev · 24/09/2026
Designing a custom voice in Java takes just a few lines: Voice voice = client.createVoice(Voice.prompted( "A calm, deep French voice, speaking slowly", "French Philosopher", "Gemini 3.8 Flash TTS" )); Pass voice.id() to VoiceConfig. Done.
110
Guillaume Laforge @glaforge.dev · 24/09/2026
I just released v2.0.2 of my Gemini Interactions Java SDK to support these new TTS capabilities: • Voice.prompted(...) for prompt-based voice design • Voice.replicated(...) for voice cloning • Content.speech(text, style) for emotional steering • Direct audio preview access
100
Guillaume Laforge @glaforge.dev · 24/09/2026
To hear what this sounds like in practice, watch this demo video: 👉 www.youtube.com/watch?v=FL6... It gives a great taste of how natural the voice quality is, and how prompt-based voice design lets you shape distinct vocal personas with realistic cadence.
youtube.com
Create your own voices with Gemini 3.8 text-to-speech
Design entirely new vocal personas from scratch for gaming, immersi...
100
Guillaume Laforge @glaforge.dev · 24/09/2026
Text-to-speech has reached a whole new level of quality and personalization. With Google's Gemini 3.8 Flash TTS, you can design custom voices from text prompts, steer delivery nuances (whispers, pacing, emotion), and clone voices. And you can do it all in #Java! 🧵👇
152
Guillaume Laforge @glaforge.dev · 24/09/2026
🎁🎄
010
Guillaume Laforge @glaforge.dev · 24/09/2026
Time flies so fast!
110
Guillaume Laforge @glaforge.dev · 23/09/2026
Full guide & code walkthrough: 👉 glaforge.dev/posts/2026/... Java SDK v0.2.17 on GitHub: 👉 github.com/glaforge/an... What local agent workflows would you build with Antigravity in Java? Let me know!
github.com
Release Antigravity SDK for Java v0.2.17 - Local AI Models (LiteRT LM) & Python SDK v0.1.18 Parity · glaforge/antigravity-java-sdk
Antigravity SDK for Java v0.2.17 We are thrilled to announce Antigravity SDK for Java v0.2.17! 🚀 This release brings full feature parity with the upstream Python Antigravity SDK v0.1.18 and incorpo...
023
Guillaume Laforge @glaforge.dev · 23/09/2026
Antigravity Java SDK v0.2.17 also brings: • Subagents with dedicated model targeting (route subtasks to smaller models) • Task scheduling tools (schedule & manage_task) • Tool argument rewriting via hooks • Synchronized native harness across macOS, Linux & Windows
110
Guillaume Laforge @glaforge.dev · 23/09/2026
Step 2: Connect from Java Configure your agent with LiteRTAgentConfig pointing to your local model path and port 9379. The SDK manages the harness lifecycle and connects to LiteRT-LM's local endpoint. Call agent.chat() as usual, but completely on-device!
100
Guillaume Laforge @glaforge.dev · 23/09/2026
Step 1: LiteRT-LM setup Install the on-device runtime: pip install litert-lm Download a Gemma model: litert-lm import --model-id litert-community/gemma-4-E2B-it-litert-lm --output-dir ~/.litert-lm/models/gemma4-e2b/ Serve locally: litert-lm serve --port 9379
100
Guillaume Laforge @glaforge.dev · 23/09/2026
Why run local models for agents? • Zero API costs: run repetitive tasks and test assertions without racking up tokens • Data privacy: proprietary code and docs stay on your machine • Offline capable: build and test without internet • Low latency: no roundtrips over the wire
100
Guillaume Laforge @glaforge.dev · 23/09/2026
The #antigravity team announced running local Gemma models on-device with LiteRT. Good news for #Java developers: you can do this in Java too! Antigravity Java SDK v0.2.17 is out, reaching full parity with Python SDK v0.1.18. Walkthrough 🧵👇 glaforge.dev/posts/2026/... x.com/antigravity...
x.com
Google Antigravity (@antigravity) on X
Run open models like Gemma 4 completely offline in the Antigravity SDK. Built on Google AI Edge’s LiteRT, you can now run Gemma 4 directly on your local GPU. Zero API costs, total data privacy, a…
182
Reposted by Guillaume Laforge
Olivier @olivierleplus.bsky.social · 23/09/2026
Not every cool new feature in tech is about AI 😉 I wrote a small article about the "new" CSS feature that FINALLY allows us to customize <select> elements without using JavaScript \o/ builder.aws.com/content/3Jgb...
builder.aws.com
Customizable Select: The <select> dropdown FINALLY catches up with CSS | AWS Builder Center
Style native dropdowns with CSS, from the picker and checkmark to options with rich HTML. Explore current browser support and three practical examples that keep the browser’s built-in selection behavi...
062
Guillaume Laforge @glaforge.dev · 23/09/2026
Indeed. No hallucination, respecting the shape. But the value inside can indeed be wrong.
000
Reposted by Guillaume Laforge
Simon Willison @simonwillison.net · 23/09/2026
The new Gemini 3.8 TTS models are super-cheap and can generate conversations between multiple voices (from 2,000+, or you can clone your own) - I built a little playground UI for it, then had Claude knock up a script where two pelicans debate moving to Pacifica Pier simonwillison.net/2026/Sep/23/...
9847
Guillaume Laforge @glaforge.dev · 23/09/2026
All 8 samples: 👉 github.com/glaforge/ag... SDK repo: 👉 github.com/glaforge/an... What use cases would you build with Antigravity (Java or Python)? PR review bots in GitHub Actions, CI audits, internal tools? Let me know!
github.com
GitHub - glaforge/antigravity-java-sdk: An unofficial Java port of the Antigravity AI Agent SDK.
An unofficial Java port of the Antigravity AI Agent SDK. - glaforge/antigravity-java-sdk
000
Guillaume Laforge @glaforge.dev · 23/09/2026
5️⃣ GitHub PR Review Agent (Main Demo) Combines custom GitHub tools, review rubrics via Agent Skills, subagents, and lifecycle hooks to compare two competing PRs in LangChain4j, stream thoughts live, and produce an objective review report.
100
Guillaume Laforge @glaforge.dev · 23/09/2026
4️⃣ Open Agent Skills & Session State Load folder-based skills (SKILL.md) for progressive disclosure: keep prompts lean until specialized knowledge is needed. Plus, inject ToolContext into tool methods to store session-scoped state without polluting LLM schemas.
agentskills.io
Agent Skills Overview - Agent Skills
A standardized way to give AI agents new capabilities and expertise.
120
Guillaume Laforge @glaforge.dev · 23/09/2026
3️⃣ Deny-by-default Security Policies Autonomous agents shouldn't have unrestricted privileges. Configure guardrails with Policies.denyIf(...) to intercept and block destructive operations before execution, allow safe read tools, and fall back to denyAll().
100
Guillaume Laforge @glaforge.dev · 23/09/2026
2️⃣ Real-time Streaming & Thinking Modern Gemini models think before answering. With chatStream(), you stream tokens as they arrive while separating the model's internal chain-of-thought (thoughtsDelta) from the final response text (textDelta). Great for transparent UIs.
100
Guillaume Laforge @glaforge.dev · 23/09/2026
1️⃣ Local Java Tools & Structured Output Annotate Java methods with @Tool and @Param to let the agent call your code. With .finishToolSchema(Record.class), the SDK derives the JSON Schema and deserializes the response directly into your Java record. Zero manual parsing.
200
Guillaume Laforge @glaforge.dev · 23/09/2026
Antigravity powers agents across the CLI, IDE, and desktop manager. The Java SDK wraps the native Go execution harness with a fluent, type-safe API for #Gemini models. Browse the 20-slide deck here: speakerdeck.com/glaforge/an...
speakerdeck.com
Antigravity SDK for the Java Developer
Antigravity is a family of agentic tools, comprising Antigravity 2.0 (the agent manager desktop application), Antigravity CLI (to work in the terminal),…
110
Guillaume Laforge @glaforge.dev · 23/09/2026
Gave a talk at #GDG Cloud Paris about the #antigravity SDK for #Java! While the official SDK is in Python, I built an unofficial Java SDK to bring agent automations to the JVM. Article & 8 code samples 🧵👇 glaforge.dev/talks/2026/...
121
Guillaume Laforge @glaforge.dev · 23/09/2026
Looking forward to talk about loop engineering with @wietsevenema.eu at #Devoxx!
020
Guillaume Laforge @glaforge.dev · 18/09/2026
Yup, #groovylang on #android 🤖⭐
010
Reposted by Guillaume Laforge
paulk-asert.bsky.social @paulk-asert.bsky.social · 18/09/2026
Version 6.0.0-RC-3 of @groovy.apache.org is available for download with 11 fixes and improvements! Thanks to all involved! Downloads: groovy.apache.org/download.html Groovy 6 Release notes: groovy-lang.org/releasenotes... #groovylang @apache.org
022
Guillaume Laforge @glaforge.dev · 18/09/2026
Pour ceux qui suivent l'actualité des #LLMs (avec la sortie de #jev) et qui aiment #DannyBoon... 😆
100
Guillaume Laforge @glaforge.dev · 16/09/2026
Ah ouais tu ressembles trop à Steve Jobs comme ça !!! J'adore !!!
140
Guillaume Laforge @glaforge.dev · 16/09/2026
I'm sure @sdkman.io will catch up. Did you open a request?
110
Guillaume Laforge @glaforge.dev · 13/09/2026
Read the full step-by-step guide with ready-to-use config snippets on my blog: glaforge.dev/posts/2026/... #Obsidian #Git #Productivity #Markdown
050
Guillaume Laforge @glaforge.dev · 13/09/2026
5️⃣ Sync your plugins & themes, keep secrets local Track `.obsidian/community-plugins.json` and `.obsidian/plugins/` so a new machine is ready right after `git clone`. Check plugins storing API keys in plain text in `data.json`: keep those ignored or in system keychain.
130