How I used Codemash to determine my technology plans for 2015

Last week, I went to a programmers conference in Sandusky, Ohio called Codemash. Today, I cover the sessions I attended along with my comments about each one.

Written by Jonathan "JD" Danylko • Last Updated: • Develop •
Kalahari Resort where Codemash was held.

On Saturday, I was sitting down outside the coffee house eating my traditional Tiramisu snack before I left the Kalahari Resort in Sandusky, Ohio thinking back to when I arrived on Monday.

The week was a blur.


The Codemash conference for 2015 started on Tuesday, January 6 and went until Friday, January 9th.

The first two days are what are called the Pre-Compiler sessions. These sessions are strictly hands-on and take either a half-day or a full-day to complete. YOU NEED A LAPTOP!

The remaining days (Thursday/Friday) are usually a blur because:

  1. That's when the format changes and the sessions are 45 minutes to an hour long (taking as many notes as possible running from room to room). No laptop is required, but you need something for note-taking.
  2. That's the primary core of the conference and when everyone appears for the sessions, it becomes a tug-of-war between sessions, discussions, friends, and fun. ;-)

So many sessions, so many friends, so much to do...WOW!

At least I had my Vans and was ready to go! (Whaaaa? What's up with the Vans?)

My New Vans for Codemash

This post is not necessarily going to be a coding post, but more of a discussion of how I selected the sessions at Codemash to find out what new technologies I would need to pick up along the way to further my experience in my career.

However, for about half of the conference, I was sick and not feeling very social during some periods of the conference. After sessions were done, I would head up to my room and get some rest. I still attended as many sessions as possible.


Tuesday, AM

JavaScript Everywhere - Learn to Build a Cross-platform JavaScript Application that Works Everywhere (Part 1) - Jeff Fritz

While going through the session, the cross-platform part of this session was primarily about using AngularJS and the benefits of the framework.

Two reasons I decided to leave this session and not show up for the PM:

  1. Code-wise, I haven't dove into Angular too deeply because I haven't created any front-end application to require a front-end framework like AngularJS yet.
  2. If I was to start working with AngularJS, I would be starting with v1.3. Google mentioned that AngularJS v1.3 applications will not be backward-compatible with version 2.0 coming out later in Q4 of this year. It will be an entire rework of the framework. Therefore, you will need to rewrite your 1.3 app.

The AM session that Jeff did was really cool. I liked it because it wasn't a deep-dive into AngularJS, but more of an overview.

Tuesday, PM

Landing on SOLID ground- Surviving on Mars Through Better Coding Practices - Nicholas Martin, Philip Jordan

This was one of my favorite sessions. I would consider this a mega-coding-kata.

Using either your favorite Java or C# IDE, they would cover the basics of each letter in the SOLID acronym and give an example. Then you would use that new found teachings to refactor some existing code that they gave you.

For those not familiar with SOLID, the acronym was coined by Robert C. Martin (or "Uncle Bob" as we all know him) and stands for:

  • S - Single Responsibility Principle
  • O - Open/Closed Principle
  • L - Liskov Substitution Principle
  • I - Interface Segregation Principle
  • D - Dependency Inversion Principle

Since I haven't done any code katas lately, this was a great way to make sure my skills were up to speed (and they were).

Kudos to the presenters!

Wednesday, AM/PM

Web UI Testing From Acceptance Criteria to Zip Files (Part 1...and 2) - Jim Holmes

We all have our unit tests in place for our C# code, but the primary concern with most web applications is the ability test the UI portion of your web application.

So, I sought out the experience of Mr. Jim Holmes. :-)

Jim has over 10+ years of experience with Selenium/WebDriver. I considered this a huge benefit when learning how to effectively use Selenium and WebDriver to get some Web UI tests under my belt...and it was definitely a worthwhile hands-on workshop.

He was completely open about the format, provided useful information and examples, and was always helpful when someone had a question/issue...everything that I've heard about Jim over the years. This was my first session I've ever had with Mr. Holmes and it didn't disappoint!

And, of course, it was an exceptional session!

Core Sessions (the primary conference)


8:00a - Traces of Errors: Getting a better JavaScript Stack Trace - Todd Gardner

Everyone should know JavaScript by now and have a good understanding of it's underpinnings along with jQuery.

But Todd presented a weird and quirky way that each browser returned error messages ("Of course, IE was completely different in reporting errors...which is no shock.").

Then he started talking about his JavaScript library called Track:js which is definitely an interesting library for error handling and logging JavaScript errors.

I need to look into this library a little more.

9:15a - The Future of C# - Dustin Campbell

