I do not step often in JavaScript conference. The language is not my cup of tea. I go through minified, obfuscated broken code every day for webcompat work. JavaScript switched from language that "makes Web page inaccessible and non performant" to "waste of energy, cpu, and nightmare to debug".
But this last week-end, I decided to participate to JSConf JP 2019 and I had a good time. I met cool and passionate people. I also felt old. You will understand later why.
JSConf JP - Day 1 and Facility
The conference was organized at 3331 ARTS CYD. It was previously a junior high school. It is now a space for artists and galleries. On the roof, there is an organic garden. Before the conference starts, I have seen an exhibition presented by Kyoto Design Lab about a Kyoto shrine: Recombinant Imamiya. One part of the exhibition was the reconstruction of a full VR model of the shrine and a walk through this VR model. It was quite astonishing, specifically the part where they removed the people who were in the scene at the time of the capture. They were here and there digital ghosts of existences who still carry on with their life (or not) in the physical world.
The main room for the conference was the gymnasium. It was slightly fresh for the rest of the two days. I had to keep my jacket.
The State of JavaScript
This was a preview of 2019 JavaScript survey probably seen from the angle of JavaScript developers themselves. It's always a bit the issue with these surveys, they self select the audience replying to them. You may want to take the 2019 survey. And it would probably be good to increase the diversity.
Visualizing Connections
I intended to go to Building secure and seamless sign-in experience using WebAuthn (brain choice), but the room was too full. It was not even possible to see/hear anything from the corridor. So I ended up going to my heart choice. Nadieh Bremer studied in Astronomy, I did Astrophysics, so that was an interesting common path and I love data visualization.
Take away:
- Any data sets visualization starts with a "useless hairball". Start with the raw and refine.
- "Networks remind me of constellation"
- Data visualization looks like a clay which we slowly model following the movement of the hands. There’s not only one answer, just exploration on less traveled roads.
- Do we visualize the reality of the world or the curation, collection of data by an authority? And the designer exploration?
- Design tools? Watercolor on tablet? Paper and scanned? Did she make them for the talk? Or was it her sketches for clients?
Defining Open Source
A narrative journey accross the meaning of open source land and its constituents by Henry Zhu. Going through personal experience, the struggles of maintaining a project, etc.
Take away:
- There is a maintainers conference?!
- There’s an anxiety attached to maintain an open source project. We forget to say no.
- The talk reached my uncomfortable zone of mixing too much faith and religion into the explanation of his own journey. I guess it's when I know I'm French with a strong Éducation laïque.
Building and Deploying for the Modern Web with JAMstack
Guilllermo Rauch introduced the movements of JavaScript development from backend to client side, then back to backend with isomorphic SSR-CSR, then back to the client and how JAMStack will save the day.
Take Away:
- JAMStack is, for me, just the rediscovery that HTTP has a good caching system.
- It has been a couple of times, I see enthusiasm about it.
- For me a static generator sending ** content empty heavily cached HTML templates which will be populated through Javascript APIs is not static**.
- A lot of keywords, a lot of concepts.
- Heard: “You can develop entirely in google chrome.“ Since when google chrome == browser. I will come back later to that.
- Discovered about TailWindCSS, which made me a bit sad. For example in this page, they transform a perfectly semantic markup into a garbage. Sacrificing productivity over resilience and meaning.
Write What Not How
Jorge Bucaran gave the most interesting talk of the two days with a very cool simple set of slides. Yes, just a simple markdown file with the content. After going through a list of differences in between imperative and declarative, he introduced his framework JS hyperapp.
Take Away:
- This is a JS framework I could explore to develop something.
- The concepts are clear and articulated.
- Your JS framework doesn't need an hello world example, if it's to display a string of text. If your document is empty, framework or not, it loses values.
So instead of:
<body>
<!-- empty content -->
<p id="hello"></p>
<script type="module">
import {h, app} from "https://unpkg.com/hyperapp?module";
app({
node: document.getElementById('hello'),
view: state => h('p', {id: 'hello'}, 'Bonjour tout le monde')
})
</script>
</body>
I would prefer seeing things like:
<body>
<!-- oh content! -->
<p id="hello">Hello world!</p>
<script type="module">
import {h, app} from "https://unpkg.com/hyperapp?module";
app({
node: document.getElementById('hello'),
view: state => h('p', {id: 'hello'}, 'Bonjour tout le monde')
})
</script>
</body>
So even if the JS is blocked for any reasons, there is a meaningful content.
Then I had to leave in hurry because I had another commitment, so I missed the rest of the evening talks.
JSConf JP - Day 2
Morning sun. Sitting outside waiting for day 2 to start. Children playing in front of the venue.
After day 1, the JS community is bustling with so many ideas, concepts, restless, crushing everything and reinventing itself every day. The same way that internet users were mistakenly confusing internet with ie, js developers assumes chrome for front end programming. It would be probably be interesting to understand the browser market share in that specific cultural group.
Time is an illusion in JavaScript
Another very cool talk, this time by Jennifer Wong about JavaScript and Moment, and how to deal with dates in code.
Take Away:
- Time dependent tests are hell. Be careful of time when your Continuous Integration (CI) framework is in a different timezone for example.
- Moment.js has an api slightly easier to use. Moment lacks iso method though. It has localization for formatting.
- Stay with vanilla JS until you need a specific library.
- TC39 is working on "temporal". New date object for js.
Life of Streams
Dominic Tarr discussed about the different implementations of streams in JavaScript, their complexity, and the solution he proposed.
Take Away:
- Streams are hard.
- How does he make a living? (He's coding on a boat in New-Zealand)
- Obviously he mentioned Secure Scuttlebutt protocol., which I find one of the most fascinating areas these last couple of years.
- Misunderstood idea.
- Array in time not space.
- Managing line capacity and errors.
- The talk is a commentary about the code. Interesting raw and hard, but it lacks a bit of context for fully understanding for someone like me. 🤯 I understand the concepts, I don't think I would be able to code what he is talking about.
- Backward Compat issues so they will not replace the core. “It’s harder to be creative when you need to care about backward Compat. “
Self volume of web
Jxck talks about the Web. I'm not sure I understood what the purpose of the talk was. So I don't really have any take away nor explanation for it. Just strange.
JavaScript, Rust and Wasm Walk into a Ramen Shop…
Irina Shestak walked us through the journey to JavaScript to Rust, then to WASM.
Take Away:
- Loved the slides. Brutalist!
- Wasm is a compilation target.
- I wonder about wasm in the light of Java with the Network Computer. Compile once, run everywhere. And how it all fell apart at a point.
- When developing instead of
pass
return/raisenot implemented
. (peeping through her code, I should do that more often in python.)
Panel
There was a panel mainly speaking about JSConf, and the struggles to organize such a conference. Lena Morita was on the panel. She had a talk about accessibility in Wordpress. I think she should speak at Paris Web. She would be the perfect fit.
Browser APIs: the unknown Super Heroes
Rowdy Rabouw introduced some of the recent APIs in browser.
Take Away:
- Finally a talk which includes the diversity of the browsers! Thanks.
- One small missing bit, Firefox on Android.
- He mentioned that Battery status API was not implemented in Firefox. But in fact it has been removed for privacy reasons.
- It would be cool to have a bit more highlights on not only the APIs, but also the interop issues explanations. That's the dirty part. I guess that could be a webcompat talk for next year.
Anatomy of a click
Benjamin Gruenbaum gave another good talk on what was really happening when we click in a Web page. All the transitions from the USB device to the actual JS and native code in the browser.
Take Away:
- Talk about the chromium search code feature, as it makes it super easy to find code inside Blink. But he forgot to mention searchfox for Gecko or WebKit.
- He translated the c++ code into JavaScript to make it more accessible to the devs. Quite cool.
- It would be cool for some undocumented feature of the Web like zoom to walk through the code in different engines and have an explanation. Like a movie commentary by the director.
Discovering Animals with AI and Javascript
Jonny Kalambay is another way to reconcile yourself with JavaScript. He went through the development of a simple AI for understanding your own photos. Nicely done, simple, straight to the point with good examples. Loved it.
Take Away:
- Try to code very small projects in JS to improve the love ;) Is it possible? :p
Pika: Reimagining the Registry
A nice overview of another registry, pika by Fred K. Schott
Take Away:
- He asked who was already doing web development in 2009? ~10 persons raised hands on more than 100. Oooops… I have more than 25 years. I'm a grandpa.
- Snowpack took to build web app
- I wonder if browsers should propose the pre-caching of main libs in the browser. (make it heavier to download, maybe as a post-install.)
Developer Mind Browser Market Share
So my biggest shock during this conference was the speakers and their assumptions for developing. It's like the term "browser" doesn't really exist. It is synonymous of Chrome. They show their presentations, their demos in chrome, they talk about the issues in chrome, they assume chrome as a target of the code being developed, they demonstrate only the chrome devtools.
This is quite sad all in all. And probably there is a major effort to do to show the other browsers tools be Safari or Firefox.
And bear with me, it's not malice or because they want to promote a specific tool, no it's just that it became an habit. It's not even a question which crosses the mind. It's almost like in the past general users were thinking the "e" logo on Windows meant internet. So for JavaScript devs, it seems that "chrome" means browser.
Trivia
- Mercari was sponsoring the event and I just dropped by their desk to congratulate them about the Mercan blog. This blog is a very cool view (even if probably polished for PR reason) on the insides of the company. Not a lot companies do that in Japan, and that's refreshing to see.
- At my next talk, I need to create a gist for people to leave questions about the talk I'm giving.
Otsukare!