Profile

Cover photo
Thomas Broyer
Works at Atol Conseils & Développements
Lives in Dijon, France
1,507 followers|1,023,131 views
AboutPosts

Stream

Thomas Broyer

Shared publicly  - 
 
The project that lead me to use GWT for the first time (main contender at the time was YUI) will soon be retired (or at least it feels like so; going (partly) read-only real soon).

As you can see from the image, most development was done in 2008 (between February and October), with one big new feature (in the form of a new GWT app actually) in late 2009 / early 2010; then there hasn't been much development, mostly to start tearing some features apart.

Seeing this project being (finally!) retired actually feels good, as it's been scheduled for retirement for more than 3 years now!

FWIW, the project still uses GWT 2.0.3, with Guice 2.0 and GIN 1.0 (added during the 2009 devs, soon after +Ray Ryan's presentation at I/O, building the new thing using MVP and our own places implementation), and X-UA-Compatible IE=EmulateIE7! (yep, you read if correctly)
I'm a bit ashamed of sharing these last details actually, as they're so contrary to how I see web development; but we're a consulting company (contractor?), not a vendor, so we don't always have a say on how projects are maintained…
7
Thomas Broyer's profile photoIstván Horváth (armogur)'s profile photoTony BenBrahim's profile photo
4 comments
 
Weird, I have some projects that look like that, and nowhere close to bring retired. At some point, you fix all the obvious defects, make all the sensible improvements and move on to other projects. Does not mean the product is not actively used every day by thousands of users. In my mind a successful project looks like the above, it has a start and end, not an endless maintenance cycle.
Add a comment...

Thomas Broyer

Share hints and howtos  - 
 
FYI, I just updated my gwt-maven-archetypes switching from GIN (which is unmaintained, and will BTW require a JDK 8 in GWT 2.8) to Dagger‡ (2.1). I thus renamed the archetype from guice-rf-activities to to dagger-guice-rf-activities.

For those interested in migrating their projects from GIN to Dagger‡, here's the change for reference:
https://github.com/tbroyer/gwt-maven-archetypes/commit/667955ca5243f480a2cc106c324d12c0ed6a783b
This is actually pretty straightforward and mechanical.

I later made a small change to make the Activity+View+ViewImpl triad more self-contained: https://github.com/tbroyer/gwt-maven-archetypes/commit/54ad48ae378c0ca393ebe06d760f453a2a6b7611
An alternative would be to just remove the interface, and just mock the class in your tests (if any).
If you want to be able to switch the view implementation at runtime though (with permutations for different form-factors for example), then just don't make that last move and keep your bindings in your Dagger module.

Edit: Dagger 2.1 has been released, archetype updated.
23
2
Alexander Tarasov's profile photoThomas Broyer's profile photo
8 comments
 
+Alexander Tarasov Hey, nobody forces you to migrate ;-)
That said, for a new project (which is what Maven archetypes are about) I would start with GIN; and I know some people have contemplated migrating to Dagger 2 (for example, when sharing code with Android, where Roboguice is apparently too heavyweight), hence this post. But if GIN works for you, indeed, I'd defer the migration.
Add a comment...

Thomas Broyer

Share hints and howtos  - 
 
People regularly ask about SEO of their GWT app/site, this should be helpful.
 
An update (March 2016) on the current state & recommendations for JavaScript sites / Progressive Web Apps [1] in Google Search. We occasionally see questions about what JS-based sites can do and still be visible in search, so here's a brief summary for today's state:

# Don't cloak to Googlebot. Use "feature detection" & "progressive enhancement" [2] techniques to make your content available to all users. Avoid redirecting to an "unsupported browser" page. Consider using a polyfill or other safe fallback where needed. The features Googlebot currently doesn't support include Service Workers, the Fetch API, Promises, and requestAnimationFrame.

# Use rel=canonical [3] when serving content from multiple URLs is required.

