---
layout: default
---
<link href="{{ site.baseurl }}/css/content.css" rel="stylesheet" type="text/css">

<div class="post int_text">
  <header class="post-header">
    <div class="int_title">
      <h1 class="post-title">{{ page.title }}</h1>
    </div>
    <p class="post-meta">
    {% if page.authors.size > 1 %}
    <strong>Authors:</strong>
    <ul>
      {% for alias in page.authors %}
        {% assign author = site.data.authors[alias] %}
        <li>{{ author.name }} ({{ author.title}}, {{ author.org}})</li>
      {% endfor %}
    </ul>
    {% else %}
      {% assign alias = page.authors[0] %}
      {% assign author = site.data.authors[alias] %}
      <strong>Author:</strong> {{ author.name }} ({{ author.title}}, {{ author.org}})<br />
    {% endif %}
{% unless page.nodate %}<strong>Date:</strong> {{ page.date | date: "%b %-d, %Y" }}{% endunless %}
{% if page.meta %}{{ page.meta }}{% endif %}</p>
  </header>
  <div class="addthis_sharing_toolbox"></div>

  <article class="post-content">
    {{ content }}
  </article>
 <div id="disqus_thread"></div>
    <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'drill'; // required: replace example with your forum shortname

        /* * * DON'T EDIT BELOW THIS LINE * * */
        (function() {
            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
            (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
        })();
    </script>
    <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
    
</div>
<script type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-548b2caa33765e8d" async="async"></script>
