Sign in

Thomas Broyer

@tbroyer.ltgt.net
459 followers 370 following 765 posts

Web development (frontend, Web APIs), Web app security, build tools, Java, Gradle, etc. Blog: blog.ltgt.net Fediverse: piaille.fr/@tbroyer GitHub: github.com/tbroyer

PostsRepliesMedia
Thomas Broyer @tbroyer.ltgt.net · 31/08/2026
Fwiw, from France
Searching "Lac Ontario" in Google Maps on Android, from France: the map shows "Lac Ontario" but the bottom sheet displays "Lake Ontario (Lake America)"
100
Thomas Broyer @tbroyer.ltgt.net · 21/07/2026
New achievement unlocked
Bluesky/Mu.social notification: "Jordan Mechner reposted your post"
(a post I made about Jordan Mechner: "So, apparently, I got internet before Jordan Mechner 🧓🤯 (but after playing Prince of Persia for a few years already; floppy disks ftw!)")
010
Thomas Broyer @tbroyer.ltgt.net · 07/07/2026
vendredi ?
Meme du capitaine Haddock et Tintin :
— Baccalauréat 2026 : des centaines de milliers de candidats ont découvert vendredi les résul…
— Capitaine, on est mardi
030
Thomas Broyer @tbroyer.ltgt.net · 07/07/2026
Chrome and Edge (on ArchLinux), same result:
> navigator.gpu
< { wgslLanguageFeatures: { size: 10 } }
030
Thomas Broyer @tbroyer.ltgt.net · 01/07/2026
Bonjour, Votre protection anti-bots semble complètement casser le rendu de votre site. Note à l'attention du webmaster : le serveur envoie une page HTML avec le script anti-bots (redirection et dépose d'un cookie bot_mitigation_cookie) en lieu et place des feuilles de style et javascripts.
Capture d'écran de la page d'accueil du site musee-moyenage.fr
Aucune feuille de style n'est chargé (ni aucun javascript)L'onglet "Network" des Chrome DevTools, montrant le contenu d'une réponse pour une feuille de style CSS, celle-ci contient en réalité du HTML avec un script de redirection vers une page /redirect_xxxx, visiblement une protection anti-bots (à en juger par le cookie bot_mitigation_cookie déposé par cette même page)
100
Thomas Broyer @tbroyer.ltgt.net · 27/05/2026
Oh, looks like you coped for that in mq-fretboard-scale, which is now "broken" 😉 github.com/hsablonniere...
Side-by-side comparison of the mq-fretboard-scale and mq-fretboard examples from the documentation, displaying the A minor pentatonic scale.
One is vertically flipped compared to the other.
100
Thomas Broyer @tbroyer.ltgt.net · 17/04/2026
Et merde, @legorafi.bsky.social visionnaire ! www.legorafi.fr/2026/04/08/f...
D’autres évolutions à venir pour Netflix

En plus des résumés vidéos, Netflix va effectuer une autre modification pour plaire à une clientèle toujours plus jeune. Le président du groupe a expliqué que toutes les prochaines séries produites par Netflix devront être tournées au format vertical « pour améliorer le confort de visionnage pour une Gen Z qui a souvent la flemme de tourner son téléphone pour le mettre en format horizontal. »
000
Thomas Broyer @tbroyer.ltgt.net · 09/04/2026
"Bring back the Dalis" You've never gone to the Dali museum at Figueras, or his home at Cadaques, have you?
A whole room installation at Dali's museum in Figueras, with a lips-shaped sofa, and nose-shaped fireplace.A several meters high sculpture in Dali's museum patio, mounted on a car.A 5 meter high painting taking a whole wall in Dali's museum in Figueras.A 10 meter long sculpture of the Christ, in Dali's home olive grove in Cadaques.
000
Thomas Broyer @tbroyer.ltgt.net · 30/03/2026
The idea would be that instead of writing this Kotlin (1), I'd write this Java (2), and the annotation processor would generate that KotlinExtensionsKt (3) with the generated @Metadata that just trampolines to the Java class, along with the META-INF/my-gradle-plugin.kotlin_module
val CompileOptions.errorprone: ErrorProneOptions
    get() = (this as ExtensionAware).extensions.getByName(ErrorProneOptions.NAME) as ErrorProneOptions

