2015 has shown that the js community is also thriving for more fundamental changes, and DotJs 2015 conferences clearly highlighted the phenomenon. It was packed with outstanding talks about new technologies: ES6, HTTP2, Reactive programming … to only cite some. There is no doubt that this was one of the most striking conferences we attended.
Check our notes below to discover what the future life of a js developer will hold!
The prevalence of ES6 at the conferences (many, many code samples were written in ES6) clearly shows the eagerness of JS developers for this language evolution. Nicolas Bevacqua (@nzgb) gave here a very practical talk about what ES6 is changing and how it can help the community in producing a more readable and sustainable code. Syntax improvements allow the creation of much more concise work and boost developer productivity. Rejoice!
It will be interesting to see how fast the ES6 adoption in projects goes. We suggest to plan ahead how and when you wish to move on to ES6 before being left behind and adopting it in a haste. For those of you scared of browser support, Babel is your friend! Nicolas also contributed to many great open source projects, if you haven’t, check out his website Bevacqua.io.
Christophe Porteneuve (@porteneuve) explains in detail in his DotJS 2015 conference the evolution of async code in js and how Promises and Generators help us get out of callback hell. These approaches are as powerful as they can be tricky to setup. But do not despair yet as async/await are closing in! They appear to be the holy grail of async JS. Inherited from C#, they are intended for sync looking code with proper async execution… ES6 is just out and we’re already looking forward for ES7!
Asynchronous code is complex to read and therefore to debug. If Promises and Generators will make things easier, when you’re battling with some tangled up callback spaghetti code, think of logging every step of your action with a correlation id (typically a uuid). Much like when debugging a distributed system, appending a correlation id to all your log allows pulling all the log lines relating to your execution in a simple and elegant manner.
The vast majority of JS code is either initiated or relies on HTTP rest calls. Js coders, HTTP Server & Browser editors have been struggling for a long time to deliver the best modern web experience over the now old HTTP specifications. As Rebecca Murphey (@rmurphey) states HTTP/2 has been “designed for the web that is, not the web that was”, which makes it a powerful foundation for future apps. Improved dev tools, and most notably network monitors, could be key in its adoption rate. Get involved: the front-end community is the most likely to champion HTTP/2!
We believe that the adoption of HTTP/2, because of its better client/server exchanges, will impact our open-source browser-to-logmatic log shipper (logmatic js). Generated performance gains would be highly beneficial to reduce resources our clients assign to logging: hurrah!
Once again, the idea is to plan adoption in time before being left behind. On our side, being both a web app and API provider, we’ll follow closely server implementations so that we can have a robust and effective response in a timely manner.
Finally, Henrik Joreteg (@HenrikJoreteg) gave a very interesting DotJS 2015 conference about mobile JS. After much trouble to deliver great experiences on desktop with slow browsers and networks, many of us are now blessed with an outstanding internet connection and powerful computers… but the playground has changed!
Henrik stresses the importance of mobile, and how mobile users expect rich and immediate responses when physically interacting with a pocket size device. Getting to that kind of smooth experience is difficult, as mobile network connections are not exactly known to be reliable. Or fast for that matter. Thus efficiencies in code use are important, and we all should be inspired by Luke Wroblewski’s 6^5th constraints for a good mobile experience: < 60KB CSS, < 60KB HTML, < 60KB JS, 60fps animations and 0.6sec avg. latency.
In the context of strong performance constraints, we believe periodically metering and checking your indicators is key. Using an efficient log management system then becomes very handy: JS file sizes can be reported by your CI to it, allowing monitoring and alerting on the built result size.
Emmanuel Gueidan, CTO.