Feedback on the ConFoo 2018 conference.
Better late than never, they say. We all know what happens when you are a Worldline employee and you saved all your vacations for the end of the year: you get a lot of vacation! So we are sorry for the delay, but here is our report on ConFoo Montreal 2018.
ConFoo Atmosphere
I do not know if it is due to being in North America but the first thing I felt is the close attention paid to inclusiveness, both in the conference’s form and its contents. For example, there were a lot of accessibility-centered talks (both for web and mobile).
With the entrance ticket, you can get a room inside the conference hotel at a preferential price. If you plan to go to ConFoo, take that chance, it is very comfortable and you will have direct access to the “underground city”, especially if you want to avoid snow and cold weather.
One of the good things going for this conference is that it is “Full stack” meaning that there are all kind of conferences, from databases to front-end If you are interested for next year, check the full schedule
There are very few videos online, but if you want to feel the atmosphere, you can watch this keynote: Code Is Not Neutral: the Ethics of Programming — Clarissa Peterson
Trends
During the keynote, we were promised a lot of talks about Artificial Intelligence and machine learning, the subject being particularly topical in Montreal because Google had recently chosen the city to open its AI Lab, and also because the Canadian government is greatly incentivizing research in these domains lately. However, the talks I saw on these subjects were quite underwhelming, restricting the use of AI to machine learning, and even then, mostly for very conventional uses (e.g. datamining).
Another thing that was on everyone’s lips (well, at least a large part of the speakers’ lips) was the concept of Progressive Web App, aka PWA. For those who do not know (I did not, before then), they are web applications that use advanced APIs offered by mobile phones to look and act like a native mobile application. More of a new step forward than a revolution, for sure, but it is definitely a trend the web application world is following right now. There is a in-depth article about PWA on this very blog!
One thing that was also much more present than in the conferences I attended in France and Europe was referencing Transformers (the old cartoons, not the recent movies, obviously). Yes, it was absolutely necessary to mention here.
One thing I learned and I will use immediatly
Talk: GC hero by Ram Lakshmanan (author’s blog)
I have used desktop applications to display GC logs before (like VisualVM). They work but they require you to use a specific format. GC easy is an online tool that can get all gc log ouf of any jvm.
This tool draws GC graphs for you, and exposes some analyses that can help.
The same team also offers an online tool to inspect java heap dump, but I will not use it on client project since confidential and/or personnal data may present inside a java dump.
Talk: Think Async in NodeJS by Adam L Barrett @adamlbarrett
The talk focused on all the ways the language handles asynchronicity, from the most historical to the not-yet released. (contrary to what the title said, almost everything shown during that talk was not Node-centric, but valid for all JavaScript code.)
I learnt quite a bit about the most recent ones. Like the async/await
pair that gives a really nice way to write promises. I knew of the functionality itself, but I did not know it was already usable with the recent Chrome/Firefox versions, as well as Babel and Node (starting at version 7.6).
I do not plan on making this post technical, but here is how it basically works.
async function withAsync(param1, param2){return …;}
Here, the async
keyword ensures the method always returns a Promise (that auto-realizes if the method returns a “simple” value)
async function asyncMethod(){
const result = await getFromServer();
// other processing using result
}
In an async
method, when you use the await
keyword, the execution will wait for the resolution of the called method (here getFromServer
) before executing the next statement. The .catch()
of Promise is replaced by a classical try/catch
statement
These new keywords allow writing code in a more classical “imperative” way. Whether this way of writing is better or not than the more “functional” way of former JavaScript is up to everyone’s tastes, but now the developers get to choose which way they want to use.
In the next version of the language, it will even be possible to iterate on arrays of asynchronous items with the for-await
loop.
for await (const item of promiseArrays) {
// do something with item
}
The syntax is pretty clear: here every loop iteration will wait for the promise to resolve before continuing to the next.
If you want to get more into the meat of how it works (and learn about more complex future functionalities like async generators
, I direct you to http://2ality.com/2016/10/asynchronous-iteration.html that goes in great details about all async iterators in JavaScript)
Talk: So, what’s new in ES2020? by Christophe Porteneuve @porteneuve
During this talk, I learned about the tc39 committee and process which is the new process to bring new features in the EcmaScript standard. The main points I got out of it are:
- Since 2016, there are yearly releases of the standard (named after the year, like ES2017). The release contains all of the ready features, regardless of how many there may be.
- In order to avoid the very vendor-dependant implementations that occured a lot in the past, for a feature to be integrated into the standard, at least two major JavaScript must implement it already. Which means it is most likely already usable!
You should take a look at the list of all active proposals, it is a very interesting peek at the future of JavaScript (the stage 0 proposals have their own page)
Unexpected talk
Talk by James Weaver @JavaFXpert
Yes, it is possible to use spring framework and do music in a talk: Counterpoint composer
it is a demonstration on how to generate counterpoint (when several singers sing with different notes and that all of that sounds nice together).