I accidentally ended up attending JSConf.eu 2014--it wasn't my initial intent, but someone from Mozilla who was going to be at the Hacker Lounge couldn't make it for personal reasons, and he asked me to join in, so I did!
I hung around the lounge for a while every day, but at times it was so full of people that I just went downstairs and talked hacks & business while having coffee, or simply attended some of the talks instead. The following are notes from the talks I attended and from random conversations on the Hallway and Hacker Lounge tracks ;)
After having heard about it during the "Future JS" session at the Extensible Web Summit, this one seemed most exciting to me! Data crunching in JS via "invisible" translation to OpenCL? Yay! Power save of 8x, speed increases of 6x thanks to the power of the GPU! Also it is already available in Firefox Nightly.
I got so excited that I started building a test on the same day to try and trigger the parallel code path, but the performance is 2x slower than traditional sequential code. I spoke to Jaswanth in one of the breaks and explained him my issue, he said that the code needs to be complex enough for the "paralleliser" to get in action, and there was a certain amount of work involved in determining this, so that might be the reason why performance is so bad.
Still, existing PJS examples seem a bit too contrived to explain/demonstrate to people why it is so cool in a nutshell, so I would be interested in getting to the right function that triggers parallelism and is not overly complex---things with matrices just get over the head of people who are not used to this kind of data manipulation and the rest of the example just "does not compute" in their mind.
I went to this one because the title seemed intriguing. Basically, if people like something they will talk about it on the Internet, and also: regionalisms and variations to better target the market are important.
This rang a tiny little bell for me as it sounded a bit like the work we're doing at Moz by working closely with communities where Firefox OS is launching--each launch is different as the features are specific to each market.
Bookwise, I am not overly convinced about adaptations that try to adapt the work and convert it so that it conveys something that is not initially being conveyed in the work itself. E.g. in France there was a strong push for highlighting the teaching/learning/school concept and so the book title was translated into something like "Harry Potter and the Wizard's SCHOOL". I'm totally OK with good translations that have to change some character name in order for it to still sound funny, but trying to change the meaning of the book is offlimits for me--I think the metaphor with JS didn't quite work here.
We're struggling to keep up (a brief story of browser security features) by Frederik Braun
I was expecting more scare and more in-depth tech from this one! Frederik, step it up! (Disclaimer: Frederik works at Mozilla so we're colleagues and hence the friendly complaint).
I also went to this talk by another fellow German Mozillian (seems like the Berlin office has a thing for security and privacy... which makes total sense). It was a good introduction to how all the pieces fit together. After the talk there were some discussions in the "hallway track" about whether everyone developer should know, or not, cryptography and up to which extent. I have mixed feelings: it is hard enough to mess with it and render it useless (but still think you're safe, even if you're not), so maybe we need better libraries/tooling that make it easy to not to mess with it. Or maybe we need easier crypto. I definitely think anyone handling data should know about cryptography. If you're a purely front-end person and only doing things such as CSS... well, maybe you can go a long way without knowing your SHAs from your MD5s...
Monster Audio-Visual demos in a TCP packet by Matthieu Henry 'p01'
I went to this one expecting a whole bunch of demoscene tricks but I ended coming back from the forest of dropped jaws and "OMG it's just 4K" utterances, which was fun anyway! It's always entertaining to see people's minds being blown up, although I expected a bit of new material from p01 too.
Usefulness of Uselessness by Brad Bouse
I saw Brad at CascadiaJS in Vancouver past year and he was entertaining, but maybe I wasn't in the right mood. This talk, in contrast, was way more focused on a simple message: do something useless. Do more useless stuff. Useless stuff is actually useful.
So now I'm giving myself free reign to do more useless stuff. Not that I wasn't already, but now it is CONSCIOUSLY USELESS and just because.
The meaning of words by Stephan Seidt
Speaking about usefulness... I don't know if this is because it was the last talk and I was developing a massive headache, but I found it a bit of a gimmick. Maybe if I watched that in other time and moment I'd find it more impressive, but it didn't quite work for me. Other people clapped to it, so I guess it did work for them.
After the talk I was left with this persistent sensation that I wasn't doing the right thing in my code, which prompted me to review it and file bugs. Uuuurgh (and yaaaay, thanks for calling us out).
This is bigger than us: Building a future for Open Source by Lena Reinhard
Lena made a very compelling talk about why you should analyse your project and get worried if it is not diverse, because it won't survive for long, as monocultures are fragile and prone to disappear.
Communities start diverse by default, but each incident makes the community less diverse, as people abstain from participating ever again. Do you care about your community? then you need to ensure it keeps being diverse.
A note about diversity not only being "having women", but about having people who are representative of your population. Also it is not only about having a representation of the developers that use your code but a representation of the USERS that use the code the developers use--and this is way more important than we usually deem it to be, as the ratio tends to be 1 developer per 400 users.
Yet another demonstration of team Hoodie's high human standards :-)
(I'm also very excited that I got to meet and speak to a few of them during the conf, but sadly not the doge in their twitter account avatar--although it would have been weird to have him speak, but who knows what offline can enable?)
Server-less applications powered by Web Components by Sébastien Cevey
Sébastien had been at the Web Components session at the Extensible Web Summit, but he didn't share as much as he did during this talk.
First he asked the audience how many people had heard about Web Components before; I'd estimate about 40% of people raised their hands. Then he asked them how many had actually used web components and I'd say the number of raised hands was just 5% of the audience.
Basically they had a series of status dashboards rendered with "horrible PHP" and other horrors of legacy code, and they didn't want to have this mashup of front-end/back-end code because it was unmaintainable. So they set to rewrite the whole thing with Web Components, and so they did.
In the process they came up with a bit of metalanguage to connect the whole thing together, and some metamagic too, and finally they managed to have the whole thing running on the front-end. With just one big caveat: you have to be logged in The Guardian's VPN to access the dashboards because the auth seemed to be taking place client-wise, and heh heh.
I was looking at the diagram of the web components they were using and the whole message passing chart and maybe it was because it was a bunch of information all of a sudden but I had the same experience of metamagic overdose I get with these all-declarative approaches to web components: some elements send messages to other elements by detecting them in the same document, like for example the modules that needed config would try to detect a config element in the tree, and use it. Maybe I didn't understand it correctly, but this seemed akin to a global variable :-/
I still need to get my thoughts in order re: the all declarative web components pattern, but I think that one major reason for them not working for me is that the DOM is a hierarchical structure, so when people tuck several elements into it without any hierarchical relation between them, but still things happen magically and the elements interact with each other without hardly any way to know, I feel something's not quite right there.
Another interesting take-away was that they were able to include other modular components into their component. For example they used a google chart element, and Paper components. I guess there is another minor unmentioned caveat here, and it is that it worked because they used Polymer to build their components, so the 2-way data binding worked seamlessly :-P
Using the web for music production and for live performances by Jan Monschke
I had seen Jan's earlier talk at Scotland JS which was similar to this one but less cool--this time he convinced his brother and a friend to connect to his online collaborative audio workstation so we could see them playing live via WebRTC, and then he arranged the tracks they had recorded remotely from different points in the country. It was way more engaging and spectacular!
Then he also made a demo with an iPad and a home-made web audio app for live performances, which was really cool--you don't need to program native code in order to build audiovisual apps! It is super awesome, come to think of it!
He still hasn't fixed the things that I found "not OK" (as discussed in my Scotland JS post) but he is aware now of them! So maybe we might collaborate on The Definitive Collaborative Editor!
The Linguistic Relativity of Programming Languages by Jenna Zeigen
I didn't catch this one in its entirety, but I got a few take-aways:
To all language snobs:
- stop criticising
- let other people use whatever language they're comfortable with
- languages that do not evolve will become obsolete
and a fantastic motto:
I think this was Jenna's first talk. I want to see more!
Abusing phones to make the internet of things by Jan Jongboom
Jan works in Telenor and contributes heavily to Firefox OS just as his coworker Sergi that I had been following on the internets for a while and that I met at the Mozilla Summit past year. I thought I'd finally meet Jan when I went to Amsterdam for GOTO, but it wasn't meant to be. I then happened to find him in the Hacker Lounge and he gave me an advance of the talk he was going to give later on, which promised to be super exciting. And it was!
Jan was a very entertaining speaker, and delighted the audience with both technical prowess and loads of jokes, including his own take on Firefox OS competition---Jan OS:
Basically he took away the UI layer in Firefox OS and got full root access to do whatever he pleases with the phones which, when the screen is not used, have an extremely very long lasting battery life (in the WEEKS scale). So they are effectively integrated autonomous computers that come in cheaper than Raspberry Pi and similar. He showed some practical examples of "Things" for the Internet of Things, such as building custom GPS trackers to keep track of where one of his very easy-to-get-lost friends was via Push Notifications, or a cheap wireless contactless (via using the proximity sensor) doorbell that can play a custom sound using Bluetooth speakers.
This reminds me that I wanted to ask someone of the people in QA if they had any spare old phone they're not testing with any more so I could rip its guts apart, but maybe now it's not such a good idea--I would need to come up with a project!
GIFs vs Web Components by Glen Maddern
I finally could watch Glen's talk! He gave it too at CascadiaJS but I was hiding on my room preparing for mine so I couldn't join in the GIF celebration.
The most important takeaway is: GIF with a hard G.
As it should be.
And then, in no less serious terms:
GIFs are important.
Do not impose your conventions or the conventions of your framework of choice onto other potential users---just talk HTML/DOM/JS. He initially started building the <x-gif> component with Polymer, then got requests to port it to Angular, to React, to... every imaginable framework, but adoption wasn't really catching up, and translating to each framework made him have to learn about each framework and its mannerisms, so it was a really long and nonproductive process, until he realised that it's better if your component is generic and not tied to any framework.
Finally, lesson learnt: Polymer !== Web Components.
Know your /'s by Lindsay Eyink
This was a good closing talk and I'm so grateful that it wasn't super overloaded with FEELINGS but with pragmatism and common sense, and a call to have more common sense out there--specially in planning departments that try to foster artificial constructs such as the "Silicon Roundabout" and etc.
Take away: don't try to copy Silicon Valley. Be your own city, with your idiosyncrasies and differences. That's what makes your environment unique, and what attracts people from other places, not that you make a bad copy of Silicon Valley but with expensive gas and rent.
All in all---yet another great JSConf.eu! For many more years!