It’s been one week since CodeMash 2011 ended and I have to say that I’m still feeling a bit of a geek high from the experience of it all. This years CodeMash was my first developer conference ever, so it was pretty interesting to see the whole dev-geek community come together in all of its energy and diversity.

Overall, I attended three keynotes, a product launch, eight presenter sessions, a vendor session and an open space talk. It was a pretty packed two days to say the least. But of all those events, I’d say the three that stood out to me most were:

  • Scott Chacron’s (Github) keynote on Developer Driven Development & the Open Source Business Model
  • Mobile Smackdown – 3 mobile platform developers took 15 mins each to attempt the construction of the same basic Twitter app.
  • Women In Tech open spaces discussion session.

Read more about each of these sessions below, along with summaries of my favorite sessions.

Session Notes

Netflix in the Cloud

Carl Quinn | @cquinn | Presentation Slides

Netflix in the Cloud was an extremely in-depth look at how Netflix runs their service in the Amazon AWS cloud. This presentation was pretty well over my head for the most part, but it was very interesting to see how a site with so much traffic is structured.

The talk began with a discussion of the downfalls of their old data center solution, followed by a thorough overview of their new, faster, scalable, available, and productive cloud architecture.

There’s no way I could possibly try to explain their setup, so I took a few screen grabs from of the slides (click to enlarge):

Netflix Deployment on AWS
An overview of the Netflix deployment setup on Amazon AWS

Netflix EC2 Instances per Account
A look at Netflix processing usage of Amazon AWS

Netflix Service Interaction Pattern Swimlane Diagram
A request from start to finish, look at all those caches!!

If you’re interested in hearing all the nitty gritty, check out the presentation linked above for a full hour long session video.

jQuery 102

Rod Paddock | @rodpaddock | Presentation Slides

While I was already relatively familiar with most of the “advanced” concepts presented in this talk, Rod Paddock’s explanations and demonstrations certainly helped to reinforce my understanding of those techniques.

Topics discussed included:

  • The basic jQuery selector methods
  • Dynamic UI functions like live, liveQuery, and bind – used to attach events to elements in the DOM
  • Sending AJAX requests with ajaxSend and ajaxSetup
  • My personal favorite, creating pretty popups with the dialog method
  • And of course, how to create a jQuery plugin.

To my teammates reading this: If you attended the jQuery Summit web conference in November, there’s not a ton of new stuff, but it’s certainly a good refresher.

Test Driven JavaScript (Vendor Session – Pillar)

Justin Searls of Pillar | @searls | Presentation Slides

This vendor session focused primarily on Jasmine, the JavaScript test framework. I wasn’t able to take many notes, as Justin miraculously managed to fly through 60 slides and numerous demos in a quick 20 minutes, but it was an interesting introduction to JavaScript testing overall.

For those of you wondering why you should even bother testing your JavaScript, Justin referred us to one of his previous presentations: JavaScript Craftsmanship – Why JavaScript is worthy of TDD.

Going offline with HTML5 and iPhone

Michael Ball | @ballmw | Presentation Slides

Webhitter 2.0

Instead of taking notes in this session, I began working on my first mobile web app – which has since evolved into a jQuery Mobile TV remote interface. The “Presentation Slides” linked above are not actually slides, but rather notes. So you may want to use it more as a reference than a guide – there are a lot of good tips.

Developing High Performance Web Applications

Timothy Fisher (Compuware) | @tfisher | Presentation Slides

This was an extremely well put together session by Compuware Technical Consultant, Timothy Fisher, focused on client-side optimization, with an emphasis on loading JavaScript.

Timothy first explained why frontend performance matters (basically because this is typically where the enduser spends the most time waiting, it’s easy to optimize, and you’ll see big results), and then went on to review the most common frontend optimization best practices:

  • Reduce HTTP requests – combine JavaScript and CSS into fewer files, sprite images
  • Use a CDN – content delivered by a fast distributed network
  • Make pages cacheable – add expires headers, use static content
  • Use gzip compression – “60-80% savings on text based content”
  • Place stylesheets at the top – keep them external and avoid @import
  • Place scripts at the bottom – allows page content to be render first, keep external
  • Minify JavaScript and CSS – save bandwidth / download time
  • Maximize Parallel Downloads – split components across domains, enables browsers to load more in parallel
  • Optimize Images – avoid high-res unless it is intentional, don’t let browser scale images, sprite images

