mesosphere/marathon — pull request #50 by ssorallen (2013-10-02 17:28:00+00:00)
Title: Use step timing for cursor blink to save CPU rendering

The blinking cursor used the default timing function for its transition,
which caused Chrome 29 on OS X to take 100% when the Marathon tab was in
the background. The default timing function eased between 0- and 1
opacity, which ate CPU to composite on each step of the animation.

Switching to a step function means there are only two steps: opacity 0
and opacity 1. The composite time required is a tiny fraction of before
with a Chrome background tab taking <2% CPU, possibly due only to normal
activity and not the animation.

This also more closely mimics a real terminal; cursors typically blink
instead of fade.

This StackOverflow question pointed me in the right direction:
http://stackoverflow.com/a/13293044/368697