Top Takeaways from CodeMash 2017

I was lucky to be able to attend CodeMash for the first time earlier this month and it was a fantastic experience. In my five years as a professional developer, this was hands down the best conference I’ve been to.

Hosted at Kalahari Resort in Sandusky, Ohio, CodeMash draws industry professionals from all over the Midwest. Networking, swag, an indoor waterpark, and a ton of quality learning opportunities give CodeMash everything you could want in a conference experience.

Here are my three biggest takeaways from the event:

View the Source, Luke

Librarian-turned-developer, Joe Morgan, gave a talk titled E6 Patterns in the Wild. He walked us through several examples of EcmaScript 6, the latest version of specification behind Javascript implementations, using the libraries that developers use every day. We dove deep into a couple aspects of the React.js and Redux.js libraries, as well as an online algebra tool made by Kahn Academy.

While the real-world code examples provided a lot of insight, Joe’s approach to learning new languages and technologies was more impactful. He encouraged us to prefer real-world code examples rather than tutorials that use “code to teach,” which often lack substance. Take a look at Joe’s latest blog post to see this type of learning in action.

Ultimately though, Joe’s biggest lesson for us was to think of code as a type of literature, which has its own unique artistic value. That idea really resonated with me and left a lasting impression long after the talk was over.

JavaScript is Ready for Business

In 2016 we brought React.js into a couple of client projects, so I wanted to get a better idea of what maintaining a large-scale React app looked like. Luckily for me, Jeremy Miller gave a talk on exactly that: “An Experience Report from Building a Large ReactJS/Redux Application.”

He and his team built a product called Storyteller, which is described as being “for creating robust, human readable acceptance tests for your .Net system and a means to create 'living’technical documentation” Essentially, it’s a browser-based environment to maintain and run acceptance tests against a .Net project. It’s fairly complicated user interface with lots of data flowing from server to browser.

Jeremy’s team made the switch to React in 2014, making Storyteller one of the longest tenured React production apps. They’ve since been able to take advantage of new libraries and methodologies as they’ve come out over the life of the product.

From state containers like Redux, to testing frameworks like Mocha and Jest, and even functional programming libraries such as RxJS and Immutable.js, JavaScript app development has really come of age in the past couple of years.

As Storyteller shows, serious JavaScript application development is not only possible, it is a legitimate option for critical business applications.

HTTP/2 is Here

The protocol that drives the Internet as we know it, Hypertext Transfer Protocol (HTTP), has gone essentially unchanged since 1997. For some quick context, that was before Chrome, Safari, or Firefox were even invented and years before the worst browser of all time, IE6, became a thorn in every web developer’s side.

During the two decades since HTTP/1.1 was released, hacks to get around the protocol’s limitations have become industry best practices. Things like file concatenation, image sprites, domain sharding, and inlining CSS for “above the fold” content are all practices trying to squeeze the best performance out of protocol that was conceived when websites looked this:

Space Jam Website

Pre-Y2K websites were bad.

However, as Byron Delpinal told us, the days of using that 20-year-old protocol are numbered. HTTP has reached version 2 and, surprisingly, already has great support and resources on browsers and servers alike.

With HTTP/2, the limits of concurrent requests are gone. What this means is your browser is able to download all the content of a webpage at once, where with HTTP/1.1 you had to load the content in batches. What’s more, HTTP/2 gives us a mechanism to “push” files to a browser before it even asks for them. Things like CSS and JavaScript files, images, and even the HTML for the next page you’re going to navigate to will be sent to your browser, and be ready immediately when you need them. The result is a website that loads substantially faster, especially for asset-heavy sites.

While all this sounds cool–because it really is–there are steps that we as developers need to take in order to reap the full benefits of HTTP/2. I’m excited to fit those new steps into the WillowTree (formerly Dynamit) workflow moving forward.

Overall, CodeMash 2017 was an awesome experience. It helped reinvigorate me as a developer, and I’ve already seen improvements in my code from the lessons I learned.