Open letter to someone that should know better

I didn’t pick all the setup (the phones, the mixing table, the laptop etc) right after I finished my talk at JSConf.BP. To make the conference happen more smoothly, I just disconnected my laptop from the projector and left everything else there so the next speaker could do his duties without me being in their way. I rushed outside and essentially BREATHED a big sigh of relief.


(my setup)

There was a guy serving cold brew coffee on the lobby, and Karolina was waxing lyrical about how great it was, but I didn’t want to drink any before the talk because otherwise I get super HYPER and speak too fast. And at last… I could drink that coffee!

Allow me to reiterate that I was outside the main room, enjoying the coffee and talking to Karolina and to anyone who asked me things about my talk or just discussed parts of it, and so I wasn’t listening to the next speaker.

A little bit before he finished, Karolina went in, because her MC duties called for it. I decided to get inside again, and stood on the right side of the room, leaning against the wall and waiting for the speaker to finish. He tried to play some video but he was getting no sound out of it. Each time he pressed the volume button, he got the “forbidden” sign. I guessed why: HDMI devices report an output sound device which doesn’t actually accept volume changes, and he wanted to use the audio jack output which is the internal sound card, so he should either have changed devices or the conference should have connected the HDMI output to the sound system, but I expected he would find out. Or the technician would show up out from nowhere, as they always do, and fix it.

Either way, I was leaning on the wall, enjoying this semianonymity, and didn’t want to start yelling out of nowhere: CHANGE YOUR OUTPUT DEVICEEEEE!!!, because that’s quite rude.

Eventually he played the video, but without audio. Well!

When he finished I went up the stage to pick all my abundance of hardware. He was discussing with one of the organisers that he hadn’t got the audio to work or something, something, something. I joked that I knew what was the issue, as it happens all the time in our office when we have meetups, but I didn’t want to correct them in public because it was such a jerk move. And then I just went and picked my stuff and packed it all into my suitcase-backpack. Szabolcs guided me to where I could leave my belongings safely and out of the way, and that was it. I WAS DONEEEE and I could also now listen to the rest of the talks without worrying about my belongings being scattered around the stage! Yay!

Fast forward to Friday night, when I attended the after party where I essentially distributed stickers and had a good time talking to people I hadn’t had time to talk to before.

It was all great! until at some point someone said they wanted to discuss something privately with me… I was intrigued. What could this be?

So they told me that the speaker after me had dismissed our work and said that whatever we were working on, they were already doing at his company, and when they heard him say so, “they felt so bad because it really sounded so out of place!”.

And this was all news to me! Because, as I mentioned before, I wasn’t in the cinema when this happened! And so I told him, and I couldn’t really comment anything else without hearing it myself first.

As it happens, the conference was live streamed via ustream. Which was then archived. And so yesterday I decided to watch it out of pure curiosity (was that guy really being that out of place? or was it just the perception from the audience?).

But they were right. The next speaker had decided that even if my talk was “awesome”, if people cared about security they should look at his project which “already works”, “doesn’t need any of that master device” things and is “also open source”. Then he dictated the github url of said project.

This is probably the biggest well actually-ed I have ever been, and I wasn’t even there! So it’s like NEXT LEVEL WELL ACTUALLY. Congratulations… not!

You see, when you’re up in the stage you’re granted special powers. Everyone is going to listen to you for ~20 minutes, and that is an immense privilege that you need to use wisely. What you say during that time might have profound impact on the audience. You need to be very careful and work hard on being a good example, because they’re here to listen to and learn from you, and so if you behave poorly, they might think it’s OK to behave poorly as well.

And so when you chose to well-actually me, when I wasn’t present, and dismissing the work me and Mozilla are doing, well, that wasn’t classy. You’re telling people that it’s OK to not to be classy.

This is unacceptable. I expect way more from you.

You know what would have been lovely? You find me after your talk is done, and we have a coffee and you tell me about your amazing project. I would have looked at it, probably learnt incredible things from it, and I might even be writing about it right now, instead of this letter.

You could also have asked me why I am building this project the way I am building it, instead of dismissing the master-client structure. I could have told you that when you play music, you normally have a single, unique global clock. Have you ever seen an orchestra with multiple conductors? I bet you haven’t. This is the same.

Trust me, I can understand your terrible urge to be RIGHT above everything and everybody else and correct them on the spot. I used to be an insufferable know-it-all too, but that was when I was a teenager and didn’t know any better. Time has taught me that instacorrecting people in public tends to come back like a deadly boomerang—they end up finding the most embarrassing errors either in my reasoning or understanding, turns out the corrector is the one who’s wrong here, and I want to hide and blush to death under the table.

My advice? Don’t instacorrect. Make a note to investigate that thing that is making you twist in your chair, and think more about it before you even open your mouth or get to the twitters. Did you really understand it? Is the other person THAT WRONG? And even if they are, what are you here for—your talk or correcting other people?

