Last week I flew to Atlanta for the Connect JS conference. It was three straight days of learning about everything new in the world of JavaScript and web development. There were workshops on creating web components, talks about the fan favorite web framework React, and many more. There was something for everyone. Obviously the focus of the Connect JS conference was JavaScript, but Ruby also had a rather large presence. It was all a little overwhelming, but I learned a lot, and I am looking forward to trying something new.

On Thursday, I attended a workshop on creating web components using Polymer. I don’t have much web development experience, I have only started developing for the web within the past four months, but I learned a lot about the new features in HTML 5 (some features are so new they aren’t really supported across browsers yet). Google Chrome, as well as a couple other browsers, will now support importing which works like a script tag, but it has a few advantages. Using import will skip loading and executing HTML files that have been loaded previously. Next, I learned about creating custom elements in HTML. This means I can now write my own elements to use in a web page. No more copying and pasting blocks of HTML. I also gained a better understanding of how the HTML and JavaScript work together to actually render a web page in the browser. Using JavaScript, one can register an element with the DOM. This is just basic JavaScript, but it totally changes how one can interact with the DOM in a web page. Google’s Polymer framework basically takes all the custom elements implementation and wraps it up in a nice package that can run across basically every modern browser. Web components and Polymer will also work with most modern web frameworks like Angular and, my new favorite, React.

Friday was the first real day of the conference. There were talks about ES6, web development, Ruby, and more. I concentrated on the React talks. I previously wrote a blog about my first impressions of React Native here, but I didn’t know much about the web portion of the React framework. I think that I like React because of my background in mobile development. React is function driven, and I like how this allows me to write modular and reusable code. Even when creating elements on the screen, React just uses a function that returns JSX. JSX is JavaScript syntax extension that looks like a mix up between HTML and JavaScript. It takes some getting used to, but after getting the hang of it, it is very similar to normal HTML. There are a couple differences such as using className instead of class and using htmlFor instead of for. After using Appcelerator Titanium for so long, it was somewhat odd to see a framework that eschews the somewhat typical Model View Controller (MVC) architecture. React puts the “Views” for its components in the same file as the controller. This pattern made a little more sense after attending a talk on Flux, the new application architecture that Facebook recommends using with React.

Flux uses what Facebook calls a “unidirectional data flow.” You can probably guess that this means data will only ever flow in one direction in the application. But what does this mean for a developer creating an application? There are three major parts to a Flux application: the dispatcher, the stores, and the views (React components). The notable absence in these parts is a controller. React uses controller-views as I mentioned above. These views will retrieve data from the store and pass it down to their children. These views can then emit events which will be handled by the dispatcher. The dispatcher will in turn update any of the stores that need to be changed. The new data can then be retrieved by the views again, and the process starts all over again. I could continue to talk about Flux, but Facebook has a good series of videos and documentation to get started with Facebook Flux documentation.
The last day of the conference has a variety of talks which showed off just how versatile JavaScript and all the frameworks are. My day started with a talk about the state of Appcelerator Titanium. I like that Appcelerator has decided to open up Appcelerator Labs in order to give developers an early look at upcoming features. But the day was not only about frameworks. I attended a few talks on prototyping DIY electronics and wearables with JavaScript. I had heard about Aduino and Raspberry Pi’s before, but I have never used either of them. After these talks, however, I think I will be purchasing one in order to start experimenting with making my own electronics. There are JavaScript frameworks for both of these hardware platforms that will interact with real world electronics. There were some good ideas in these talks for doing things such as automating parts of your house like turning your lights on and off and starting a coffee maker.

Overall, Connect JS was a great conference. I met interesting people, brushed up on my ES6 knowledge, and learned a lot about some new frameworks. I want to get started putting my new web development knowledge to work. It is a new field for me that I am excited to explore. And maybe in my free time I can start hacking my own DIY components.