{
  "type": "root",
  "options": {
    "encoding": "UTF-8",
    "location": 1,
    "options": {
    },
    "abbrev_defs": {
    },
    "abbrev_attr": {
    }
  },
  "children": [
    {
      "type": "hr",
      "options": {
        "location": 1
      }
    },
    {
      "type": "p",
      "options": {
        "location": 2
      },
      "children": [
        {
          "type": "text",
          "value": "title: ",
          "options": {
            "location": 2
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 2
          }
        },
        {
          "type": "text",
          "value": "GitHub, Markdown, and Jekyll",
          "options": {
            "location": 2
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 2
          }
        },
        {
          "type": "text",
          "value": "\nteaching: 10\nexercises: 0\nquestions:\n- ",
          "options": {
            "location": 2
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 6
          }
        },
        {
          "type": "text",
          "value": "How are pages published?",
          "options": {
            "location": 6
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 6
          }
        },
        {
          "type": "text",
          "value": "\nobjectives:\n- ",
          "options": {
            "location": 6
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 8
          }
        },
        {
          "type": "text",
          "value": "Explain how GitHub Pages produce web sites from Git repositories.",
          "options": {
            "location": 8
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 8
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 8
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 9
          }
        },
        {
          "type": "text",
          "value": "Explain Jekyll",
          "options": {
            "location": 9
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 9
          }
        },
        {
          "type": "text",
          "value": "s formatting rules.",
          "options": {
            "location": 9
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 9
          }
        },
        {
          "type": "text",
          "value": "\nkeypoints:\n- ",
          "options": {
            "location": 9
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 11
          }
        },
        {
          "type": "text",
          "value": "Lessons are stored in Git repositories on GitHub.",
          "options": {
            "location": 11
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 11
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 11
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 12
          }
        },
        {
          "type": "text",
          "value": "Lessons are written in Markdown.",
          "options": {
            "location": 12
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 12
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 12
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 13
          }
        },
        {
          "type": "text",
          "value": "Jekyll translates the files in the gh-pages branch into HTML for viewing.",
          "options": {
            "location": 13
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 13
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 13
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 14
          }
        },
        {
          "type": "text",
          "value": "The site",
          "options": {
            "location": 14
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 14
          }
        },
        {
          "type": "text",
          "value": "s configuration is stored in _config.yml.",
          "options": {
            "location": 14
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 14
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 14
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 15
          }
        },
        {
          "type": "text",
          "value": "Each page",
          "options": {
            "location": 15
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 15
          }
        },
        {
          "type": "text",
          "value": "s configuration is stored at the top of that page.",
          "options": {
            "location": 15
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 15
          }
        },
        {
          "type": "text",
          "value": "\n- ",
          "options": {
            "location": 15
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 16
          }
        },
        {
          "type": "text",
          "value": "Groups of files are stored in collection directories whose names begin with an underscore.",
          "options": {
            "location": 16
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 16
          }
        },
        {
          "type": "text",
          "value": "\n",
          "options": {
            "location": 16
          }
        },
        {
          "type": "typographic_sym",
          "value": "mdash",
          "options": {
            "location": 17
          }
        },
        {
          "type": "text",
          "value": "\nThis episode describes the tools we use to build and manage lessons.\nThese simplify many tasks, but make other things more complicated.",
          "options": {
            "location": 17
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Repositories on GitHub",
        "location": 21
      },
      "children": [
        {
          "type": "text",
          "value": "Repositories on GitHub",
          "options": {
            "location": 21
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 23
      },
      "children": [
        {
          "type": "text",
          "value": "Our lessons are stored in Git repositories (or ",
          "options": {
            "location": 23
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 23
          }
        },
        {
          "type": "text",
          "value": "repos",
          "options": {
            "location": 23
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 23
          }
        },
        {
          "type": "text",
          "value": ") on GitHub.\nWe use the term ",
          "options": {
            "location": 23
          }
        },
        {
          "type": "em",
          "options": {
            "location": 24
          },
          "children": [
            {
              "type": "text",
              "value": "fork",
              "options": {
                "location": 24
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " to mean ",
          "options": {
            "location": 24
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 24
          }
        },
        {
          "type": "text",
          "value": "a copy of a GitHub-hosted repo that is also hosted on GitHub",
          "options": {
            "location": 24
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 24
          }
        },
        {
          "type": "text",
          "value": "\nand the term ",
          "options": {
            "location": 24
          }
        },
        {
          "type": "em",
          "options": {
            "location": 25
          },
          "children": [
            {
              "type": "text",
              "value": "clone",
              "options": {
                "location": 25
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " to mean ",
          "options": {
            "location": 25
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 25
          }
        },
        {
          "type": "text",
          "value": "a copy of a GitHub-hosted repo that",
          "options": {
            "location": 25
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 25
          }
        },
        {
          "type": "text",
          "value": "s located on someone else",
          "options": {
            "location": 25
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 25
          }
        },
        {
          "type": "text",
          "value": "s machine",
          "options": {
            "location": 25
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 25
          }
        },
        {
          "type": "text",
          "value": ".\nIn both cases,\nthe duplicate has a reference that points to the original repo.",
          "options": {
            "location": 25
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 29
      },
      "children": [
        {
          "type": "text",
          "value": "In an ideal world,\nwe would put all of the common files used by our lessons\n(such as the CSS style files and the image files with project logos)\nin a template repo.\nThe master copy of each lesson would be a fork of that repo,\nand each author",
          "options": {
            "location": 29
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 34
          }
        },
        {
          "type": "text",
          "value": "s working copy would be a fork of that master:",
          "options": {
            "location": 34
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 36
      },
      "children": [
        {
          "type": "img",
          "attr": {
            "src": "{{ site.root }}/fig/forking.svg",
            "alt": "Forking Repositories"
          },
          "options": {
            "location": 36,
            "ial": null
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 38
      },
      "children": [
        {
          "type": "text",
          "value": "However, GitHub only allows a user to have one fork of any particular repo.\nThis creates a problem for us because an author may be involved in writing several lessons,\neach with its own repo.\nWe therefore use ",
          "options": {
            "location": 38
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "https://import.github.com/"
          },
          "options": {
            "location": 41,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "GitHub Importer",
              "options": {
                "location": 41
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " to create new lessons.\nAfter the lesson has been created,\nwe manually add the ",
          "options": {
            "location": 41
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.template_repo }}"
          },
          "options": {
            "location": 43,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "template repository",
              "options": {
                "location": 43
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " as a remote called ",
          "options": {
            "location": 43
          }
        },
        {
          "type": "codespan",
          "value": "template",
          "options": {
            "location": 43
          }
        },
        {
          "type": "text",
          "value": "\nto update the lesson when the template changes.",
          "options": {
            "location": 43
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 46
      },
      "children": [
        {
          "type": "img",
          "attr": {
            "src": "{{ site.root }}/fig/repository-links.svg",
            "alt": "Repository Links"
          },
          "options": {
            "location": 46,
            "ial": null
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "GitHub Pages",
        "location": 48
      },
      "children": [
        {
          "type": "text",
          "value": "GitHub Pages",
          "options": {
            "location": 48
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 50
      },
      "children": [
        {
          "type": "text",
          "value": "If a repository has a branch called ",
          "options": {
            "location": 50
          }
        },
        {
          "type": "codespan",
          "value": "gh-pages",
          "options": {
            "location": 50
          }
        },
        {
          "type": "text",
          "value": " (short for ",
          "options": {
            "location": 50
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 50
          }
        },
        {
          "type": "text",
          "value": "GitHub Pages",
          "options": {
            "location": 50
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 50
          }
        },
        {
          "type": "text",
          "value": "),\nGitHub publishes its content to create a website for the repository.\nIf the repository",
          "options": {
            "location": 50
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 52
          }
        },
        {
          "type": "text",
          "value": "s URL is ",
          "options": {
            "location": 52
          }
        },
        {
          "type": "codespan",
          "value": "https://github.com/USERNAME/REPOSITORY",
          "options": {
            "location": 52
          }
        },
        {
          "type": "text",
          "value": ",\nthe website is ",
          "options": {
            "location": 52
          }
        },
        {
          "type": "codespan",
          "value": "https://USERNAME.github.io/REPOSITORY",
          "options": {
            "location": 53
          }
        },
        {
          "type": "text",
          "value": ".",
          "options": {
            "location": 53
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 55
      },
      "children": [
        {
          "type": "text",
          "value": "GitHub Pages sites can include static HTML pages,\nwhich are published as-is,\nor they can use ",
          "options": {
            "location": 55
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 57,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 57
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " as described below\nto compile HTML and/or Markdown pages with embedded directives\nto create the pages for display.",
          "options": {
            "location": 57
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "blockquote",
      "attr": {
        "class": "callout"
      },
      "options": {
        "location": 61,
        "ial": {
          "class": "callout"
        }
      },
      "children": [
        {
          "type": "header",
          "options": {
            "level": 2,
            "raw_text": "Why Doesn't My Site Appear?",
            "location": 61
          },
          "children": [
            {
              "type": "text",
              "value": "Why Doesn",
              "options": {
                "location": 61
              }
            },
            {
              "type": "smart_quote",
              "value": "rsquo",
              "options": {
                "location": 61
              }
            },
            {
              "type": "text",
              "value": "t My Site Appear?",
              "options": {
                "location": 61
              }
            }
          ]
        },
        {
          "type": "blank",
          "value": "\n"
        },
        {
          "type": "p",
          "options": {
            "location": 63
          },
          "children": [
            {
              "type": "text",
              "value": "If the root directory of a repository contains a file called ",
              "options": {
                "location": 63
              }
            },
            {
              "type": "codespan",
              "value": ".nojekyll",
              "options": {
                "location": 63
              }
            },
            {
              "type": "text",
              "value": ",\nGitHub will ",
              "options": {
                "location": 63
              }
            },
            {
              "type": "em",
              "options": {
                "location": 64
              },
              "children": [
                {
                  "type": "text",
                  "value": "not",
                  "options": {
                    "location": 64
                  }
                }
              ]
            },
            {
              "type": "text",
              "value": " generate a website for that repository",
              "options": {
                "location": 64
              }
            },
            {
              "type": "smart_quote",
              "value": "rsquo",
              "options": {
                "location": 64
              }
            },
            {
              "type": "text",
              "value": "s ",
              "options": {
                "location": 64
              }
            },
            {
              "type": "codespan",
              "value": "gh-pages",
              "options": {
                "location": 64
              }
            },
            {
              "type": "text",
              "value": " branch.",
              "options": {
                "location": 64
              }
            }
          ]
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 67
      },
      "children": [
        {
          "type": "text",
          "value": "We write lessons in Markdown because it",
          "options": {
            "location": 67
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 67
          }
        },
        {
          "type": "text",
          "value": "s simple to learn\nand isn",
          "options": {
            "location": 67
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 68
          }
        },
        {
          "type": "text",
          "value": "t tied to any specific language.\n(The ReStructured Text format popular in the Python world,\nfor example,\nis a complete unknown to R programmers.)\nIf authors want to write lessons in something else,\nsuch as ",
          "options": {
            "location": 68
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://rmarkdown.rstudio.com/"
          },
          "options": {
            "location": 73,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "R Markdown",
              "options": {
                "location": 73
              }
            }
          ]
        },
        {
          "type": "text",
          "value": ",\nthey must generate HTML or Markdown that ",
          "options": {
            "location": 73
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 74,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 74
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " can process\nand commit that to the repository.\nThe ",
          "options": {
            "location": 74
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.root }}/02-formatting/"
          },
          "options": {
            "location": 76,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "next episode",
              "options": {
                "location": 76
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " describes the Markdown we use.",
          "options": {
            "location": 76
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "blockquote",
      "attr": {
        "class": "callout"
      },
      "options": {
        "location": 78,
        "ial": {
          "class": "callout"
        }
      },
      "children": [
        {
          "type": "header",
          "options": {
            "level": 2,
            "raw_text": "Teaching Tools",
            "location": 78
          },
          "children": [
            {
              "type": "text",
              "value": "Teaching Tools",
              "options": {
                "location": 78
              }
            }
          ]
        },
        {
          "type": "blank",
          "value": "\n"
        },
        {
          "type": "p",
          "options": {
            "location": 80
          },
          "children": [
            {
              "type": "text",
              "value": "We do ",
              "options": {
                "location": 80
              }
            },
            {
              "type": "em",
              "options": {
                "location": 80
              },
              "children": [
                {
                  "type": "text",
                  "value": "not",
                  "options": {
                    "location": 80
                  }
                }
              ]
            },
            {
              "type": "text",
              "value": " prescribe what tools instructors should use when actually teaching:\nthe ",
              "options": {
                "location": 80
              }
            },
            {
              "type": "a",
              "attr": {
                "href": "https://jupyter.org/"
              },
              "options": {
                "location": 81,
                "ial": null
              },
              "children": [
                {
                  "type": "text",
                  "value": "Jupyter Notebook",
                  "options": {
                    "location": 81
                  }
                }
              ]
            },
            {
              "type": "text",
              "value": ",\n",
              "options": {
                "location": 81
              }
            },
            {
              "type": "a",
              "attr": {
                "href": "https://www.rstudio.com/"
              },
              "options": {
                "location": 82,
                "ial": null
              },
              "children": [
                {
                  "type": "text",
                  "value": "RStudio",
                  "options": {
                    "location": 82
                  }
                }
              ]
            },
            {
              "type": "text",
              "value": ",\nand the good ol",
              "options": {
                "location": 82
              }
            },
            {
              "type": "smart_quote",
              "value": "rsquo",
              "options": {
                "location": 83
              }
            },
            {
              "type": "text",
              "value": " command line are equally welcome up on stage.\nAll we specify is the format of the lesson notes.",
              "options": {
                "location": 83
              }
            }
          ]
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Jekyll",
        "location": 87
      },
      "children": [
        {
          "type": "text",
          "value": "Jekyll",
          "options": {
            "location": 87
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 89
      },
      "children": [
        {
          "type": "text",
          "value": "GitHub uses ",
          "options": {
            "location": 89
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 89,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 89
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " to turn Markdown into HTML.\nIt looks for text files that begin with a header formatted like this:",
          "options": {
            "location": 89
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "codeblock",
      "attr": {
        "class": "source"
      },
      "value": "---\nvariable: value\nother_variable: other_value\n---\n...stuff in the page...\n",
      "options": {
        "location": 92,
        "ial": {
          "class": "source"
        }
      }
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 101
      },
      "children": [
        {
          "type": "text",
          "value": "and inserts the values of those variables into the page when formatting it.\nThe three dashes that start the header ",
          "options": {
            "location": 101
          }
        },
        {
          "type": "em",
          "options": {
            "location": 102
          },
          "children": [
            {
              "type": "text",
              "value": "must",
              "options": {
                "location": 102
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " be the first three characters in the file:\neven a single space before them will make ",
          "options": {
            "location": 102
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 103,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 103
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " ignore the file.",
          "options": {
            "location": 103
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 105
      },
      "children": [
        {
          "type": "text",
          "value": "The header",
          "options": {
            "location": 105
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 105
          }
        },
        {
          "type": "text",
          "value": "s content must be formatted as ",
          "options": {
            "location": 105
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://yaml.org/"
          },
          "options": {
            "location": 105,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "YAML",
              "options": {
                "location": 105
              }
            }
          ]
        },
        {
          "type": "text",
          "value": ",\nand may contain Booleans, numbers, character strings, lists, and dictionaries of name/value pairs.\nValues from the header are referred to in the page as ",
          "options": {
            "location": 105
          }
        },
        {
          "type": "codespan",
          "value": "page.variable",
          "options": {
            "location": 107
          }
        },
        {
          "type": "text",
          "value": ".\nFor example,\nthis page:",
          "options": {
            "location": 107
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "codeblock",
      "value": "---\nname: Science\n---\nToday we are going to study {{page.name}}.\n",
      "options": {
        "location": 111
      }
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 118
      },
      "children": [
        {
          "type": "text",
          "value": "is translated into:",
          "options": {
            "location": 118
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "codeblock",
      "value": "<html>\n<body>\n<p>Today we are going to study Science.</p>\n</body>\n</html>\n",
      "options": {
        "location": 120
      }
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "blockquote",
      "attr": {
        "class": "callout"
      },
      "options": {
        "location": 128,
        "ial": {
          "class": "callout"
        }
      },
      "children": [
        {
          "type": "header",
          "options": {
            "level": 2,
            "raw_text": "Back in the Day...",
            "location": 128
          },
          "children": [
            {
              "type": "text",
              "value": "Back in the Day",
              "options": {
                "location": 128
              }
            },
            {
              "type": "typographic_sym",
              "value": "hellip",
              "options": {
                "location": 128
              }
            }
          ]
        },
        {
          "type": "blank",
          "value": "\n"
        },
        {
          "type": "p",
          "options": {
            "location": 130
          },
          "children": [
            {
              "type": "text",
              "value": "The previous version of our template did not rely on Jekyll,\nbut instead required authors to build HTML on their desktops\nand commit that to the lesson repository",
              "options": {
                "location": 130
              }
            },
            {
              "type": "smart_quote",
              "value": "rsquo",
              "options": {
                "location": 132
              }
            },
            {
              "type": "text",
              "value": "s ",
              "options": {
                "location": 132
              }
            },
            {
              "type": "codespan",
              "value": "gh-pages",
              "options": {
                "location": 132
              }
            },
            {
              "type": "text",
              "value": " branch.\nThis allowed us to use whatever mix of tools we wanted for creating HTML (e.g., ",
              "options": {
                "location": 132
              }
            },
            {
              "type": "a",
              "attr": {
                "href": "https://pandoc.org/"
              },
              "options": {
                "location": 133,
                "ial": null
              },
              "children": [
                {
                  "type": "text",
                  "value": "Pandoc",
                  "options": {
                    "location": 133
                  }
                }
              ]
            },
            {
              "type": "text",
              "value": "),\nbut complicated the common case for the sake of uncommon cases,\nand didn",
              "options": {
                "location": 133
              }
            },
            {
              "type": "smart_quote",
              "value": "rsquo",
              "options": {
                "location": 135
              }
            },
            {
              "type": "text",
              "value": "t model the workflow we want learners to use.",
              "options": {
                "location": 135
              }
            }
          ]
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Configuration",
        "location": 138
      },
      "children": [
        {
          "type": "text",
          "value": "Configuration",
          "options": {
            "location": 138
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 140
      },
      "children": [
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 140,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 140
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " also reads values from a configuration file called ",
          "options": {
            "location": 140
          }
        },
        {
          "type": "codespan",
          "value": "_config.yml",
          "options": {
            "location": 140
          }
        },
        {
          "type": "text",
          "value": ",\nwhich are referred to in pages as ",
          "options": {
            "location": 140
          }
        },
        {
          "type": "codespan",
          "value": "site.variable",
          "options": {
            "location": 141
          }
        },
        {
          "type": "text",
          "value": ".\nThe ",
          "options": {
            "location": 141
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.template_repo }}"
          },
          "options": {
            "location": 142,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "lesson template",
              "options": {
                "location": 142
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " does ",
          "options": {
            "location": 142
          }
        },
        {
          "type": "em",
          "options": {
            "location": 142
          },
          "children": [
            {
              "type": "text",
              "value": "not",
              "options": {
                "location": 142
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " include ",
          "options": {
            "location": 142
          }
        },
        {
          "type": "codespan",
          "value": "_config.yml",
          "options": {
            "location": 142
          }
        },
        {
          "type": "text",
          "value": ",\nsince each lesson will change some of its value,\nwhich would result in merge collisions each time the lesson was updated from the template.\nInstead,\nthe ",
          "options": {
            "location": 142
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.template_repo }}"
          },
          "options": {
            "location": 146,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "template",
              "options": {
                "location": 146
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " contains a script called ",
          "options": {
            "location": 146
          }
        },
        {
          "type": "codespan",
          "value": "bin/initialize",
          "options": {
            "location": 146
          }
        },
        {
          "type": "text",
          "value": "\nwhich should be run ",
          "options": {
            "location": 146
          }
        },
        {
          "type": "em",
          "options": {
            "location": 147
          },
          "children": [
            {
              "type": "text",
              "value": "once",
              "options": {
                "location": 147
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " to create an initial ",
          "options": {
            "location": 147
          }
        },
        {
          "type": "codespan",
          "value": "_config.yml",
          "options": {
            "location": 147
          }
        },
        {
          "type": "text",
          "value": " file.\nThe author should then edit the values in the top half of the file.",
          "options": {
            "location": 147
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 150
      },
      "children": [
        {
          "type": "text",
          "value": "The ",
          "options": {
            "location": 150
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.template_repo }}"
          },
          "options": {
            "location": 150,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "template",
              "options": {
                "location": 150
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " also contains ",
          "options": {
            "location": 150
          }
        },
        {
          "type": "codespan",
          "value": "_config_dev.yml",
          "options": {
            "location": 150
          }
        },
        {
          "type": "text",
          "value": ",\nwhich overrides some settings for use during desktop development.\nThe Makefile that comes with the ",
          "options": {
            "location": 150
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.template_repo }}"
          },
          "options": {
            "location": 152,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "template",
              "options": {
                "location": 152
              }
            }
          ]
        },
        {
          "type": "text",
          "value": "\nadds these values to those in ",
          "options": {
            "location": 152
          }
        },
        {
          "type": "codespan",
          "value": "_config.yml",
          "options": {
            "location": 153
          }
        },
        {
          "type": "text",
          "value": " when running a local server\n(see ",
          "options": {
            "location": 153
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "#previewing"
          },
          "options": {
            "location": 154,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "below",
              "options": {
                "location": 154
              }
            }
          ]
        },
        {
          "type": "text",
          "value": ").",
          "options": {
            "location": 154
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Collections",
        "location": 156
      },
      "children": [
        {
          "type": "text",
          "value": "Collections",
          "options": {
            "location": 156
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 158
      },
      "children": [
        {
          "type": "text",
          "value": "If several Markdown files are stored in a directory whose name begins with an underscore,\n",
          "options": {
            "location": 158
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 159,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 159
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " creates a ",
          "options": {
            "location": 159
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "https://jekyllrb.com/docs/collections/"
          },
          "options": {
            "location": 159,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "collection",
              "options": {
                "location": 159
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " for them.\nWe rely on this for both lesson episodes (stored in ",
          "options": {
            "location": 159
          }
        },
        {
          "type": "codespan",
          "value": "_episodes",
          "options": {
            "location": 160
          }
        },
        {
          "type": "text",
          "value": ")\nand extra files (stored in ",
          "options": {
            "location": 160
          }
        },
        {
          "type": "codespan",
          "value": "_extras",
          "options": {
            "location": 161
          }
        },
        {
          "type": "text",
          "value": ").\nFor example,\nputting the extra files in ",
          "options": {
            "location": 161
          }
        },
        {
          "type": "codespan",
          "value": "_extras",
          "options": {
            "location": 163
          }
        },
        {
          "type": "text",
          "value": " allows us to populate the ",
          "options": {
            "location": 163
          }
        },
        {
          "type": "smart_quote",
          "value": "ldquo",
          "options": {
            "location": 163
          }
        },
        {
          "type": "text",
          "value": "Extras",
          "options": {
            "location": 163
          }
        },
        {
          "type": "smart_quote",
          "value": "rdquo",
          "options": {
            "location": 163
          }
        },
        {
          "type": "text",
          "value": " menu pulldown automatically.\nTo clarify what will appear where,\nwe store files that appear directly in the navigation bar\nin the root directory of the lesson.\n",
          "options": {
            "location": 163
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "{{ site.root }}/03-organization/"
          },
          "options": {
            "location": 167,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "The last episode",
              "options": {
                "location": 167
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " describes these files.",
          "options": {
            "location": 167
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Installing",
        "location": 169
      },
      "children": [
        {
          "type": "text",
          "value": "Installing",
          "options": {
            "location": 169
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 171
      },
      "children": [
        {
          "type": "text",
          "value": "You can preview changes by pushing to the ",
          "options": {
            "location": 171
          }
        },
        {
          "type": "codespan",
          "value": "gh-pages",
          "options": {
            "location": 171
          }
        },
        {
          "type": "text",
          "value": " branch of your own repository,\nbut it",
          "options": {
            "location": 171
          }
        },
        {
          "type": "smart_quote",
          "value": "rsquo",
          "options": {
            "location": 172
          }
        },
        {
          "type": "text",
          "value": "s often easier to view them locally first.\nTo do that,\nyou will need to install ",
          "options": {
            "location": 172
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 174,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 174
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " and a few other packages used by GitHub Pages.\nThe easiest way to do that is:",
          "options": {
            "location": 174
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "ol",
      "options": {
        "location": 177
      },
      "children": [
        {
          "type": "li",
          "options": {
            "location": 177
          },
          "children": [
            {
              "type": "p",
              "options": {
                "location": 177,
                "transparent": true
              },
              "children": [
                {
                  "type": "text",
                  "value": "Install Ruby if you don",
                  "options": {
                    "location": 177
                  }
                },
                {
                  "type": "smart_quote",
                  "value": "rsquo",
                  "options": {
                    "location": 177
                  }
                },
                {
                  "type": "text",
                  "value": "t already have it.",
                  "options": {
                    "location": 177
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "li",
          "options": {
            "location": 178
          },
          "children": [
            {
              "type": "p",
              "options": {
                "location": 178,
                "transparent": true
              },
              "children": [
                {
                  "type": "text",
                  "value": "Install Ruby Gems (Ruby",
                  "options": {
                    "location": 178
                  }
                },
                {
                  "type": "smart_quote",
                  "value": "rsquo",
                  "options": {
                    "location": 178
                  }
                },
                {
                  "type": "text",
                  "value": "s package manager).",
                  "options": {
                    "location": 178
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "li",
          "options": {
            "location": 179
          },
          "children": [
            {
              "type": "p",
              "options": {
                "location": 179,
                "transparent": true
              },
              "children": [
                {
                  "type": "codespan",
                  "value": "gem install github-pages",
                  "options": {
                    "location": 179
                  }
                },
                {
                  "type": "text",
                  "value": " (which will give you Jekyll and things it depends on).",
                  "options": {
                    "location": 179
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 181
      },
      "children": [
        {
          "type": "text",
          "value": "See ",
          "options": {
            "location": 181
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "https://jekyllrb.com/docs/installation/"
          },
          "options": {
            "location": 181,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "the Jekyll installation documentation",
              "options": {
                "location": 181
              }
            }
          ]
        },
        {
          "type": "text",
          "value": "\nfor full instructions.",
          "options": {
            "location": 181
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "header",
      "options": {
        "level": 2,
        "raw_text": "Previewing",
        "location": 184
      },
      "children": [
        {
          "type": "text",
          "value": "Previewing",
          "options": {
            "location": 184
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 186
      },
      "children": [
        {
          "type": "a",
          "attr": {
            "href": "http://jekyllrb.com/"
          },
          "options": {
            "location": 186,
            "ial": null
          },
          "children": [
            {
              "type": "text",
              "value": "Jekyll",
              "options": {
                "location": 186
              }
            }
          ]
        },
        {
          "type": "text",
          "value": " can be used in two ways:\nto compile source files into HTML pages in the ",
          "options": {
            "location": 186
          }
        },
        {
          "type": "codespan",
          "value": "_site",
          "options": {
            "location": 187
          }
        },
        {
          "type": "text",
          "value": " directory,\nor to do that and also run a small web server at ",
          "options": {
            "location": 187
          }
        },
        {
          "type": "a",
          "attr": {
            "href": "http://127.0.0.1:4000/"
          },
          "options": {
            "location": 188
          },
          "children": [
            {
              "type": "text",
              "value": "http://127.0.0.1:4000/",
              "options": {
                "location": 188
              }
            }
          ]
        },
        {
          "type": "text",
          "value": "\nso that the pages can be previewed.\nWe recommend using the latter,\nsince it gives a more accurate impression of what your lesson will actually look like.",
          "options": {
            "location": 188
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    },
    {
      "type": "p",
      "options": {
        "location": 193
      },
      "children": [
        {
          "type": "text",
          "value": "The Makefile in the root directory of the project contains commands for building the site.\n",
          "options": {
            "location": 193
          }
        },
        {
          "type": "codespan",
          "value": "make site",
          "options": {
            "location": 194
          }
        },
        {
          "type": "text",
          "value": " builds files but does not run a server,\nwhile ",
          "options": {
            "location": 194
          }
        },
        {
          "type": "codespan",
          "value": "make serve",
          "options": {
            "location": 195
          }
        },
        {
          "type": "text",
          "value": " builds the files and runs a server.\n(It also re-builds the site whenever it notices changes in the source files.)\nRun ",
          "options": {
            "location": 195
          }
        },
        {
          "type": "codespan",
          "value": "make",
          "options": {
            "location": 197
          }
        },
        {
          "type": "text",
          "value": " on its own to get a full list of commands.",
          "options": {
            "location": 197
          }
        }
      ]
    },
    {
      "type": "blank",
      "value": "\n"
    }
  ]
}