fun CompileOptions.errorprone(action: Action<in ErrorProneOptions>) =
    (this as ExtensionAware).extensions.configure(ErrorProneOptions.NAME, action)
interface KotlinExtensions {

  @KotlinExtensionGetter
  static ErrorProneOptions errorprone(CompileOptions compileOptions) {
    return (ErrorProneOptions)
        ((ExtensionAware) compileOptions).getExtensions().getByName(ErrorProneOptions.NAME);
  }

  @KotlinExtensionFunction
  static void errorprone(CompileOptions compileOptions, Action<ErrorProneOptions> configure) {
    ((ExtensionAware) compileOptions).getExtensions().configure(ErrorProneOptions.NAME, configure);
  }
}@Metadata(/* ? */)
public class KotlinExtensionsKt {
  public static final ErrorProneOptions errorprone(CompileOptions compileOptions) {
    return KotlinExtensions.errorprone(compileOptions);
  }

  public static final void errorprone(CompileOptions compileOptions, Action<ErrorProneOptions> action) {
    KotlinExtensions.errorprone(compileOptions, action);
  }
}
100
Thomas Broyer @tbroyer.ltgt.net · 18/03/2026
And Orbán knows well how to stop "small boats with migrants" commons.wikimedia.org/wiki/File:Hu...
Geographic map of Hungary, showing it only has land borders (well, technically, it has a border with Slovakia along the Danube, and a small border with Austria on a lake)
100
Thomas Broyer @tbroyer.ltgt.net · 23/02/2026
Wait, what?! Socks sizes are gendered in the US?!
A label with a table of 3 rows (EU, UK, US) and 2 columns (men, women). Cells are identical in men and women columns for the EU (41–46) and UK (7½–11½) rows, but different on the US row (8½–12½ for men, vs 10½–14½ for women)

Also visible on the label besides that table: "produced from combed cotton" and "[…] polyester 2% elastan"
100
Thomas Broyer @tbroyer.ltgt.net · 09/02/2026
And here it is: github.com/humanwhocode... All links to humanwhocodes.com/%E2%80%A6 will be turned into humanwhocodes.co...
Browser Dev Tools console:
> "https://humanwhocodes.co...".length
< 27
130
Thomas Broyer @tbroyer.ltgt.net · 07/02/2026
Obligatory XKCD 😅 xkcd.com/1373
XKCD #1373: "when someone posts a screenshot of their phone, I can't pay attention to the content if their battery is low."
110
Thomas Broyer @tbroyer.ltgt.net · 05/12/2025
Let's go! #DevFestDijon
Horacio Gonzalez starting his "htmx & web components" talk at DevFest Dijon
040
Thomas Broyer @tbroyer.ltgt.net · 20/11/2025
I can't keep adding games to my daily routine indefinitely but I'll probably add that one anyway. 🟩🟩🟩🟩 🟩🟩🟩🟩 🟩🟩🟩🟩 🟨🟩🟨🟩 🟩🟩🟩🟡 cluesbysam.com
I solved the daily Clues by Sam, Nov 20th 2025 (Tricky), in less than 13 minutes
030
Thomas Broyer @tbroyer.ltgt.net · 28/06/2025
Yes, the standard Gradle deprecation warnings. Some of them also related to @Deprecated classes, so catchable at compile time. docs.gradle.org/8.14.2/userg... docs.gradle.org/8.14.2/userg... docs.gradle.org/8.14.2/userg...
Invocation of Task.project at execution time has been deprecated. This will fail with an error in Gradle 10.0. This API is incompatible with the configuration cache, which will become the only mode supported by Gradle in a future release. Consult the upgrading guide for further information: https://docs.gradle.org/8.14.2/userguide/upgrading_version_7.html#task_project
The org.gradle.api.plugins.Convention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.14.2/userguide/upgrading_version_8.html#deprecated_access_to_conventions
The org.gradle.api.plugins.JavaPluginConvention type has been deprecated. This is scheduled to be removed in Gradle 9.0. Consult the upgrading guide for further information: https://docs.gradle.org/8.14.2/userguide/upgrading_version_8.html#java_convention_deprecation
010
Thomas Broyer @tbroyer.ltgt.net · 26/05/2025
Fyi, there's a bug somewhere in the JS that handles keyboard shortcuts help text: it shows Ctrl rather than ⏎, ↓, and ↑ (displays correctly in search itself, and works as expected too)
Section of the blog post about keyboard shortcuts, reads:

