Troy and I at HuJS
For folks that travelled to China it was also an amazing cultural experience as they got to soak up the local sites and the local culture. We took the speakers to see some of the most amazing places in the world, like the Pearl Tower, and they got to mingle with the awesome folks at Xinchejian, the local hacker space.
Things that went wrong
Every conf has it’s high points and it’s low points. Our lowest point was definitely the internet access at the venue. They were not prepared for the number of connections and well it just went down on the second day. And lucky for me, it happened right before my talk while I was prepping. For cloud talks that’s pretty murderous.
You can read the experiences of others who have attended in the posts below.
The first part of the event was ran in a JSConf event style with a single track of back-to-back sessions covering two days. We were fortunate to have a really dynamic mix of speakers both local and abroad covering topics like node.js in the real world, async, webkit, JS frameworks and cloud.
Two folks however were not able to make it, though they really tried, Guillermo Roach of socket.io fame and Vicent Marti of github. Both tried to improvise and find a way to deliver a talk remotely. For Vicent we actually were able to pull this off (not without hitches) however unfortunately due to internet issues, Guillermo was not able to join us at all :-(. I was really excited to have him joining us so I was completely bummed that everything fell through.
Guillermo did however record a talk for us on building high performance applications using HTTP, WebSocket and SPDY. Watching it makes me wish even more that he had been present to deliver it as it has great technical content and real world experiences around scaling node!
You can go watch it right now here!
My Rundown of sessions
Unfortunately I did not get to attend all sessions (goes with the territory of running an event), but here are notes on the ones I did attend, which ironically was many more sessions than I usually attend for events I go to.
“Building international communities” by Troy Howard.
In this talk which kicked off the event Troy Howard from App Fog, tried to rally Chinese developers to join the global OSS community. He talked about the Apache project (which he is a member of) and encouraged local developers to use more FOSS and get involved and to committing to Apache projects as well as other OSS projects. He told them “I want to see your names on the commit logs.” It was an inspirational talk and the community really enjoyed it.
“0 TO 60 MOBILE WEB APPS WITH KNOCKOUT.JS AND AZURE MOBILE SERVICES” by Steve Sanderson.
Steven gave an amazing talk. He built a taxi reservation app initially using Knockout.js and a server backend. He then migrated the application to the cloud using Azure Mobile Services. From the feedback people loved it. This particular quote was from one attendee. “It’s quite possible that Microsoft may pull off a successful transition to open source, open web and cloud!”
“NODE.JS POT HOLES” by Yuan Feng.
Yuan Feng works at TaoBao, the EBay of China where they use node.js as part of their backend. His talk was lively and entertaining focusing on common but hidden pitfalls with node. Although his talk was in English, Yuan Feng went out of this way to provide English translation on each of his slides. The talk was interesting because Yuan Fang showed actual bugs they had encountered in their systems.
Vicent’s talk was on hubot, a bot authored in node.js which handles a lot of automated infrastructure tasks at Github. Hubot initially supported only IRC, but they added support for a ton of other protocols and it is extensible (Jabbr anyone). Hubot receives commands via chat which then cause it to kick off scripts which are written in coffeescript. The scripts will report back results which will get dumped to the channel. Some tasks are callable by anyone on the channel while others require authorization. Authorization is based on who the user actually is. The model is pretty simple and relies on in the IRC case that the user actually has a registered IRC name, thus they can be sure the person is who they say he is. I did ask myself a few times, why we don’t use this kind of automation internally ;-)The best part of Vicent’s talk were his slides which were amazingly professional and artistic in a comic book sort of way.
The major hitch of his talk was that he was unable to join us live. He did however reluctantly agree to try to deliver the session remotely. Internet in Shanghai is NOT good, so this was a pretty brave undertaking. Vicent recorded his video ahead of time and sent it to me. We then played the video during his talk with him watching the screen on skype and live video showing his face. To keep it interactive, periodically I would pause the video and ask him a question, or he would give some more clarity. We hit a few technical hitches due to bandwidth issues (as predicted), but the video quality was fantastic thanks to it being pre-recorded. After his talk he had a few minutes for live Q&A with the audience which they really appreciated.
I found this to be a fascinating. Tim kept a really good pace with this talk for non-english speakers. He described how he set out to write Luvit, a Lua port of node on top of libuv. The reason he did this is because Lua runs in a lot of embedded devices. One huge challenge for him was he did not know C++ or Lua when he started the project. Tim described in detail the process of learning Libuv and Lua and then mapping out node concepts to Lua, and adjustments he had to make based on language constraints. With the help of a community that formed around the project he managed to get pretty darn close.
“WIND. JS debugging and troubleshooting support” by Jeffrey Zhao.
“Run with node.js for fun and profit” by Charlie Robbins. This was a variant of an earlier talk I’ve seen Charlie give which basically talks about the evolution of node.js, and how it is exploding. He used the exponents of 10 approach starting at 10 to the power of 1 and working his way up at each level talking about how it relates to node starting with 10 to the 1st as the number of core committers and working his way up including plenty of nodejitsu along the way. One thing Charlie did that really resonated with the crowd is he pulled several Chinese words into his slides. It was a fun talk. Charlie has celebrity status here however so people loved the talk regardless of what he said
“Apps these days are too big” by James Halliday.
The main them of James’s talk was about not building monolithic node applications. This has been a passion area for James as he has authored several diff modules to address the problem. The crux of his talk was encouraging folks to break as much code as possible into npm modules and to use modules like fleet and seaport to allow apps to easily scale and to distribute workloads across many machines and processes. Fleet is a git integrated mechanism for continuous deployment and for process management. Seaport is a centralized registry for network based services. James argued with Seaport you can have components in your system sitting side by side but using different versions of the same service. He said both modules have been hugely valuable to running the infrastructure for Browserling.
“The Secrets of Node revealed on Windows and Azure” by Glenn Block.
My talk was focused on educating and eradicating misconceptions about Node.js as it relates to Microsoft, Windows and Azure. The talk was a bit campy as I used one of those secrets revealed documentaries type of theme. I started off first talking a bit about myself and how I ended up in Shanghai and putting on the event. Then I talked about node.js, how it initially did not work on Windows and how Microsoft jumped in to help node.js have a first class experience on Windows. Next I showed npm and how that works on Windows. Next I moved to the cloud talking about how node.js works in Azure and finally how you can deploy to it from any platform or even deploy Linux VMs. As part of the talk I did a bunch of demos of node, npm and finally Azure. The Azure demo hit some hitches due to some network issues. I worked around them by using the Azure portal to deploy. Overall I think the audience was shocked and surprised to see node working on Windows. After my talk I had a guy come up to me who runs a local startup and say “I used to hate Microsoft because they didn’t care about OSS, that changed when I saw you today”. That made me pretty happy J
“NEW APP(‘WINDOWS 8′);” by Aiken Qi.
On both days we had a panel of the speakers for that day. That was really interesting because there was a mix of English an Mandarin speakers sitting side by side with questions coming from the audience for both and in two different languages J. The outcomes of the discussions were not so important, though there were some interesting ideas percolated. The real I felt was in the international.
I asked Charlie Robbins about native modules in node as it relates to cloud providers. Charlie said that nodejitsu fully supports native modules and that he believes all providers should do the same. His argument was there was just too many flavors of distros / configurations and that building was the only sure fire way to ensure it works.
Finally the last question was directed to speakers asking them which cloud platform they prefer. A few of the foreign speakers said they use nodejitsu, though I definitely said Azure :-). I also said that I have used nodejitsu and it is nice for a very targetted node experience. I said that Azure offers the best hybrid cloud solution (PASS, IAAS, and On Prem support) and that I had heard that hybrid cloud was very important to several local folks I had spoken to.
Following the event we had a full day hackathon at PeopleSquared where both speakers and attendees came together for some hardcore hacking.
Bob Zheng of People Squared welcoming folks
Different teams at the hackathon
We started off using an open space style with folks suggesting projects they wanted to work on. Then everyone voted or the sessions they liked and teams were split.
My team was with Tim Caswell where we were building a new tool called “crate” which will packages up a node application, it’s modules and node itself into a self-extracting / executing exe.. I helped with the design and actually picked the name, but unfortunately had to leave early due to a family commitment. The project is up on gitcafe, a new github like offering in China.
Several other really cool projects came out of the hackathon including a gravatar type service which has an avatar that changes dynamically based on your mood or time of the day.
The best part about the hackathon for me was the collaboration between local and international developers working together toward solving a problem.
HuJS was a fantastic experience. It was amazing to see developers from the opposite ends of the world with very different languages and customs come together, share and learn.
And as for the organizers, we hope this is the first of many China JS events to come. I am talking to you Beijing!
Thank you to our sponsors, our organizers, our speakers and our attendees who made HuJS a possibility!