# Avoid the AJAX-Crawling scheme on new sites. Consider migrating old sites that use this scheme soon. Remember to remove "meta fragment" tags when migrating. Don't use a "meta fragment" tag if the "escaped fragment" URL doesn't serve fully rendered content. [4]

# Avoid using "#" in URLs (outside of "#!"). Googlebot rarely indexes URLs with "#" in them. Use "normal" URLs with path/filename/query-parameters instead, consider using the History API for navigation.

# Use Search Console's Fetch and Render tool [5] to test how Googlebot sees your pages. Note that this tool doesn't support "#!" or "#" URLs.

# Ensure that all required resources (including JavaScript files / frameworks, server responses, 3rd-party APIs, etc) aren't blocked by robots.txt. The Fetch and Render tool will list blocked resources discovered. If resources are uncontrollably blocked by robots.txt (e.g., 3rd-party APIs) or otherwise temporarily unavailable, ensure that your client-side code fails gracefully.

# Limit the number of embedded resources, in particular the number of JavaScript files and server responses required to render your page. A high number of required URLs can result in timeouts & rendering without these resources being available (e.g., some JavaScript files might not be loaded). Use reasonable HTTP caching directives.

# Google supports the use of JavaScript to provide titles, description & robots meta tags, structured data, and other meta-data. When using AMP, the AMP HTML page must be static as required by the spec, but the associated web page can be built using JS/PWA techniques. Remember to use a sitemap file with correct "lastmod" dates for signaling changes on your website.

# Finally, keep in mind that other search engines and web services accessing your content might not support JavaScript at all, or might support a different subset.

Looking at this list, none of these recommendations are completely new & limited to today -- and they'll continue to be valid for foreseeable future. Working with modern JavaScript frameworks for search can be a bit intimidating at first, but they open up some really neat possibilities to make fast & awesome sites!

I hope this was useful! Let me know if I missed anything, or if you need clarifications for any part.

Links:
[1] PWA: https://developers.google.com/web/progressive-web-apps
[2] Progressive enhancement: https://en.wikipedia.org/wiki/Progressive_enhancement
[3] rel=canonical: https://support.google.com/webmasters/answer/139066
[4] AJAX Crawling scheme: https://developers.google.com/webmasters/ajax-crawling/docs/specification
[5] https://support.google.com/webmasters/answer/6066468
30 comments on original post
4
Add a comment...

Thomas Broyer

Shared publicly  - 
 
Watching CSI: Cyber and I can't help but think about Medium, Dawson and Ally McBeal; particularly Ally McBeal.
3
Add a comment...

Thomas Broyer

Announcements  - 
 
