diff --git a/docs/Advanced-Backtesting.md b/docs/Advanced-Backtesting.md
new file mode 100644
index 000000000..3ea80162f
--- /dev/null
+++ b/docs/Advanced-Backtesting.md
@@ -0,0 +1,107 @@
+---
+
+layout: page
+
+title: Advanced Backtesting
+
+---
+
+## Topics
+
+* [Adding new sessions](#adding-new-sessions)
+* [Linking processes and sessions](#linking-processes-and-sessions)
+* [Sessions folder name](#sessions-folder-name)
+* [Testing logic variations](#testing-logic-variations)
+* [Testing on non-linear date ranges](#testing-on-non-linear-date-ranges)
+
+## Adding New Sessions
+
+The platform allows for having multiple testing sessions. You may add and work with multiple sessions in two different ways:
+
+**1. Independent Task**
+
+Each task is an independent process at the *operating system* level, which handles its own memory allotment, and may be controlled and killed independently.
+
+A process running under its own task may not be affected by errors occurring on other processes.
+
+For the reasons above, you may choose to run each testing session on separate tasks.
+
+The easiest way to create sessions under this configuration is by cloning an existing task and dropping the cloned file back on the Designer. Once the new task is on the Designer, you may chain it to your preferred task manager.
+
+[](https://user-images.githubusercontent.com/13994516/70354911-23d8c000-1871-11ea-8a6c-552ab6e206ce.gif)
+
+> **NOTE:** You may even choose to set up an independent task manager. Simply go to the *My Computer* network node and click *Add Task Manager*.
+
+**2. Shared Task**
+
+You may decide that you don't need independent tasks for each of your backtesting sessions or prefer to handle multiple sessions under one task.
+
+To create new sessions under such configuration you need to clone the process that runs one of the existing sessions, and drop the clone on to the Designer. Then, structure of nodes the process to the trading bot instance and give the session a new name.
+
+[](https://user-images.githubusercontent.com/13994516/67272829-90644f00-f4bd-11e9-9559-3f01233ecee8.gif)
+
+The number of backtesting sessions you may run simultaneously is capped by your machine's processing capacity. Current tests indicate that a dual-core processor at 2.4GHz may process up to 5 sessions at the same time without compromising the machine's performance.
+
+Running more sessions than the optimal number your machine may process efficiently may result in the sessions taking more time to process than if they were run in a sequence.
+
+## Linking Processes and Sessions
+
+If you followed the above process, cloning the whole task or process structure of nodes to duplicate a session, you do not need to do anything else... your new session is already up and running.
+
+However, if you decide to create a new structure of nodes by creating each individual node at the time, you will need to continue with the following steps.
+
+### Process
+
+Every time you create a new session you need to establish a reference from the process instance to the *Multi-Period* process of *Jason*, the trading bot. Jason *lives* within the *Masters* team.
+
+To do this, you first need to locate Jason. Hit Ctrl or ⌘ + Alt + M (*M* for *Masters*) and click  on the menu.
+
+Now hit Ctrl or ⌘ + Alt + J (*J* for *Jason*) and click  on the menu. Look around among Jason's offspring nodes and find the *Multi-Period* process definition.
+
+Now you need to drag your process all the way here and establish teh reference with Jason's *Multi-Period* process definition by pulling it close using the right button of the mouse. Once the reference is established, you may let your process drift back to where it belongs.
+
+The easy way to drag the process all across the workspace is to right-click it, and use the keyboard Ctrl or ⌘ + ↑ and ← to start panning in the direction of Jason. Just follow the rest of the grey lines corresponding to the references of other processes to find your destination.
+
+Once you are in the vicinity of Jason, stop, take a pause and pin the data process so that it doesn't fly back to its parent node. Now locate the *Multi-Period* process definition, right-click on the process instance you just dragged and establish the reference. Make sure you unpin the process instance so that it flys back home.
+
+[](https://user-images.githubusercontent.com/13994516/70355145-b2e5d800-1871-11ea-9bb3-49148772307c.gif)
+
+> **PRO TIP:** if you need to link several processes, you may want to reverse the procedure and drag Jason's *Multi-Period* process definition towards the area where you created the new sessions instead.
+
+### Session
+
+You also need to establish a reference between the session and the definition you inted to run the session on. The procedure is similar to the above. Drag the session towards the definition you intend to test on and pull it closer using the right button of the mouse to establish the reference.
+
+[](https://user-images.githubusercontent.com/13994516/70355703-0e649580-1873-11ea-925e-1f0250148d2c.gif)
+
+## Sessions Folder Name
+
+Before you use the new session, you may want to edit the configuration by clicking *Edit Session* on the menu:
+
+```js
+{
+"folderName": "Session-Name"
+}
+```
+
+The session name you use in the configuration will be taken to name the folder in which the trading bot will store the simulations corresponding to this session. This may be useful should you ever need to look directly into the data.
+
+## Testing Logic Variations
+
+Being able to run multiple backtesting sessions allows you to speed up the strategy tuning stage.
+
+For instance, you may want to check how different variations of a condition in the *take position event* affect the results. To tests all variations at the same time, you would:
+
+**1.** Replicate a backtesting session by cloning the corresponding *process* node (along with its offspring) and dropping the clone back on your workspace, as many times as you require, [attaching it](Designer-Interface#detachment-and-attachment-of-nodes) to an available trading bot.
+
+**2.** Rename each backtesting session with a significant name that is related to the different variations of the condition you wish to test.
+
+**3.** Set up the first variation of the condition and run the corresponding backtesting session. Replace the first variation with the second one, and launch the second backtesting session. Repeat as many times as desired.
+
+## Testing on Non-Linear Date Ranges
+
+It is a known fact that testing and optimizing a strategy over a complete dataset may lead to [overfitting](https://en.wikipedia.org/wiki/Overfitting).
+
+Being able to set up multiple backtesting operations allows you to segment your dataset as you may consider appropriate, for instance, creating sessions to test only on odd months, every three or six months, or in a more random-like arrangement.
+
+The system provides enough flexibility to accommodate different backtesting criteria and styles. It is up to you how to set it up.
\ No newline at end of file
diff --git a/docs/Anatomy-of-an-Indicator.md b/docs/Anatomy-of-an-Indicator.md
new file mode 100644
index 000000000..fb6dce26e
--- /dev/null
+++ b/docs/Anatomy-of-an-Indicator.md
@@ -0,0 +1,40 @@
+The tools available for you to turn an existing dataset into a new, value-added product, are scattered througout the definitions of the indicator itself.
+
+We will dive into Paula and Chris—two of the indicators that ship with the platform—to learn how these bots are structured.
+
+| Masters Team | Paula | Chris |
+| :---: | :---: | :---: |
+|  |  |  |
+
+It is highly recommended that you follow this exploration directly on the platform, so that you may clearly see the relationship among nodes and play with the hierachy as we advance.
+
+Paula and Chris are offspring nodes of the Masters Team hierarchy.
+
+To find the Masters team, hit Ctrl or ⌘ + Alt + M (*M* for *Masters*) and click  on the menu.
+
+To find Paula, hit Ctrl or ⌘ + Alt + P (*P* for *Paula*).
+
+To find Chris, hit Ctrl or ⌘ + Alt + C (*C* for *Chris*).
+
+> **NOTE:** At this moment, only Paula's definitions are complete and fully set up in the Masters Team. You may explore the indicators in the Sparta Team for more examples (hit Ctrl or ⌘ + Alt + S (*C* for *Sparta*)).
+
+## Top Level Structure
+
+Paula is the indicator building Bollinger Channels and Bollinger SubChannels (along with chanels and subchannel objects, used by plotters), based on the Bollinger Bands created by Chris.
+
+| Process Definition | Product Definition |
+| :---: | :---: |
+|  |  |
+
+We established earlier that bots run *processes* which create *products*. As such, the first order of business to describe an indicator bot is to define its processes and products.
+
+[](https://user-images.githubusercontent.com/13994516/68942711-8cb8a500-07a9-11ea-9e87-8fac12e3a143.png)
+
+> **NOTE:** When we analyze the way in which nodes are represented within a hierarchy, it may be important to note the *order* in which they are displayed around its parent object. In this case, the first child node of Paula is the Multi-Period-Market Process Definition, as it is the first in the clock-wise direction from the line chaining Paula to its parent node, the Masters Team. In most cases, the order of nodes around its parent determine the order of execution, or the order in which nodes are computed in whatever process is involved.
+
+An indicator may have several several processes and several products. In the case of Paula, she has two processes and four products.
+
+The reason why Paula has two processes is related to the products Paula creates and the way each dataset is structured.
+
+The Multi-Period-Market process stores data in *market files* while the Multi-Period-Daily process stores files in the *daily file* type of dataset. This is a common occurence in most indicators. The reason is that this is the desired behavior so that data may be consumed efficiently both in the lower and higher frequency time periods.
+
diff --git a/docs/Backups.md b/docs/Backups.md
new file mode 100644
index 000000000..e9589aa27
--- /dev/null
+++ b/docs/Backups.md
@@ -0,0 +1,65 @@
+## Topics
+
+* [Introduction](#introduction)
+* [Outgoing references](#outgoing-references)
+* [Incoming references](#incoming-references)
+* [Internal references](#internal-references)
+* [Conclusion](#conclusion)
+
+> **NOTE:** To understand backups, you first need to be familiar with [*references*](References).
+
+## Introduction
+
+When you back up a single node, a structure of nodes, a complete hierarchy or even the workspace, all existing references are stored in the resulting JSON file.
+
+When you restore a workspace backup, the current workspace is discarded entirely and replaced with the backup. Now, let's see what happens when you restore anything other than a workspace, that is, any of the data structures contained in the workspace.
+
+In particular, what we want to analyze is what happens with each type of reference that may be present in the structure.
+
+What happens with each type of reference when the back up is restored varies depending on one factor: the original structure is present in the workspace, or instead, it has been deleted prior to restoring the backup.
+
+## Outgoing References
+
+**Outgoing references are kept no matter if the original structure of nodes still exists or not.**
+
+For example, in a task set up for running a testing session, the trading bot process instance references to the trading bot Multi-Period process, and the session references a definition.
+
+[](https://user-images.githubusercontent.com/13994516/71101855-b2293c00-21b7-11ea-864e-817f74e17a34.gif)
+
+As the capture above shows, when restoring the backup of a task, both outgoing references are maintained, even when the original task has not been deleted.
+
+This means that restoring a back up is a viable way to duplicate structure of nodes with outgoing references when you expect outgoing references to be preserved.
+
+## Incoming References
+
+**Incoming references are restored only when the original structure of nodes is deleted before restoring the backup.**
+
+Let's take a definition as an example. Definitions usually have several incoming references originating at different testing and live trading sessions.
+
+[](https://user-images.githubusercontent.com/13994516/71103003-ac345a80-21b9-11ea-947c-6e2c59c299c5.gif)
+
+The capture above shows that restoring a backup of a definition when the orginal definition is still in the workspace causes the incoming references to be lost.
+
+However, as the capture below shows, if the original structure of nodes is deleted before the backup is restored, then the incoming references are restored as well.
+
+[](https://user-images.githubusercontent.com/13994516/71103005-ac345a80-21b9-11ea-8c0f-5ee78f15aa7a.gif)
+
+## Internal References
+
+**Internal references are kept *internally* only when the original structure of nodes is deleted before restoring the backup. If the original structure of nodes is present, then the references will point to the original nodes on the original structure of nodes.**
+
+Continuing with the example explored earlier, on the [references](References) page, let's see what happens when we restore a backup of a *shapes* node without deleting the original node first:
+
+[](https://user-images.githubusercontent.com/13994516/71107152-de958600-21c0-11ea-8667-d7d56ed24bfb.gif)
+
+As expected, the references from vertices in the restored backup do not point to the points in the same structure, but instead point to the original points in the original strucutre.
+
+On the other hand, if the original structure of nodes is deleted before restoring the backup, then the references point to the nodes within the same structure:
+
+[](https://user-images.githubusercontent.com/13994516/71107153-de958600-21c0-11ea-9855-532e2d0631d2.gif)
+
+## Conclusion
+
+The backup feature is designed to preserve the integrity of references as you would expect when you wish to restore a data structure to a previous state of affairs.
+
+However, the tool's particular behavior when restoring a backup without deleting the original structure may be of use in certain ocassions. This is particularly true because in such cases, the backup feature behaves differently than the clone feature, as you will learn on the next page.
\ No newline at end of file
diff --git a/docs/Gemfile.lock b/docs/Gemfile.lock
index b90bf5378..6bdc330bc 100644
--- a/docs/Gemfile.lock
+++ b/docs/Gemfile.lock
@@ -1,79 +1,251 @@
GEM
remote: https://rubygems.org/
specs:
+ activesupport (6.0.2.1)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 0.7, < 2)
+ minitest (~> 5.1)
+ tzinfo (~> 1.1)
+ zeitwerk (~> 2.2)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
+ coffee-script (2.4.1)
+ coffee-script-source
+ execjs
+ coffee-script-source (1.11.1)
colorator (1.1.0)
+ commonmarker (0.17.13)
+ ruby-enum (~> 0.5)
concurrent-ruby (1.1.5)
+ dnsruby (1.61.3)
+ addressable (~> 2.5)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
+ ethon (0.12.0)
+ ffi (>= 1.3.0)
eventmachine (1.2.7-x64-mingw32)
+ execjs (2.7.0)
+ faraday (1.0.0)
+ multipart-post (>= 1.2, < 3)
ffi (1.12.1-x64-mingw32)
forwardable-extended (2.6.0)
+ gemoji (3.0.1)
+ github-pages (203)
+ github-pages-health-check (= 1.16.1)
+ jekyll (= 3.8.5)
+ jekyll-avatar (= 0.7.0)
+ jekyll-coffeescript (= 1.1.1)
+ jekyll-commonmark-ghpages (= 0.1.6)
+ jekyll-default-layout (= 0.1.4)
+ jekyll-feed (= 0.13.0)
+ jekyll-gist (= 1.5.0)
+ jekyll-github-metadata (= 2.12.1)
+ jekyll-mentions (= 1.5.1)
+ jekyll-optional-front-matter (= 0.3.2)
+ jekyll-paginate (= 1.1.0)
+ jekyll-readme-index (= 0.3.0)
+ jekyll-redirect-from (= 0.15.0)
+ jekyll-relative-links (= 0.6.1)
+ jekyll-remote-theme (= 0.4.1)
+ jekyll-sass-converter (= 1.5.2)
+ jekyll-seo-tag (= 2.6.1)
+ jekyll-sitemap (= 1.4.0)
+ jekyll-swiss (= 1.0.0)
+ jekyll-theme-architect (= 0.1.1)
+ jekyll-theme-cayman (= 0.1.1)
+ jekyll-theme-dinky (= 0.1.1)
+ jekyll-theme-hacker (= 0.1.1)
+ jekyll-theme-leap-day (= 0.1.1)
+ jekyll-theme-merlot (= 0.1.1)
+ jekyll-theme-midnight (= 0.1.1)
+ jekyll-theme-minimal (= 0.1.1)
+ jekyll-theme-modernist (= 0.1.1)
+ jekyll-theme-primer (= 0.5.4)
+ jekyll-theme-slate (= 0.1.1)
+ jekyll-theme-tactile (= 0.1.1)
+ jekyll-theme-time-machine (= 0.1.1)
+ jekyll-titles-from-headings (= 0.5.3)
+ jemoji (= 0.11.1)
+ kramdown (= 1.17.0)
+ liquid (= 4.0.3)
+ mercenary (~> 0.3)
+ minima (= 2.5.1)
+ nokogiri (>= 1.10.4, < 2.0)
+ rouge (= 3.13.0)
+ terminal-table (~> 1.4)
+ github-pages-health-check (1.16.1)
+ addressable (~> 2.3)
+ dnsruby (~> 1.60)
+ octokit (~> 4.0)
+ public_suffix (~> 3.0)
+ typhoeus (~> 1.3)
+ html-pipeline (2.12.3)
+ activesupport (>= 2)
+ nokogiri (>= 1.4)
http_parser.rb (0.6.0)
- i18n (1.8.2)
+ i18n (0.9.5)
concurrent-ruby (~> 1.0)
- jekyll (4.0.0)
+ jekyll (3.8.5)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
- i18n (>= 0.9.5, < 2)
- jekyll-sass-converter (~> 2.0)
+ i18n (~> 0.7)
+ jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
- kramdown (~> 2.1)
- kramdown-parser-gfm (~> 1.0)
+ kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
- rouge (~> 3.0)
+ rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- terminal-table (~> 1.8)
+ jekyll-avatar (0.7.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-coffeescript (1.1.1)
+ coffee-script (~> 2.2)
+ coffee-script-source (~> 1.11.1)
+ jekyll-commonmark (1.3.1)
+ commonmarker (~> 0.14)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-commonmark-ghpages (0.1.6)
+ commonmarker (~> 0.17.6)
+ jekyll-commonmark (~> 1.2)
+ rouge (>= 2.0, < 4.0)
+ jekyll-default-layout (0.1.4)
+ jekyll (~> 3.0)
jekyll-feed (0.13.0)
jekyll (>= 3.7, < 5.0)
- jekyll-sass-converter (2.0.1)
- sassc (> 2.0.1, < 3.0)
+ jekyll-gist (1.5.0)
+ octokit (~> 4.2)
+ jekyll-github-metadata (2.12.1)
+ jekyll (~> 3.4)
+ octokit (~> 4.0, != 4.4.0)
+ jekyll-mentions (1.5.1)
+ html-pipeline (~> 2.3)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-optional-front-matter (0.3.2)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-paginate (1.1.0)
+ jekyll-readme-index (0.3.0)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-redirect-from (0.15.0)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-relative-links (0.6.1)
+ jekyll (>= 3.3, < 5.0)
+ jekyll-remote-theme (0.4.1)
+ addressable (~> 2.0)
+ jekyll (>= 3.5, < 5.0)
+ rubyzip (>= 1.3.0)
+ jekyll-sass-converter (1.5.2)
+ sass (~> 3.4)
jekyll-seo-tag (2.6.1)
jekyll (>= 3.3, < 5.0)
+ jekyll-sitemap (1.4.0)
+ jekyll (>= 3.7, < 5.0)
+ jekyll-swiss (1.0.0)
+ jekyll-theme-architect (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-cayman (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-dinky (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-hacker (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-leap-day (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-merlot (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-midnight (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-minimal (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-modernist (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-primer (0.5.4)
+ jekyll (> 3.5, < 5.0)
+ jekyll-github-metadata (~> 2.9)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-slate (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-tactile (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-theme-time-machine (0.1.1)
+ jekyll (~> 3.5)
+ jekyll-seo-tag (~> 2.0)
+ jekyll-titles-from-headings (0.5.3)
+ jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- kramdown (2.1.0)
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.0)
+ jemoji (0.11.1)
+ gemoji (~> 3.0)
+ html-pipeline (~> 2.2)
+ jekyll (>= 3.0, < 5.0)
+ kramdown (1.17.0)
liquid (4.0.3)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6)
+ mini_portile2 (2.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
+ minitest (5.14.0)
+ multipart-post (2.1.1)
+ nokogiri (1.10.7-x64-mingw32)
+ mini_portile2 (~> 2.4.0)
+ octokit (4.15.0)
+ faraday (>= 0.9)
+ sawyer (~> 0.8.0, >= 0.5.3)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (4.0.3)
+ public_suffix (3.1.1)
rb-fsevent (0.10.3)
rb-inotify (0.10.1)
ffi (~> 1.0)
- rouge (3.15.0)
+ rouge (3.13.0)
+ ruby-enum (0.7.2)
+ i18n
+ rubyzip (2.0.0)
safe_yaml (1.0.5)
- sassc (2.2.1-x64-mingw32)
- ffi (~> 1.9)
+ sass (3.7.4)
+ sass-listen (~> 4.0.0)
+ sass-listen (4.0.0)
+ rb-fsevent (~> 0.9, >= 0.9.4)
+ rb-inotify (~> 0.9, >= 0.9.7)
+ sawyer (0.8.2)
+ addressable (>= 2.3.5)
+ faraday (> 0.8, < 2.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thread_safe (0.3.6)
+ typhoeus (1.3.1)
+ ethon (>= 0.9.0)
tzinfo (1.2.6)
thread_safe (~> 0.1)
tzinfo-data (1.2019.3)
tzinfo (>= 1.0.0)
unicode-display_width (1.6.1)
wdm (0.1.1)
+ zeitwerk (2.2.2)
PLATFORMS
x64-mingw32
DEPENDENCIES
- jekyll (~> 4.0.0)
+ github-pages (~> 203)
jekyll-feed (~> 0.12)
minima (~> 2.5)
tzinfo (~> 1.2)
diff --git a/docs/_posts/2020-01-18-welcome-to-jekyll.markdown b/docs/_posts/2020-01-18-welcome-to-jekyll.markdown
index 0c7171fb0..c356ee139 100644
--- a/docs/_posts/2020-01-18-welcome-to-jekyll.markdown
+++ b/docs/_posts/2020-01-18-welcome-to-jekyll.markdown
@@ -1,4 +1,4 @@
----
+---
layout: post
title: "Welcome to Jekyll!"
date: 2020-01-18 16:30:38 +0100
@@ -22,6 +22,59 @@ print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
+
+Jekyll requires blog post files to be named according to the following format:
+
+`YEAR-MONTH-DAY-title.MARKUP`
+
+Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+ puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
[jekyll-docs]: https://jekyllrb.com/docs/home