* Press Ctrl to select a search result.
* Press Ctrl to navigate to the next search result.
* Press Ctrl to navigate to the previous search result.The keyboard shortcuts help modal, reads:

* Press Ctrl to select a search result.
* Press Ctrl to navigate to the next search result.
* Press Ctrl to navigate to the previous search result.Search results popup, displays a ⏎ in the first (selected) result, and below the list shows "↓↑ to navigate", and "⏎ to select".
210
Thomas Broyer @tbroyer.ltgt.net · 27/04/2025
Went to the zoo a couple days ago, apparently they ran out of time for the camel
The precursor to the unfinished horse drawing meme, by @raphaelb53 on Twitter: a hand-drawn horse has the head part detailed but body is crude, and not to scale. Text above the drawing reads "when ur writing an essay for a test and the teacher says u have 3 minutes left"A white one-humped camel in a meadow, its hindquarter looks scrawny.
000
Thomas Broyer @tbroyer.ltgt.net · 01/02/2025
The Cheshire cat from Disney's Alice in Wonderland
010
Thomas Broyer @tbroyer.ltgt.net · 01/12/2024
Me too, I believe in the holy trinity
Gekko, Catboy and Owlette from the PJ Masks
000
Thomas Broyer @tbroyer.ltgt.net · 22/11/2024
Wow, what a cover! (this week's @politico.eu)
The cover of Politico.eu "print edition" from November 21–27 2024

Cover image shows a map (topographical map, not a geopolitical one) of Europe with a large shadow of Putin's profile superimposed on top of western-Russia (as well as Baltic states and Finland), looking down at Europe.

The associated headline (in rather small print compared to the image) reads "Europe is under attack from Russia, why isn't it fighting back?"
120
Thomas Broyer @tbroyer.ltgt.net · 19/11/2024
Post a perfect album from the 90s that isn't Nirvana, Pearl Jam, Soundgarden, or Alice in Chains
Smashing Pumpkins' Mellon Collie and the Infinite Sadness
250
Thomas Broyer @tbroyer.ltgt.net · 19/11/2024
Not yet. drafts.csswg.org/css-view-tra... > Each view transition name is a tree-scoped name. > > Note: Since currently only document-scoped view transitions are supported, only view transition names that are associated with the document are respected.
Each view transition name is a tree-scoped name.

Note: Since currently only document-scoped view transitions are supported, only view transition names that are associated with the document are respected.
110
Thomas Broyer @tbroyer.ltgt.net · 19/11/2024
If you see this, please repost with a favourite photo of the sky that you’ve taken recently. A hot air balloon and the moon in an almost cloudless sky
A hot air balloon and the moon in an almost cloudless sky
020
Thomas Broyer @tbroyer.ltgt.net · 17/11/2024
I refuse to join Bluesky - I don't want to be part of a Brian Eno chamber.
Portrait of Brian Eno in 2017

Photo by Jindřich Nosek (NoJin); CC BY-SA 4.0Cover artwork of Brian Eno's "Cutting Room Ⅰ" from the soundtrack of Netflix's "Top Boy"‘Quiet Room for Montefiore’, designed by Brian Eno for The Montefiore Hospital, Hove, Sussex (2013),  (Installation of light and music).

Photo by Oliver Perrott
000
Thomas Broyer @tbroyer.ltgt.net · 10/01/2024
Obligatory xkcd^W @lesjoiesducode.bsky.social lesjoiesducode.fr/froid-androi...
Planche de bande dessinée en 4 cases:

1. Deux personnes dans une maison autour d'un feu éteint: “On va finir par mourir de froid si on ne fait rien !”

2. “Il ne reste qu'une seule option”

3. “Lancer Android Studio”

4. Les deux personnages se chauffent auprès d'un ordinateur tour.

(note: on aperçoit un radiateur électrique dans la pièce)
171