This session took place in the main hall since it would be considered a large group that no regular session room could hold that many people...and they were right.

Dustin went over a lot of features appearing in C# 6.0 that most bloggers/developers have mentioned in the past 2 to 3 months. Too many to go over here, but I will go over one that interested me.

One feature I did like was the method lambdas. Instead of a method taking up 4 lines of code like this:

public int Square(int i)
    return i * i;

In C# 6.0, you just need one line like this:

public static int Square(this int i) => i * i;

Overall, I liked the direction C# is going and look forward to the next version.

NOTE: I did find a reference to all of the features that Dustin touched on in his session.

10:30a - The Dawn of the Reusable Web: Diving into Web Components - Corey House

As always, Corey did a great job giving an overview of the four components of Web Components.

The four components are:

  • Custom Elements - You can create your own DOM elements (tags) for your HTML.
  • Templates - Use boilerplate templates to instantiate HTML and inject that HTML into your own documents.
  • HTML Imports - Just like a CSS file or JavaScript file, you can import an HTML file.
  • Shadow DOM - This hides certain HTML elements to enforce a specific DOM Encapsulation in your HTML.

Corey just gave an overview of the Web Components since there is so much to cover. But he definitely provided an entertaining session to show how useful each component can be for your web development.

He also compared this to the equivalent of AJAX when it first came out. I have been looking into Web Components since last year and have been slowly integrating Web Components into my CMS.

Web Components will definitely be a game-changer.

Check the Web Components web site for more information about how to start using them today.

11:45a - DevOps: What it is, What it isn't, and Why Coders Should Care - Dave Swersky

Mr. Swersky gave a great overview of DevOps and how important it will be for developers and operations to work together.

He mentioned that DevOps is Communication, Automation, and Transformation. It's not something that happens overnight and it's something that management doesn't just say, "ok, from now on, we will be doing DevOps." It's more of a transition.

I like how he presented everything and (I think) our company has a DevOps mentality right now. We have a team that performs the builds, develops, and sets up the infrastructure, but even though we are in two different camps (Infrastructure and development), I would push to say that we have a DevOps structure in place.


1:00p - Decoupling the Frontend through Modular CSS - Julie Cameron

Julie Cameron gave a great session on how to make your CSS more modular. Some of the various Modular Solutions include:

During this session, she gave a couple of examples of how CSS can be modular using OOCSS, BEM, SMACSS, and Atomic Design.

She also provided a great reference to a Scalable CSS Reading List, which I need to start looking over.


2:15p - Build Offline-Enabled Apps with PouchDB - Bradley Holt (Vendor Session)

I have been toying around with taking web applications offline off-and-on (excuse the pun) and I wanted to find out a little more about PouchDB. Since there was a vendor session about it, I thought this would be a great opportunity to see what PouchDB had to offer.

It was strictly an overview with very basic commands to get PouchDB working inside a browser. I definitely enjoyed the session and learned about the general functionality of the product.

I asked Mr. Holt about the size limitation of PouchDB and he didn't know. After doing some research on PouchDB, I found my answer.

3:30p - How to be a Six-Figure Developer - Gaines Kergosien

This particular session was something I was curious about and found it to be just what I had expected. If you are currently in a position (or looking for one), this session described how to make yourself stand out from the large number of developers out there.

The topics covered were how to determine your value, how to create your own personal branding, setting up a proper resume, with a side note of "have you Google-d yourself lately?"


4:45p - Async JavaScript at - Matthew Podwysocki

Mr. Podwysocki discusses how Reactive Extensions are being used at and how events can be considered collections. Since he created the Reactive Extensions Library (Rx library) and uses it, he knew some things about how they were using the library.

I left near the end of the session because at the time, I was very sick and needed some rest after this huge day.

Similar video


8:30a - ASP.NET Performance Tips and Tricks - Kevin Griffin

After breakfast, I definitely wanted to hit this talk. Kevin went through a total of 20 performance tips and tricks. All of them were useful and could be used immediately on your site.

He also had a memorable quote: "Performance is the amount of time a person will wait before getting pissed off." How true!

He mentioned that when Microsoft implemented WebForms, they did it in a unique (translation: strange) way. Now that ASP.NET MVC appeared, he said that this was the way that 90% of most web sites work across the Internet, no ViewState or SessionState.

I especially liked issue number 5 - Disable ViewState. During one slide, he mentioned, "Please stop using WebForms." On the next slide, he said, "I'm just joking." and finally on the next slide, he said "But seriously, stop it."

I knew about all of the tips Kevin presented on his slidedeck but I didn't know about two of them. I will definitely implement those two techniques on my site.