There is a fine line between humility and self-deprecation. I know my project is not perfect (for god’s sake, didn’t you see the todo list already?), and our implementation is not perfect, but that doesn’t make it any less impressive on its own. And people find that it inspires and makes them happy.

We can do great things with JavaScript today, and we are working to make even greater things. We are not afraid to admit our shortcomings. But the way you pointed them out was really cringeworthy.

You should know better.

safeRegisterElement

For the project I’m working on I’m building web components that sometimes require other components to build their UI. For example, the theremin-ui uses the slider. So they will try to load and register the component before creating instances of it. It worked fine when there was only one level of dependencies, but then I put all of the components on the same document, to let the user choose an instrument from the collection of Web Audio instruments, and I got an error from the browser complaining about… something:

NotSupportedError: Operation is not supported

I traced it down to the register() call, and I figured that I was registering an element twice. So I made safeRegisterElement, a one-function module I’m using now instead of directly calling document.registerElement:

var safeRegisterElement = require('safe-register-element');

// safeRegisterElement(type, prototype);
// e.g.:
safeRegisterElement('custom-name', customElementPrototype);

All my custom element modules have a register method that uses safeRegisterElement internally (this lets you register the element with whatever name you want to use).

In npm: https://www.npmjs.com/package/safe-register-element
And sources: https://github.com/sole/safe-register-element

“The disconnected ensemble”, at JSConf.Budapest

Here I am in Budapest (for the first time ever 😮)! I’m back in the hotel after having a quick dinner on my own. I didn’t join the party because I had a massive headache and also I was getting so sleepy, no coffee could fight that (also probably the two things were related). But once I started wandering towards my hotel I found myself feeling so much better, and stumbled upon a cosy nice place and ended up stopping there for some food.

When I came back from the speakers’ dinner yesterday, I practiced setting up all my stuff and going through the demos again, which are in fact ran on real, physical devices, i.e. phones.

Continue reading

Reading list, 6

4th-10th May 2015

Note: there wasn’t reading list for the past week(s) because I was traveling and conferencing and urgh.

  • Jason Orendorff is writing a series of articles introducing ES6 for the Mozilla Hacks blog, and they are truly great and enjoyable! I can’t wait to use ES6 features in every browser without transpiling, but it will have to wait I’ll guess. Time to set up some Babel into my toolchains!
  • Professional Web Typography by Donny Truong – a book, via Adactio
  • The WWW is in the public domain – i.e. the software, architecture, etc initially used to build the WWW. I didn’t know this! Again, from Adactio
  • User agents of change, by Allen Pike: “Microsoft Edge claims to be every computing platform ever conceived – except for Internet Explorer”. An hilarious account of the new user agent string Microsoft Edge uses, and an exhortation to work on something else before the clock stops ticking–in about 1600 years. So better get to work!
  • Dealing with SMS spam — Terence Eden went to the sources and confirmed what we thought: advertising standards bodies are pretty much not doing anything at all to protect the targets of said advertising, and advertising companies keep buying and selling consumers’ data without following any of the rules. Woohoo!
  • Flickr Commons – many (public) institutions are putting their archive images in these collections. I believe this also includes photography marked as CC, but I’m not entirely sure. Be warned, browsing these can eat copious amounts of your time 😉
  • IPFS is The Permanent Web – (yet another) p2p protocol. I’m always curious about these initiatives.
  • Decommissioned – melancholic pictures of decommissioned and deconstructed aircraft. As any proper engineer I’m always curious to see the innards of objects, and aircraft are not an exception. Still I feel oddly bad about these pictures; I believe perhaps they are humanising the aircraft? and that’s why, empathically, I feel sad.
  • Soléy – I’ll drown —I’m really fascinated by how she builds layer upon layer. Great discovery–I will be listening to more from her! (I’m also a bit amused by her name being so similar to mine, hehe)
  • When to use the button element from CSS Tricks. I had a moment of doubt last Friday and some searches brought me to this page which is a good recap.
  • I’m pretty excited about learning to better use Browserify transforms for all sorts of things as for example tucking a worker into a bundle using Workerify, so you don’t need to distribute two files with your worker-powered library!
  • Hire more women in tech. Some advice and resources so people can stop paying lip service and actually being impactful, diversity wise. Related: On the diversity-readiness of STEM environments: “It’s almost as if I could only enter the makerspace as a janitor” from Mel Chua.

Travel hacks: packing light

My number one reason for packing light is that you don’t need to check in your luggage, so you avoid the drop-off baggage queue, and the wait for your luggage once you arrive, if it ever does: you can go straight to the border control and then onto your actual destination. No waiting! No delays! No uncertainty!

Then, because your luggage is lightweight you can go up and down escalators with it, carry it in the tube platforms instead of using the wheels, and generally be agile and speedy, which is super nifty if you’re in a hurry or just want to navigate away from crowds. Some touristy people really love to walk all together forming some sort of herd and it gets on my nerves—I like to see ahead of me and feel space around me.

Ready for my packing light hacks? 😉
Continue reading