Next, Timothy moved on to loading JavaScript, stating that, “no single Javascript should execute for more than 100mS to ensure a responsive UI.” This portion included:

  • Using Web Workers to allow for asynchronous JS execution
  • Various methods of setting up non-blocking JS loads:
    • Dynamic Script Elements – can run at top of page
      var script = document.createElement('script');
      script.type = "text/javascript";
      script.src = "file.js";
      document.getElementsByTagName("head")[0].appendChild(script);
    • Script Injection – uses AJAX to get the JS. The big advantage is that you can control when the script is parsed and executed, but the script must be served from same domain.
    • Recommended Method: Dynamically load the rest of the JS needed
      <script src="loader.js"></script>
      <script>
        loadScript("the-rest.js", function(){
          Application.init()
        });
      </script>
  • An overview of open source JS loaders – ControlJS, LabJS, and RequireJS

The presentation slides are definitely worth checking out!

Mobile Smackdown

Jeff Blankenburg (Windows Phone 7) | Chris Judd (Android) | Daniel Steinberg (iPhone)

As the name implies, this was one #BADA55 session where three developers from three mobile platforms took turns in an attempt to build the same basic Twitter application for each of their respective platforms in 15 minutes each.

Daniel Steinberg kicked off with iOS development and literally flew through it – he had to have practiced that before! Chris Judd followed up with Android and made it about half way through development before his time ran up. And Jeff Blankburg didn’t get very far at all with Windows Phone 7.

What does it all mean? Well, probably just that some came more prepared than others, but overall it was a very cool comparison and introduction to each of the development platforms.

The Open Source Business (Keynote)

Scott Chacron (Github) | Presentation Slides

This presentation was the last keynote of the conference, but it was certainly not the least. Scott brought his insight into the open source business and what he calls “developer driven development,” suggesting that any organization can integrate open source methodologies into their practice.

The main characteristic of open source businesses that Scott focused on was this concept of “developer driven development” which essentially boils down to one thing: trust. He suggests that if you trust your employees and give them what they want – they’ll do better work than you could’ve even imagined. Throughout his presentation, Scott touched on roughly five key aspects of DDD:

  • Autonomy
  • Power / Responsibility
  • No meetings
  • No feature backlog or roadmaps
  • Free beer!

According to Scott, applying these concepts to your business can result in increased productivity, agile development, and more good ideas. They also give the developers a lot of flexibility in how and what they work on, ultimately keeping developers interested and attached.

Women In Tech (Open Space)

Women in Tech
Women in Tech – I love how we all have demon eyes!

Yes! There were women at CodeMash, somewhere around 40 from what I heard, and our numbers are growing!! This informal open spaces discussion session was my introduction to the world of girly geeks, but it certainly won’t be my last.

Coming from a job where I was the only female employee over a three year span, I could definitely relate to challenges of being a woman in tech. At the same time, I feel extremely fortunate to have joined a company like Quicken Loans where gender diversity is encouraged and much more prevalent. I now work with numerous females and I couldn’t be happier – just being able to relate to and identify with other women is a huge boost to motivation, creativity, and overall comfort.

I’ll definitely be looking into participating in more Women In Tech groups – I’ve even discovered Girls In Tech Detroit which I hope to get involved with in the future.

Wrap Up

So there it is, a relatively high-level overview of my CodeMash 2011 adventure. All-in-all, the entire event was a great learning experience and a lot of fun. In fact, my only real complaint was the lack of tea provisions haha! (Seriously though, not everyone drinks pop and coffee!)

Looking for more presentation slides? Here’s an aggregated list of CodeMash 2011 Presentation Slides.