I had the chance to go the Fullstack Fest 2016 and really enjoyed it — thanks Mozilla!
This blog post is an attempt to give you a summary and some feedback of what happened during this 4+1 days conference!
Huge applause!
The Codegram team did really really well! They raised the bar for tech conferences; all the feedback I heard was extremely positive! Plus, Barcelona is a pleasant destination :)
Former RubyCon and FutureJS events were merged into one fullstack event, 2 days of backend talks, 1 gap day with social activites, and 2 days of frontend talks.
Problems of Today, ideas from the future. — FullstackFest motto
I must congratulate the organizers for the choice of speakers and topics. It's a huge challenge to captivate 500 persons during 5 days, and they did really well! And also a big up for the impressive performance of the captioners!
Trends
- Docker
- Amazon Lambda
- GraphQL
- Criticism of microservices
- Offline / high latency / decentralized Web
- Functional programming
- Reactive programming
- Immutability
- Machine learning
- Virtual reality
- Physical Web
One sentence summaries
The videos are already online! In order to help you choose which one to watch, here is the shortest summary I could come up with for each talk, videos are linked on authors names:
- Hardware is amazing, software is crap. Use parallelism and keep your data under your control — Joe Armstrong, Erlang's inventor.
- Scale using «pods»: deploy several isolated stacks of your multitenant app — Simon Eskildsen, Shopify
- Theorical knowledge can help when designing distributed systems with high availability — Ines Sombra, Fastly
- Improve efficiency and security using a unikernel: a kernel whose components are built specifically for your app — Amir Chaudhry, Docker Inc
- Instead of making X faster, do less of X — Tobias Pfeiffer, Bitcrowd
- Docker containers are only as secure as your best practices — Ben Hall, http://katacoda.com
- Elixir provides high level abstractions that make Erlang awesome — Saša Jurić, Aircloak
- Unison is an experiment to come up with a new programming paradigm focused on distributed computing and persistence — Paul Chiusano, Stage N
- HTTP2 reduces latency. It's here, use it with a one liner in your server configuration — Ole Michaelis, Jimdo
- Scale by publishing pre-rendered content to S3 when your data source changes — Tim Perry, BBC
- Use Amazon lambda as a very cheap and ultra-efficient scaling solution — Austen Collins, serverless.com
- Processing natural language can be very easy with simple tricks — Duretti Hirpa, Slack
- It is our responsability to decentralize access and assure durability of our data. Internet of hash = bittorrent + git — Juan Benet, ipfs.io
- Enable GraphQL on your API and rely on smart clients to do the hard work of querying and caching — Marc-Andre Giroux, Shopify
- Some insights about recommendation engines and machine learning techniques — Brian Sam-Bodden, Integrallis
- Immutable UIs make it simpler to improve durability, utility and beauty in your software architecture — Lee Byron, Facebook, author of Immutable.js
- Elm applications have no runtime errors — Jack Franklin, Songkick
- With new versions of Ecmascript, asynchronuous programs will look more and more synchronuous — Jafar Husain, Netflix, author of Falcor
- PostCSS and CSS modules are really helpful for building a libray of UI components — David Wells, Serverless
- At last we have proper grids with CSS4 — Jen Kramer, Hardvard University
- Evolution of Web apps which now have views, business logic and persistence — Luca Marchesini, Kuzzle
- Om Next leverages Clojure to bring conventions for data immutability, data specifications and data routing — António Nuno Monteiro, Technische Universität Dresden
- The OpenBCI project allows everyone to study brainwaves using a homemade helmet — Alex Castillo, Netflix
- Flow based programming via CycleJS allows you to design and debug your apps via a high level of abstraction — André Staltz, Futurice
- CSP channels in Javascript is the best tool for dealing with streams of data — Vincenzo Chianese, Apiary
- With Service workers we won't have to wait for the server response when submitting data — Andrew Dunkman, Harvest
- Build your apps as if there were be accessed by Martians via a high-latency connection — Slobodan Stojanovic, Cloud Horizon
- WebAssembly allows native apps to be run by the browser VM in the same stack context as JavaScript — Ben Smith, Google
- Render a 2D UI with React within a 3D WebGL scene — Massimiliano Mantione, HyperFair
- Virtual reality in the browser is here! — Liv Erickson, Microsoft
- The physical Web is built on top of the open Web and will change our lives — Scott Jenson, Google
Some thoughts
The challenges of Web content durability and decentralization are very concerning. The Web of today has too many points of failure, Web engineers are responsible for making it better. For example, 500 attendees cannot collaborate on a document without going through servers outside the room! My great-great-grandchildren might not be able to find a picture of me on the Web! But read this page and you'll realize this is not only about the future!
You are cyberwizards! — Juan Benet
Both frontend and backend talks seem to agree on the fact that REST has strong limitations for high latency connections like on the mobile Web. GraphQL and Falcor are good candidates today, and can be complementary to our usual REST/CRUD endpoints.
Google and Microsoft are following Amazon and its Lambda to provide a platform of nanoservices for which you don't pay when idle, and that scale on trafic peaks. A whole app can be decomposed into functions and designed using internal events. Orchestration of those tiny pieces of code is another story (for a CRUD endpoint, each verb is bound to a function), but Serverless wants to tackle that.
Functional programming is in the air. Pure (stateless) functions scale because they can be executed anywere without context. Without side effects, it also becomes obvious to test them. They give backend developers some good pattern for highly available services, and provide the necessary constraints for immutability to frontend developers. I believe that if functional programming is not adopted as much as it could, it is not because of the paradigm and concepts, but because of the disconcerting syntax!
There is no architecture nirvana! — Lee Byron
Angular/TypeScript was almost absent from the conference, but we could see a trend around type inference/checking. It really improves developer experience and reduces runtime errors in the end. With projects like Elm, developers feel safe while coding: the compiler is smart and polite, refactoring is fun! The concept of null is replaced with a notion of maybe <type> which makes apps robust.
Everybody seemed to agree that JavaScript transpilation will last for a long time. The language will evolve, and we shouldn't hope for feature freeze. Plus, it really helps developers focus on modern stacks, leveraging modern features like cancelable promises. And nowadays it is rather easy to build your app for legacy versions of JavaScript like ES5. But hey, it is a bit absurd that modern browsers have to download big bundles of code full of polyfills! It would be a lot nicer if they were delivered to legacy browsers only — <!--[if IE 10]> oh yeah :) — or even better: shipped as something like a browser addon :)
The old times where we could inspect the source code of a page — and learn from it — is far! It is sad, but we may have to accept it because WebAssembly goes a lot further and ships code that looks closely to assembler! It's far from the Web we know, but it's still the open Web! Note that it is very different from what we saw in the past with plugins like Java applets, now a WebAssembly function can be called from a usual JS script!
The physical Web is awesome and I'm really excited about this revolution, especially how it could bring a peer-to-peer local Web, using Web bluetooth for example. Scott told me that the Mozilla approach with FlyWeb is slightly different because it goes through Wifi, but both teams in contact. The physical Web is an open project, and Google is pushing it strongly. I'm bothered by the URL redirections strategy though because it puts the redirection intermediary in a very strong position. I believe that Google wants to be that intermediary.
Personal feedback
I never attended a conference that was so close to my flat! 3min walking! It was kind of weird to meet so many prestigious IT talents in my neighbourhood! ...and so many floppy disks :)
The venue was great, and very well setup for the show (see the introductory video clip!). The coffee was not so good though.
I really enjoyed the fact that there was only one track. I never had to divide myself between two interesting talks, and could just sit and enjoy :)
Almost every topic resonated with the challenges we face at work. We are one of the few teams at Mozilla that do both backend and frontend, and that's awesome to feel in the same boat as the whole room of attendees. For example, we implemented something on Amazon lambda recently, we are well aware of the frontend architecture challenges through our Kinto-admin, Ethan has a functional programming background in Haskell, and Nico and Mathieu are playing with Elm. That's why I strongly regretted that my teammates were not with me!
Also, I had the opportunity to meet Luca and Anthony from the Kuzzle team! We had a lot of fun together and our conversations about generic reusable backends were super insightful — see my post on kinto ML.
Last, but not least, I would like to thank Pusher.com for organizing a hack contest using their API! They had a physical button in their booth, and I made a kind-of video booth that records the webcam when the button is pressed. I could not have won this BB8 droid without Soledad's insights on MozillaHacks, and I thank her again :)
Some links
- https://www.kontena.io: open source container platform. The features are really really attractive!
- http://toxiproxy.io: a proxy to simulate network and system conditions
- https://openresty.org: REST via Lua in Nginx
- Gossip/epidemic protocols to invalidate cache
- Challenge unikernel security with the Bitcoin piñata
- Solve deterministic problems with randomness using the Monte Carlo method
- Decision tree learning with random forests
- Attack systems with fork bombs
- The $10 million australian #censusfail rebuilt for $500 using AWS Lambda
- Clean natural language with CoreNLP
- https://howdy.ai: trainable bot for Slack
- https://openbazaar.org: A free market for all, no fees, no restrictions
- http://www.apollostack.com: everything you need to start using GraphQL
- The paradox of choice
- 19 Open Source React Component Libraries to use in your next project
- react-monocle: A developer tool to visualize a React application's component hierarchy
- https://hyperdev.com: A fullstack JSBin
- http://ux.mulesoft.com: MuleSoft components library