---
layout: base
---

<div class="row-fluid">
  <div class="col-sm-12">
    <div class="row">
      <h1>{{ page.title }}</h1>
      <p><i>{% if page.subtitle %}{{ page.subtitle }}{% endif %}</i></p>

      <article>
        <p>{{ page.date | date_to_string }}{% if page.author %} by {{ page.author }}{% if page.author-twitter %} (<a href="https://twitter.com/{{ page.author-twitter }}">@{{ page.author-twitter }}</a>){% endif %}{% endif %}{% assign count = page.authors | size %}{% for author in page.authors %}{% if forloop.first == false and count > 2 %},{% endif %}{% if forloop.last and count > 1 %} &amp;{% endif %} {{ author.name }} {% if author.twitter %}(<a href="https://twitter.com/{{ author.twitter }}">@{{ author.twitter }}</a>){% endif %}{% endfor %}</p>

{{ content }}
      </article>
    </div>

    <div class="row">
      <div id="disqus_thread"></div>
      <script type="text/javascript">
        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
        var disqus_shortname = 'stratosphere-eu'; // 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>
    </div>
  </div>
</div>