{
    "items": [
        {
            "type": [
                "h-entry"
            ],
            "properties": {
                "name": [
                    "Introducing fastpages"
                ],
                "url": [
                    "https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html"
                ],
                "published": [
                    "2020-02-21T00:00:00-06:00"
                ],
                "content": [
                    {
                        "html": "<ul id=\"toc\" class=\"section-nav\">\n<li class=\"toc-entry toc-h2\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Setting-Up-Fastpages\">Setting Up Fastpages </a></li>\n<li class=\"toc-entry toc-h2\">\n<a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Jupyter-Notebooks-&amp;-Fastpages\">Jupyter Notebooks &amp; Fastpages </a>\n<ul>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Options-via-FrontMatter\">Options via FrontMatter </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Code-Folding\">Code Folding </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Interactive-Charts-With-Altair\">Interactive Charts With Altair </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Data-Tables\">Data Tables </a></li>\n</ul>\n</li>\n<li class=\"toc-entry toc-h2\">\n<a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Other-Features\">Other Features </a>\n<ul>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#GitHub-Flavored-Emojis\">GitHub Flavored Emojis </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Images-w/Captions\">Images w/Captions </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Tweetcards\">Tweetcards </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Youtube-Videos\">Youtube Videos </a></li>\n<li class=\"toc-entry toc-h3\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Boxes-/-Callouts\">Boxes / Callouts </a></li>\n</ul>\n</li>\n<li class=\"toc-entry toc-h2\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#More-Examples\">More Examples </a></li>\n<li class=\"toc-entry toc-h2\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#How-fastpages-Converts-Notebooks-to-Blog-Posts\">How fastpages Converts Notebooks to Blog Posts </a></li>\n<li class=\"toc-entry toc-h2\"><a href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Resources-&amp;-Next-Steps\">Resources &amp; Next Steps </a></li>\n</ul>\n<!--\n#################################################\n### THIS FILE WAS AUTOGENERATED! DO NOT EDIT! ###\n#################################################\n# file to edit: _notebooks/2020-02-21-introducing-fastpages.ipynb\n-->\n\n<div class=\"container\" id=\"notebook-container\">\n        \n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p><img src=\"https://github.com/fastai/fastpages/raw/master/images/diagram.png\" alt=\"\" title=\"https://github.com/fastai/fastpages\"></p>\n<p>We are very pleased to announce the immediate availability of <a href=\"https://github.com/fastai/fastpages\">fastpages</a>. <code>fastpages</code> is a platform which allows you to create and host a blog for free, with no ads and many useful features, such as:</p>\n<ul>\n<li>Create posts containing code, outputs of code (which can be interactive), formatted text, etc directly from <a href=\"https://jupyter.org/\">Jupyter Notebooks</a>; for instance see this great <a href=\"https://drscotthawley.github.io/devblog3/2019/02/08/My-1st-NN-Part-3-Multi-Layer-and-Backprop.html\">example post</a> from Scott Hawley.  Notebook posts support features such as:<ul>\n<li>Interactive visualizations made with <a href=\"https://altair-viz.github.io/\">Altair</a> remain interactive.</li>\n<li>Hide or show cell input and output.</li>\n<li>Collapsable code cells that are either open or closed by default.</li>\n<li>Define the Title, Summary and other metadata via a special markdown cells</li>\n<li>Ability to add links to <a href=\"https://colab.research.google.com/\">Colab</a> and GitHub automatically.</li>\n</ul>\n</li>\n<li>Create posts, including formatting and images, directly from Microsoft Word documents.</li>\n<li>Create and edit <a href=\"https://guides.github.com/features/mastering-markdown/\">Markdown</a> posts entirely online using GitHub's built-in markdown editor.</li>\n<li>Embed Twitter cards and YouTube videos.</li>\n<li>Categorization of blog posts by user-supplied tags for discoverability.</li>\n<li>... and <a href=\"https://github.com/fastai/fastpages\">much more</a>\n</li>\n</ul>\n<p><a href=\"https://github.com/fastai/fastpages\">fastpages</a> relies on Github pages for hosting, and <a href=\"https://github.com/features/actions\">Github Actions</a> to automate the creation of your blog. The setup takes around three minutes, and does not require any technical knowledge or expertise. Due to built-in automation of fastpages, you don't have to fuss with conversion scripts.  All you have to do is save your Jupyter notebook, Word document or markdown file into a specified directory and the rest happens automatically. Infact, this blog post is written in a Jupyter notebook, which you can see with the \"View on GitHub\" link above.</p>\n<p><a href=\"https://www.fast.ai/\">fast.ai</a> have previously released a similar project called <a href=\"https://www.fast.ai/2020/01/16/fast_template/\">fast_template</a>, which is even easier to set up, but does not support automatic creation of posts from Microsoft Word or Jupyter notebooks, including many of the features outlined above.</p>\n<p><strong>Because <code>fastpages</code> is more flexible and extensible, we recommend using it where possible.</strong> <code>fast_template</code> may be a better option for getting folks blogging who have no technical expertise at all, and will only be creating posts using Github's integrated online editor.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Setting-Up-Fastpages\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Setting-Up-Fastpages\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Setting Up Fastpages<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Setting-Up-Fastpages\"> </a>\n</h2>\n<p><a href=\"https://github.com/fastai/fastpages#setup-instructions\">The setup process</a> of fastpages is automated with GitHub Actions, too!  Upon creating a repo from the fastpages template, a pull request will automatically be opened (after ~ 30 seconds) configuring your blog so it can start working.  The automated pull request will greet you with instructions like this:</p>\n<p><img src=\"https://i.imgur.com/JhkIip8.png\" alt=\"Imgur\"></p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>All you have to do is follow these instructions (in the  PR you receive) and your new blogging site will be up and running!</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Jupyter-Notebooks-&amp;-Fastpages\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Jupyter-Notebooks-&amp;-Fastpages\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Jupyter Notebooks &amp; Fastpages<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Jupyter-Notebooks-&amp;-Fastpages\"> </a>\n</h2>\n<p>In this post, we will cover special features that fastpages provides for Jupyter notebooks.  You can also write your blog posts with Word documents or markdown in fastpages, which contain many, but not all the same features.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Options-via-FrontMatter\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Options-via-FrontMatter\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Options via FrontMatter<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Options-via-FrontMatter\"> </a>\n</h3>\n<p>The first cell in your Jupyter Notebook or markdown blog post contains front matter.  Front matter is metadata that can turn on/off options in your Notebook.  It is formatted like this:</p>\n\n<pre><code># Title\n&gt; Awesome summary\n\n- toc:true- branch: master\n- badges: true\n- comments: true\n- author: Hamel Husain &amp; Jeremy Howard\n- categories: [fastpages, jupyter]</code></pre>\n<p><strong>All of the above settings are enabled in this post, so you can see what they look like!</strong></p>\n<ul>\n<li>the summary field (preceeded by <code>&gt;</code>) will be displayed under your title, and will also be used by social media to display as the description of your page.</li>\n<li>\n<code>toc</code>: setting this to <code>true</code> will automatically generate a table of contents</li>\n<li>\n<code>badges</code>: setting this to <code>true</code> will display Google Colab and GitHub links on your blog post.</li>\n<li>\n<code>comments</code>: setting this to <code>true</code> will enable comments.  See <a href=\"https://github.com/fastai/fastpages#enabling-comments\">these instructions</a> for more details.</li>\n<li>\n<code>author</code> this will display the authors names. </li>\n<li>\n<code>categories</code> will allow your post to be categorized on a \"Tags\" page, where readers can browse your post by categories.</li>\n</ul>\n<p><em>Markdown front matter is formatted similarly to notebooks.  The differences between the two can be <a href=\"https://github.com/fastai/fastpages#front-matter-related-options\">viewed on the fastpages README</a>.</em></p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Code-Folding\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Code-Folding\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Code Folding<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Code-Folding\"> </a>\n</h3>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>put a <code>#collapse-hide</code> flag at the top of any cell if you want to <strong>hide</strong> that cell by default, but give the reader the option to show it:</p>\n\n</div>\n</div>\n</div>\n    \n    \n<div class=\"cell border-box-sizing code_cell rendered\">\n<details class=\"description\">\n      <summary class=\"btn btn-sm\" data-open=\"Hide Code\" data-close=\"Show Code\"></summary>\n        <p></p>\n<div class=\"input\">\n\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"kn\">import</span> <span class=\"nn\">pandas</span> <span class=\"k\">as</span> <span class=\"nn\">pd</span>\n<span class=\"kn\">import</span> <span class=\"nn\">altair</span> <span class=\"k\">as</span> <span class=\"nn\">alt</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n    </details>\n</div>\n    \n\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>put a <code>#collapse-show</code> flag at the top of any cell if you want to <strong>show</strong> that cell by default, but give the reader the option to hide it:</p>\n\n</div>\n</div>\n</div>\n    \n    \n<div class=\"cell border-box-sizing code_cell rendered\">\n<details class=\"description\" open=\"\">\n      <summary class=\"btn btn-sm\" data-open=\"Hide Code\" data-close=\"Show Code\"></summary>\n        <p></p>\n<div class=\"input\">\n\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">cars</span> <span class=\"o\">=</span> <span class=\"s1\">'https://vega.github.io/vega-datasets/data/cars.json'</span>\n<span class=\"n\">movies</span> <span class=\"o\">=</span> <span class=\"s1\">'https://vega.github.io/vega-datasets/data/movies.json'</span>\n<span class=\"n\">sp500</span> <span class=\"o\">=</span> <span class=\"s1\">'https://vega.github.io/vega-datasets/data/sp500.csv'</span>\n<span class=\"n\">stocks</span> <span class=\"o\">=</span> <span class=\"s1\">'https://vega.github.io/vega-datasets/data/stocks.csv'</span>\n<span class=\"n\">flights</span> <span class=\"o\">=</span> <span class=\"s1\">'https://vega.github.io/vega-datasets/data/flights-5k.json'</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n    </details>\n</div>\n    \n\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>If you want to completely hide cells (not just collapse them), <a href=\"https://github.com/fastai/fastpages#hide-inputoutput-cells\">read these instructions</a>.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Interactive-Charts-With-Altair\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Interactive-Charts-With-Altair\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Interactive Charts With Altair<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Interactive-Charts-With-Altair\"> </a>\n</h3>\n<p>Interactive visualizations made with <a href=\"https://altair-viz.github.io/\">Altair</a> remain interactive!</p>\n<p>We leave this below cell unhidden so you can enjoy a preview of syntax highlighting in fastpages, which uses the <a href=\"https://draculatheme.com/\">Dracula theme</a>.</p>\n\n</div>\n</div>\n</div>\n    \n    \n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">label</span> <span class=\"o\">=</span> <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">selection_single</span><span class=\"p\">(</span>\n    <span class=\"n\">encodings</span><span class=\"o\">=</span><span class=\"p\">[</span><span class=\"s1\">'x'</span><span class=\"p\">],</span> <span class=\"c1\"># limit selection to x-axis value</span>\n    <span class=\"n\">on</span><span class=\"o\">=</span><span class=\"s1\">'mouseover'</span><span class=\"p\">,</span>  <span class=\"c1\"># select on mouseover events</span>\n    <span class=\"n\">nearest</span><span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>    <span class=\"c1\"># select data point nearest the cursor</span>\n    <span class=\"n\">empty</span><span class=\"o\">=</span><span class=\"s1\">'none'</span>     <span class=\"c1\"># empty selection includes no data points</span>\n<span class=\"p\">)</span>\n\n<span class=\"c1\"># define our base line chart of stock prices</span>\n<span class=\"n\">base</span> <span class=\"o\">=</span> <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">Chart</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">mark_line</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">encode</span><span class=\"p\">(</span>\n    <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">X</span><span class=\"p\">(</span><span class=\"s1\">'date:T'</span><span class=\"p\">),</span>\n    <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">Y</span><span class=\"p\">(</span><span class=\"s1\">'price:Q'</span><span class=\"p\">,</span> <span class=\"n\">scale</span><span class=\"o\">=</span><span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">Scale</span><span class=\"p\">(</span><span class=\"nb\">type</span><span class=\"o\">=</span><span class=\"s1\">'log'</span><span class=\"p\">)),</span>\n    <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">Color</span><span class=\"p\">(</span><span class=\"s1\">'symbol:N'</span><span class=\"p\">)</span>\n<span class=\"p\">)</span>\n\n<span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">layer</span><span class=\"p\">(</span>\n    <span class=\"n\">base</span><span class=\"p\">,</span> <span class=\"c1\"># base line chart</span>\n    \n    <span class=\"c1\"># add a rule mark to serve as a guide line</span>\n    <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">Chart</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">mark_rule</span><span class=\"p\">(</span><span class=\"n\">color</span><span class=\"o\">=</span><span class=\"s1\">'#aaa'</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">encode</span><span class=\"p\">(</span>\n        <span class=\"n\">x</span><span class=\"o\">=</span><span class=\"s1\">'date:T'</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">transform_filter</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"p\">),</span>\n    \n    <span class=\"c1\"># add circle marks for selected time points, hide unselected points</span>\n    <span class=\"n\">base</span><span class=\"o\">.</span><span class=\"n\">mark_circle</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">encode</span><span class=\"p\">(</span>\n        <span class=\"n\">opacity</span><span class=\"o\">=</span><span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">condition</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"p\">,</span> <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">),</span> <span class=\"n\">alt</span><span class=\"o\">.</span><span class=\"n\">value</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">))</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">add_selection</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"p\">),</span>\n\n    <span class=\"c1\"># add white stroked text to provide a legible background for labels</span>\n    <span class=\"n\">base</span><span class=\"o\">.</span><span class=\"n\">mark_text</span><span class=\"p\">(</span><span class=\"n\">align</span><span class=\"o\">=</span><span class=\"s1\">'left'</span><span class=\"p\">,</span> <span class=\"n\">dx</span><span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"n\">dy</span><span class=\"o\">=-</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"n\">stroke</span><span class=\"o\">=</span><span class=\"s1\">'white'</span><span class=\"p\">,</span> <span class=\"n\">strokeWidth</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">encode</span><span class=\"p\">(</span>\n        <span class=\"n\">text</span><span class=\"o\">=</span><span class=\"s1\">'price:Q'</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">transform_filter</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"p\">),</span>\n\n    <span class=\"c1\"># add text labels for stock prices</span>\n    <span class=\"n\">base</span><span class=\"o\">.</span><span class=\"n\">mark_text</span><span class=\"p\">(</span><span class=\"n\">align</span><span class=\"o\">=</span><span class=\"s1\">'left'</span><span class=\"p\">,</span> <span class=\"n\">dx</span><span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"n\">dy</span><span class=\"o\">=-</span><span class=\"mi\">5</span><span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">encode</span><span class=\"p\">(</span>\n        <span class=\"n\">text</span><span class=\"o\">=</span><span class=\"s1\">'price:Q'</span>\n    <span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">transform_filter</span><span class=\"p\">(</span><span class=\"n\">label</span><span class=\"p\">),</span>\n    \n    <span class=\"n\">data</span><span class=\"o\">=</span><span class=\"n\">stocks</span>\n<span class=\"p\">)</span><span class=\"o\">.</span><span class=\"n\">properties</span><span class=\"p\">(</span>\n    <span class=\"n\">width</span><span class=\"o\">=</span><span class=\"mi\">500</span><span class=\"p\">,</span>\n    <span class=\"n\">height</span><span class=\"o\">=</span><span class=\"mi\">400</span>\n<span class=\"p\">)</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n<div class=\"output_area\">\n\n\n<div class=\"output_html rendered_html output_subarea output_execute_result\">\n\n<div id=\"altair-viz-41d5fb7e7ab54499b1723c5de0b99685\"></div>\n<script type=\"text/javascript\">\n  (function(spec, embedOpt){\n    let outputDiv = document.currentScript.previousElementSibling;\n    if (outputDiv.id !== \"altair-viz-41d5fb7e7ab54499b1723c5de0b99685\") {\n      outputDiv = document.getElementById(\"altair-viz-41d5fb7e7ab54499b1723c5de0b99685\");\n    }\n    const paths = {\n      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n      \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.8.1?noext\",\n      \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n    };\n\n    function loadScript(lib) {\n      return new Promise(function(resolve, reject) {\n        var s = document.createElement('script');\n        s.src = paths[lib];\n        s.async = true;\n        s.onload = () => resolve(paths[lib]);\n        s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n        document.getElementsByTagName(\"head\")[0].appendChild(s);\n      });\n    }\n\n    function showError(err) {\n      outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n      throw err;\n    }\n\n    function displayChart(vegaEmbed) {\n      vegaEmbed(outputDiv, spec, embedOpt)\n        .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n    }\n\n    if(typeof define === \"function\" && define.amd) {\n      requirejs.config({paths});\n      require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n    } else if (typeof vegaEmbed === \"function\") {\n      displayChart(vegaEmbed);\n    } else {\n      loadScript(\"vega\")\n        .then(() => loadScript(\"vega-lite\"))\n        .then(() => loadScript(\"vega-embed\"))\n        .catch(showError)\n        .then(() => displayChart(vegaEmbed));\n    }\n  })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"symbol\"}, \"x\": {\"type\": \"temporal\", \"field\": \"date\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"price\", \"scale\": {\"type\": \"log\"}}}}, {\"mark\": {\"type\": \"rule\", \"color\": \"#aaa\"}, \"encoding\": {\"x\": {\"type\": \"temporal\", \"field\": \"date\"}}, \"transform\": [{\"filter\": {\"selection\": \"selector001\"}}]}, {\"mark\": \"circle\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"symbol\"}, \"opacity\": {\"condition\": {\"value\": 1, \"selection\": \"selector001\"}, \"value\": 0}, \"x\": {\"type\": \"temporal\", \"field\": \"date\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"price\", \"scale\": {\"type\": \"log\"}}}, \"selection\": {\"selector001\": {\"type\": \"single\", \"encodings\": [\"x\"], \"on\": \"mouseover\", \"nearest\": true, \"empty\": \"none\"}}}, {\"mark\": {\"type\": \"text\", \"align\": \"left\", \"dx\": 5, \"dy\": -5, \"stroke\": \"white\", \"strokeWidth\": 2}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"symbol\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"price\"}, \"x\": {\"type\": \"temporal\", \"field\": \"date\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"price\", \"scale\": {\"type\": \"log\"}}}, \"transform\": [{\"filter\": {\"selection\": \"selector001\"}}]}, {\"mark\": {\"type\": \"text\", \"align\": \"left\", \"dx\": 5, \"dy\": -5}, \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"symbol\"}, \"text\": {\"type\": \"quantitative\", \"field\": \"price\"}, \"x\": {\"type\": \"temporal\", \"field\": \"date\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"price\", \"scale\": {\"type\": \"log\"}}}, \"transform\": [{\"filter\": {\"selection\": \"selector001\"}}]}], \"data\": {\"url\": \"https://vega.github.io/vega-datasets/data/stocks.csv\"}, \"height\": 400, \"width\": 500, \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.8.1.json\"}, {\"mode\": \"vega-lite\"});\n</script>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n    \n\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Data-Tables\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Data-Tables\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Data Tables<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Data-Tables\"> </a>\n</h3>\n<p>You can display tables per the usual way in your blog:</p>\n\n</div>\n</div>\n</div>\n    \n    \n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"input\">\n\n<div class=\"inner_cell\">\n    <div class=\"input_area\">\n<div class=\" highlight hl-ipython3\"><pre><span></span><span class=\"n\">df</span><span class=\"p\">[[</span><span class=\"s1\">'Title'</span><span class=\"p\">,</span> <span class=\"s1\">'Worldwide_Gross'</span><span class=\"p\">,</span> \n    <span class=\"s1\">'Production_Budget'</span><span class=\"p\">,</span> <span class=\"s1\">'IMDB_Rating'</span><span class=\"p\">]]</span><span class=\"o\">.</span><span class=\"n\">head</span><span class=\"p\">()</span>\n</pre></div>\n\n    </div>\n</div>\n</div>\n\n<div class=\"output_wrapper\">\n<div class=\"output\">\n\n<div class=\"output_area\">\n\n\n<div class=\"output_html rendered_html output_subarea output_execute_result\">\n<div>\n<style scoped=\"\">\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Title</th>\n      <th>Worldwide_Gross</th>\n      <th>Production_Budget</th>\n      <th>IMDB_Rating</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>The Land Girls</td>\n      <td>146083.0</td>\n      <td>8000000.0</td>\n      <td>6.1</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>First Love, Last Rites</td>\n      <td>10876.0</td>\n      <td>300000.0</td>\n      <td>6.9</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>I Married a Strange Person</td>\n      <td>203134.0</td>\n      <td>250000.0</td>\n      <td>6.8</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>Let's Talk About Sex</td>\n      <td>373615.0</td>\n      <td>300000.0</td>\n      <td>NaN</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>Slam</td>\n      <td>1087521.0</td>\n      <td>1000000.0</td>\n      <td>3.4</td>\n    </tr>\n  </tbody>\n</table>\n</div>\n</div>\n\n</div>\n\n</div>\n</div>\n\n</div>\n    \n\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Other-Features\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Other-Features\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Other Features<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Other-Features\"> </a>\n</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"GitHub-Flavored-Emojis\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#GitHub-Flavored-Emojis\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>GitHub Flavored Emojis<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#GitHub-Flavored-Emojis\"> </a>\n</h3>\n<p>Typing <code>I give this post two :+1:!</code> will render this:</p>\n<p>I give this post two <img class=\"emoji\" title=\":+1:\" alt=\":+1:\" src=\"https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png\" height=\"20\" width=\"20\">!</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Images-w/Captions\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Images-w/Captions\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Images w/Captions<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Images-w/Captions\"> </a>\n</h3>\n<p>You can include markdown images with captions like this:</p>\n\n<pre><code>![](https://www.fast.ai/images/fastai_paper/show_batch.png \"Credit: https://www.fast.ai/2020/02/13/fastai-A-Layered-API-for-Deep-Learning/\")</code></pre>\n<p><img src=\"https://www.fast.ai/images/fastai_paper/show_batch.png\" alt=\"\" title=\"Credit: https://www.fast.ai/2020/02/13/fastai-A-Layered-API-for-Deep-Learning/\"></p>\n<p>Of course, the caption is optional.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Tweetcards\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Tweetcards\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Tweetcards<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Tweetcards\"> </a>\n</h3>\n<p>Typing <code>&gt; twitter: https://twitter.com/jakevdp/status/1204765621767901185?s=20</code> will render this:\n\n</p>\n<center>\n    <div class=\"jekyll-twitter-plugin\">\n<blockquote class=\"twitter-tweet\">\n<p lang=\"en\" dir=\"ltr\">Altair 4.0 is released! <a href=\"https://t.co/PCyrIOTcvv\">https://t.co/PCyrIOTcvv</a><br>Try it with:<br><br>  pip install -U altair<br><br>The full list of changes is at <a href=\"https://t.co/roXmzcsT58\">https://t.co/roXmzcsT58</a> ...read on for some highlights. <a href=\"https://t.co/vWJ0ZveKbZ\">pic.twitter.com/vWJ0ZveKbZ</a></p>\u2014 Jake VanderPlas (@jakevdp) <a href=\"https://twitter.com/jakevdp/status/1204765621767901185?ref_src=twsrc%5Etfw\">December 11, 2019</a>\n</blockquote>\n<script async=\"\" src=\"https://platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>\n</div>\n</center>\n\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Youtube-Videos\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Youtube-Videos\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Youtube Videos<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Youtube-Videos\"> </a>\n</h3>\n<p>Typing <code>&gt; youtube: https://youtu.be/XfoYk_Z5AkI</code> will render this:\n\n</p>\n<center class=\"youtube-iframe-wrapper\">\n    <iframe width=\"730\" height=\"315\" src=\"https://www.youtube.com/embed/XfoYk_Z5AkI\" frameborder=\"0\" allowfullscreen=\"\"></iframe>\n</center>\n\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h3 id=\"Boxes-/-Callouts\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Boxes-/-Callouts\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Boxes / Callouts<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Boxes-/-Callouts\"> </a>\n</h3>\n<p>Typing <code>&gt; Warning: There will be no second warning!</code> will render this:\n</p>\n<div class=\"flash flash-error\">\n    <svg class=\"octicon octicon-alert\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z\"></path></svg>\n    <strong>Warning: </strong>There will be no second warning!\n</div>\n<p>Typing <code>&gt; Important: Pay attention! It's important.</code> will render this:\n</p>\n<div class=\"flash flash-warn\">\n    <svg class=\"octicon octicon-zap\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M10.561 1.5a.016.016 0 00-.01.004L3.286 8.571A.25.25 0 003.462 9H6.75a.75.75 0 01.694 1.034l-1.713 4.188 6.982-6.793A.25.25 0 0012.538 7H9.25a.75.75 0 01-.683-1.06l2.008-4.418.003-.006a.02.02 0 00-.004-.009.02.02 0 00-.006-.006L10.56 1.5zM9.504.43a1.516 1.516 0 012.437 1.713L10.415 5.5h2.123c1.57 0 2.346 1.909 1.22 3.004l-7.34 7.142a1.25 1.25 0 01-.871.354h-.302a1.25 1.25 0 01-1.157-1.723L5.633 10.5H3.462c-1.57 0-2.346-1.909-1.22-3.004L9.503.429z\"></path></svg>\n    <strong>Important: </strong>Pay attention! It\u2019s important.\n</div>\n<p>Typing <code>&gt; Tip: This is my tip.</code> will render this:\n</p>\n<div class=\"flash flash-success\">\n    <svg class=\"octicon octicon-checklist\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M2.5 1.75a.25.25 0 01.25-.25h8.5a.25.25 0 01.25.25v7.736a.75.75 0 101.5 0V1.75A1.75 1.75 0 0011.25 0h-8.5A1.75 1.75 0 001 1.75v11.5c0 .966.784 1.75 1.75 1.75h3.17a.75.75 0 000-1.5H2.75a.25.25 0 01-.25-.25V1.75zM4.75 4a.75.75 0 000 1.5h4.5a.75.75 0 000-1.5h-4.5zM4 7.75A.75.75 0 014.75 7h2a.75.75 0 010 1.5h-2A.75.75 0 014 7.75zm11.774 3.537a.75.75 0 00-1.048-1.074L10.7 14.145 9.281 12.72a.75.75 0 00-1.062 1.058l1.943 1.95a.75.75 0 001.055.008l4.557-4.45z\"></path></svg>\n    <strong>Tip: </strong>This is my tip.\n</div>\n<p>Typing <code>&gt; Note: Take note of this.</code> will render this:\n</p>\n<div class=\"flash\">\n    <svg class=\"octicon octicon-info\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z\"></path></svg>\n    <strong>Note: </strong>Take note of this.\n</div>\n<p>Typing <code>&gt; Note: A doc link to [an example website: fast.ai](https://www.fast.ai/) should also work fine.</code> will render in the docs:\n</p>\n<div class=\"flash\">\n    <svg class=\"octicon octicon-info\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z\"></path></svg>\n    <strong>Note: </strong>A doc link to <a href=\"https://www.fast.ai/\">an example website: fast.ai</a> should also work fine.\n</div>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"More-Examples\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#More-Examples\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>More Examples<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#More-Examples\"> </a>\n</h2>\n<p>This <a href=\"https://fastpages.fast.ai/jupyter/2020/02/20/test.html\">tutorial</a> contains more examples of what you can do with notebooks.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"How-fastpages-Converts-Notebooks-to-Blog-Posts\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#How-fastpages-Converts-Notebooks-to-Blog-Posts\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>How fastpages Converts Notebooks to Blog Posts<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#How-fastpages-Converts-Notebooks-to-Blog-Posts\"> </a>\n</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>fastpages uses <a href=\"https://nbdev.fast.ai/index.html\">nbdev</a> to power the conversion process of Jupyter Notebooks to blog posts.  When you save a notebook into the <code>/_notebooks</code> folder of your repository, GitHub Actions applies <code>nbdev</code> against those notebooks automatically.  The same process occurs when you save Word documents or markdown files into the <code>_word</code> or <code>_posts</code> directory, respectively.</p>\n<p>We will discuss how GitHub Actions work in a follow up blog post.</p>\n\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<h2 id=\"Resources-&amp;-Next-Steps\">\n<a class=\"anchor\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Resources-&amp;-Next-Steps\" aria-hidden=\"true\"><span class=\"octicon octicon-link\"></span></a>Resources &amp; Next Steps<a class=\"anchor-link\" href=\"https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html#Resources-&amp;-Next-Steps\"> </a>\n</h2>\n</div>\n</div>\n</div>\n<div class=\"cell border-box-sizing text_cell rendered\">\n<div class=\"inner_cell\">\n<div class=\"text_cell_render border-box-sizing rendered_html\">\n<p>We highly encourage you to start blogging with <code>fastpages</code>!  Some resources that may be helpful:</p>\n<ul>\n<li>\n<a href=\"https://github.com/fastai/fastpages\">fastpages repo</a> - this is where you can go to create your own fastpages blog!</li>\n<li>Fastai forums - <a href=\"https://forums.fast.ai/c/fastai-users/nbdev/\">nbdev &amp; blogging category</a>.  You can ask questions about fastpages here, as well as suggest new features.</li>\n<li>\n<a href=\"https://github.com/fastai/nbdev\">nbdev</a>: this project powers the conversion of Jupyter notebooks to blog posts.</li>\n</ul>\n<p>If you end up writing a blog post using fastpages, please let us know on Twitter: <a href=\"https://twitter.com/jeremyphoward\">@jeremyphoward</a>, <a href=\"https://twitter.com/hamelhusain\">@HamelHusain</a>.</p>\n\n</div>\n</div>\n</div>\n</div>",
                        "value": "Setting Up Fastpages Jupyter Notebooks & Fastpages Options via FrontMatter Code Folding Interactive Charts With Altair Data Tables Other Features GitHub Flavored Emojis Images w/Captions Tweetcards Youtube Videos Boxes / Callouts More Examples How fastpages Converts Notebooks to Blog Posts Resources & Next Steps\n\nWe are very pleased to announce the immediate availability of fastpages. fastpages is a platform which allows you to create and host a blog for free, with no ads and many useful features, such as: Create posts containing code, outputs of code (which can be interactive), formatted text, etc directly from Jupyter Notebooks; for instance see this great example post from Scott Hawley. Notebook posts support features such as: Interactive visualizations made with Altair remain interactive. Hide or show cell input and output. Collapsable code cells that are either open or closed by default. Define the Title, Summary and other metadata via a special markdown cells Ability to add links to Colab and GitHub automatically. Create posts, including formatting and images, directly from Microsoft Word documents. Create and edit Markdown posts entirely online using GitHub's built-in markdown editor. Embed Twitter cards and YouTube videos. Categorization of blog posts by user-supplied tags for discoverability. ... and much more\nfastpages relies on Github pages for hosting, and Github Actions to automate the creation of your blog. The setup takes around three minutes, and does not require any technical knowledge or expertise. Due to built-in automation of fastpages, you don't have to fuss with conversion scripts. All you have to do is save your Jupyter notebook, Word document or markdown file into a specified directory and the rest happens automatically. Infact, this blog post is written in a Jupyter notebook, which you can see with the \"View on GitHub\" link above.\nfast.ai have previously released a similar project called fast_template, which is even easier to set up, but does not support automatic creation of posts from Microsoft Word or Jupyter notebooks, including many of the features outlined above.\nBecause fastpages is more flexible and extensible, we recommend using it where possible. fast_template may be a better option for getting folks blogging who have no technical expertise at all, and will only be creating posts using Github's integrated online editor. Setting Up Fastpages\nThe setup process of fastpages is automated with GitHub Actions, too! Upon creating a repo from the fastpages template, a pull request will automatically be opened (after ~ 30 seconds) configuring your blog so it can start working. The automated pull request will greet you with instructions like this:\nImgur\nAll you have to do is follow these instructions (in the PR you receive) and your new blogging site will be up and running! Jupyter Notebooks & Fastpages\nIn this post, we will cover special features that fastpages provides for Jupyter notebooks. You can also write your blog posts with Word documents or markdown in fastpages, which contain many, but not all the same features. Options via FrontMatter\nThe first cell in your Jupyter Notebook or markdown blog post contains front matter. Front matter is metadata that can turn on/off options in your Notebook. It is formatted like this: # Title > Awesome summary - toc:true- branch: master - badges: true - comments: true - author: Hamel Husain & Jeremy Howard - categories: [fastpages, jupyter]\nAll of the above settings are enabled in this post, so you can see what they look like! the summary field (preceeded by >) will be displayed under your title, and will also be used by social media to display as the description of your page. toc: setting this to true will automatically generate a table of contents badges: setting this to true will display Google Colab and GitHub links on your blog post. comments: setting this to true will enable comments. See these instructions for more details. author this will display the authors names. categories will allow your post to be categorized on a \"Tags\" page, where readers can browse your post by categories.\nMarkdown front matter is formatted similarly to notebooks. The differences between the two can be viewed on the fastpages README. Code Folding\nput a #collapse-hide flag at the top of any cell if you want to hide that cell by default, but give the reader the option to show it:\nimport pandas as pd import altair as alt\nput a #collapse-show flag at the top of any cell if you want to show that cell by default, but give the reader the option to hide it:\ncars = 'https://vega.github.io/vega-datasets/data/cars.json' movies = 'https://vega.github.io/vega-datasets/data/movies.json' sp500 = 'https://vega.github.io/vega-datasets/data/sp500.csv' stocks = 'https://vega.github.io/vega-datasets/data/stocks.csv' flights = 'https://vega.github.io/vega-datasets/data/flights-5k.json'\nIf you want to completely hide cells (not just collapse them), read these instructions. Interactive Charts With Altair\nInteractive visualizations made with Altair remain interactive!\nWe leave this below cell unhidden so you can enjoy a preview of syntax highlighting in fastpages, which uses the Dracula theme. label = alt.selection_single( encodings=['x'], # limit selection to x-axis value on='mouseover', # select on mouseover events nearest=True, # select data point nearest the cursor empty='none' # empty selection includes no data points ) # define our base line chart of stock prices base = alt.Chart().mark_line().encode( alt.X('date:T'), alt.Y('price:Q', scale=alt.Scale(type='log')), alt.Color('symbol:N') ) alt.layer( base, # base line chart # add a rule mark to serve as a guide line alt.Chart().mark_rule(color='#aaa').encode( x='date:T' ).transform_filter(label), # add circle marks for selected time points, hide unselected points base.mark_circle().encode( opacity=alt.condition(label, alt.value(1), alt.value(0)) ).add_selection(label), # add white stroked text to provide a legible background for labels base.mark_text(align='left', dx=5, dy=-5, stroke='white', strokeWidth=2).encode( text='price:Q' ).transform_filter(label), # add text labels for stock prices base.mark_text(align='left', dx=5, dy=-5).encode( text='price:Q' ).transform_filter(label), data=stocks ).properties( width=500, height=400 ) Data Tables\nYou can display tables per the usual way in your blog: df[['Title', 'Worldwide_Gross', 'Production_Budget', 'IMDB_Rating']].head() Title Worldwide_Gross Production_Budget IMDB_Rating 0 The Land Girls 146083.0 8000000.0 6.1 1 First Love, Last Rites 10876.0 300000.0 6.9 2 I Married a Strange Person 203134.0 250000.0 6.8 3 Let's Talk About Sex 373615.0 300000.0 NaN 4 Slam 1087521.0 1000000.0 3.4 Other Features GitHub Flavored Emojis\nTyping I give this post two :+1:! will render this:\nI give this post two :+1: ! Images w/Captions\nYou can include markdown images with captions like this: ![](https://www.fast.ai/images/fastai_paper/show_batch.png \"Credit: https://www.fast.ai/2020/02/13/fastai-A-Layered-API-for-Deep-Learning/\")\n\nOf course, the caption is optional. Tweetcards\nTyping > twitter: https://twitter.com/jakevdp/status/1204765621767901185?s=20 will render this:\nAltair 4.0 is released! https://t.co/PCyrIOTcvv\nTry it with:\n\npip install -U altair\n\nThe full list of changes is at https://t.co/roXmzcsT58 ...read on for some highlights. pic.twitter.com/vWJ0ZveKbZ\u2014 Jake VanderPlas (@jakevdp) December 11, 2019 Youtube Videos\nTyping > youtube: https://youtu.be/XfoYk_Z5AkI will render this: Boxes / Callouts\nTyping > Warning: There will be no second warning! will render this: Warning: There will be no second warning!\nTyping > Important: Pay attention! It's important. will render this: Important: Pay attention! It\u2019s important.\nTyping > Tip: This is my tip. will render this: Tip: This is my tip.\nTyping > Note: Take note of this. will render this: Note: Take note of this.\nTyping > Note: A doc link to [an example website: fast.ai](https://www.fast.ai/) should also work fine. will render in the docs: Note: A doc link to an example website: fast.ai should also work fine. More Examples\nThis tutorial contains more examples of what you can do with notebooks. How fastpages Converts Notebooks to Blog Posts\nfastpages uses nbdev to power the conversion process of Jupyter Notebooks to blog posts. When you save a notebook into the /_notebooks folder of your repository, GitHub Actions applies nbdev against those notebooks automatically. The same process occurs when you save Word documents or markdown files into the _word or _posts directory, respectively.\nWe will discuss how GitHub Actions work in a follow up blog post. Resources & Next Steps\nWe highly encourage you to start blogging with fastpages! Some resources that may be helpful: fastpages repo - this is where you can go to create your own fastpages blog! Fastai forums - nbdev & blogging category. You can ask questions about fastpages here, as well as suggest new features. nbdev: this project powers the conversion of Jupyter notebooks to blog posts.\nIf you end up writing a blog post using fastpages, please let us know on Twitter: @jeremyphoward, @HamelHusain.",
                        "lang": "en"
                    }
                ],
                "author": [
                    {
                        "type": [
                            "h-card"
                        ],
                        "properties": {
                            "name": [
                                "Jeremy Howard & Hamel Husain"
                            ]
                        },
                        "lang": "en",
                        "value": "Jeremy Howard & Hamel Husain"
                    }
                ]
            },
            "lang": "en"
        },
        {
            "type": [
                "h-card"
            ],
            "properties": {
                "url": [
                    "https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html"
                ],
                "name": [
                    "Subscribe\nAn easy to use blogging platform with support for Jupyter Notebooks."
                ]
            },
            "lang": "en"
        }
    ],
    "rels": {
        "canonical": [
            "https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html"
        ],
        "stylesheet": [
            "https://fastpages.fast.ai/assets/css/style.css",
            "https://cdnjs.cloudflare.com/ajax/libs/Primer/15.2.0/primer.css",
            "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"
        ],
        "alternate": [
            "https://fastpages.fast.ai/feed.xml"
        ],
        "shortcut": [
            "https://fastpages.fast.ai/images/favicon.ico"
        ],
        "icon": [
            "https://fastpages.fast.ai/images/favicon.ico"
        ],
        "author": [
            "https://fastpages.fast.ai/"
        ],
        "me": [
            "https://github.com/fastai",
            "https://twitter.com/fastdotai"
        ]
    },
    "rel-urls": {
        "https://fastpages.fast.ai/fastpages/jupyter/2020/02/21/introducing-fastpages.html": {
            "rels": [
                "canonical"
            ]
        },
        "https://fastpages.fast.ai/assets/css/style.css": {
            "rels": [
                "stylesheet"
            ]
        },
        "https://fastpages.fast.ai/feed.xml": {
            "title": "fastpages",
            "type": "application/atom+xml",
            "rels": [
                "alternate"
            ]
        },
        "https://fastpages.fast.ai/images/favicon.ico": {
            "type": "image/x-icon",
            "rels": [
                "icon",
                "shortcut"
            ]
        },
        "https://cdnjs.cloudflare.com/ajax/libs/Primer/15.2.0/primer.css": {
            "rels": [
                "stylesheet"
            ]
        },
        "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css": {
            "rels": [
                "stylesheet"
            ]
        },
        "https://fastpages.fast.ai/": {
            "text": "fastpages",
            "rels": [
                "author"
            ]
        },
        "https://github.com/fastai": {
            "title": "fastai",
            "rels": [
                "me"
            ]
        },
        "https://twitter.com/fastdotai": {
            "title": "fastdotai",
            "rels": [
                "me"
            ]
        }
    },
    "debug": {
        "package": "https://packagist.org/packages/mf2/mf2",
        "source": "https://github.com/indieweb/php-mf2",
        "version": "v0.5.0",
        "note": [
            "This output was generated from the php-mf2 library available at https://github.com/indieweb/php-mf2",
            "Please file any issues with the parser at https://github.com/indieweb/php-mf2/issues",
            "Using the Masterminds HTML5 parser"
        ]
    }
}