Cover photo
Thomas Broyer
Works at Atol Conseils & Développements
Lives in Dijon, France
1,384 followers|895,172 views


Thomas Broyer

Shared publicly  - 
The problem with settings (in software):
1] Once you add a setting you're supporting it forever
2] Unintended consequences: settings impact other settings
3] Settings excuse you from making informed product decisions 
4] Settings allow complexity/opinions to creep in
3 comments on original post
Philippe Lhoste's profile photoPoittevin Raphael's profile photoJonathan Strootman's profile photo
At work, we have a huge Java code base (with a Swing interface), which grew organically over the years.
It has tons of settings in the form of properties read from several .properties files (with cascading: shipped, on site, per user, etc.).
When we replace an implementation with another, we provide a setting to fall back on the original implementation, in case a catastrophic bug happens in production... Of course, these settings and old implementation remain there for years!
When we change a behavior, we provide a setting to allow users disliking this change to go back to the previous one...
Etc., ad nauseam...
The worst part is that at least half of the settings are not even documented (on even in internal docs) and can be discovered only when reading the code (and of course, they are sprinkled all over the whole code base!).
Later, we introduced a more central location for these settings and they became auto-documented... :-)

In recent products, we try and avoid to add (too much) settings. :-D
Add a comment...
For those wondering why we settled on Gerrit rather than GitHub when migrating to Git from Subversion.
I'd add side-by-side diffs (split diffs) which have only been introduced last September.
Lex Spoon's profile photoDarlene Wallach's profile photo
Add a comment...
I just released net.ltgt.gwt.maven:gwt-maven-plugin:1.-beta-1 to Maven Central

If you used the alpha versions, configuration (and internals) has change a lot: only a few arguments are exposed directly as properties, others have to be passed as generic compilerArguments.

Another breaking change is that the plugin no longer links to a specific GWT version, which means that you now have to add an explicit dependency to gwt-dev. The plugin is automatically tested against the last two stable versions of GWT as well as the latest snapshot for the next version.

Also new and noteworthy in this version: preliminary support for dev mode, through a gwt:codeserver goal that launches Contrary to the CodeHaus Mojo plugin, I built this with multi-module projects in mind. Note that, following the above rule, you'll also have to add an explicitly dependency to gwt-codeserver to your module.

Still no documentation (sorry), look at the integration tests and use mvn gwt:help and mvn gwt:help -Ddetail -Dgoal=<goal> to learn about the configuration properties.

I'll now work on updating my archetypes to use that new plugin.
gwt-maven-plugin - Starting fresh on building GWT projects with Maven
Brandon Donnelson's profile photoÜmit Seren's profile photoThomas Broyer's profile photo
+Thomas Broyer So far everything works really well. I only have troubles passing generic compilerArguments to the GWT compiler. 

If add this to the gwt-plugin configuration section: 
       -gen /tmp/generated_files

I get a maven error: 
[DEBUG]   (f) compilerArgs = [-gen /tmp/generated_files]
[WARNING] Unknown argument: -gen /tmp/generated_files

Somehow only on/off flags work but as soon as I add a value (i.e. -gen FOLDER, -optimize NUMBER) it doesn't work. 
Add a comment...
Seven 7-year-olds at home for an hour now (and still an hour and a half going) and now a storm as I need to go the grocery store buy orange juice. Already half-exhausted! #BirthdayParty
Add a comment...

Thomas Broyer

Shared publicly  - 
Woot! #MotoG
Matic Petek's profile photoAlexander Polunochev's profile photo
Not here yet in Canada for Wind Mobile customers. Depends on carrier, I believe.This is what happened to MotoX owners recently:
Add a comment...
Anyone has an idea why Java 8 is so much slower than Java 7 at compiling GWT apps? (note: using default memory settings for the JVM)
Antonio Petrelli's profile photoJens Nehlmeier's profile photoJames Nelson's profile photoThomas Broyer's profile photo
+James Nelson This is without any -sourceLevel at all.

Thanks for pointing out that the build is slower overall independently of GWT.

As for Travis CI, they have new a "dir caching" feature that I try to use but it does not seem to play well with matrix builds. Maybe there's some profile triggered by jdk8 that changes some plugins so jdk8 builds have to download things that are not part of the "cached dir"?
I could disable the cache and see what that changes…
Add a comment...
Have him in circles
1,384 people
Werner Kok's profile photo
Franklin Quispe Garcés's profile photo
Sebastian Pretzsch's profile photo
eiram ourley's profile photo
BÜLENT ÇAKIR's profile photo
Carroline line's profile photo
Hyskoa Jerome's profile photo
Hugo Schouman's profile photo
Rasel Textile's profile photo

Thomas Broyer

Announcements  - 
I just updated my gwt-maven-archetypes to use my net.ltgt.gwt.maven:gwt-maven-plugin instead of org.codehaus.mojo:gwt-maven-plugin.