9:45a - Clean Code: Writing for Humans - Corey House

I'm starting a new phrase: "Corey brought the House" meaning he brought his A-Game to this session (as always). He was on the main stage and again packed a lot of people into the area. His style of presenting is entertaining and informative and he shows his passion through his sessions.

In this session, he was referencing Robert C. Martin ("Uncle Bob") in his talk about how to write code for your fellow developers. There were a number of code examples that were spot on and can remember some that I will be taking back for the team to review.

Again, Corey gave a great and entertaining session.

11:00a - OWASP Top Ten Proactive Approaches to Software Security - Jim Manico

I've never seen Mr. Manico talk before, but from what I could see from his technique, he was very enthusiastic and passionate about his presentation as well.

Halfway through the session, I realized that I was going to miss lunch again, so I jumped out of the session and headed to the lunch area with a tech group to chat with Corey House.

12:15p - Unit Testing Asynchronous Code - Stephen Cleary

After having a pow-wow outside the lunch room, I wanted to catch the next session. I've always had issues when working with asynchronous code, but I thought Unit Testing asynchronous code would be a great session for learning how to test asynchronous code in my CMS.

Stephen Cleary gave some excellent examples of asynchronous code and how to unit test it ("Avoid the void!").

I will definitely be using the unit test techniques he described in his session this week.

2:45p - Angular for .NET Developers - James Bender

Again, since I haven't worked on Angular, I thought this would be a great session to learn one new technology (Angular) from an existing technology (.NET).

James Bender gave a great session on AngularJS. He also provided some of the benefits of having a client-side JS framework such as Angular:

  1. Creates Very Clean HTML
  2. Unobtrusive JavaScript
  3. No need for jQuery or HTML manipulation via JavaScript (almost)
  4. Makes SPA (Single-Page Applications) very easily
  5. Works very well with ASP.NET MVC

He also mentioned that he has been spending more time away from a postback mentality using ASP.NET MVC and switching gears to a WebAPI mentality using AngularJS.

He said his pages using Angular are performing better because they are requesting smaller payloads of data using the WebAPI back to the client.

I was also able to chat with him after his talk. I asked him "if someone new was just getting into AngularJS, do you think it would be better to wait until 2.0 or just dive into Angular 1.3?"

He said it would be a good idea to get into AngularJS 1.3 because he heard that Google is now back-peddling their previous comment about version 2.0 not being backward-compatible with version 1.3. 

I have also learned that the AngularJS team will start integrating Web Components into future builds of AngularJS as well.

I guess that settles it...I will be setting my sights on learning AngularJS 1.3 this year.

4:00p - Deconstructing Single Page Applications - Jeanette Head

As a way to top off the last session of the week (since I just watched Angular for .NET Developers), I thought Jeanette's session on Deconstructing a SPA would be a great finishing session.

She discussed the how each JS framework (Backbone.js, Ember.js, and AngularJS) attacked each part of the Single-Page Application and their differences:

  • rendering
  • routing
  • data-binding
  • event handling
  • composability

Overall, I liked the session and the comparison she gave between the JavaScript frameworks. She did a really great job with her session.


Phew! What a brain-dump! This week was definitely exhausting especially while being "under the weather."

As I finished off my Tiramisu cup (I always get one before I leave every year), I realized there was a lot of information to digest and that my brain was slowly leaking from information overload on Saturday.

Tirmisu Chocolate Cup

There were so many great sessions that I couldn't attend (I apologize to my friends who were presenting) because I was overwhelmed with all of the sessions and you know...choices had to be made.

Based on everything I have seen regarding 2015 technology trends and the Codemash sessions presented, I will be focusing on the following technologies this year:

Overall, I think I will be going with AngularJS for most of my JS needs based on the AngularJS sessions and news I've heard.

According to most Angular developers I talked to at the conference, you can use any single part of Angular that fills a need in your app and still be functional. Add the pieces as you see fit. It's not an all-or-nothing framework.

I see AngularJS becoming the next step for jQuery just like jQuery was an evolutionary step for JavaScript.

Well, I better get going and head for home!

I hope to see you next year Codemash!

Did you like this content? Show your support by buying me a coffee.

Buy me a coffee  Buy me a coffee
Picture of Jonathan "JD" Danylko

Jonathan Danylko is a web architect and entrepreneur who's been programming for over 25 years. He's developed websites for small, medium, and Fortune 500 companies since 1996.

He currently works at Insight Enterprises as an Principal Software Engineer Architect.

When asked what he likes to do in his spare time, he replies, "I like to write and I like to code. I also like to write about code."

comments powered by Disqus