I’ve just come from sitting my Microsoft exam 70-480 Programming in HTML5 with JavaScript and CSS3.

And I passed.

Super Yay! I’m now a Microsoft Certified Professional. Cue the applause!

flickr photo shared by PRINCESS THEATER - Raising the Curtain under a Creative Commons ( BY ) license

Um. Certification? Like, 90s style?

“Come on, Glen? What’s the go with that?”

I get why you’d think that. I mean, I’m mostly known as a Java guy, and more recently a JavaScript/Node dev.

But these days I’ve stopped thinking about platforms, and am more focused on being a better programmer.

Full stop.

Trust us with your JavaScript

What this certification actually brings me (not what you think)

Hint: it’s neither work opportunities, networking, nor street cred. And the exams are fairly silly too - heaps of trick questions around fringe areas of the content.

It’s about what an exam forces you to do.

What is brings me is a reason to dive deep into something. And learn it properly. From memory, not from autocomplete.

If you’ve ever seen Venkat Subramaniam give a talk fluently across four or five languages, it’s something else. I’ve watching him smoothly switch between teaching Java, Scala, Node, DotNet, and Groovy - all from memory in a non-completing text editor. It’s just crazy amazing!

If you haven’t seen any of his talks, you need to. He’s exceptional.

And I watched and learned.

I’ve watched Graeme Rocher do similar things at Grails conferences. It’s what the world class guys do.

There is so much freedom to your coding and your teaching when it’s all coming straight out of your head.

I. Want. That. Freedom!

flickr photo shared by Perrimoon under a Creative Commons ( BY-NC ) license

So I memorised. A lot.

Microsoft hit every corner of the HTML5 spec for this exam. And I mean every corner. This was a super comprehensive exam, and you have to know it cold.

I did the MVA JumpStart videos for an overview. Then I read the Exam Ref.

Then I Plunkered.

Boy did I Plunker.

I plunkered Arrays, prototypes, Canvas, WebWorkers, LocalStorage, WebSockets. I plunkered as much as I could - from memory.

And this exam still ate me alive. I barely passed. But I have learned so much stuff - from memory!

Mission accomplished.

Now it’s about hatching “practice makes permanent” strategies to hold it…

flickr photo shared by ToGa Wanderings under a Creative Commons ( BY ) license

What sort of things did you learn along the way?

Here’s some things I now have the capacity to do from memory (at least for this 24 hour period):

  • Write a WebWorker from scratch.
  • Write a WebSocket client from scratch.
  • Work with localStorage, sessionStorage and the geo APIs.
  • What the second argument to JSON.parse actually does
  • Use Array.map, reduce, filter, some, every, slice, and splice. From memory.
  • How prototype actually works on a JavaScript function, and on an object, and how they’re different (some killer scoping questions get examined here)
  • How Flexbox models work. Well. Nearly. Those questions really did eat me alive!
  • Using CSS with SVGs
  • Practical applications of animations, keyframes, transitions, and transforms
  • The Canvas API.
  • The Audio and Video APIs.
  • Lots of CSS3 pseudoselectors I hadn’t used before (like the formula versions of :nth-child and :nth-of-type

What’s next?

Time to have a break and relax.

And definitely time to prep for some talks at my local User groups!