git log --stat on one of the archetypes says:

6 files changed, 47 insertions(+), 135 deletions(-)

and more importantly:

 • devmode is easier to use (no need to ever run mvn install)
 • POMs have (almost) no hacks in them (just configuration of Tomcat and Jetty to make them load the .nocache.js from SDM)

Note however that I removed the ability to run the server with the compiled (prod mode) client. I'll add it back if there's demand.

You can see the exact changes at, to help you migrate existing projects.
Markus Strenn's profile photoThomas Broyer's profile photoTino D.'s profile photoSAMBATH KUMAR LOGAKRISHNAN's profile photo
+Ümit Seren Yes, dependencies have to include the META-INF/gwt/mainModule file. It's automatically generated with the gwt-lib packaging, but it's not limited to it (it's just a text resource after all). The idea is that we can discuss that feature, and other tools (gwt-gradle-plugin?) could start generating this file too so it could become a "standard". Consider it "experimental" for now though.

Re. moving your gwt.xml file to src/main/module.gwt.xml, it's not required. It gives you a few benefits though: generating the <inherits> from dependencies, and generating the rename-to="".
Add a comment...

Thomas Broyer

Shared publicly  - 
That song from Abba is so powerful already, but that woman has such a powerful voice too!

Many of you probably can't see the video (geographical restrictions) but sharing anyway…
 ·  Translate
Ketlyn a consacré sa vie aux autres, et notamment à ses enfants. Aujourd’hui sur la scène des Auditions à l’aveugle de The Voice, elle veut réaliser un rêve d’enfant. C’est avec une voix puissante qu’elle reprend « The Winner Takes it All » du célèbre goupe ABBA. Une voix qui fait chavirer le cœur de Florent Pagny et offre à Ketlyn une place méritée dans l’aventure. Extrait de l’émission de The Voice du 7 février 2015
Add a comment...
Cold (though not too cold: -1°C) but dry, sunny, no wind: ideal winter weather.
Bademus l.'s profile photo
imho, ideal winter is smth like +23, sunny, light breeze :)
Add a comment...

Thomas Broyer

commented on a post on Blogger.
Shared publicly  - 
Totally unexpected to me!

I'm still a bit worried about the reliance on JS (no "graceful degradation", or I'd rather say "progressive enhancement") when used with flacky connections. For simple apps, you could easily fall back to "web 1.0" then…
Is PPK from QuirksMode correct in saying that "client-side templating is wrong"?
Joel Webber's profile photoAntonio Petrelli's profile photoIsmail Marmoush's profile photoShawn Pearce's profile photo
+Robert Cooper Totally agreed. The mix of whose CPUs get used is one of those variables that absolutely must be considered in this optimization problem. And oftentimes it really is best to get the hell off the server and use that beefy CPU sitting cold on a user's desktop.

The flip side, of course, is that mobile CPUs can be slow as hell, and pegging them will drain your battery pretty quickly. No free lunch and all...
Add a comment...

Thomas Broyer

Shared publicly  - 
Question to people using Google For Work (GMail for your domain): how do you share mails with co-workers?

Say you receive a mail and you want to "archive" it with all other mails related to the same project (or client or whatever), in some special "box" (label?) shared with all other people working on that project.

We're currently using an on-premise IMAP server where we create shared boxes and give write access to project members. Whenever one of us receives a mail related to the project, he dragndrop/moves it to the shared box.
We're evaluating moving to GMail and this is something we haven't found how to do. We could create project-specific groups in Google Groups and then forward the mails to the group but then you lose some information about the original mail.
Those shared mailboxes are used mostly for archiving, but ideally we'd want to also be able to reply to a mail (e.g. when the project manager is on vacation, he could setup a filter/rule to move some mails to that box/folder/label and have someone else process it and reply to the original sender(s)).

How do you solve such problems? Or would you recommend another mail provider?
Thomas Broyer's profile photoAdolfo Panizo Touzon's profile photoJames Nelson's profile photoMihail Mishonov's profile photo
Here are the APIs for admin settings if you want to roll your own autofilters:

and there also appears to be direct access to inbox content through a new API I never implemented myself:

Just beware that anything you code should have robust error handling (cos their APIs are web services that are certainly not problem free).  If anything, I might recommend setting up a trial w/ an admin panel from the Google Apps Marketplace to see if you can make it do what you want.  If you can't get what you need, just let the trial expire, and wipe your hands of the matter.  If you can make it work, either pay the fees for the app (about $3k/year for 75 users I think), or roll your own (depending on how much your time is worth, probably more than $3k to get the error handling and interface to be robust).

