Yesterday I returned from JSConf EU in Berlin. I enjoyed the
conference and I'll share some of my impressions here. It's not going
to be a complete report; I met a lot of people and had a lot of
conversations.
This was my first JSConf. I've been to a lot of Python conferences in
the past. I was a bit nervous as for the first time in years I was
going to a conference where I didn't really know anybody, but that is
also an important reason why I was going - since a large part of
what I do now in web development is JavaScript, I wanted to engage with
its community.
Travel to Berlin
It turns out it's really easy to travel to Berlin from where I live in
the Netherlands; go to the small (and thus less stressful) airport
Eindhoven nearby by train, fly for an hour, and land in Berlin.
Since I had a bad experience with delayed check-in luggage earlier
this year and it was just a weekend trip this time I decided to I
travel very light; just my laptop backpack with clothes stuffed in.
The plane was very full, many with maximum-size carry-on luggage. I
was in the plane early so had my backpack stowed already. Until a lady
who absolutely did not want her suitcase to be put in the hold pulled
out my backpack and tried to fit it into a space elsewhere too small
for it, and then gave it to me, putting her suitcase in the now open
space. Problem solved!
This attempt to saddle me with my backpack and her problem wasn't
really appreciated by me, and I had to insist she take her suitcase
out again. Later on she was still arguing with the flight crew.
In the taxi ride from the airport to the hotel I had a little chat
with the taxi driver, in German. I understand German pretty well, but
my spoken German is pretty broken. I have no idea how it came up, but
suddenly the driver asked:
"So do you think the Americans landed on the moon?"
Being a fan of scientific skepticism had prepared me for this sudden
question, and I explained that they had left a mirror on the moon that
you could bounce lasers off, and that faking the moon landings would
have had to have been a conspiracy of monumental proportions with
professionally-interested-in-the-truth scientists and engineers and
the Soviet Union both being involved.
"So they did land on the moon then," he said quietly, seeming to
marvel at the thought. And it is a marvel.
My broken German had been up to the job, which amazes me still. Next
he asked me what programming languages I used!
Talks: overall
The choice of talks was interesting; many of the talks were not so
much about JavaScript technology and discussed other human topics
associated with it -- art, ethics, creativity, design, usability. This
led to a mixture that helped the whole being more inspirational than
if all the talks had just been about tech all the time.
I will discuss some of the talks that stood out of me. This is
necessarily going to be selective - there were plenty of great talks
I'm not going to mention, and many more that I missed altogether as
there were two parallel tracks.
I've tried to put in links to slides where I could find them. Videos
should also eventually appear on the JSConf EU youtube channel.
Talks and People: Day 1
A comparison of the two-way binding in AngularJS, EmberJS and KnockoutJS - Marius Gundersen
This talk was of particular interest to me because of my interest in
client-side web framework design in general, and my interest in adding
two-way binding to Obviel in particular.
He compared approaches in various ways:
Observable properties (versus dirty checking)
Asynchronous response to changes
Computed properties
Dynamic dependencies (recomputation only happening when needed)
Performance (each has different tradeoffs)
Marius is Norwegian by the way; I kept meeting friendly Norwegians at
this conference - they seemed particularly well represented.
slides
Security talks
I saw three security related talks at this conference. I need to read
some of the references the speakers give in their slides, and maybe
you should too:
Towards a post-XSS world - Mike West (slides)
JavaScript crypto. Ugly ducking with good reason? - Martin Boßlet (slides)
Security First - Adam Baldwin (can't find the slides yet) (this was on day 2
actually)
UXing without a UXer - Chrissy Welsh
I had the pleasure to chat with Chrissy during the sunday night party.
It reminded me that again how much usability in UIs is related to
doing good API and protocol design (and also language design), which
after all is also in a large part a usability exercise.
Chrissy's text to hang on the wall: "what is the one thing you want
your product to do well" is also a relevant question to library and
framework authors. Even if we're handling multiple use cases.
When doing API design I benefit from years of experience and also from
being one of the intended users myself, a benefit that I don't have
for many of the application UIs that I helped to develop. Chrissy's
tips help with that.
slides
The web experience in the autistic spectrum - Natalia Berdys
This talk made the case for having people with Asperger's syndrome do
your web site usability testing for you, or at least to think about
them when you design a web site. The usability issues that confuse a
person with Asperger's are in fact also usability issues for everybody
else; it can just be experienced more intensely. This talk was a nice
change of perspective on a topic that everybody is familiar with in
one way or another: how usable web sites are.
(can't find the slides yet)
/be
There was a talk somewhat mysteriously marked /be
in the schedule
of day 1. This turned out to be a talk by Brendan Eich, creator of
JavaScript!
He very, very rapidly discussed various upcoming new features in
JavaScript. High time to have a module system and standard sugar for
prototype-based class definition!
He followed it up with an asm.js demo. This involves running various
first-person C++ 3d shooters within the web browser. Even though I was
already aware of this before, it's still a totally amazing
demonstration.
Besides making for cool demos and running C++ code in your browser, I
expect the asm.js technology to have an enormous impact on client-side
development in the longer term. One thing that it might do is open up
the browser platform for other programming languages besides
JavaScript; another thing it might do is to let browsers move more and
more of their implementation from C++ into JavaScript - how much
native code will be left in the long term?
slides
Talks and People: Day 2
Plight of the butterfly - everything you wanted to know about Object.observe() - Addy Osmani
Day two for me started with Addy Osmani's talk about
Object.observe()
, one of the most exciting technologies coming to
JavaScript.
Object.observe()
provides a way to observe changes in JavaScript
objects from the outside - a technology that in the future will
provide the foundation for a wide range of technologies such as
two-way binding to templates, persistence technologies (Addy
demonstrated a simple JavaScript object database) and server
interaction (a topic I'm also very interested in).
I was vaguely familiar with Addy's name from my explorations of the
Polymer project, but I realize now he also wrote several books and is
behind the TodoMVC project. Addy's talk was a rapid-fire discussion
of a lot of interesting aspects of Object.observe()
that I
certainly will want to refer back to in the future. I chatted with
Addy about some framework design issues later on. I hope I was
coherent at all, and I appreciate his time.
(can't find the slides yet)
Promises and Generators: control flow utopia - Forbes Lindesay
I'm finally quite familiar with promises; after having heard about
them in Twisted years ago and never bothering to wrap my head around
them, and again in MochiKit (a pioneering JavaScript client-side
library), I finally started using them in the context of AJAX, using
the implementation in jQuery.
I thought I was familiar with generators from Python, but I hadn't
thought about their implications for async programming at all (even
though I knew the Twisted folks had). During this talk I also realized
I needed to understand yield expressions (as opposed to just the
yield statement) better, in both Python and JavaScript!
A very enlightning talk that prodded me into the realization that I
don't even understand all about generators in Python yet either. I
have certainly been coming to async development the long away round!
slides
Acceptable in the 80s - Revisiting Microworlds - Jason Frame
This was an extremely interesting exploration of some important older
ideas in UIs that we have lost somewhat since the 1980s.
Jason showed off a prototype desktop environment implemented in a web
browser that allows you to construct ad-hoc applications from smaller
components visually; he could throw an editor and a file loader
together into an editor for instance by throwing some lines here and
there. It involves building blocks that are larger than GUI widgets
but smaller than applications that can be combined by
non-programmers.
I think many of these ideas could also be applied to web application
development as well, and I need to ponder this more.
(I'm not sure there were slides; it was a long demo, really. Wait for
the video!)
Make world less shit. NOW. - Natalia Buckley
Natalia Buckley gave an essay-like (no slides, articulate)
presentation (wonderfully titled) about the interactions between
software and ethics. She discussed unintended consequences of
unexplored human bias in software, and how software and culture
interact both ways. It was welcome reminder to continue to examine my
own biases and how they can affect the software I create, and others
through it.
(no slides, I hope she will post an essay somewhere)
Building Live HTML and Omniscient Debuggers in Brackets - Kevin Dangoor & Peter Flynn
Kevin Dangoor and Peter Flynn came to JSConf EU in a relaxed mood:
they were going to attend the conference and didn't need to do any
presentations.
This turned out to be a misunderstanding. Preparing for a talk at the
last minute is a rather stressful activity, but the talk went very
well.
Brackets is web code editor project by Adobe with some very interesting
features.
This is a tool that has a huge range of exciting technologies under
the hood that I definitely need to explore: live updating of rendered
HTML as you edit, an an omniscient debugger (a debugger that knows a
lot more about your program than the state of it at your break point),
type inferencing JavaScript to help with command-line completion, and
a lot more. Very cool!
I had a number of very pleasant and also informative conversations
with Kevin Dangoor at the conference. Kevin has been doing (and
influencing) JavaScript for years but I know him from the old days as
the creator of the TurboGears web framework in Python. After a chat
with Kevin late sunday night I finally started grokking those
generator expressions I mentioned before. And also thanks for the
reference to the very interesting frb binding library! Also a
shoutout to Peter Flynn, the other speaker; I had fun chatting during
relax.js yesterday.
(no slides yet, perhaps wait for the video as it is also a demo)
I have a dreamcode: build apps, not backends - Alex Feyerke
Alex Feyerke gave a talk discussing technologies that let you develop
rich-client JavaScript applications without having to develop the
backend for them. It turns out there's a lot of activity in this space
- turn-key generic backends that you can start building front-end apps
on immediately. I definitely need to look into this more. (I've been
wildly speculating for a while about going one step further:
applications without servers at all, just peer to peer between
browsers.)
slides
Stop breaking the web - Tom Dale
This was a wide-ranging and amusing talk about making URLs work for
single-page web apps.
It also touched upon a few interesting client-side framework issues
from the perspective of Ember. Each time I learn something about
another client-side web framework I recognize parallel evolution in
Obviel, which helps validate the concepts in Obviel. Everybody does it
all slightly differently, with different tradeoffs. That's where it
gets interesting and where we can learn from each other.
(can't find the slides yet)
Rethinking best practices - Pete Hunt
Pete Hunt (who it turns out remembers me from the Grok days long ago,
woohoo!) had a very thought-provoking talk from the perspective of the
new React client-side web framework. His arguments against the use of
templating in web frameworks are interesting but do not yet convince
me. His description of how React side-steps the whole data binding
issue by doing something more like a real-time 3d engine does, in
particular gaining efficiency by re-rendering components but only
sending diffs into the real browser DOM were extremely
thought-provoking.
I like to have my thoughts in this area provoked, so I want to thank
Pete for doing so.
Incidentally, the Brackets environment does this diffing of the HTML
DOM as well in an interesting case of parallel evolution.
1024+ seconds of JS wizardry - Martin Kleppe
I only caught the tail end of this entertaining talk, but I still want
to mention it, as it was a lot of fun and I'm going to look up the
video when it's posted to see the it all. Martin was trying to write
write the shortest code possible and still do amusing and interesting
things. It was "crazy", which is a compliment in this context. It
already made it onto hackernews.
People First - Adam Brault
The closing keynote to close the conference was by Adam Brault;
high-impact, emotional, sometimes, in fact, to me, uncomfortable in
its emotion. JSConf EU seems to be wearing its heart on its sleeve a
bit more than Python conferences are - different.
The talk was about putting people first (in small ways as in big
ways); it's good to be reminded of that in a world of technology.
The talk made me think about the personal and the emotional and how it
could fit in my own talks.
I shouldn't do these things, and certainly not disclose it here, but I
pulled off a successful heckle ("hey, we're the ones that stayed
here!") when Adam tried to share blame for bad stuff in early North
America with present-day Europeans. Adam was very gracious about
it.
(And in all seriousness, I agree Europeans actually do share in the
blame anyway, as much as anyone in the present day can share in the
blame for acts before they were born.)
(Historically speaking, us Europeans that stayed in Europe managed to
screw up our own continent just fine; no moral superiority there.)
By the way, given that Adam Baldwin (Security First talk) and Adam
Brault (People First talk) are both from the same company (&yet), how
are we going to put both people and security first, guys? Are you
both part of OM or something?
slides
Travel back
After the first Berlin taxi driver raised my expectations high, the
taxi driver on the way back to the airport yesterday turned out to be
very disappointing. He was on the headset in the phone speaking
Turkish (I think) with a friend all the time.
One last story. I was in the Berlin Tegel airport restrooms doing my
business. Then I heard someone call out "Is anybody there?" in
English, with an American accent. I wasn't sure he was talking to me,
though the place was otherwise empty. He called out again: "Can
anybody help me?"
"What's going on?" I asked, wary.
"I'm stuck in this stall. Can you help me open it?"
I went to his stall and opened the door. I had expected that to be
difficult, but it wasn't locked and just opened like any other
door. Turns out that the door handle on the inside was missing, making
the door, once closed, as good as locked for the guy inside.
"Thanks!"
"No problem."
"Really thanks, man, I would've been in there forever."
I smiled. "No problem."
Sometimes you can help by just opening a door for someone.