 
     [:article
      [:p "React diffs against its virtual copy of the DOM before it writes to the actual DOM, so paint rectangles "
-      "can’t show you where you’re rendering too much. The benefit of React’s global optimization is that we never "
-      "make those slow DOM updates, but the cost is that we can’t use all of the browser’s built-in tools for debugging."]
+      "can't show you where you're rendering too much. The benefit of React's global optimization is that we never "
+      "make those slow DOM updates, but the cost is that we can't use all of the browser's built-in tools for debugging."]
      [:p "My first approach to the problem was to hack the paint rectangles back into the page. I had each "
       "component generate a random border color each time it rendered, forcing React to change the DOM. By using a "
       [:a {:href "https://github.com/circleci/frontend/blob/7cf4a54480bc5aa772f465afced98d8f3d84dc8a/src-cljs/frontend/utils.clj#L51"}

    [:article
     [:p
      "One of the big challenges in using React.js and Om is understanding how the code you write "
      "impacts performance and rendering time. In most cases, you shouldn’t care – React’s diffing model and "
      [:a {:href "https://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs/"}
       "Om’s handling of immutable data structures"]
      " make hand-tuning mostly superfluous. There will always be places where the defaults are too slow and "
      "micro-optimizations are required for the sake of performance. In those cases, Om’s global concerns allow "
      "us to create tools to see the bottlenecks and understand the impact of our optimzations."]
     [:p "I’ll show you how CircleCI leverages Om’s new “descriptor” overrides to understand performance in its "
      [:a {:href "https://github.com/circleci/frontend"} "open-source frontend"] ". "
      [:a {:href "https://circleci.com"} "CircleCI"] " is a hosted Continuous Delivery platform used by teams that "
      "want state-of-the-art CI and deployment."]]

    [:article
     [:p "This is a nice step forward. Like paint rectangles, it gives us a visual indication of possible "
      "performance bottlenecks. But we can do so much better. Paint rectangles can show us the regions that "
      "are being re-rendered, but that's not how we think of components when we write and use them. Like any "
      "function, we want to refer to them by their name. The paint rectangles also don't tell us how long it "
      "takes to render each region, so we don't know which component to prioritize."]]

    [:article
     [:h3 "Instrumenting components"]
