As stated by several speakers, JSConf changes lives. I can personally attest to that, having never experienced a conference quite like this before the one I went to in the spring as a first-time speaker. The result is humbling and filled with gratitude. Attendees are offered not just a chance to learn from the cutting edge and experimental technical talks, but additionally the cutting edge of the human element. The prevailing ideas expressed at JSConf cannot be fully encapsulated but summed up as: Tech talks make us better programmers, non-technical talks provide us with the insight needed to become better community members. Without a healthy community, the code doesn’t matter.
Historically, JSConf has had two tracks. Track A represents the selected speakers: those who have been hand-picked often-times because they are lesser known and on the cutting edge. Track B is a first-come, first-served track that any speaker can sign up to provide a session. Track A sets the tone of the conference and Track B is like the wild west. Because this was the Last Call, I chose to stick with Track A talks. If you’re interested in Track B, however, you can check out the videos on YouTube already!
The next talk of the day was about building interactive CLI tools, and Irina Shestak spoke about her experience building such tools… and wombats. Going over four common Unix/CLI tool patterns (filter, source, cantrip and ed), Irina walked us through some rough guidelines for building CLI apps, including providing options and default arguments, logging, and designing tools that do one thing well and can be piped. Overall the sentiment I was left with, however, was not of a technical nature: we should have empathy for our users when building CLI tools. Not everyone has a Mac, for instance. Some users may not have much experience with using CLI tools.
After Irina’s talk, we were treated to some great inspiration to build IoT devices and connect all the things to the internet by Amy Cheng. Briefly, an IoT device is a dumb device that has wifi or bluetooth and as such is aware of the internet. Amy presented an interesting thought here: on a scale that ranges from dystopia to utopia, with IoT devices enabling connectivity on a scale we’ve not seen before, how do we help move the marker closer to the utopian end of the spectrum in the future? She posits that we do this simply by making stuff. The more we participate in the process, the brighter our future is. She stresses that IoT does not have to be limited to stuff you can buy. To that end, she worked through a thought experiment with the crowd and built a “smart dog”, replete with platform options, design considerations, potential sensors to use, choices for connectivity, and more.
After a lunch break, Todd Gandee and Glen Goodwin talked about hacking and stealing code. Really though they talked about learning, how we learn in this community as compared to an academic setting, the importance of mentorship and community, and teaching people how to “creatively borrow” as they so wonderfully put it. In our field we have a unique opportunity to see from many different points of view, because of the way knowledge is passed around so freely. Being a great developer is about being willing to help others learn to be great developers and to learn to tinker.
The next talk by Matthew Podwysocki was about building peer to peer networks with the Thali Cordova plugin that respect users’ identities. This is accomplished using a Node.js distribution called JXcore that allows a mobile device to run a Node.js server. Franciso Tolmasky spoke next about his experiences learning, going from a user to a pro user level, before becoming a creator on the internet, describing this learning as a spectrum with many gradients. He has noticed that lately this spectrum has become more fragmented as internet access has turned into more of an appliance experience. On the modern web, we have made the easy stuff way easier but the difficult stuff is much more difficult. Francisco hopes that the browser can fill in the gap between the web and apps. The next talk was all about streams, by Pam Selle. Streams are an abstract data structure that lets data flow through as processing occurs, rather than stopping at each step in transformation. Stream processing lets us model systems with state without ever using assignment or mutable data. Streams are a popular topic here at SitePen, as we have been working on a WHATWG compliant streams implementation in TypeScript as part of Dojo 2.
After a short break we had a compelling presentation and VR demo by Martin Naumann using WebGL, WebVR and WebSockets. This demo created each player that connected as a horse in a 3D world, able to fly around in it. As a bonus, when Martin was creating this talk he had no idea that all attendees would be given a Google Cardboard with their registration! This particular demonstration might be quite silly, but the technology behind it has the ability to empower people who otherwise would not have opportunities to view things as they might with a simple VR viewer. Martin brought this knowledge first-hand, speaking of a relative with severe anxiety who cannot go outside. On a family vacation he took the opportunity to collect several VR snapshots of places they visited and then took that back to his relative, who then was able to experience the joy of their trip.
After Patricia, we were treated to two wonderful talks about finding inspiration in the things you enjoy doing. First we had Jane Kim talk about conquering her fears of inadequacy in order to build really neat projects that, for her, combined two of her passions: poetry and code. Her website Exquisite Texts got a live demo to really neat effect: the audience wrote a bunch of poetry together and it was great fun. Then Rachel White took the stage to speak about how to open source. For her, unfortunately, experience comes from having been harassed and trolled to an extent nobody should have to tolerate. Thankfully for everyone, she was not afraid to get up on stage and call out all the haters. Her primary message though? Gather the people who want to help you succeed and then with that resulting motivation and inspiration, build something that is meaningful to you. To that end, RoboKitty got its world premiere at JSConf, dispensing M&M candies to the delight of all around.
Remy Sharp spoke after lunch about his heart wrenching experience maintaining an awesome community project you may have heard of, called JS Bin. Given in five parts: DDOS, Spam, Registered Users Wreaking Havoc, The Cost, and Police, this story was cathartic for Remy and a good introduction to maintainers of community projects on the potential issues that may arise. I cannot possibly do this talk justice so you’ll just have to read his blog post about it or wait for the talk to be released.
Next up was Lin Clark teaching us all about React data handling with Flux, Redux and Relay using her talent drawing Code Cartoons. While the content has been covered before many times, her approach is unique and I can say that now I better understand Redux and Relay because of the way she introduced the concepts. Go check out her website if you’re having trouble understanding these libraries.
The following talk was called Painting by Functions, by Earle Castledine. In this talk, he related the digger wasp to a functional program. Given the same inputs, the wasp inevitably provided the exact expected output. How can we learn from this magnificent creature in our programming? For Mr Speaker, he finds joy in working with pure functions: the composability, the ability to reason about them, plus added benefits of caching and other fun things. Applied to web rendering technologies, he found similarities in how vertex and fragment shaders work in WebGL. Unfortunately the rest of the WebGL API is old and full of much global state, requiring a lot of domain specific knowledge and boilerplate to accomplish much of anything. To bring out more stateless qualities, Earle and his team have developed a library called gl-react, which is exactly what you think it is. Using simple React components, we can now compose complex WebGL fragments to beautiful effect. Please note, this has also been developed into both DOM and Native abstraction layers, where the native layer actually uses OpenGL on Android and iOS devices.
Much as in day one, day two ended with a lot of emotion. After a short snack break we were treated to a history of JSConf, delivered by JSConf EU organizer Jan Lehnardt. Jan’s talk was brilliant and moving, because the story of JSConf is itself brilliant and moving. After talking with other attendees, some of whom had been to many JSConfs and others for whom this was their first, this was most definitely a helpful and motivating talk. We can all learn from the lessons that were offered up here; to be a better person, a better community member, a potential community organizer and more. Back to back with Jan was Charlie Robbins, speaking about how JSConf changed his life. Again, this was quite an emotional talk but the message was overwhelmingly clear. Anyone can start a conference that will set the world on fire, if we take from Chris and Laura Williams’ example and give it a priority of community first. Without the community, the code seems less relevant. Again, we are all sacks of emotion.
This was a beautiful conference. Thanks Chris and Laura for the years of JSConf!