Just released version 1.0-rc-5 of net.ltgt.gwt.maven:gwt-maven-plugin

 • gwt:compile no longer include compile source roots in the classpath (they've been copied through gwt:import-sources and resources:resources anyway)
 • gwt:devmode and gwt:codeserver's projects and modules discovery (when no value has been specified) has been relaxed so it works better for standalone apps
 • gwt:test's devMode has been removed, as its default value will be switched in GWT 2.8 and it'll be deprecated
23
6
Thomas Broyer's profile photoBrandon Donnelson's profile photoDavid Nouls's profile photo
17 comments
 
I need an offline installation my dev environment is not allowed to connect to the internet. I will clone the repo and build the p2 update site on my computer at home.
Add a comment...
 
 
Wanted: open-source OCSP daemon! Requirements, courtesy of +Ryan Sleevi: http://bit.ly/1LM7uKY - any volunteers? :-)

p.s. for bonus points, written in Go for portability.
7 comments on original post
2
Add a comment...
Have him in circles
1,507 people
David Stemmer's profile photo
Jérôme URBAN's profile photo
Nagaraj N's profile photo
Chandima Jayarathna's profile photo
Anton Hughes's profile photo
Markus Dippold's profile photo
Prashant Bhat's profile photo
Cem Ikta's profile photo
Tonja Neal (A Perfect Perception)'s profile photo

Thomas Broyer

Shared publicly  - 
 
This week's stats:

$ git log −−author="Thomas Broyer" −−since=2016-05-09 −−pretty=tformat: −−shortstat −M −C | awk '{ files += $1; add += $4; subs += $6; loc += $4 - $6 } END { printf " %s files changed, %s insertions(+), %s deletions(−), delta: %s\n", files, add, subs, loc }' −
88 files changed, 171 insertions(+), 2165 deletions(−), delta: −1994

Feels good.

(well, this is in preparation to adding many more in the coming weeks unfortunately; migrating from an SSO to a local auth –which will be an SSO actually–, currently cutting everything specific to the first, will have to write the new thing next: sign up, sign in, tenant creation, etc.)

h/t: https://stackoverflow.com/a/7010890 for the basis of the script.
Note: I had to replace dashes with U+2212 to prevent G+ from formatting as strikethrough, so you unfortunately can't copy-paste.
4
Thomas Broyer's profile photo
2 comments
 
Single Sign-On and Single-Sign-Out implemented:
142 files changed, 2763 insertions(+), 456 deletions(−), delta: 2307
or, from the beginning of the journey:
230 files changed, 2934 insertions(+), 2621 deletions(−), delta: 313
And still missing password recovery and sign up.
Add a comment...

Thomas Broyer

Shared publicly  - 
 
"one important element is that one should always understand (at least at high-level) how the tools work. One should use these not because they don’t know how to make them, but rather, because they are not willing to rewrite them."
 
This morning on our blog : "Build Your Own Test Framework" by Olivier Lafleur http://buff.ly/21SbxjB #JUnit #Java #UnitTests
In this article, we will build our own test framework. Why? Because we can!
View original post
5
Add a comment...

Thomas Broyer

Shared publicly  - 
 
My wife did a cooking workshop for our daughter's birthday party, so I made toques (out of a paper napkin).
2
Add a comment...

Thomas Broyer

Shared publicly  - 
 
Maven is broken by design – Take 2: annotation processors

I wrote a post about the brand new annotationProcessorPaths property in maven-compiler-plugin 3.5 and how it can bring more harm than good in some cases; and more generally how this all boils down, once again unfortunately, to design flaws in Maven.
More than 2 years ago, I wrote about why Maven is broken by design, and while not everything was accurate I stand by most of what I wrote back then. This week, the Maven Compiler Plugin gained the ability to use javac 's -processorpath by declaring annotation processor dependencies in a special ...
10
Add a comment...

Thomas Broyer

Shared publicly  - 
 
No doubt, winter is here.
3
Antonio Petrelli's profile photoMel Ane's profile photo
2 comments
Mel Ane
 
cream bro !!!!
Add a comment...

Thomas Broyer

Shared publicly  - 
 
I somehow missed/forgotten about that but OMG this is HUGE!

Starting January 12, 2016 (that is, in exactly 1½ month), Microsoft will end support for all versions of Internet Explorer older than 11.

Of course that doesn't mean we, as web devs, can stop worrying about those older IE versions, but at least we can (probably) charge our clients extra money if they insist they want support to be "on par" with other browsers, and/or possibly even only want us to test in these older versions.
25
10
Eduardo Guardiola's profile photoThomas Broyer's profile photoRocco De Angelis's profile photo
4 comments
 
Yeah that's true! In general the way Microsoft is going looks much better in the last months. 
Add a comment...
People
Have him in circles
1,507 people
David Stemmer's profile photo
Jérôme URBAN's profile photo
Nagaraj N's profile photo
Chandima Jayarathna's profile photo
Anton Hughes's profile photo
Markus Dippold's profile photo
Prashant Bhat's profile photo
Cem Ikta's profile photo
Tonja Neal (A Perfect Perception)'s profile photo
Places
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Currently
Dijon, France
Links
Contributor to
Work
Occupation
Software Architect
Employment
  • Atol Conseils & Développements
    Software Architect, present
Basic Information
Gender
Male
Relationship
Married
Apps with Google+ Sign-in
  • Angry Birds Under Pigstruction
  • Angry Birds Go!
  • Angry Birds Friends