Note, I'm not specifically endorsing gPanel either; their competition Flash Panel seems to have overtaken them since I left, so you might want to try both to see which one you prefer.  gPanel is a GXT monolithic app with fine grained permissions, whereas Flash Panel is very much a streamlined user experince (more wizard-y than control panel-y).
Add a comment...
The powerful must never be immune from mockery. If there is one thing which the past several hundred years have taught us, this is it: power which is not subject to examination, to criticism, to the salutary effects of lèse-majesté, is the greatest factory of tyranny that the world has ever known.

It is particularly ironic that the men who perpetrated today's massacre in Paris were angry over satirical depictions of Muhammad, because in doing so they have forgotten the exact reason why his depiction was forbidden: because the depiction of animals or of people encourages idolatry. [1] Islam has always been profoundly careful to avoid even the slightest suggestion of veneration of anything other than God: even the time for the mid-day prayer begins just after the Sun has passed its zenith, to avoid the appearance of Sun worship. The purpose of the hadith is to prevent people from worshipping the Prophet, not to put the Prophet on a par with God.

No, the reason for this had nothing to do with holy writ, and everything to do with people who want the right to declare that they may not be insulted, that their pride has more value than human life. And any claim which can be enforced with bloodshed is a claim which comes from power -- and thus a claim which itself has no claim on immunity from mockery. Because they demand it must not be spoken, and because they wish to prevent it from being spoken by creating a fear of murder among anyone who speaks out, it must therefore be spoken.

In the spirit of this, here are several of the cartoons which Charlie Hebdo published which brought down this rage. As its cover I present the best possible summary of all: a picture of Muhammad, saying "It's hard to be loved by assholes."


[1] See e.g. Sahih al-Bukhari 3:34:318,
Gunfire broke out Wednesday in an attack at the offices of French satirical weekly Charlie Hebdo, leaving 12 dead, including four prominent cartoonists. Known for its caricatures of the Prophet Muhammad, as well as critical depictions of Catholics...
175 comments on original post
Sachin Shekhar R's profile photo
Add a comment...
Have him in circles
1,384 people
Werner Kok's profile photo
Franklin Quispe Garcés's profile photo
Sebastian Pretzsch's profile photo
eiram ourley's profile photo
BÜLENT ÇAKIR's profile photo
Carroline line's profile photo
Hyskoa Jerome's profile photo
Hugo Schouman's profile photo
Rasel Textile's profile photo
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Dijon, France
Contributor to
Software Architect
  • Atol Conseils & Développements
    Software Architect, present
Basic Information
Thomas Broyer's +1's are the things they like, agree with, or want to recommend.
Les enfants en colère après la publication de caricatures jugées injurie...

OSLO – La nouvelle n'a pas tardé à faire réagir. À peine publiées par un journal iranien, les caricatures se moquant ouvertement du Père Noë

LEGO® Star Wars™ Yoda II

Choose your side and join the battle in LEGO® Star Wars™ The New Yoda Chronicles! Collect the Holocrons to defeat your enemy and take contro

Google Play services

Google Play services is used to update Google apps and apps from Google Play. This component provides core functionality like authentication

Inbox by Gmail

Inbox by Gmail requires an invite. Email to request one. Your email inbox should help you live and work better, but instead

Testing on the Toilet: Writing Descriptive Test Names

by Andrew Trenk, This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of

One man willingly gave Google his data. See what happened next. - O'Reil...

Despite some misgivings about the company’s product course and service permanence (I was an early and fanatical user of Google Wave), my rel

Bolinfest Changeblog: Hacking on Atom Part I: CoffeeScript

Atom is written in CoffeeScript rather than raw JavaScript. As you can imagine, this is contentious with “pure” JavaScript developers. I had

Testing on the Toilet: Effective Testing

by Rich Martin, Zurich This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly vers

The truth is out: money is just an IOU, and the banks are rolling in it

The Bank of England's dose of honesty throws the theoretical basis for austerity out the window

Chromium Blog: Blink’s First Birthday

Last April we introduced Blink as the new rendering engine for Chromium. Since then, the project has grown to include over 200 active contri

22 Responses To Buzzfeed's 22 Creationist Messages

Buzzfeed published 22 questions and statements from Creationists; here's some responses from a science reporter.

The Craftsman - Google Groups

The Craftsman, Caio Fernando Bertoldi Paes de Andrade, 2/3/14 8:25 AM. Cleancoders,. I was searching for material on the internet last week

Troy Hunt: For your convenience, please disable security warnings

Let's just start here: This is an annoying feature of Internet Explorer, and is not indicative of any security. Allow me to provide a techni

Lenovo to acquire Motorola Mobility

We've just signed an agreement to sell Motorola to Lenovo for $2.91 billion. As this is an important move for Android users everywhere, I wa

Ne dîtes pas à ma mère que je suis développeur

Un sondage réalisé sur les métiers les plus enviés a été relayé, il y a quelques mois, dans un article d'un grand...