I was lucky enough to attend the CodeMash 2014 this week, and saw some great content, had fun playing games and also got to give a talk! Telerik, of course, was a HUGE sponsor of the event and we had a lot of great people here. We all had fun, the conference was great, and I wanted to share a few of the highlights from my visit - starting with Brian Prince and high CodeMash-Orange hair!

The Game Room And Kendo UI Booth

We had a great booth this year - I know this booth setup has been around before, but it was the first time I’ve seen in real life. Hopefully, if you were here, you got to stop by and say hi to some of us at the Kendo UI booth.

We also sponsored the game room - a room where people gather to play board games and card games and whatever other types of games they wanted to play. Fun times were had by all - especially on this giant, 9 foot square Settlers Of Catan!

A Few Session Highlights

But the conference wasn’t all fun and games. It was also… fun. And there were games! And BACON! Oh, and there were some amazing sessions as well. Here are some of the highlights from the sessions that I went to, including some links to resources for us web and JavaScript developers.

Glenn Block: Async Javascript

If you ever get a chance to see Glenn Block speak, you should go. He’s always a great speaker with a ton of informative things to talk about. In his session this year, he walked through several examples of JavaScript with asynchronous code and callbacks in NodeJS. Then he showed different versions of the same search screen he built, using different libraries to manage and control the async flow of the code.

He showed the async JS library to clean up nested callbacks, and showed “waterfall” method, saying “in this case, waterfall is actually a good thing”. Async is not composable, though - you have to tell it what to coordinate. For composing - adding new parts to the process, as needed - you want promises.

He then showed the q JS library and bluebird.js for promises and how to created method chains and clean up callbacks with promises.

Up next was the RX framework - observables and observers. Reactive provides declarative model for managing async code. Promises are 1 thing that flow through a series of steps. RX allows a collection of things to flow, modifying the collection along the way. Think pub/sub, with promise like chaining - pipes and filters. Where promises allow you to chain one thing through many “then” methods, RX allows you to pipe collections through a series of processing steps.

Lastly was the idea of coroutines. He showed two separate things for this in NodeJS.

He showed a library called Fibers to use coroutines today. This library lets you write async code that executes sequentially. This is similar to ‘async/await’ in C# or similar to signalling threads where you wait for a signal to continue the code. Signalling that the async code is done allows you to yield some data back to the place from which Fibers first started waiting for the async code to finish.

Coroutines are also coming in ES6 and are known as generators. This is basically what fibers provide, but native to the language - including browsers! While it’s not yet available everywhere, it is already available in some modern browsers.

The DOM Is Not Your Application

Noel Rappin gave a great talk about how and why you should extract your DOM use - selectors, modifiers, etc - out of your application code and treat it as a 3rd party dependency. I have done things sort of on the path of what Noel showed, but had never taken this idea as far as he did. Frankly, I love the idea of wrapping my DOM access code in something that is a dependency for my other code.

We’re comfortable farming out things that are not our primary concern - libraries APIs, etc. Why don’t we do this w/ the DOM? jQuery sort of does this, but not really. At least jQuery is easier to use than the raw DOM.

A naive way to use libraries is to call them directly from our code. Bad idea. This is hard to update, hard to adapt to changes, duplication in our app because we have to call the API multiple places. A better idea is to create a wrapper/facade/etc that your code calls. Create a single point where the 3rd party is called. Gives you app semantics in the wrapper so your code can focus on your domain.

But why do I need to shield from the DOM? You should write code that has good characteristics, that are well defined, etc and keep your dependencies at bay. This allows you to change the DOM elements (not API) without having to change the app code that needs to use the DOM.

Ultimately, the DOM is an API. Isolate your app from 3rd party APIs.

Limit your DOM touch points, pull DOM out of your app and treat it like a 3rd party dependency.

My SOLID JavaScript Talk

I was also lucky enough to give a talk on the SOLID Software Development principles at the CodeMash this year, and I brought my audio recording equipment with me! The result is a live recording with (hopefully) adequate audio to introduce JavaScript developers to the benefits of the five SOLID principles in object oriented development.

I’ve uploaded the slides and code to Github. If you don’t have Keynote, you can get the slides from my SpeakerDeck account as well. I also made the recording of the video available on YouTube!

Of course there were a ton of other great sessions - many of which I enjoyed a great deal. But I found these to be the highlights for web development and getting ideas on how to move forward and improve.

I hope to be returning to CodeMash in the future, and am certain that Telerik and Kendo UI will continue to be a part of it!

About the Author

Derick Bailey

About the Author
Derick Bailey is a Developer Advocate for Kendo UI, a developer, speaker, trainer, screen-caster and much more. He's been slinging code since the late 80’s and doing it professionally since the mid 90's. These days, Derick spends his time primarily writing javascript with back-end languages of all types, including Ruby, NodeJS, .NET and more. Derick blogs atDerickBailey.LosTechies.com, produces screencasts atWatchMeCode.net, tweets as @derickbailey and provides support and assistance for JavaScript, BackboneJS,MarionetteJS and much more around the web.

Related Posts


Comments are disabled in preview mode.