Having trouble understanding hook_theme()
I think this is a typo on your part or Drupalize.me.  You should supply a variables array that defines the default values of the variables passed to your theme function if the calling function does not supply them.  It's not necessary, but seems to be good practice to NULL at least title and data.

From the api:


  variables: (see above) Each array key is the name of the variable, and
  the value given is used as the default value if the function calling
  theme() does not supply it. Template implementations receive each
  array key as a variable in the template file (so they must be legal
  PHP variable names). Function implementations are passed the variables
  in a single $variables function argument.


function spy_glass_theme() {
  return array(
   'spy_glass_item' =&gt; array(
     'variables' =&gt; array('title' =&gt; NULL, 'data' =&gt; NULL),
     'template' =&gt; 'spy-glass-item',
    ),
  );
}


And then your theme function:

function theme_spy_glass_item($variables) {
  $title = $variables['title'];
  $data = $variables['data'];
}


Or, if you're using .tpl.php, you simply have access to the variables $title and $data.