---
nav: blog
enable_comments: true
---


<!DOCTYPE html>
<html lang="en" itemscope itemtype="https://schema.org/WebPage">
  {% include head.html %}
  <body>
    {% include header.html %}

    <div class="page-title-bar">
      <div class="container">
        <h1>Bazel Blog</h1>
      </div>
    </div>

    <div class="container vpad">
      <div class="row">
        <div class="col-lg-9">
          <div class="blog-post">
            <h1 class="blog-post-title">{{ page.title }}</h1>
            <div class="blog-post-meta">
              <span class="text-muted">{{ page.date | date_to_long_string }}</a>
            </div>
            <div class="blog-post-content">
              {{ content }}
            </div>
            {% if page.enable_comments %}
            <div class="blog-post-comments">
              <div id="disqus_thread"></div>
              <script type="text/javascript">
                var disqus_shortname = 'googlebazel';

                (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="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
            </div>
            {% endif %}
          </div>
        </div>
        {% include blog-sidebar.html %}
      </div>
    </div>

    {% include footer.html %}
    {% include blog-twitter-js.html %}
  </body>
</html>
