Last weekend at the Omni resort on Amelia Island, FL, the last JSConf US took place. The Williams family is no longer able to run this conference, so with much sadness it will not be continuing in its current form. The JavaScript community legacy they have left behind is nothing short of astounding. With currently 30 listed events worldwide in the JSConf family, and more in the planning stages, the idea of building compassionate, creative communities of experts has truly caught on like a wildfire in the JavaScript community.
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!
Day 1
For the first talk of the day, Gaurav Seth announced that Microsoft is open-sourcing ChakraCore, its JavaScript engine that powers everything from Microsoft Edge to Cortana. Chakra currently offers the highest percentage of ES6 language feature support of any JavaScript engine today. In addition to explaining about the engine in some detail, Gaurav also offered us a sneak peek at a neat feature they’re building called Time Travel Debugging, which allows you to step backward through the program state as easily as you might step forward in a traditional debugger!
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.
The last two talks of the first day were given by New Yorkers Jed Schmidt and Aaron Quint, respectively. Jed spoke at length about his experiences building BoroJS, and the family of NYC meetups that sprung from that initial group. For anyone that’s not heard of BrooklynJS, it is one of the most active JavaScript meetups in the country. Starting this group was not without its issues, and Jed brought a great deal of personality to the table in tackling them. Anyone reading this who is a meetup organizer, this talk is a must-watch when it is released. Last in the day but certainly not least, Aaron brought a great deal of emotion to the podium to talk about… you guessed it, bacon. Not just bacon though; sausage and pickles and bread and pizza are all wonderful things too! I think more than anything, what Aaron wanted to impart on the attendees here was that passion is important. A key takeaway that was revisited throughout the rest of JSConf: we are all just sacks of emotion, when you get right down to it. Paying attention to that and following our passions is an important part of life.
Day 2
Day two started off strong with Patricia Garcia sharing her experience using JavaScript offline apps to help fight the Ebola outbreak in west Africa. Because an actual cure is unknown, the biggest weapon we have in the fight against Ebola is a practice known as contact tracing: essentially just keeping a close eye on the movement of those known to have come in contact with the disease. Because it spreads by contact, this has proven effective. One small issue though… until Patricia and her team came on the scene, the contact tracers were using paper to track the spread of Ebola. This made work difficult and tedious, and also very error prone. Patricia built an intake form that works on a mobile device, with the constraint of spotty or often no internet connection for days at a time. There was a call center component to this system as well. The tech stack consisted of CouchDB for the back-end, PouchDB for a mobile database, Angular for user interface and Cordova for fast deployment to mobile devices. Using this stack, they were able to have a prototype out in three days and working in production in a week. The end result was nothing short of astounding, with a very real human impact.
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 next talk was delivered by a duo, Dustin Long and Andrew Reitano. Software engineer Dustin teamed up with hardware engineer Andrew to build a system that allows for direct access to the actual RAM on a Nintendo Entertainment System using JavaScript. Their demos were loads of fun, interactive, and internet enabled. Did you ever think you could hook an NES up to the internet? Well, they’ve made it possible.
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!