diff --git a/.DS_Store b/.DS_Store
deleted file mode 100644
index 23ac1a6..0000000
Binary files a/.DS_Store and /dev/null differ
diff --git a/.devcontainer.json b/.devcontainer.json
deleted file mode 100644
index 023577c..0000000
--- a/.devcontainer.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "name": "fastpages-codespaces",
- "dockerComposeFile": "docker-compose.yml",
- "service": "watcher",
- "mounts": [ "source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind" ],
- "forwardPorts": [4000],
- "appPort": [4000],
- "extensions": ["ms-python.python",
- "ms-azuretools.vscode-docker"],
- "runServices": ["converter", "jekyll", "watcher"]
-}
-
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 09bc62c..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Set the default behavior, in case people don't have core.autocrlf set.
-* text=auto
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/upgrade.md b/.github/ISSUE_TEMPLATE/upgrade.md
deleted file mode 100644
index 6e59c30..0000000
--- a/.github/ISSUE_TEMPLATE/upgrade.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-name: "[fastpages] Automated Upgrade"
-about: "Trigger a PR for upgrading fastpages"
-title: "[fastpages] Automated Upgrade"
-labels: fastpages-automation
-assignees: ''
-
----
-
-Opening this issue will trigger GitHub Actions to fetch the lastest version of [fastpages](https://github.com/fastai/fastpages). More information will be provided in forthcoming comments below.
diff --git a/.github/workflows/check_config.yaml b/.github/workflows/check_config.yaml
deleted file mode 100644
index 5154081..0000000
--- a/.github/workflows/check_config.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-name: Check Configurations
-on: push
-
-jobs:
- check-config:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@main
-
- - name: Set up Python
- uses: actions/setup-python@v1
- with:
- python-version: 3.10.17
-
- - name: install dependencies
- run: pip3 install pyyaml
-
- - name: check baseurl
- id: baseurl
- run: |
- import yaml
- from pathlib import Path
- from configparser import ConfigParser
- settings = ConfigParser()
-
- config_path = Path('_config.yml')
- settings_path = Path('_action_files/settings.ini')
-
- assert config_path.exists(), 'Did not find _config.yml in the current directory!'
- assert settings_path.exists(), 'Did not find _action_files/settings.ini in the current directory!'
-
- settings.read(settings_path)
- with open('_config.yml') as f:
- config = yaml.safe_load(f)
-
- errmsg = f"The value set for baseurl in _action_files/settings.ini and _config.yml are not identical. Please fix and try again."
- assert config['baseurl'] == settings['DEFAULT']['baseurl'], errmsg
- shell: python
-
- - name: Create issue if baseurl rule is violated
- if: steps.baseurl.outcome == 'failure'
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var err = process.env.ERROR_STRING;
- var run_id = process.env.RUN_ID;
- github.issues.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- title: "Error with repository configuration: baseurl",
- body: `${err}\n See run [${run_id}](https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${run_id}) for more details.`
- })
- env:
- ERROR_STRING: "You have not configured your baseurl correctly, please read the instructions in _config.yml carefully."
- RUN_ID: ${{ github.run_id }}
-
- - name: check for User Pages
- id: userpage
- run: |
- import os
- nwo = os.getenv('GITHUB_REPOSITORY')
- errmsg = "fastpages does not support User Pages or repo names that end with github.io, please see https://forums.fast.ai/t/fastpages-replacing-main-username-github-io-page-w-fastpages/64316/3 for more details."
- assert ".github.io" not in nwo, errmsg
- shell: python
-
- - name: Create Issue if User Pages rule is violated
- if: steps.userpage.outcome == 'failure'
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- github.issues.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- title: "Error with repository configuration: repo name",
- body: 'fastpages does not support User Pages or repo names that end with github.io, please see https://forums.fast.ai/t/fastpages-replacing-main-username-github-io-page-w-fastpages/64316/3 for more details.'
- })
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
deleted file mode 100644
index c57db6b..0000000
--- a/.github/workflows/ci.yaml
+++ /dev/null
@@ -1,57 +0,0 @@
-name: CI
-on:
- push:
- branches:
- - master # need to filter here so we only deploy when there is a push to master
- # no filters on pull requests, so intentionally left blank
- pull_request:
-
-jobs:
- build-site:
- if: ( github.event.commits[0].message != 'Initial commit' ) || github.run_number > 1
- runs-on: ubuntu-latest
- steps:
-
- - name: Check if secret exists
- if: github.event_name == 'push'
- run: |
- if [ -z "$deploy_key" ]
- then
- echo "You do not have a secret named SSH_DEPLOY_KEY. This means you did not follow the setup instructions carefully. Please try setting up your repo again with the right secrets."
- exit 1;
- fi
- env:
- deploy_key: ${{ secrets.SSH_DEPLOY_KEY }}
-
-
- - name: Copy Repository Contents
- uses: actions/checkout@main
- with:
- persist-credentials: false
-
- - name: convert notebooks and word docs to posts
- uses: ./_action_files
-
- - name: setup directories for Jekyll build
- run: |
- rm -rf _site
- sudo chmod -R 777 .
-
- - name: Jekyll build
- uses: docker://hamelsmu/fastpages-jekyll
- with:
- args: bash -c "gem install bundler -v 2.4.22 && bundle _2.4.22_ install && jekyll build -V --strict_front_matter --trace"
- env:
- JEKYLL_ENV: 'production'
-
- - name: copy CNAME file into _site if CNAME exists
- run: |
- sudo chmod -R 777 _site/
- cp CNAME _site/ 2>/dev/null || :
-
- - name: Deploy
- if: github.event_name == 'push'
- uses: peaceiris/actions-gh-pages@v3
- with:
- deploy_key: ${{ secrets.SSH_DEPLOY_KEY }}
- publish_dir: ./_site
diff --git a/.github/workflows/gh-page.yaml b/.github/workflows/gh-page.yaml
deleted file mode 100644
index ec9ddc5..0000000
--- a/.github/workflows/gh-page.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: Check GH Pages Status
-
-on:
- workflow_run:
- workflows: ["Pages Build and Deployment"]
- types:
- - completed
-
-jobs:
- check-status:
- if: ${{ github.event.workflow_run.conclusion != 'success' }}
- runs-on: ubuntu-latest
- steps:
- - name: Fail if Pages build failed
- run: |
- echo "GitHub Pages build failed!"
- exit 1
diff --git a/.github/workflows/issue_reminder.yaml b/.github/workflows/issue_reminder.yaml
deleted file mode 100644
index 4d3683a..0000000
--- a/.github/workflows/issue_reminder.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-name: Issue Reminder
-on:
- issues:
- types: [opened]
-
-jobs:
- issue_comment:
- if: |
- (github.repository == 'fastai/fastpages')
- runs-on: ubuntu-latest
- steps:
-
- - name: Comment on issue
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var url = 'https://github.com/fastai/fastpages/blob/master/_fastpages_docs/TROUBLESHOOTING.md'
- var msg = `Thank you for opening an issue. If this issue is related to a bug, please follow the steps and provide the information outlined in the [Troubleshooting Guide](${url}). Failure to follow these instructions may result in automatic closing of this issue.`
- github.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: msg
- })
diff --git a/.github/workflows/setup.yaml b/.github/workflows/setup.yaml
deleted file mode 100755
index 45a7653..0000000
--- a/.github/workflows/setup.yaml
+++ /dev/null
@@ -1,99 +0,0 @@
-name: Setup
-on: push
-
-jobs:
- setup:
- if: (github.event.commits[0].message == 'Initial commit') && (github.run_number == 1)
- runs-on: ubuntu-latest
- steps:
-
- - name: Set up Python
- uses: actions/setup-python@v1
- with:
- python-version: 3.6
-
- - name: Copy Repository Contents
- uses: actions/checkout@v2
-
- - name: modify files
- run: |
- import re, os
- from pathlib import Path
- from configparser import ConfigParser
- config = ConfigParser()
-
- nwo = os.getenv('GITHUB_REPOSITORY')
- username, repo_name = nwo.split('/')
- readme_template_path = Path('_fastpages_docs/README_TEMPLATE.md')
- readme_path = Path('README.md')
- config_path = Path('_config.yml')
- pr_msg_path = Path('_fastpages_docs/_setup_pr_template.md')
- settings = Path('_action_files/settings.ini')
-
- assert readme_template_path.exists(), 'Did not find _fastpages_docs/README_TEMPLATE.md in the current directory!'
- assert readme_path.exists(), 'Did not find README.md in the current directory!'
- assert config_path.exists(), 'Did not find _config.yml in the current directory!'
- assert pr_msg_path.exists(), 'Did not find _fastpages_docs/_setup_pr_template.md in the current directory!'
- assert settings.exists(), 'Did not find _action_files/settings.ini in the current directory!'
-
- # edit settings.ini file to inject baseurl
- config.read(settings)
- config['DEFAULT']['baseurl'] = f'/{repo_name}'
- with open('_action_files/settings.ini', 'w') as configfile:
- config.write(configfile)
-
- # replace content of README with template
- readme = readme_template_path.read_text().replace('{_username_}', username).replace('{_repo_name_}', repo_name)
- readme_path.write_text(readme)
-
- # update _config.yml
- cfg = config_path.read_text()
- cfg = re.sub(r'^(github_username: )(fastai)', fr'\g<1>{username}', cfg, flags=re.MULTILINE)
- cfg = re.sub(r'^(baseurl: )("")', r'\1"/{}"'.format(repo_name), cfg, flags=re.MULTILINE)
- cfg = re.sub(r'^(github_repo: ")(fastpages)', r'\1{}'.format(repo_name), cfg, flags=re.MULTILINE)
- cfg = re.sub(r'^(url: "https://)(fastpages.fast.ai)(")', fr'\g<1>{username}.github.io\3', cfg, flags=re.MULTILINE)
- cfg = re.sub('UA-57531313-5', '', cfg, flags=re.MULTILINE)
- config_path.write_text(cfg)
-
- # prepare the pr message
- pr = pr_msg_path.read_text().replace('{_username_}', username).replace('{_repo_name_}', repo_name)
- pr_msg_path.write_text(pr)
- shell: python
-
- - name: commit changes
- run: |
- git config --global user.email "${GH_EMAIL}"
- git config --global user.name "${GH_USERNAME}"
- git checkout -B fastpages-automated-setup
- git rm CNAME action.yml
- git rm _notebooks/2020-02-21-introducing-fastpages.ipynb
- git rm _posts/2020-03-06-fastpages-actions.md
- git rm -rf images/fastpages_posts
- git rm .github/workflows/chatops.yaml
- git rm .github/workflows/docker.yaml
- git rm .github/workflows/docker-nbdev.yaml
- git rm .github/ISSUE_TEMPLATE/bug.md
- git rm .github/ISSUE_TEMPLATE/feature_request.md
- git rm _word/*.docx
- git add _config.yml README.md _fastpages_docs/ _action_files/settings.ini
- git commit -m'setup repo'
- git push -f --set-upstream origin fastpages-automated-setup
- env:
- GH_EMAIL: ${{ github.event.commits[0].author.email }}
- GH_USERNAME: ${{ github.event.commits[0].author.username }}
-
- - name: Open a PR
- uses: actions/github-script@0.5.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var fs = require('fs');
- var contents = fs.readFileSync('_fastpages_docs/_setup_pr_template.md', 'utf8');
- github.pulls.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- title: 'Initial Setup',
- head: 'fastpages-automated-setup',
- base: 'master',
- body: `${contents}`
- })
diff --git a/.github/workflows/upgrade.yaml b/.github/workflows/upgrade.yaml
deleted file mode 100644
index 62b57e3..0000000
--- a/.github/workflows/upgrade.yaml
+++ /dev/null
@@ -1,276 +0,0 @@
-name: Upgrade fastpages
-on:
- issues:
- types: [opened]
-
-jobs:
- check_credentials:
- if: |
- (github.repository != 'fastai/fastpages') &&
- (github.event.issue.title == '[fastpages] Automated Upgrade')
- runs-on: ubuntu-latest
- steps:
-
- - name: see payload
- run: |
- echo "FULL PAYLOAD:\n${PAYLOAD}\n"
- echo "PR_PAYLOAD PAYLOAD:\n${PR_PAYLOAD}"
- env:
- PAYLOAD: ${{ toJSON(github.event) }}
- PR_PAYLOAD: ${{ github.event.pull_request }}
-
- - name: Comment on issue if sufficient access does not exist
- if: |
- (github.event.issue.author_association != 'OWNER') &&
- (github.event.issue.author_association != 'COLLABORATOR') &&
- (github.event.issue.author_association != 'MEMBER')
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var permission_level = process.env.permission_level;
- var url = 'https://help.github.com/en/github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository#collaborator-access-on-a-repository-owned-by-a-user-account'
- var msg = `You must have the [permission level](${url}) of either an **OWNER**, **COLLABORATOR** or **MEMBER** to instantiate an upgrade request. Your permission level is ${permission_level}`
- github.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: msg
- })
- github.issues.update({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'closed'
- })
- throw msg;
- env:
- permission_level: ${{ github.event.issue.author_association }}
-
- upgrade:
- needs: [check_credentials]
- if: |
- (github.repository != 'fastai/fastpages') &&
- (github.event.issue.title == '[fastpages] Automated Upgrade') &&
- (github.event.issue.author_association == 'OWNER' || github.event.issue.author_association == 'COLLABORATOR' || github.event.issue.author_association == 'MEMBER')
- runs-on: ubuntu-latest
- steps:
-
- - name: Set up Python
- uses: actions/setup-python@v1
- with:
- python-version: 3.7
-
- - name: checkout latest fastpages
- uses: actions/checkout@v2
- with:
- repository: 'fastai/fastpages'
- path: 'new_files'
- persist-credentials: false
-
- - name: copy this repo's contents
- uses: actions/checkout@v2
- with:
- path: 'current_files'
- persist-credentials: false
-
- - name: compare versions
- id: check_version
- run: |
- from pathlib import Path
- new_version = Path('new_files/_fastpages_docs/version.txt')
- old_version = Path('current_files/_fastpages_docs/version.txt')
-
- if old_version.exists():
- old_num = old_version.read_text().strip()
- new_num = new_version.read_text().strip()
- print(f'Old version: {old_num}')
- print(f'New version: {new_num}')
- if old_num == new_num:
- print('::set-output name=vbump::false')
- else:
- print('::set-output name=vbump::true')
- else:
- print('::set-output name=vbump::true')
- shell: python
-
- - name: copy new files
- if: steps.check_version.outputs.vbump == 'true'
- run: |
- # remove files you don't want to copy from current version of fastpages
- cd new_files
- rm -rf _posts _notebooks _word images
- rm *.md CNAME action.yml _config.yml index.html LICENSE
- rm _pages/*.md
- rm .github/workflows/chatops.yaml
- rm .github/workflows/docker-nbdev.yaml
- rm .github/workflows/docker.yaml
- rm .github/ISSUE_TEMPLATE/bug.md .github/ISSUE_TEMPLATE/feature_request.md
-
- # copy new files from fastpages into your repo
- for file in $(ls | egrep -v "(assets|_sass)"); do
- if [[ -f "$file" ]] || [[ -d "$file" ]]
- then
- echo "copying $file";
- cp -r $file ../current_files;
- fi
- done
-
- # copy custom-variables.scss if doesn't exist
- if [ ! -f "../current_files/_sass/minima/custom-variables.scss" ]; then
- cp _sass/minima/custom-variables.scss ../current_files/_sass/minima/
- fi
-
- # copy select files in assets and _sass
- cp -r assets/js ../current_files/assets
- cp -r assets/badges ../current_files/assets
- cp _sass/minima/fastpages-styles.scss ../current_files/_sass/minima/
- cp _sass/minima/fastpages-dracula-highlight.scss ../current_files/_sass/minima/
-
- # copy action workflows
- cp -r .github ../current_files
-
- # install dependencies
- pip3 install pyyaml
-
- - name: sync baseurl
- if: steps.check_version.outputs.vbump == 'true'
- run: |
- import re, os, yaml
- from pathlib import Path
- from configparser import ConfigParser
- settings = ConfigParser()
-
- # specify location of config files
- nwo = os.getenv('GITHUB_REPOSITORY')
- username, repo_name = nwo.split('/')
- settings_path = Path('current_files/_action_files/settings.ini')
- config_path = Path('current_files/_config.yml')
- setup_pr_path = Path('current_files/_fastpages_docs/_setup_pr_template.md')
- upgrade_pr_path = Path('current_files/_fastpages_docs/_upgrade_pr.md')
-
- assert settings_path.exists(), 'Did not find _action_files/settings.ini in your repository!'
- assert config_path.exists(), 'Did not find _config.yml in your repository!'
- assert setup_pr_path.exists(), 'Did not find_fastpages_docs/_setup_pr_template.md in the current directory!'
- assert upgrade_pr_path.exists(), 'Did not find _fastpages_docs/_upgrade_pr.md in your repository!'
-
- # read data from config files
- settings.read(settings_path)
- with open(config_path, 'r') as cfg:
- config = yaml.load(cfg)
-
- # sync value for baseurl b/w config.yml and settings.ini
- settings['DEFAULT']['baseurl'] = config['baseurl']
- with open(settings_path, 'w') as stg:
- settings.write(stg)
-
- # update PR templates
- setup_pr = setup_pr_path.read_text().replace('{_username_}', username).replace('{_repo_name_}', repo_name)
- setup_pr_path.write_text(setup_pr)
- upgrade_pr = upgrade_pr_path.read_text().replace('{_username_}', username).replace('{_repo_name_}', repo_name)
- upgrade_pr_path.write_text(upgrade_pr)
- shell: python
-
- - uses: webfactory/ssh-agent@v0.2.0
- if: steps.check_version.outputs.vbump == 'true'
- with:
- ssh-private-key: ${{ secrets.SSH_DEPLOY_KEY }}
-
- - name: push changes to branch
- if: steps.check_version.outputs.vbump == 'true'
- run: |
- # commit changes
- cd current_files
- git config --global user.email "${GH_USERNAME}@users.noreply.github.com"
- git config --global user.name "${GH_USERNAME}"
- git remote remove origin
- git remote add origin "git@github.com:${GITHUB_REPOSITORY}.git"
-
- git add _action_files/settings.ini
- git checkout -b fastpages-automated-upgrade
- git add -A
- git commit -m'upgrade fastpages'
- git push -f --set-upstream origin fastpages-automated-upgrade master
- env:
- GH_USERNAME: ${{ github.event.issue.user.login }}
-
- - name: Open a PR
- if: steps.check_version.outputs.vbump == 'true'
- id: pr
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var fs = require('fs');
- var contents = fs.readFileSync('current_files/_fastpages_docs/_upgrade_pr.md', 'utf8');
- github.pulls.create({
- owner: context.repo.owner,
- repo: context.repo.repo,
- title: '[fastpages] Update repo with changes from fastpages',
- head: 'fastpages-automated-upgrade',
- base: 'master',
- body: `${contents}`
- })
- .then(result => console.log(`::set-output name=pr_num::${result.data.number}`))
-
- - name: Comment on issue if failure
- if: failure() && (steps.check_version.outputs.vbump == 'true')
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var pr_num = process.env.PR_NUM;
- var repo = process.env.REPO
- github.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: `An error occurred when attempting to open a PR to update fastpages. See the [Actions tab of your repo](https://github.com/${repo}/actions) for more details.`
- })
- env:
- PR_NUM: ${{ steps.pr.outputs.pr_num }}
- REPO: ${{ github.repository }}
-
- - name: Comment on issue
- if: steps.check_version.outputs.vbump == 'true'
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- var pr_num = process.env.PR_NUM;
- var repo = process.env.REPO
- github.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: `Opened PR https://github.com/${repo}/pull/${pr_num} to assist with updating fastpages.`
- })
- env:
- PR_NUM: ${{ steps.pr.outputs.pr_num }}
- REPO: ${{ github.repository }}
-
- - name: Comment on issue if version has not changed
- if: steps.check_version.outputs.vbump == 'false'
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- github.issues.createComment({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- body: `Your version of fastpages is up to date. There is nothing to change.`
- })
-
- - name: Close Issue
- if: always()
- uses: actions/github-script@0.6.0
- with:
- github-token: ${{secrets.GITHUB_TOKEN}}
- script: |
- github.issues.update({
- issue_number: context.issue.number,
- owner: context.repo.owner,
- repo: context.repo.repo,
- state: 'closed'
- })
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 3a6fe16..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-*.swp
-~*
-*~
-_site
-.sass-cache
-.jekyll-cache
-.jekyll-metadata
-vendor
-_notebooks/.ipynb_checkpoints
-# Local Netlify folder
-.netlify
-.tweet-cache
-__pycache__
-.DS_Store
\ No newline at end of file
diff --git a/CNAME b/CNAME
deleted file mode 100644
index 22459e9..0000000
--- a/CNAME
+++ /dev/null
@@ -1 +0,0 @@
-muralik.in
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
deleted file mode 100644
index ff35341..0000000
--- a/Gemfile
+++ /dev/null
@@ -1,43 +0,0 @@
-source "https://rubygems.org"
-# Hello! This is where you manage which Jekyll version is used to run.
-# When you want to use a different version, change it below, save the
-# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
-#
-# bundle exec jekyll serve
-#
-# This will help ensure the proper Jekyll version is running.
-# Happy Jekylling!
-gem "jekyll", "~> 4.0.0"
-# This is the default theme for new Jekyll sites. You may change this to anything you like.
-gem "minima"
-# To upgrade, run `bundle update github-pages`.
-# gem "github-pages", group: :jekyll_plugins
-# If you have any plugins, put them here!
-group :jekyll_plugins do
- gem "jekyll-feed", "~> 0.12"
- gem 'jekyll-octicons'
- gem 'jekyll-remote-theme'
- gem "jekyll-twitter-plugin"
- gem 'jekyll-relative-links'
- gem 'jekyll-seo-tag'
- gem 'jekyll-toc'
- gem 'jekyll-gist'
- gem 'jekyll-paginate'
- gem 'jekyll-sitemap'
-end
-
-gem "kramdown-math-katex"
-gem "jemoji"
-
-# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
-# and associated library.
-install_if -> { RUBY_PLATFORM =~ %r!mingw|mswin|java! } do
- gem "tzinfo", "~> 1.2"
- gem "tzinfo-data"
-end
-
-# Performance-booster for watching directories on Windows
-gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
-
-gem "faraday", "< 1.0"
-
diff --git a/Gemfile.lock b/Gemfile.lock
deleted file mode 100644
index 4248759..0000000
--- a/Gemfile.lock
+++ /dev/null
@@ -1,156 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- activesupport (6.0.3.1)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2, >= 2.2.2)
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- colorator (1.1.0)
- concurrent-ruby (1.1.6)
- em-websocket (0.5.1)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- eventmachine (1.2.7)
- execjs (2.7.0)
- faraday (0.17.3)
- multipart-post (>= 1.2, < 3)
- ffi (1.12.2)
- forwardable-extended (2.6.0)
- gemoji (3.0.1)
- html-pipeline (2.12.3)
- activesupport (>= 2)
- nokogiri (>= 1.4)
- http_parser.rb (0.6.0)
- i18n (1.8.2)
- concurrent-ruby (~> 1.0)
- jekyll (4.0.0)
- addressable (~> 2.4)
- colorator (~> 1.0)
- em-websocket (~> 0.5)
- i18n (>= 0.9.5, < 2)
- jekyll-sass-converter (~> 2.0)
- jekyll-watch (~> 2.0)
- kramdown (~> 2.1)
- kramdown-parser-gfm (~> 1.0)
- liquid (~> 4.0)
- mercenary (~> 0.3.3)
- pathutil (~> 0.9)
- rouge (~> 3.0)
- safe_yaml (~> 1.0)
- terminal-table (~> 1.8)
- jekyll-feed (0.13.0)
- jekyll (>= 3.7, < 5.0)
- jekyll-gist (1.5.0)
- octokit (~> 4.2)
- jekyll-octicons (9.5.0)
- jekyll (>= 3.6, < 5.0)
- octicons (= 9.5.0)
- jekyll-paginate (1.1.0)
- jekyll-relative-links (0.6.1)
- jekyll (>= 3.3, < 5.0)
- jekyll-remote-theme (0.4.2)
- addressable (~> 2.0)
- jekyll (>= 3.5, < 5.0)
- jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
- rubyzip (>= 1.3.0, < 3.0)
- jekyll-sass-converter (2.1.0)
- sassc (> 2.0.1, < 3.0)
- jekyll-seo-tag (2.6.1)
- jekyll (>= 3.3, < 5.0)
- jekyll-sitemap (1.4.0)
- jekyll (>= 3.7, < 5.0)
- jekyll-toc (0.13.1)
- jekyll (>= 3.7)
- nokogiri (~> 1.9)
- jekyll-twitter-plugin (2.1.0)
- jekyll-watch (2.2.1)
- listen (~> 3.0)
- jemoji (0.12.0)
- gemoji (~> 3.0)
- html-pipeline (~> 2.2)
- jekyll (>= 3.0, < 5.0)
- katex (0.6.0)
- execjs (~> 2.7)
- kramdown (2.3.1)
- rexml
- kramdown-math-katex (1.0.1)
- katex (~> 0.4)
- kramdown (~> 2.0)
- kramdown-parser-gfm (1.1.0)
- kramdown (~> 2.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.6.1)
- minima (2.5.1)
- jekyll (>= 3.5, < 5.0)
- jekyll-feed (~> 0.9)
- jekyll-seo-tag (~> 2.1)
- minitest (5.14.1)
- multipart-post (2.1.1)
- nokogiri (1.12.5)
- mini_portile2 (~> 2.6.1)
- racc (~> 1.4)
- octicons (9.5.0)
- nokogiri (>= 1.6.3.1)
- octokit (4.16.0)
- faraday (>= 0.9)
- sawyer (~> 0.8.0, >= 0.5.3)
- pathutil (0.16.2)
- forwardable-extended (~> 2.6)
- public_suffix (4.0.6)
- racc (1.5.2)
- rb-fsevent (0.10.3)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.16.0)
- rubyzip (2.2.0)
- safe_yaml (1.0.5)
- sassc (2.2.1)
- ffi (~> 1.9)
- 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)
- 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.3.0)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- faraday (< 1.0)
- jekyll (~> 4.0.0)
- jekyll-feed (~> 0.12)
- jekyll-gist
- jekyll-octicons
- jekyll-paginate
- jekyll-relative-links
- jekyll-remote-theme
- jekyll-seo-tag
- jekyll-sitemap
- jekyll-toc
- jekyll-twitter-plugin
- jemoji
- kramdown-math-katex
- minima
- tzinfo (~> 1.2)
- tzinfo-data
- wdm (~> 0.1.1)
-
-BUNDLED WITH
- 2.1.4
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 5c1d0d4..0000000
--- a/LICENSE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2020 onwards, fast.ai, Inc
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index d8cc6d1..0000000
--- a/Makefile
+++ /dev/null
@@ -1,54 +0,0 @@
-help:
- cat Makefile
-
-# start (or restart) the services
-server: .FORCE
- docker-compose down --remove-orphans || true;
- docker-compose up
-
-# start (or restart) the services in detached mode
-server-detached: .FORCE
- docker-compose down || true;
- docker-compose up -d
-
-# build or rebuild the services WITHOUT cache
-build: .FORCE
- chmod 777 Gemfile.lock
- docker-compose stop || true; docker-compose rm || true;
- docker build --no-cache -t hamelsmu/fastpages-nbdev -f _action_files/fastpages-nbdev.Dockerfile .
- docker build --no-cache -t hamelsmu/fastpages-jekyll -f _action_files/fastpages-jekyll.Dockerfile .
- docker-compose build --force-rm --no-cache
-
-# rebuild the services WITH cache
-quick-build: .FORCE
- docker-compose stop || true;
- docker build -t hamelsmu/fastpages-nbdev -f _action_files/fastpages-nbdev.Dockerfile .
- docker build -t hamelsmu/fastpages-jekyll -f _action_files/fastpages-jekyll.Dockerfile .
- docker-compose build
-
-# convert word & nb without Jekyll services
-convert: .FORCE
- docker-compose up converter
-
-# stop all containers
-stop: .FORCE
- docker-compose stop
- docker ps | grep fastpages | awk '{print $1}' | xargs docker stop
-
-# remove all containers
-remove: .FORCE
- docker-compose stop || true; docker-compose rm || true;
-
-# get shell inside the notebook converter service (Must already be running)
-bash-nb: .FORCE
- docker-compose exec watcher /bin/bash
-
-# get shell inside jekyll service (Must already be running)
-bash-jekyll: .FORCE
- docker-compose exec jekyll /bin/bash
-
-# restart just the Jekyll server
-restart-jekyll: .FORCE
- docker-compose restart jekyll
-
-.FORCE:
diff --git a/README.md b/README.md
deleted file mode 100644
index 82b8527..0000000
--- a/README.md
+++ /dev/null
@@ -1,33 +0,0 @@
-[//]: # (This template replaces README.md when someone creates a new repo with the fastpages template.)
-
-
-
-[](https://github.com/fastai/fastpages)
-
-https://muralik.in
-
-# My Blog
-
-
-_powered by [fastpages](https://github.com/fastai/fastpages)_
-
-
-# Blog posts included
-
-- [Ruby dynamic context templating](https://muralik.in/2020-08-15-dynamic-context-with-ruby/)
-
-- [Install multiple mysql versions in mac](https://muralik.in/2020-08-17-multiple-mysql-versions/)
-
-- [Top engineering tech blogs to follow](https://muralik.in/2020-08-120-top-engineering-blogs/)
-
-- [Rails with postgres scenic views](https://muralik.in/2020/09/15/2020-09-15-rails-postgres-views.html)
-
-## Ways of adding posts
-
-- [Writing Blogs With Jupyter](https://github.com/fastai/fastpages#writing-blog-posts-with-jupyter)
-
-- [Writing Blogs With Markdown](https://github.com/fastai/fastpages#writing-blog-posts-with-markdown)
-
-- [Writing Blog Posts With Word](https://github.com/fastai/fastpages#writing-blog-posts-with-microsoft-word)
-
-- [(Optional) Preview Your Blog Locally](_fastpages_docs/DEVELOPMENT.md)
\ No newline at end of file
diff --git a/_action_files/Dockerfile b/_action_files/Dockerfile
deleted file mode 100644
index 1cbaeec..0000000
--- a/_action_files/Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM hamelsmu/fastpages-nbdev
-
-WORKDIR /fastpages
-COPY . .
-RUN chmod u+x action_entrypoint.sh
-RUN chmod u+x word2post.sh
-RUN dos2unix /fastpages/*.sh
-
-CMD [ "/fastpages/action_entrypoint.sh" ]
diff --git a/_action_files/__init__.py b/_action_files/__init__.py
deleted file mode 100755
index e69de29..0000000
diff --git a/_action_files/action.yml b/_action_files/action.yml
deleted file mode 100644
index 9f240fe..0000000
--- a/_action_files/action.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: 'fastpages: An easy to use blogging platform with support for Jupyter Notebooks.'
-description: Converts Jupyter notebooks and Word docs into Jekyll blog posts.
-author: Hamel Husain
-inputs:
- BOOL_SAVE_MARKDOWN:
- description: Either 'true' or 'false'. Whether or not to commit converted markdown files from notebooks and word documents into the _posts directory in your repo. This is useful for debugging.
- required: false
- default: false
- SSH_DEPLOY_KEY:
- description: a ssh deploy key is required if BOOL_SAVE_MARKDOWN = 'true'
- required: false
-branding:
- color: 'blue'
- icon: 'book'
-runs:
- using: 'docker'
- image: 'Dockerfile'
diff --git a/_action_files/action_entrypoint.sh b/_action_files/action_entrypoint.sh
deleted file mode 100755
index 7a5be66..0000000
--- a/_action_files/action_entrypoint.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-set -e
-
-# setup ssh: allow key to be used without a prompt and start ssh agent
-export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
-eval "$(ssh-agent -s)"
-
-######## Run notebook/word converter ########
-# word converter using pandoc
-/fastpages/word2post.sh
-# notebook converter using nbdev
-cp /fastpages/settings.ini .
-python /fastpages/nb2post.py
-
-
-######## Optionally save files and build GitHub Pages ########
-if [[ "$INPUT_BOOL_SAVE_MARKDOWN" == "true" ]];then
-
- if [ -z "$INPUT_SSH_DEPLOY_KEY" ];then
- echo "You must set the SSH_DEPLOY_KEY input if BOOL_SAVE_MARKDOWN is set to true.";
- exit 1;
- fi
-
- # Get user's email from commit history
- if [[ "$GITHUB_EVENT_NAME" == "push" ]];then
- USER_EMAIL=`cat $GITHUB_EVENT_PATH | jq '.commits | .[0] | .author.email'`
- else
- USER_EMAIL="actions@github.com"
- fi
-
- # Setup Git credentials if we are planning to change the data in the repo
- git config --global user.name "$GITHUB_ACTOR"
- git config --global user.email "$USER_EMAIL"
- git remote add fastpages-origin "git@github.com:$GITHUB_REPOSITORY.git"
- echo "${INPUT_SSH_DEPLOY_KEY}" > _mykey
- chmod 400 _mykey
- ssh-add _mykey
-
- # Optionally save intermediate markdown
- if [[ "$INPUT_BOOL_SAVE_MARKDOWN" == "true" ]]; then
- git pull fastpages-origin ${GITHUB_REF} --ff-only
- git add _posts
- git commit -m "[Bot] Update $INPUT_FORMAT blog posts" --allow-empty
- git push fastpages-origin HEAD:${GITHUB_REF}
- fi
-fi
-
-
diff --git a/_action_files/fast_template.py b/_action_files/fast_template.py
deleted file mode 100755
index 935e2ff..0000000
--- a/_action_files/fast_template.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from datetime import datetime
-import re, os
-from pathlib import Path
-from typing import Tuple, Set
-
-# Check for YYYY-MM-DD
-_re_blog_date = re.compile(r'([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])-)')
-# Check for leading dashses or numbers
-_re_numdash = re.compile(r'(^[-\d]+)')
-
-def rename_for_jekyll(nb_path: Path, warnings: Set[Tuple[str, str]]=None) -> str:
- """
- Return a Path's filename string appended with its modified time in YYYY-MM-DD format.
- """
- assert nb_path.exists(), f'{nb_path} could not be found.'
-
- # Checks if filename is compliant with Jekyll blog posts
- if _re_blog_date.match(nb_path.name): return nb_path.with_suffix('.md').name.replace(' ', '-')
-
- else:
- clean_name = _re_numdash.sub('', nb_path.with_suffix('.md').name).replace(' ', '-')
-
- # Gets the file's last modified time and and append YYYY-MM-DD- to the beginning of the filename
- mdate = os.path.getmtime(nb_path) - 86400 # subtract one day b/c dates in the future break Jekyll
- dtnm = datetime.fromtimestamp(mdate).strftime("%Y-%m-%d-") + clean_name
- assert _re_blog_date.match(dtnm), f'{dtnm} is not a valid name, filename must be pre-pended with YYYY-MM-DD-'
- # push this into a set b/c _nb2htmlfname gets called multiple times per conversion
- if warnings: warnings.add((nb_path, dtnm))
- return dtnm
diff --git a/_action_files/fastpages-jekyll.Dockerfile b/_action_files/fastpages-jekyll.Dockerfile
deleted file mode 100644
index 800decb..0000000
--- a/_action_files/fastpages-jekyll.Dockerfile
+++ /dev/null
@@ -1,10 +0,0 @@
-# Defines https://hub.docker.com/repository/docker/hamelsmu/fastpages-jekyll
-FROM jekyll/jekyll:4.0.1
-# FROM hamelsmu/fastpages-jekyll
-
-COPY . .
-
-# Pre-load all gems into the environment
-RUN chmod -R 777 .
-RUN gem install bundler
-RUN jekyll build
diff --git a/_action_files/fastpages-nbdev.Dockerfile b/_action_files/fastpages-nbdev.Dockerfile
deleted file mode 100644
index 2993547..0000000
--- a/_action_files/fastpages-nbdev.Dockerfile
+++ /dev/null
@@ -1,9 +0,0 @@
-FROM python:3-slim-stretch
-
-RUN pip install --upgrade pip
-RUN apt-get update; apt-get -y install wget git jq dos2unix curl
-RUN wget https://github.com/jgm/pandoc/releases/download/2.9.1.1/pandoc-2.9.1.1-1-amd64.deb
-RUN dpkg -i pandoc-2.9.1.1-1-amd64.deb
-RUN pip install jupyter watchdog[watchmedo] jupyter_client ipykernel jupyter
-RUN python3 -m ipykernel install --user
-RUN pip install nbdev==0.2.18
diff --git a/_action_files/fastpages.tpl b/_action_files/fastpages.tpl
deleted file mode 100644
index 14077e5..0000000
--- a/_action_files/fastpages.tpl
+++ /dev/null
@@ -1,22 +0,0 @@
-{%- extends 'hide.tpl' -%}
-{%- block body -%}
-{%- set internals = ["metadata", "output_extension", "inlining",
- "raw_mimetypes", "global_content_filter"] -%}
----
-{%- for k in resources |reject("in", internals) %}
-{% if k == "summary" and "description" not in resources %}description{% else %}{{ k }}{% endif %}: {{ resources[k] }}
-{%- endfor %}
-layout: notebook
----
-
-
-
-
- {{ super() }}
-
-{%- endblock body %}
\ No newline at end of file
diff --git a/_action_files/hide.tpl b/_action_files/hide.tpl
deleted file mode 100644
index 6f97286..0000000
--- a/_action_files/hide.tpl
+++ /dev/null
@@ -1,39 +0,0 @@
-{%- extends 'basic.tpl' -%}
-
-{% block codecell %}
- {{ "{% raw %}" }}
- {{ super() }}
- {{ "{% endraw %}" }}
-{% endblock codecell %}
-
-{% block input_group -%}
-{%- if cell.metadata.collapse_show -%}
-
-
-
-{%- else -%}
- {{ super() }}
-{%- endif -%}
-{% endblock output_area_prompt %}
\ No newline at end of file
diff --git a/_action_files/nb2post.py b/_action_files/nb2post.py
deleted file mode 100755
index 038064c..0000000
--- a/_action_files/nb2post.py
+++ /dev/null
@@ -1,22 +0,0 @@
-"""Converts Jupyter Notebooks to Jekyll compliant blog posts"""
-from datetime import datetime
-import re, os, logging
-from nbdev import export2html
-from nbdev.export2html import Config, Path, _re_digits, _to_html, _re_block_notes
-from fast_template import rename_for_jekyll
-
-warnings = set()
-
-# Modify the naming process such that destination files get named properly for Jekyll _posts
-def _nb2htmlfname(nb_path, dest=None):
- fname = rename_for_jekyll(nb_path, warnings=warnings)
- if dest is None: dest = Config().doc_path
- return Path(dest)/fname
-
-# TODO: Open a GitHub Issue in addition to printing warnings
-for original, new in warnings:
- print(f'{original} has been renamed to {new} to be complaint with Jekyll naming conventions.\n')
-
-## apply monkey patches
-export2html._nb2htmlfname = _nb2htmlfname
-export2html.notebook2html(fname='_notebooks/*.ipynb', dest='_posts/', template_file='/fastpages/fastpages.tpl')
diff --git a/_action_files/parse_netlify.py b/_action_files/parse_netlify.py
deleted file mode 100644
index 28e3527..0000000
--- a/_action_files/parse_netlify.py
+++ /dev/null
@@ -1,7 +0,0 @@
-import sys, re
-logs = sys.stdin.read()
-
-draft_url = re.findall(r'Website Draft URL: .*(https://.*)', logs)[0]
-assert draft_url, 'Was not able to find Draft URL in the logs:\n{}'.format(logs)
-print("::set-output name=draft_url::{}".format(draft_url))
-
diff --git a/_action_files/pr_comment.sh b/_action_files/pr_comment.sh
deleted file mode 100755
index e17fb38..0000000
--- a/_action_files/pr_comment.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-# Make a comment on a PR.
-# Usage:
-# > pr_comment.sh <>
-
-set -e
-
-# This is populated by our secret from the Workflow file.
-if [[ -z "${GITHUB_TOKEN}" ]]; then
- echo "Set the GITHUB_TOKEN env variable."
- exit 1
-fi
-
-if [[ -z "${ISSUE_NUMBER}" ]]; then
- echo "Set the ISSUE_NUMBER env variable."
- exit 1
-fi
-
-if [ -z "$1" ]
- then
- echo "No MESSAGE argument supplied. Usage: issue_comment.sh "
- exit 1
-fi
-
-MESSAGE=$1
-
-## Set Vars
-URI=https://api.github.com
-API_VERSION=v3
-API_HEADER="Accept: application/vnd.github.${API_VERSION}+json"
-AUTH_HEADER="Authorization: token ${GITHUB_TOKEN}"
-
-# Create a comment with APIv3 # POST /repos/:owner/:repo/issues/:issue_number/comments
-curl -XPOST -sSL \
- -d "{\"body\": \"$MESSAGE\"}" \
- -H "${AUTH_HEADER}" \
- -H "${API_HEADER}" \
- "${URI}/repos/${GITHUB_REPOSITORY}/issues/${ISSUE_NUMBER}/comments"
diff --git a/_action_files/settings.ini b/_action_files/settings.ini
deleted file mode 100644
index 69b4b24..0000000
--- a/_action_files/settings.ini
+++ /dev/null
@@ -1,44 +0,0 @@
-[DEFAULT]
-lib_name = nbdev
-user = fastai
-branch = master
-version = 0.2.10
-description = Writing a library entirely in notebooks
-keywords = jupyter notebook
-author = Murali K
-author_email = murali.kummitha@gmail.com
-baseurl =
-title = nbdev
-copyright = fast.ai
-license = apache2
-status = 2
-min_python = 3.6
-audience = Developers
-language = English
-requirements = nbformat>=4.4.0 nbconvert>=5.6.1 pyyaml fastscript packaging
-console_scripts = nbdev_build_lib=nbdev.cli:nbdev_build_lib
- nbdev_update_lib=nbdev.cli:nbdev_update_lib
- nbdev_diff_nbs=nbdev.cli:nbdev_diff_nbs
- nbdev_test_nbs=nbdev.cli:nbdev_test_nbs
- nbdev_build_docs=nbdev.cli:nbdev_build_docs
- nbdev_nb2md=nbdev.cli:nbdev_nb2md
- nbdev_trust_nbs=nbdev.cli:nbdev_trust_nbs
- nbdev_clean_nbs=nbdev.clean:nbdev_clean_nbs
- nbdev_read_nbs=nbdev.cli:nbdev_read_nbs
- nbdev_fix_merge=nbdev.cli:nbdev_fix_merge
- nbdev_install_git_hooks=nbdev.cli:nbdev_install_git_hooks
- nbdev_bump_version=nbdev.cli:nbdev_bump_version
- nbdev_new=nbdev.cli:nbdev_new
- nbdev_detach=nbdev.cli:nbdev_detach
-nbs_path = nbs
-doc_path = images/copied_from_nb
-doc_host = https://nbdev.fast.ai
-doc_baseurl = %(baseurl)s/images/copied_from_nb/
-git_url = https://github.com/fastai/nbdev/tree/master/
-lib_path = nbdev
-tst_flags = fastai2
-custom_sidebar = False
-cell_spacing = 1
-monospace_docstrings = False
-jekyll_styles = note,warning,tip,important,youtube,twitter
-
diff --git a/_action_files/word2post.py b/_action_files/word2post.py
deleted file mode 100755
index f152d6d..0000000
--- a/_action_files/word2post.py
+++ /dev/null
@@ -1,8 +0,0 @@
-import sys
-from pathlib import Path
-from fast_template import rename_for_jekyll
-
-if __name__ == '__main__':
- file_path = Path(sys.argv[1])
- new_name = rename_for_jekyll(file_path)
- print(new_name)
diff --git a/_action_files/word2post.sh b/_action_files/word2post.sh
deleted file mode 100755
index 47b81f7..0000000
--- a/_action_files/word2post.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-# This sets the environment variable when testing locally and not in a GitHub Action
-if [ -z "$GITHUB_ACTIONS" ]; then
- GITHUB_WORKSPACE='/data'
- echo "=== Running Locally: All assets expected to be in the directory /data ==="
-fi
-
-# Loops through directory of *.docx files and converts to markdown
-# markdown files are saved in _posts, media assets are saved in assets/img//media
-for FILENAME in ${GITHUB_WORKSPACE}/_word/*.docx; do
- [ -e "$FILENAME" ] || continue # skip when glob doesn't match
- NAME=${FILENAME##*/} # Get filename without the directory
- NEW_NAME=`python3 "/fastpages/word2post.py" "${FILENAME}"` # clean filename to be Jekyll compliant for posts
- BASE_NEW_NAME=${NEW_NAME%.md} # Strip the file extension
-
- if [ -z "$NEW_NAME" ]; then
- echo "Unable To Rename: ${FILENAME} to a Jekyll complaint filename for blog posts"
- exit 1
- fi
-
- echo "Converting: ${NAME} ---to--- ${NEW_NAME}"
- cd ${GITHUB_WORKSPACE}
- pandoc --from docx --to gfm --output "${GITHUB_WORKSPACE}/_posts/${NEW_NAME}" --columns 9999 \
- --extract-media="assets/img/${BASE_NEW_NAME}" --standalone "${FILENAME}"
-
- # Inject correction to image links in markdown
- sed -i.bak 's/!\[\](assets/!\[\]({{ site.url }}{{ site.baseurl }}\/assets/g' "_posts/${NEW_NAME}"
- # Remove intermediate files
- rm _posts/*.bak 2> /dev/null || true
-
- cat "${GITHUB_WORKSPACE}/_action_files/word_front_matter.txt" "_posts/${NEW_NAME}" > temp && mv temp "_posts/${NEW_NAME}"
-done
diff --git a/_action_files/word_front_matter.txt b/_action_files/word_front_matter.txt
deleted file mode 100644
index f733c79..0000000
--- a/_action_files/word_front_matter.txt
+++ /dev/null
@@ -1,3 +0,0 @@
----
-layout: post
----
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index bf54ca3..0000000
--- a/_config.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-title: Murali Kummitha | Software Engineer
-description: Technical blogs | ROR | Data Science | NLP | Python | Java | Databases
-github_username: iamurali
-# you can comment the below line out if your repo name is not different than your baseurl
-github_repo: "iamurali.github.com"
-
-# OPTIONAL: override baseurl and url if using a custom domain
-# Note: leave out the trailing / from this value.
-url: "https://iamurali.github.io" # the base hostname & protocol for your site, e.g. http://example.com
-
-###########################################################
-######### Special Instructions for baseurl ###############
-#
-#### Scenario One: If you do not have a Custom Domain #####
-# - if you are not using a custom domain, the baseurl *must* be set to your repo name
-#
-#### Scenario Two: If you have a Custom Domain #####
-# 1. If your domain does NOT have a subpath, this leave this value as ""
-# 2. If your domain does have a subpath, you must preceed the value with a / and NOT have a / at the end.
-# For example:
-# "" is valid
-# "/blog" is valid
-# "/blog/site/" is invalid ( / at the end)
-# "/blog/site" is valid
-# "blog/site" is invalid ( because doesn't begin with a /)
-#
-# 3. You must replace the parameter `baseurl` in _action_files/settings.ini with the same value as you set here but WITHOUT QUOTES.
-#
-baseurl: "" # the subpath of your site, e.g. "/blog".
-
-# Github and twitter are optional:
-minima:
- social_links:
- twitter: muralikummitha
- github: iamurali
-
-# Set this to true to get LaTeX math equation support
-use_math: true
-
-disqus:
- # Leave shortname blank to disable comments site-wide.
- # Disable comments for any post by adding `comments: false` to that post's YAML Front Matter.
- shortname: iamurali
-
-# Set this to true to display the summary of your blog post under your title on the Home page.
-show_description: true
-
-# Set this to true to display image previews on home page, if they exist
-show_image: true
-
-# Set this to true to turn on annotations with hypothes.is (https://web.hypothes.is/)
-annotations: false
-
-# Set this to true to display tags on each post
-show_tags: true
-
-# Add your Google Analytics ID here if you have one and want to use it
-google_analytics: UA-175668124-1
-
-exclude:
- - docker-compose.yml
- - action.yml
- - Makefile
-
-# this setting allows you to keep pages organized in the _pages folder
-include:
- - _pages
-
-# This specifies what badges are turned on by default for notebook posts.
-default_badges:
- github: true
- binder: false
- colab: true
-
-# Escape HTML in post descriptions
-html_escape:
- description: false
-
-# Everything below here should be left alone. Modifications may break fastpages
-future: true
-theme: minima
-plugins:
- - jekyll-gist
- - jekyll-octicons
- - jekyll-toc
- - jekyll-relative-links
- - jekyll-seo-tag
- - jekyll-remote-theme
- - jekyll-paginate
- - jekyll-sitemap
- - jemoji
-
-# See https://jekyllrb.com/docs/pagination/
-# For pagination to work, you cannot have index.md at the root of your repo, instead you must rename this file to index.html
-paginate: 10
-paginate_path: /page:num/
-
-remote_theme: jekyll/minima
-
-titles_from_headings:
- enabled: true
- strip_title: true
- collections: true
-
-highlighter: rouge
-markdown: kramdown
-kramdown:
- math_engine: katex
- input: GFM
- auto_ids: true
- hard_wrap: false
- syntax_highlighter: rouge
diff --git a/_fastpages_docs/CONTRIBUTING.md b/_fastpages_docs/CONTRIBUTING.md
deleted file mode 100644
index beeb719..0000000
--- a/_fastpages_docs/CONTRIBUTING.md
+++ /dev/null
@@ -1,63 +0,0 @@
-_Adapted from [fastai/nbdev/CONTRIBUTING.md](https://github.com/fastai/nbdev/blob/master/CONTRIBUTING.md)_
-
-# How to contribute to fastpages
-
-First, thanks a lot for wanting to help! Some things to keep in mind:
-
-- The jupyter to blog post conversion functionality relies on [fastai/nbdev](https://github.com/fastai/nbdev). For idiosyncratic uses of nbdev that only apply to blogs that would require a large refactor to nbdev, it might be acceptable to apply a [monkey patch](https://stackoverflow.com/questions/5626193/what-is-monkey-patching) in `fastpages`. However, it is encouraged to contribute to `nbdev` where possible if there is a change that could unlock a new feature. If you are unsure, please open an issue in this repo to discuss.
-
-
-## Note for new contributors from Jeremy
-
-It can be tempting to jump into a new project by questioning the stylistic decisions that have been made, such as naming, formatting, and so forth. This can be especially so for python programmers contributing to this project, which is unusual in following a number of conventions that are common in other programming communities, but not in Python. However, please don’t do this, for (amongst others) the following reasons:
-
-- Contributing to [Parkinson’s law of triviality](https://www.wikiwand.com/en/Law_of_triviality) has negative consequences for a project. Let’s focus on deep learning!
-- It’s exhausting to repeat the same discussion over and over again, especially when it’s been well documented already. When you have a question about the project, please check the pages in the docs website linked here.
-- You’re likely to get a warmer welcome from the community if you start out by contributing something that’s been requested on the forum, since you’ll be solving someone’s current problem.
-- If you start out by just telling us your point of view, rather than studying the background behind the decisions that have been made, you’re unlikely to be contributing anything new or useful.
-- I’ve been writing code for nearly 40 years now, across dozens of languages, and other folks involved have quite a bit of experience too - the approaches used are based on significant experience and research. Whilst there’s always room for improvement, it’s much more likely you’ll be making a positive contribution if you spend a few weeks studying and working within the current framework before suggesting wholesale changes.
-
-
-## Did you find a bug?
-
-* Nobody is perfect, especially not us. But first, please double-check the bug doesn't come from something on your side. The [forum](http://forums.fast.ai/) is a tremendous source for help, and we'd advise to use it as a first step. Be sure to include as much code as you can so that other people can easily help you.
-* Then, ensure the bug was not already reported by searching on GitHub under [Issues](https://github.com/fastai/fastpages/issues).
-* If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/fastai/fastpages/issues/new). Be sure to include a title and clear description, as much relevant information as possible, and a code sample or an executable test case demonstrating the expected behavior that is not occurring.
-* Be sure to add the complete error messages.
-
-#### Did you write a patch that fixes a bug?
-
-* Open a new GitHub pull request with the patch.
-* Ensure that your PR includes a test that fails without your patch, and pass with it.
-* Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable.
-* Before submitting, please be sure you abide by our [coding style](https://docs.fast.ai/dev/style.html) (where appropriate) and [the guide on abbreviations](https://docs.fast.ai/dev/abbr.html) and clean-up your code accordingly.
-
-## Do you intend to add a new feature or change an existing one?
-
-* You can suggest your change on the [fastai forum](http://forums.fast.ai/) to see if others are interested or want to help.
-* Once your approach has been discussed and confirmed on the forum, you are welcome to push a PR, including a complete description of the new feature and an example of how it's used. Be sure to document your code in the notebook.
-* Ensure that your code includes tests that exercise not only your feature, but also any other code that might be impacted.
-
-## PR submission guidelines
-
-Some general rules of thumb that will make your life easier.
-
-* Test locally before opening a pull request. See [the development guide](_fastpages_docs/DEVELOPMENT.md) for instructions on how to run fastpages on your local machine.
-* When you do open a pull request, please request a draft build of your PR by making a **comment with the magic command `/preview` in the pull request.** This will allow reviewers to see a live-preview of your changes without having to clone your branch.
- * You can do this multiple times, if necessary, to rebuild your preview due to changes. But please do not abuse this and test locally before doing this.
-
-* Keep each PR focused. While it's more convenient, do not combine several unrelated fixes together. Create as many branches as needing to keep each PR focused.
-* Do not mix style changes/fixes with "functional" changes. It's very difficult to review such PRs and it most likely get rejected.
-* Do not add/remove vertical whitespace. Preserve the original style of the file you edit as much as you can.
-* Do not turn an already submitted PR into your development playground. If after you submitted PR, you discovered that more work is needed - close the PR, do the required work and then submit a new PR. Otherwise each of your commits requires attention from maintainers of the project.
-* If, however, you submitted a PR and received a request for changes, you should proceed with commits inside that PR, so that the maintainer can see the incremental fixes and won't need to review the whole PR again. In the exception case where you realize it'll take many many commits to complete the requests, then it's probably best to close the PR, do the work and then submit it again. Use common sense where you'd choose one way over another.
-* When you open a pull request, you can generate a live preview build of how the blog site will look by making a comment in the PR that contains this command: `/preview`. GitHub will build your site and drop a temporary link for everyone to review. You can do this as multiple times if necessary, however, as mentioned previously do not turn an already submitted PR into a development playground.
-
-## Do you have questions about the source code?
-
-* Please ask it on the [fastai forum](http://forums.fast.ai/) (after searching someone didn't ask the same one before with a quick search). We'd rather have the maximum of discussions there so that the largest number can benefit from it.
-
-## Do you want to contribute to the documentation?
-
-* PRs are welcome for this. For any confusion about the documentation, please feel free to open an issue on this repo.
-
diff --git a/_fastpages_docs/DEVELOPMENT.md b/_fastpages_docs/DEVELOPMENT.md
deleted file mode 100644
index 4d60a01..0000000
--- a/_fastpages_docs/DEVELOPMENT.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Development Guide
- - [Seeing All Options From the Terminal](#seeing-all-commands-in-the-terminal)
- - [Basic usage: viewing your blog](#basic-usage-viewing-your-blog)
- - [Converting the pages locally](#converting-the-pages-locally)
- - [Visual Studio Code integration](#visual-studio-code-integration)
- - [Advanced usage](#advanced-usage)
- - [Rebuild all the containers](#rebuild-all-the-containers)
- - [Removing all the containers](#removing-all-the-containers)
- - [Attaching a shell to a container](#attaching-a-shell-to-a-container)
- - [Running a Jupyter Server](#running-a-jupyter-server)
-
-You can run your fastpages blog on your local machine, and view any changes you make to your posts, including Jupyter Notebooks and Word documents, live.
-The live preview requires that you have Docker installed on your machine. [Follow the instructions on this page if you need to install Docker.](https://www.docker.com/products/docker-desktop)
-
-## Seeing All Commands In The Terminal
-
-There are many different `docker-compose` commands that are necessary to manage the lifecycle of the fastpages Docker containers. To make this easier, we aliased common commands in a [Makefile](https://www.gnu.org/software/make/manual/html_node/Introduction.html).
-
-You can quickly see all available commands by running this command in the root of your repository:
-
-`make`
-
-## Basic usage: viewing your blog
-
-All of the commands in this block assume that you're in your blog root directory.
-To run the blog with live preview:
-
-```bash
-make server
-```
-
-When you run this command for the first time, it'll build the required Docker images, and the process might take a couple minutes.
-
-This command will build all the necessary containers and run the following services:
-1. A service that monitors any changes in `./_notebooks/*.ipynb/` and `./_word/*.docx;*.doc` and rebuild the blog on change.
-2. A Jekyll server on https://127.0.0.1:4000 — use this to preview your blog.
-
-The services will output to your terminal. If you close the terminal or hit `Ctrl-C`, the services will stop.
-If you want to run the services in the background:
-
-```bash
-# run all services in the background
-make server-detached
-
-# stop the services
-make stop
-```
-
-If you need to restart just the Jekyll server, and it's running in the background — you can do `make restart-jekyll`.
-
-_Note that the blog won't autoreload on change, you'll have to refresh your browser manually._
-
-**If containers won't start**: try `make build` first, this would rebuild all the containers from scratch, This might fix the majority of update problems.
-
-## Converting the pages locally
-
-If you just want to convert your notebooks and word documents to `.md` posts in `_posts`, this command will do it for you:
-
-```bash
-make convert
-```
-
-You can launch just the jekyll server with `make server`.
-
-## Visual Studio Code integration
-
-If you're using VSCode with the Docker extension, you can run these containers from the sidebar: `fastpages_watcher_1` and `fastpages_jekyll_1`.
-The containers will only show up in the list after you run or build them for the first time. So if they're not in the list — try `make build` in the console.
-
-## Advanced usage
-
-### Rebuild all the containers
-If you changed files in `_action_files` directory, you might need to rebuild the containers manually, without cache.
-
-```bash
-make build
-```
-
-### Removing all the containers
-Want to start from scratch and remove all the containers?
-
-```
-make remove
-```
-
-### Attaching a shell to a container
-You can attach a terminal to a running service:
-
-```bash
-
-# If the container is already running:
-
-# attach to a bash shell in the jekyll service
-make bash-jekyll
-
-# attach to a bash shell in the watcher service.
-make bash-nb
-```
-
-_Note: you can use `docker-compose run` instead of `make bash-nb` or `make bash-jekyll` to start a service and then attach to it.
-Or you can run all your services in the background, `make server-detached`, and then use `make bash-nb` or `make bash-jekyll` as in the examples above._
-
-## Running A Jupyter Server
-
-The fastpages development environment does not provide a Jupyter server for you. This is intentional so that you are free to run Jupyter Notebooks or Jupyter Lab in a manner that is familiar to you, and manage dependencies (requirements.txt, conda, etc) in the way you wish. Some tips that may make your life easier:
-
-- Provide instructions in your README and your blog posts on how to install the dependencies required to run your notebooks. This will make it easier for your audience to reproduce your notebooks.
-- Do not edit the Dockerfile in `/_action_files`, as that may interfere with the blogging environment. Furthermore, any changes you make to these files may get lost in future upgrades, if [upgrading automatically](UPGRADE.md). Instead, if you wish to manage your Jupyter server with Docker, we recommend that you maintain a seperate Dockerfile at the root of your repository.
diff --git a/_fastpages_docs/NOTEBOOK_FOOTNOTES.md b/_fastpages_docs/NOTEBOOK_FOOTNOTES.md
deleted file mode 100644
index 1cd8150..0000000
--- a/_fastpages_docs/NOTEBOOK_FOOTNOTES.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Detailed Guide To Footnotes in Notebooks
-
-Notebook -> HTML Footnotes don't work the same as Markdown. There isn't a good solution, so made these Jekyll plugins as a workaround
-
-```
-This adds a linked superscript {% fn 15 %}
-
-{{ "This is the actual footnote" | fndetail: 15 }}
-```
-
-
-
-You can have links, but then you have to use **single quotes** to escape the link.
-```
-This adds a linked superscript {% fn 20 %}
-
-{{ 'This is the actual footnote with a [link](www.github.com) as well!' | fndetail: 20 }}
-```
-
-
-However, what if you want a single quote in your footnote? There is not an easy way to escape that. Fortunately, you can use the special HTML character `'` (you must keep the semicolon!). For example, you can include a single quote like this:
-
-
-```
-This adds a linked superscript {% fn 20 %}
-
-{{ 'This is the actual footnote; with a [link](www.github.com) as well! and a single quote ' too!' | fndetail: 20 }}
-```
-
-
diff --git a/_fastpages_docs/README_TEMPLATE.md b/_fastpages_docs/README_TEMPLATE.md
deleted file mode 100644
index d373fd6..0000000
--- a/_fastpages_docs/README_TEMPLATE.md
+++ /dev/null
@@ -1,29 +0,0 @@
-[//]: # (This template replaces README.md when someone creates a new repo with the fastpages template.)
-
-
-
-[](https://github.com/fastai/fastpages)
-
-https://{_username_}.github.io/{_repo_name_}/
-
-# My Blog
-
-
-_powered by [fastpages](https://github.com/fastai/fastpages)_
-
-
-## What To Do Next?
-
-Great! You have setup your repo. Now its time to start writing content. Some helpful links:
-
-- [Writing Blogs With Jupyter](https://github.com/fastai/fastpages#writing-blog-posts-with-jupyter)
-
-- [Writing Blogs With Markdown](https://github.com/fastai/fastpages#writing-blog-posts-with-markdown)
-
-- [Writing Blog Posts With Word](https://github.com/fastai/fastpages#writing-blog-posts-with-microsoft-word)
-
-- [(Optional) Preview Your Blog Locally](_fastpages_docs/DEVELOPMENT.md)
-
-Note: you may want to remove example blog posts from the `_posts`, `_notebooks` or `_word` folders (but leave them empty, don't delete these folders) if you don't want these blog posts to appear on your site.
-
-Please use the [nbdev & blogging channel](https://forums.fast.ai/c/fastai-users/nbdev/48) in the fastai forums for any questions or feature requests.
diff --git a/_fastpages_docs/TROUBLESHOOTING.md b/_fastpages_docs/TROUBLESHOOTING.md
deleted file mode 100644
index 80df35e..0000000
--- a/_fastpages_docs/TROUBLESHOOTING.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# Filing Bugs & Troubleshooting
-
-These are required prerequisites before filing an issue on GitHub or on the [fastai forums](https://forums.fast.ai/)
-
-## Step 1: Attempt To Upgrade fastpages
-
-See the [Upgrading guide](https://github.com/fastai/fastpages/blob/master/_fastpages_docs/UPGRADE.md).
-
-**In addition to upgrading**, if developing locally, refresh your Docker containers with the following commands from the root of your repo:
-
-`make remove` followed by `make build`
-
-## Step 2: Search Relevant Places For Similar Issues
-
-- [ ] Search the [fastai forums](https://forums.fast.ai/) for similar problems.
-- [ ] Search issues on the [fastpages repo](https://github.com/fastai/fastpages/) for a similar problems?
-- [ ] Read the [README of the repo](https://github.com/fastai/fastpages/blob/master/README.md) carefully
-
-
-## Step 3: Observe Build Logs When Developing Locally
-
-- [ ] Run the [fastpages blog server locally](DEVELOPMENT.md)
- - Pay attention to the emitted logs when you save your notebooks or files. Often, you will see errors here that will give you important clues.
-- [ ] When developing locally, you will notice that Jupyter notebooks are converted to corresponding markdown files in the `_posts` folder. Take a look at the problematic blog posts and see if you can spot the offending HTML or markdown in that code.
-- Use your browser's developer tools to see if there are any errors. Common errors are (1) not able to find images because they have not been saved into the right folder, (2) javascript or other errors.
-- If you receive a Jekyll build error or a Liquid error, search for this error on Stack Overflow to provide more insight on the problem.
-
-## Step 4: See if there are errors in the build process of GitHub Actions.
-
-- [ ] In your GitHub repository, you will have a tab called **Actions**. To find build errors, click on the `Event` dropdown list and select `push`. Browse through tthe logs to see if you can find an error. If you receive an error, read the error message and try to debug.
-
-## Step 5: Once you have performed all the above steps, post your issue in the fastai forums or a GitHub Issue.
-
-- [ ] Use the [nbdev & blogging category](https://forums.fast.ai/c/fastai-users/nbdev/48) to specify your problem if posting on the fastpages forums.
-- [ ] If you cannot find a similar issue create a new thread instead of commenting on an unrelated one.
-- When reporting a bug, provide this information:
-
- 1. Steps to reproduce the problem
- 2. **A link to the notebook or markdown file** where the error is occuring
- 3. If the error is happening in GitHub Actions, a link to the specific error along with how you are able to reproduce this error. You must provide this **in addition to the link to the notebook or markdown file**.
- 4. A screenshot / dump of relevant logs or error messages you are receiving from your local development environment. the local development server as indicated in the [development guide](https://github.com/fastai/fastpages/blob/master/_fastpages_docs/DEVELOPMENT.md).
-
-
-**You must provide ALL of the above information**.
-
-# Frequent Errors
-
-1. Malformed front matter. Note that anything defined in front matter must be valid YAML. **Failure to provide valid YAML could result in your page not rendering** in your blog. For example, if you want a colon in your title you must escape it with double quotes like this:
-
- ` - title: "Deep learning: A tutorial"`
-
- or in a notebook
-
- `# "Deep learning: A tutorial"`
-
- See this [tutorial on YAML](https://rollout.io/blog/yaml-tutorial-everything-you-need-get-started/) for more information.
-
- **Colons, tilda, asteriks and other characters may cause your front matter to break and for your posts to not render.** If you violoate these conventions you often get an error that looks something like this:
-
- ```bash
- Error: YAML Exception reading ... (): mapping values are not allowed
- ```
-
-2. Can you customize the styling or theme of fastpages? **A**: See [Customizing Fastpages](https://github.com/fastai/fastpages#customizing-fastpages)
-
-See the [FAQ](https://github.com/fastai/fastpages#faq) for frequently asked questions.
diff --git a/_fastpages_docs/UPGRADE.md b/_fastpages_docs/UPGRADE.md
deleted file mode 100644
index 55cdb4b..0000000
--- a/_fastpages_docs/UPGRADE.md
+++ /dev/null
@@ -1,71 +0,0 @@
-# Upgrading fastpages
-
-
-
-- [Automated Upgrade](#automated-upgrade)
- - [Step 1: Open An Issue With The Upgrade Template.](#step-1-open-an-issue-with-the-upgrade-template)
- - [Step 2: Click `Submit new issue`](#step-2-click-submit-new-issue)
- - [Step 3: A Link to Pull Request Will Appear](#step-3-a-link-to-pull-request-will-appear)
- - [Step 4: Review & Merge PR](#step-4-review-merge-pr)
-- [Manual Upgrade](#manual-upgrade)
- - [Easy Way (Recommended)](#easy-way-recommended)
- - [Advanced](#advanced)
-- [Additional Resources](#additional-resources)
-
-
-There are two ways to upgrade fastpages. One is an automated way that assumes you have made no changes to the HTML of your site. Alternatively, you may [upgrade manually](#manual-upgrade) and determine which changes to accept or reject. For most people we recommend upgrading fastpages automatically.
-
-## Automated Upgrade
-
- - This method is appropriate for those who have not customized the HTML of their site.
- - **If you are unsure, try the Automated approach and review which files are changed in the automated PR** to see if this appropriate for you.
-
-### Step 1: Open An Issue With The Upgrade Template.
-
-- Open a new issue in your repository, and push the "Get Started" button for the `[fastpages] Automated Upgrade` Issue template, which looks like this:
- - **IF YOU DON'T SEE THIS**: you have an older version of fastpages and you **must [manually upgrade](#manual-upgrade) once** to get this new functionality.
-
- 
-
-### Step 2: Click `Submit new issue`
-
-- Be careful not to change anything before clicking the button.
-
- 
-
-### Step 3: A Link to Pull Request Will Appear
-
-- This issue will trigger GitHub to open a PR making changes to your repository for the upgrade to take palce. A comment with the link to the PR will be made in the issue, and will look like this:
-
- 
-
- It is possible that you might receive an error message instead of this command. You can follow the instructions in the comment to troubleshoot the issue. Common reasons for receiving an error are:
-
- - You are up to date, therefore no upgrade is possible. You will see an error that there is "nothing to commit".
- - You already have a PR from a prevoius upgrade open that you never merged.
-
- Please [ask on the forums](https://forums.fast.ai/) if you have encounter another problem that is unclear.
-
-### Step 4: Review & Merge PR
-
-- Ensure that you read the instructions in the PR carefully. Furthermore, carefully review which files will be changed to determine if this interferes with any customizations you have mades to your site. When ready, select `Merge pull request`.
-- If the PR is making undesired changes to files you can use the manual upgrade approach instead.
-
-## Manual Upgrade
-
-### Easy Way (Recommended)
-
-Create a new repo with the current `fastpages` template by following the [setup instructions](https://github.com/fastai/fastpages#setup-instructions) in the README, and copy all of your blog posts from `_notebooks`, `_word`, and `_posts` into the new template. This is very similar to what the automated process is doing.
-
-### Advanced
-
-- This method is appropriate for those who made customizations to the HTML of fastpages.
-- You must proceed with caution, as new versions of fastpages may not be compatible with your customizations.
-- You can use git to perform the upgrade by [following this approach](https://stackoverflow.com/questions/56577184/github-pull-changes-from-a-template-repository/56577320) instead. A step-by-step companion to this stack overflow post with screenshots is [written up here](https://github.com/fastai/fastpages/issues/163#issuecomment-593766189).
-- Be careful to not duplicate files, as files in fastpages have been reorganized several times.
-
-
-## Additional Resources
-
-- [This Actions workflow](/.github/workflows/upgrade.yaml) defines the automated upgrade process.
-- You can get more help with upgrading in the [fastai forums - nbdev & blogging category](https://forums.fast.ai/c/fastai-users/nbdev/48).
diff --git a/_fastpages_docs/_checkbox.png b/_fastpages_docs/_checkbox.png
deleted file mode 100644
index 19b5b2c..0000000
Binary files a/_fastpages_docs/_checkbox.png and /dev/null differ
diff --git a/_fastpages_docs/_manual_setup.md b/_fastpages_docs/_manual_setup.md
deleted file mode 100644
index 5d3e5ef..0000000
--- a/_fastpages_docs/_manual_setup.md
+++ /dev/null
@@ -1,41 +0,0 @@
-# Manual Setup Instructions
-
-These are the setup steps that are automated by [setup.yaml](.github/workflows/setup.yaml)
-
-1. Click the [](https://github.com/fastai/fastpages/generate) button to create a copy of this repo in your account.
-
-2. [Follow these instructions to create an ssh-deploy key](https://developer.github.com/v3/guides/managing-deploy-keys/#deploy-keys). Make sure you **select Allow write access** when adding this key to your GitHub account.
-
-3. [Follow these instructions to upload your deploy key](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets#creating-encrypted-secrets) as an encrypted secret on GitHub. Make sure you name your key `SSH_DEPLOY_KEY`. Note: The deploy key secret is your **private key** (NOT the public key).
-
-4. [Create a branch](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-and-deleting-branches-within-your-repository#creating-a-branch) named `gh-pages`.
-
-5. Change the badges on this README to point to **your** repository instead of `fastai/fastpages`. Badges are organized in a section at the beginning of this README. For example, you should replace `fastai` and `fastpages` in the below url:
-
- ``
-
- to
-
- ``
-
-6. Change `baseurl:` in `_config.yaml` to the name of your repository. For example, instead of
-
- `baseurl: "/fastpages"`
-
- this should be
-
- `baseurl: "/your-repo-name"`
-
-7. Similarly, change the `url:` parameter in `_config.yaml` to the url your blog will be served on. For example, instead of
-
- `url: "https://fastpages.fast.ai/"`
-
- this should be
-
- `url: "https://.github.io"`
-
-8. Read through `_config.yaml` carefully as there may be other options that must be set. The comments in this file will provide instructions.
-
-9. Delete the `CNAME` file from the root of your `master` branch (or change it if you are using a custom domain)
-
-10. Go to your [repository settings and enable GitHub Pages](https://help.github.com/en/enterprise/2.13/user/articles/configuring-a-publishing-source-for-github-pages) with the `gh-pages` branch you created earlier.
\ No newline at end of file
diff --git a/_fastpages_docs/_paginate.png b/_fastpages_docs/_paginate.png
deleted file mode 100644
index c5fbfc7..0000000
Binary files a/_fastpages_docs/_paginate.png and /dev/null differ
diff --git a/_fastpages_docs/_post_tags.png b/_fastpages_docs/_post_tags.png
deleted file mode 100644
index 4c948b6..0000000
Binary files a/_fastpages_docs/_post_tags.png and /dev/null differ
diff --git a/_fastpages_docs/_setup_pr_template.md b/_fastpages_docs/_setup_pr_template.md
deleted file mode 100644
index ec0a2b2..0000000
--- a/_fastpages_docs/_setup_pr_template.md
+++ /dev/null
@@ -1,41 +0,0 @@
-Hello :wave: @iamurali! Thank you for using fastpages!
-
-## Before you merge this PR
-
-1. Create an ssh key-pair. Open this utility. Select: `RSA` and `4096` and leave `Passphrase` blank. Click the blue button `Generate-SSH-Keys`.
-
-2. Navigate to this link and click `Add a new secret`. Copy and paste the **Private Key** into the `Value` field. This includes the "---BEGIN RSA PRIVATE KEY---" and "--END RSA PRIVATE KEY---" portions. **In the `Name` field, name the secret `SSH_DEPLOY_KEY`.**
-
-3. Navigate to this link and click the `Add deploy key` button. Paste your **Public Key** from step 1 into the `Key` box. In the `Title`, name the key anything you want, for example `fastpages-key`. Finally, **make sure you click the checkbox next to `Allow write access`** (pictured below), and click `Add key` to save the key.
-
-
-
-
-### What to Expect After Merging This PR
-
-- GitHub Actions will build your site, which will take 2-3 minutes to complete. **This will happen anytime you push changes to the master branch of your repository.** You can monitor the logs of this if you like on the [Actions tab of your repo](https://github.com/iamurali/iamurali.github.com/actions).
-- Your GH-Pages Status badge on your README will eventually appear and be green, indicating your first sucessfull build.
-- You can monitor the status of your site in the GitHub Pages section of your [repository settings](https://github.com/iamurali/iamurali.github.com/settings).
-
-If you are not using a custom domain, your website will appear at:
-
-#### https://iamurali.github.io/iamurali.github.com
-
-
-## Optional: Using a Custom Domain
-
-1. After merging this PR, add a file named `CNAME` at the root of your repo. For example, the `fastpages` blog is hosted at `https://fastpages.fast.ai`, which means [our CNAME](https://github.com/fastai/fastpages/blob/master/CNAME) contains the following contents:
-
-
- >`fastpages.fast.ai`
-
-
-2. Change the `url` and `baseurl` parameters in your `/_config.yml` file to reflect your custom domain.
-
-
- Wondering how to setup a custom domain? See [this article](https://dev.to/trentyang/how-to-setup-google-domain-for-github-pages-1p58). You must add a CNAME file to the root of your master branch for the intructions in the article to work correctly.
-
-
-## Questions
-
-Please use the [nbdev & blogging channel](https://forums.fast.ai/c/fastai-users/nbdev/48) in the fastai forums for any questions or feature requests.
diff --git a/_fastpages_docs/_show_image_true.png b/_fastpages_docs/_show_image_true.png
deleted file mode 100644
index b6c0a7c..0000000
Binary files a/_fastpages_docs/_show_image_true.png and /dev/null differ
diff --git a/_fastpages_docs/_upgrade_pr.md b/_fastpages_docs/_upgrade_pr.md
deleted file mode 100644
index 6e8baab..0000000
--- a/_fastpages_docs/_upgrade_pr.md
+++ /dev/null
@@ -1,14 +0,0 @@
-Hello :wave: @{_username_}!
-
-This PR pulls the most recent files from [fastpages](https://github.com/fastai/fastpages), and attempts to replace relevant files in your repository, without changing the content of your blog posts. This allows you to receive bug fixes and feature updates.
-
-## Warning
-
-If you have applied **customizations to the HTML or styling of your site, they may be lost if you merge this PR. Please review the changes this PR makes carefully before merging!.** However, for people who only write content and don't change the styling of their site, this method is recommended.
-
-If you would like more fine-grained control over what changes to accept or decline, consider [following this approach](https://stackoverflow.com/questions/56577184/github-pull-changes-from-a-template-repository/56577320) instead.
-
-### What to Expect After Merging This PR
-
-- GitHub Actions will build your site, which will take 3-4 minutes to complete. **This will happen anytime you push changes to the master branch of your repository.** You can monitor the logs of this if you like on the [Actions tab of your repo](https://github.com/{_username_}/{_repo_name_}/actions).
-- You can monitor the status of your site in the GitHub Pages section of your [repository settings](https://github.com/{_username_}/{_repo_name_}/settings).
diff --git a/_fastpages_docs/annotate.png b/_fastpages_docs/annotate.png
deleted file mode 100644
index 56fd6a4..0000000
Binary files a/_fastpages_docs/annotate.png and /dev/null differ
diff --git a/_fastpages_docs/highlight_dracula.png b/_fastpages_docs/highlight_dracula.png
deleted file mode 100644
index 8cf540d..0000000
Binary files a/_fastpages_docs/highlight_dracula.png and /dev/null differ
diff --git a/_fastpages_docs/highlight_original.png b/_fastpages_docs/highlight_original.png
deleted file mode 100644
index 7da1954..0000000
Binary files a/_fastpages_docs/highlight_original.png and /dev/null differ
diff --git a/_fastpages_docs/upgrade_step1.png b/_fastpages_docs/upgrade_step1.png
deleted file mode 100644
index 688cd51..0000000
Binary files a/_fastpages_docs/upgrade_step1.png and /dev/null differ
diff --git a/_fastpages_docs/upgrade_step2.png b/_fastpages_docs/upgrade_step2.png
deleted file mode 100644
index deea3bc..0000000
Binary files a/_fastpages_docs/upgrade_step2.png and /dev/null differ
diff --git a/_fastpages_docs/upgrade_step3.png b/_fastpages_docs/upgrade_step3.png
deleted file mode 100644
index 8964c5a..0000000
Binary files a/_fastpages_docs/upgrade_step3.png and /dev/null differ
diff --git a/_fastpages_docs/version.txt b/_fastpages_docs/version.txt
deleted file mode 100644
index 96981b7..0000000
--- a/_fastpages_docs/version.txt
+++ /dev/null
@@ -1 +0,0 @@
-2.1.40
diff --git a/_includes/alert.html b/_includes/alert.html
deleted file mode 100644
index 3592963..0000000
--- a/_includes/alert.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {% octicon alert %}
- {{include.text}}
-
diff --git a/_includes/custom-head.html b/_includes/custom-head.html
deleted file mode 100644
index 0b0c090..0000000
--- a/_includes/custom-head.html
+++ /dev/null
@@ -1,67 +0,0 @@
-{% comment %}
- Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
-
- 1. Head over to https://realfavicongenerator.net/ to add your own favicons.
- 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
-{% endcomment %}
-
-
-{%- include favicons.html -%}
-{% seo %}
-
-
-{%- feed_meta -%}
-{%- if jekyll.environment == 'production' and site.google_analytics -%}
- {%- include google-analytics.html -%}
-{%- endif -%}
-
-{%- if site.annotations -%}
-
-{%- endif -%}
-{% if site.use_math %}
-
-
-
-
-
-{% endif %}
-
-
-
-
diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html
deleted file mode 100644
index 2bb5555..0000000
--- a/_includes/disqus_comments.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% if page.comments != false and jekyll.environment == "production" %}
-
-
-
-
-{% endif %}
\ No newline at end of file
diff --git a/_includes/favicons.html b/_includes/favicons.html
deleted file mode 100644
index 4a62cca..0000000
--- a/_includes/favicons.html
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html
deleted file mode 100644
index 211af80..0000000
--- a/_includes/google-analytics.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-{% if site.google_analytics %}
-
-
-{% endif %}
diff --git a/_includes/head.html b/_includes/head.html
deleted file mode 100644
index 655c105..0000000
--- a/_includes/head.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
- {%- seo -%}
-
- {%- feed_meta -%}
- {%- if jekyll.environment == 'production' and site.google_analytics -%}
- {%- include google-analytics.html -%}
- {%- endif -%}
-
- {%- include custom-head.html -%}
-
-
diff --git a/_includes/image-r b/_includes/image-r
deleted file mode 100644
index 1137491..0000000
--- a/_includes/image-r
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
- {% if include.caption %}
- {{ include.caption }}
- {% endif %}
-
-
diff --git a/_includes/image.html b/_includes/image.html
deleted file mode 100644
index 46c3662..0000000
--- a/_includes/image.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
- {% if {{include.url}} %}{% endif %}
-
- {% if {{include.url}} %}{% endif %}
- {% if {{include.caption}} %}
- {{include.caption}}
- {% endif %}
-
diff --git a/_includes/important.html b/_includes/important.html
deleted file mode 100644
index ff91112..0000000
--- a/_includes/important.html
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {% endif %}
-
- {% if page.layout == 'notebook' %}
- {% if page.badges or page.badges == nil %}
-
- {% unless page.hide_github_badge or site.default_badges.github != true %}{% include notebook_github_link.html %}{% endunless %}
- {% unless page.hide_binder_badge or site.default_badges.binder != true %}{% include notebook_binder_link.html %}{% endunless %}
- {% unless page.hide_colab_badge or site.default_badges.colab != true %}{% include notebook_colab_link.html %}{% endunless %}
-
- {% endif -%}
- {% endif -%}
-
-
-
- {{ content | toc }}
-
- {%- if page.comments -%}
- {%- include utterances.html -%}
- {%- endif -%}
- {%- if site.disqus.shortname -%}
- {%- include disqus_comments.html -%}
- {%- endif -%}
-
-
-
-{% if site.disqus.shortname %}
- {% include disqus_comments.html %}
-{% endif %}
\ No newline at end of file
diff --git a/_notebooks/2020-02-20-test.ipynb b/_notebooks/2020-02-20-test.ipynb
deleted file mode 100644
index af0a485..0000000
--- a/_notebooks/2020-02-20-test.ipynb
+++ /dev/null
@@ -1,820 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Fastpages Notebook Blog Post\n",
- "> A tutorial of fastpages for Jupyter notebooks.\n",
- "\n",
- "- toc: true \n",
- "- badges: true\n",
- "- comments: true\n",
- "- categories: [jupyter]\n",
- "- image: images/chart-preview.png"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# About\n",
- "\n",
- "This notebook is a demonstration of some of capabilities of [fastpages](https://github.com/fastai/fastpages) with notebooks.\n",
- "\n",
- "\n",
- "With `fastpages` you can save your jupyter notebooks into the `_notebooks` folder at the root of your repository, and they will be automatically be converted to Jekyll compliant blog posts!\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Front Matter\n",
- "\n",
- "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:\n",
- "\n",
- "```\n",
- "# \"My Title\"\n",
- "> \"Awesome summary\"\n",
- "\n",
- "- toc: true- branch: master- badges: true\n",
- "- comments: true\n",
- "- author: Hamel Husain & Jeremy Howard\n",
- "- categories: [fastpages, jupyter]\n",
- "```\n",
- "\n",
- "- Setting `toc: true` will automatically generate a table of contents\n",
- "- Setting `badges: true` will automatically include GitHub and Google Colab links to your notebook.\n",
- "- Setting `comments: true` will enable commenting on your blog post, powered by [utterances](https://github.com/utterance/utterances).\n",
- "\n",
- "The title and description need to be enclosed in double quotes only if they include special characters such as a colon. More details and options for front matter can be viewed on the [front matter section](https://github.com/fastai/fastpages#front-matter-related-options) of the README."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Markdown Shortcuts"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "A `#hide` comment at the top of any code cell will hide **both the input and output** of that cell in your blog post.\n",
- "\n",
- "A `#hide_input` comment at the top of any code cell will **only hide the input** of that cell."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "The comment #hide_input was used to hide the code that produced this.\n"
- ]
- }
- ],
- "source": [
- "#hide_input\n",
- "print('The comment #hide_input was used to hide the code that produced this.')"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "put 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:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "#collapse-hide\n",
- "import pandas as pd\n",
- "import altair as alt"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "put 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:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [],
- "source": [
- "#collapse-show\n",
- "cars = 'https://vega.github.io/vega-datasets/data/cars.json'\n",
- "movies = 'https://vega.github.io/vega-datasets/data/movies.json'\n",
- "sp500 = 'https://vega.github.io/vega-datasets/data/sp500.csv'\n",
- "stocks = 'https://vega.github.io/vega-datasets/data/stocks.csv'\n",
- "flights = 'https://vega.github.io/vega-datasets/data/flights-5k.json'"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Interactive Charts With Altair\n",
- "\n",
- "Charts made with Altair remain interactive. Example charts taken from [this repo](https://github.com/uwdata/visualization-curriculum), specifically [this notebook](https://github.com/uwdata/visualization-curriculum/blob/master/altair_interaction.ipynb)."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [],
- "source": [
- "# hide\n",
- "df = pd.read_json(movies) # load movies data\n",
- "df.columns = [x.replace(' ', '_') for x in df.columns.values]\n",
- "genres = df['Major_Genre'].unique() # get unique field values\n",
- "genres = list(filter(lambda d: d is not None, genres)) # filter out None values\n",
- "genres.sort() # sort alphabetically"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [],
- "source": [
- "#hide\n",
- "mpaa = ['G', 'PG', 'PG-13', 'R', 'NC-17', 'Not Rated']"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 1: DropDown"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- ""
- ],
- "text/plain": [
- "alt.Chart(...)"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# single-value selection over [Major_Genre, MPAA_Rating] pairs\n",
- "# use specific hard-wired values as the initial selected values\n",
- "selection = alt.selection_single(\n",
- " name='Select',\n",
- " fields=['Major_Genre', 'MPAA_Rating'],\n",
- " init={'Major_Genre': 'Drama', 'MPAA_Rating': 'R'},\n",
- " bind={'Major_Genre': alt.binding_select(options=genres), 'MPAA_Rating': alt.binding_radio(options=mpaa)}\n",
- ")\n",
- " \n",
- "# scatter plot, modify opacity based on selection\n",
- "alt.Chart(df).mark_circle().add_selection(\n",
- " selection\n",
- ").encode(\n",
- " x='Rotten_Tomatoes_Rating:Q',\n",
- " y='IMDB_Rating:Q',\n",
- " tooltip='Title:N',\n",
- " opacity=alt.condition(selection, alt.value(0.75), alt.value(0.05))\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 2: Tooltips"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- ""
- ],
- "text/plain": [
- "alt.Chart(...)"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "alt.Chart(df).mark_circle().add_selection(\n",
- " alt.selection_interval(bind='scales', encodings=['x'])\n",
- ").encode(\n",
- " alt.X('Rotten_Tomatoes_Rating', type='quantitative'),\n",
- " alt.Y('IMDB_Rating', type='quantitative', axis=alt.Axis(minExtent=30)),\n",
- "# y=alt.Y('IMDB_Rating:Q', ), # use min extent to stabilize axis title placement\n",
- " tooltip=['Title:N', 'Release_Date:N', 'IMDB_Rating:Q', 'Rotten_Tomatoes_Rating:Q']\n",
- ").properties(\n",
- " width=500,\n",
- " height=400\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Example 3: More Tooltips"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- ""
- ],
- "text/plain": [
- "alt.LayerChart(...)"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# select a point for which to provide details-on-demand\n",
- "label = alt.selection_single(\n",
- " encodings=['x'], # limit selection to x-axis value\n",
- " on='mouseover', # select on mouseover events\n",
- " nearest=True, # select data point nearest the cursor\n",
- " empty='none' # empty selection includes no data points\n",
- ")\n",
- "\n",
- "# define our base line chart of stock prices\n",
- "base = alt.Chart().mark_line().encode(\n",
- " alt.X('date:T'),\n",
- " alt.Y('price:Q', scale=alt.Scale(type='log')),\n",
- " alt.Color('symbol:N')\n",
- ")\n",
- "\n",
- "alt.layer(\n",
- " base, # base line chart\n",
- " \n",
- " # add a rule mark to serve as a guide line\n",
- " alt.Chart().mark_rule(color='#aaa').encode(\n",
- " x='date:T'\n",
- " ).transform_filter(label),\n",
- " \n",
- " # add circle marks for selected time points, hide unselected points\n",
- " base.mark_circle().encode(\n",
- " opacity=alt.condition(label, alt.value(1), alt.value(0))\n",
- " ).add_selection(label),\n",
- "\n",
- " # add white stroked text to provide a legible background for labels\n",
- " base.mark_text(align='left', dx=5, dy=-5, stroke='white', strokeWidth=2).encode(\n",
- " text='price:Q'\n",
- " ).transform_filter(label),\n",
- "\n",
- " # add text labels for stock prices\n",
- " base.mark_text(align='left', dx=5, dy=-5).encode(\n",
- " text='price:Q'\n",
- " ).transform_filter(label),\n",
- " \n",
- " data=stocks\n",
- ").properties(\n",
- " width=500,\n",
- " height=400\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Data Tables\n",
- "\n",
- "You can display tables per the usual way in your blog:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
Title
\n",
- "
Worldwide_Gross
\n",
- "
Production_Budget
\n",
- "
Distributor
\n",
- "
MPAA_Rating
\n",
- "
IMDB_Rating
\n",
- "
Rotten_Tomatoes_Rating
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
The Land Girls
\n",
- "
146083.0
\n",
- "
8000000.0
\n",
- "
Gramercy
\n",
- "
R
\n",
- "
6.1
\n",
- "
NaN
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
First Love, Last Rites
\n",
- "
10876.0
\n",
- "
300000.0
\n",
- "
Strand
\n",
- "
R
\n",
- "
6.9
\n",
- "
NaN
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
I Married a Strange Person
\n",
- "
203134.0
\n",
- "
250000.0
\n",
- "
Lionsgate
\n",
- "
None
\n",
- "
6.8
\n",
- "
NaN
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
Let's Talk About Sex
\n",
- "
373615.0
\n",
- "
300000.0
\n",
- "
Fine Line
\n",
- "
None
\n",
- "
NaN
\n",
- "
13.0
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
Slam
\n",
- "
1087521.0
\n",
- "
1000000.0
\n",
- "
Trimark
\n",
- "
R
\n",
- "
3.4
\n",
- "
62.0
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " Title Worldwide_Gross Production_Budget Distributor \\\n",
- "0 The Land Girls 146083.0 8000000.0 Gramercy \n",
- "1 First Love, Last Rites 10876.0 300000.0 Strand \n",
- "2 I Married a Strange Person 203134.0 250000.0 Lionsgate \n",
- "3 Let's Talk About Sex 373615.0 300000.0 Fine Line \n",
- "4 Slam 1087521.0 1000000.0 Trimark \n",
- "\n",
- " MPAA_Rating IMDB_Rating Rotten_Tomatoes_Rating \n",
- "0 R 6.1 NaN \n",
- "1 R 6.9 NaN \n",
- "2 None 6.8 NaN \n",
- "3 None NaN 13.0 \n",
- "4 R 3.4 62.0 "
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# display table with pandas\n",
- "df[['Title', 'Worldwide_Gross', \n",
- " 'Production_Budget', 'Distributor', 'MPAA_Rating', 'IMDB_Rating', 'Rotten_Tomatoes_Rating']].head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Images\n",
- "\n",
- "### Local Images\n",
- "\n",
- "You can reference local images and they will be copied and rendered on your blog automatically. You can include these with the following markdown syntax:\n",
- "\n",
- "``"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Remote Images\n",
- "\n",
- "Remote images can be included with the following markdown syntax:\n",
- "\n",
- "``"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Animated Gifs\n",
- "\n",
- "Animated Gifs work, too!\n",
- "\n",
- "``"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "### Captions\n",
- "\n",
- "You can include captions with markdown images like this:\n",
- "\n",
- "```\n",
- "\n",
- "```\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# Other Elements"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## GitHub Flavored Emojis\n",
- "\n",
- "Typing `I give this post two :+1:!` will render this:\n",
- "\n",
- "I give this post two :+1:!"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Tweetcards\n",
- "\n",
- "Typing `> twitter: https://twitter.com/jakevdp/status/1204765621767901185?s=20` will render this:\n",
- "\n",
- "> twitter: https://twitter.com/jakevdp/status/1204765621767901185?s=20"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Youtube Videos\n",
- "\n",
- "Typing `> youtube: https://youtu.be/XfoYk_Z5AkI` will render this:\n",
- "\n",
- "\n",
- "> youtube: https://youtu.be/XfoYk_Z5AkI"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Boxes / Callouts \n",
- "\n",
- "Typing `> Warning: There will be no second warning!` will render this:\n",
- "\n",
- "\n",
- "> Warning: There will be no second warning!\n",
- "\n",
- "\n",
- "\n",
- "Typing `> Important: Pay attention! It's important.` will render this:\n",
- "\n",
- "> Important: Pay attention! It's important.\n",
- "\n",
- "\n",
- "\n",
- "Typing `> Tip: This is my tip.` will render this:\n",
- "\n",
- "> Tip: This is my tip.\n",
- "\n",
- "\n",
- "\n",
- "Typing `> Note: Take note of this.` will render this:\n",
- "\n",
- "> Note: Take note of this.\n",
- "\n",
- "\n",
- "\n",
- "Typing `> Note: A doc link to [an example website: fast.ai](https://www.fast.ai/) should also work fine.` will render in the docs:\n",
- "\n",
- "> Note: A doc link to [an example website: fast.ai](https://www.fast.ai/) should also work fine."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Footnotes\n",
- "\n",
- "You can have footnotes in notebooks, however the syntax is different compared to markdown documents. [This guide provides more detail about this syntax](https://github.com/fastai/fastpages/blob/master/_fastpages_docs/NOTEBOOK_FOOTNOTES.md), which looks like this:\n",
- "\n",
- "```\n",
- "{% raw %}For example, here is a footnote {% fn 1 %}.\n",
- "And another {% fn 2 %}\n",
- "{{ 'This is the footnote.' | fndetail: 1 }}\n",
- "{{ 'This is the other footnote. You can even have a [link](www.github.com)!' | fndetail: 2 }}{% endraw %}\n",
- "```\n",
- "\n",
- "For example, here is a footnote {% fn 1 %}.\n",
- "\n",
- "And another {% fn 2 %}\n",
- "\n",
- "{{ 'This is the footnote.' | fndetail: 1 }}\n",
- "{{ 'This is the other footnote. You can even have a [link](www.github.com)!' | fndetail: 2 }}"
- ]
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "visualization-curriculum-gF8wUgMm",
- "language": "python",
- "name": "visualization-curriculum-gf8wugmm"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.6.7"
- },
- "varInspector": {
- "cols": {
- "lenName": 16,
- "lenType": 16,
- "lenVar": 40
- },
- "kernels_config": {
- "python": {
- "delete_cmd_postfix": "",
- "delete_cmd_prefix": "del ",
- "library": "var_list.py",
- "varRefreshCmd": "print(var_dic_list())"
- },
- "r": {
- "delete_cmd_postfix": ") ",
- "delete_cmd_prefix": "rm(",
- "library": "var_list.r",
- "varRefreshCmd": "cat(var_dic_list()) "
- }
- },
- "types_to_exclude": [
- "module",
- "function",
- "builtin_function_or_method",
- "instance",
- "_Feature"
- ],
- "window_display": false
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/_notebooks/README.md b/_notebooks/README.md
deleted file mode 100644
index 61b9d43..0000000
--- a/_notebooks/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-# Auto-convert Jupyter Notebooks To Posts
-
-[`fastpages`](https://github.com/fastai/fastpages) will automatically convert [Jupyter](https://jupyter.org/) Notebooks saved into this directory as blog posts!
-
-You must save your notebook with the naming convention `YYYY-MM-DD-*.ipynb`. Examples of valid filenames are:
-
-```shell
-2020-01-28-My-First-Post.ipynb
-2012-09-12-how-to-write-a-blog.ipynb
-```
-
-If you fail to name your file correctly, `fastpages` will automatically attempt to fix the problem by prepending the last modified date of your notebook. However, it is recommended that you name your files properly yourself for more transparency.
-
-See [Writing Blog Posts With Jupyter](https://github.com/fastai/fastpages#writing-blog-posts-with-jupyter) for more details.
\ No newline at end of file
diff --git a/_notebooks/my_icons/fastai_logo.png b/_notebooks/my_icons/fastai_logo.png
deleted file mode 100644
index ee8f242..0000000
Binary files a/_notebooks/my_icons/fastai_logo.png and /dev/null differ
diff --git a/_pages/404.html b/_pages/404.html
deleted file mode 100644
index 4a56f27..0000000
--- a/_pages/404.html
+++ /dev/null
@@ -1,25 +0,0 @@
----
-permalink: /404.html
-layout: default
-search_exclude: true
----
-
-
-
-
-
404
-
Page not found :(
-
The requested page could not be found.
-
diff --git a/_pages/about.md b/_pages/about.md
deleted file mode 100644
index a0d2132..0000000
--- a/_pages/about.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: page
-title: About Me
-permalink: /about/
----
-
-Hey there, I'm Murali Kummitha, currently working With Udaan as a Software Engineer in Credit. I love technology and always follow the advancements in technology, especially in the topic of web apps, Machine Learning. I have a passion for designing and creating things, notably with code. When I'm not coding, I enjoy travelling to himalays. I live in Bangalore.
-
-In this blog, I share things on my mind, my learnings, and my interests of all kind. Feel free to exchange ideas with me with below options:
-
-- Email: [me@muralik.in](mailto:me@muralik.in)
-- LinkedIn: [https://www.linkedin.com/in/muralikummitha](https://www.linkedin.com/in/muralikummitha)
-- GitHub: [https://github.com/iamurali](https://github.com/iamurali)
diff --git a/_pages/search.html b/_pages/search.html
deleted file mode 100644
index a333f9b..0000000
--- a/_pages/search.html
+++ /dev/null
@@ -1,18 +0,0 @@
----
-layout: default
-permalink: /search/
-title: Search
-search_exclude: true
----
-
-
-
-
-
-
"
- end
- end
- end
-
-Liquid::Template.register_filter(Jekyll::AssetFilter)
diff --git a/_plugins/footnote.rb b/_plugins/footnote.rb
deleted file mode 100644
index 464956a..0000000
--- a/_plugins/footnote.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-module Jekyll
- class FootNoteTag < Liquid::Tag
-
- def initialize(tag_name, text, tokens)
- super
- @text = text.strip
- end
-
- def render(context)
- "#{@text}"
- end
- end
- end
-
-Liquid::Template.register_tag('fn', Jekyll::FootNoteTag)
diff --git a/_posts/2020-08-15-dynamic-context-template-redering.md b/_posts/2020-08-15-dynamic-context-template-redering.md
deleted file mode 100755
index 7dbd6b2..0000000
--- a/_posts/2020-08-15-dynamic-context-template-redering.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-toc: true
-layout: post
-description: Parse the erb template string and make use of binding to encapsulate the current context for parsing.
-permalink: /2020-08-15-dynamic-context-with-ruby/
-categories: [ruby, erb, yml, templating, rails, ROR]
-image: images/erb-context.png
-title: Template Rendering with Dynamic context
----
-# Template Rendering with Dynamic context
-
-## Problem Statement
-In one of projects when we had to build a service to generate history for a particular entity if there are changes occurs. we had to build a template engine which can translate the entity changes in humar redable format.
-
-Formatting text as YAML:
-
-```yaml
-entity: Event
- - changes:
- from: 2020-08-15
- to: 2020-08-17
-- expected_format: "Event rescheduled event from Aug 15th to Augh 17th by bob (Current User)"
-```
-
-Solution:
-
-We have utilized the concept of `Binding` class able to encapsulate **execution context** of the receiver object.
-
-For simplicity we chose ERB, we can place them within locale files for internationalisation and can be edit them with ease if need arises.
-
-Since we extend `OpenStruct` we can simply pass a hash to it during instantiation and all the keys will be accessible as methods and will be exposed directly during rendering.
-
-```ruby
-require 'erb'
-require 'ostruct'
-
-include ERB::Util
-
-module AuditMessage
- class ErbTemplate < OpenStruct
- def render(template)
- ERB.new(template).result(binding)
- end
-
- def current_user
- # ===> Fetch current user
- user_id, user_type = self[:_audit].user_id, self[:_audit].user_type
- user_type.classify.constantize.find(user_id)
- rescue
- self[:user]
- end
-
- def system_user
- OpenStruct.new(name: "System User")
- end
-
- def get_old_value(field)
- # ===> Try to fetch the old value from the audit
- # {"field": ["old_value", "new_value"]}
- get_value(self[field])
- end
-
- def get_new_value(field)
- # ===> Try to fetch the old value from the audit
- # {"field": ["old_value", "new_value"]}
- get_value(self[field], "new_value")
- end
-
- def method_missing(method, *args, &block)
- respond_to?(method) ? self[method] : self[:_auditable].send(method, *args)
- end
-
- private
-
- def get_value(value, default_data="old_value")
- return if value.nil?
- return send(value) unless value.is_a?(Array)
- return default_data == "old_value" ? value.first : value.last
- end
- end
-end
-```
-
-
-In the above example we have used ERB templating engine for parsing the text that we wanted with binding of current context.
-
-We added extra methods like current_user who has changed the entity. This particular methods can be available through the context which can be used for back trace or additional info to be passed.
-
-```yaml
-entity:
- event:
- update:
- message: >-
- <%= Event rescheduled event from #{format(old_value)} to #{format(old_value)} by #{current_user.name}" (Current User) %>
-```
-
-
-If we try to this particular example engine will look for the enity event and update action and generate custom message with the template passed to the parser. It tries to find the methods in the context of the current entity if there are any.
-
-The benefit of creating a separate abstraction is that it creates a sandbox environment for the template processing. This allows us to have more control over what gets exposed during processing and prevents accidental leakages into the context.
-
-
-The main method here is the render method, where we utilise the ERB library. We create an ERB instance with the supplied template string and then call result, to which we supply the current execution context using the current binding.
-
-The usage would look something like this :
-
-```ruby
-class Event
- attr_accessor :event_date
-end
-vars = {
- old_value: "2020-08-15",
- new_value: "2020-08-17"
- }
-template_string = "entity.#{klass_name}.#{_action}.message"
-
-AuditMessage::ErbTemplate.new(vars).render(template_string)
-#===> result: "Event rescheduled event from Aug 15th to Augh 17th by bob (Current User)"
-```
\ No newline at end of file
diff --git a/_posts/2020-08-17-multiple-mysql-versions.md b/_posts/2020-08-17-multiple-mysql-versions.md
deleted file mode 100644
index 6a4b80c..0000000
--- a/_posts/2020-08-17-multiple-mysql-versions.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-toc: true
-layout: post
-description: Install multiple versions of MySql in mac and switch back nd forth if required.
-permalink: /2020-08-17-multiple-mysql-versions/
-categories: [mysql, database]
-title: Setup Multiple MySql's with homebrew in Mac local machine
----
-# Setup Multiple MySql's with homebrew in Mac local machine
-
-Had a specific scenario in my projects where two services are using ```MySql``` but different versions. So had to switch between different ```MySql``` versions on demand.
-
-
-* Will try to support for brew version For homebrew version 0.9.5.
-```bat
- brew -v # => Homebrew 0.9.5
-```
-
-* Install the current/latest version of mysql.
-
-```bat
- # Install current mysql version
- brew install mysql
-
- # Start agent for current version of mysql (including on login)
- ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
- launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
-```
-* Install the older/Specific version of mysql.
-
-```bat
-
- # Find older mysql versions
- brew search mysql
-
- # Install older mysql version
- brew install homebrew/versions/mysql56
-
- # Start agent for older version of mysql (including on login)
- ln -sfv /usr/local/opt/mysql56/*.plist ~/Library/LaunchAgents
- launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
-```
-
-* Then to switch to the older version.
-
-```bat
- # Unlink current mysql version
- brew unlink mysql
-
- # Check older mysql version
- ls /usr/local/Cellar/mysql56 # => 5.6.27
-
- # Link the older version
- brew switch mysql56 5.6.27
-```
-
-* switch back to the current version.
-
-```bat
- # Unlink older mysql version
- brew unlink mysql56
-
- # Check current mysql version
- ls /usr/local/Cellar/mysql # => 5.7.10
-
- # Link the current version
- brew switch mysql 5.7.10
-```
-
-* Verify which mysql version you're on at any time.
-
-```bat
- # Check which version of mysql is currently symlinked
- ls -l /usr/local/bin/mysql # => /usr/local/bin/mysql@ -> ../Cellar/mysql56/5.6.27/bin/mysql
-
- # Or using the mysql command
- mysql --version
-```
-
-* unload a mysql agent for a given version.
-
-```bat
- # Stop agent for current version of mysql
- launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
- rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
-
- # Stop agent for older version of mysql
- launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
- rm ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
-```
-
diff --git a/_posts/2020-08-20-top-engineering-blogs.md b/_posts/2020-08-20-top-engineering-blogs.md
deleted file mode 100644
index cf3ec3f..0000000
--- a/_posts/2020-08-20-top-engineering-blogs.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-toc: true
-layout: post
-description: Top Engineering Blogs from Tech Companies to Follow
-permalink: /2020-08-120-top-engineering-blogs/
-categories: [tech]
-title: Top Engineering Blogs from Tech Companies to Follow
----
-
-Here is a list of top engineering blogs from tech companies that's worth following.
-_(in alphabetical order)_
-
-- [ Airbnb Engineering & Data Science](https://medium.com/airbnb-engineering)
-- [Bitly Engineering Blog](https://word.bitly.com/)
-- [Dropbox Tech Blog](https://dropboxtechblog.wordpress.com/)
-- [Etsy - Code as Craft](https://codeascraft.com/)
-- [Facebook Code - Facebook Engineering Blog](https://code.fb.com/)
-- [code.flickr.com](http://code.flickr.net/)
-- [GitHub Engineering](https://githubengineering.com/)
-- [Google AI Blog](https://ai.googleblog.com/)
-- [Google Developers](https://medium.com/google-developers)
-- [Heroku Blog - Engineering](https://blog.heroku.com/engineering)
-- [Hulu Tech Blog](https://medium.com/hulu-tech-blog)
-- [Indeed Engineering Blog](https://engineering.indeedblog.com/blog/)
-- [Instagram Engineering](https://medium.com/@InstagramEng)
-- [LinkedIn Engineering](https://engineering.linkedin.com/)
-- [Lyft Engineering](https://eng.lyft.com/)
-- [Medium Engineering](https://medium.engineering/)
-- [Netflix Techblog](https://medium.com/netflix-techblog)
-- [Paypal Engineering](https://www.paypal-engineering.com/)
-- [Pinterest Engineering](https://medium.com/@Pinterest_Engineering)
-- [Reddit Blog](https://redditblog.com/)
-- [Robinhood Engineering](https://robinhood.engineering/)
-- [Shopify Engineering Blog](https://shopifyengineering.myshopify.com/blogs/engineering)
-- [Slack Engineering Blog](https://slack.engineering/)
-- [Spotify's Engineering and Technology Blog](https://labs.spotify.com/)
-- [Square's Technical Blog - The Corner](https://medium.com/square-corner-blog)
-- [Squarespace Engineering](https://engineering.squarespace.com/)
-- [Stripe Engineering](https://stripe.com/blog/engineering)
-- [Twilio Engineering Blog](https://www.twilio.com/engineering/)
-- [Uber Engineering](https://eng.uber.com/)
-- [Yahoo Engineering](https://yahooeng.tumblr.com/)
-- [Yelp Engineering Blog](https://engineeringblog.yelp.com/)
-- [YouTube Engineering and Developers Blog](https://youtube-eng.googleblog.com/)
-
-Note: Inspired from tonyxu-io
\ No newline at end of file
diff --git a/_posts/2020-09-15-rails-postgres-views.md b/_posts/2020-09-15-rails-postgres-views.md
deleted file mode 100644
index 7118aff..0000000
--- a/_posts/2020-09-15-rails-postgres-views.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-toc: true
-layout: post
-description: Rails + postgresql views/materialized views with versioning and usages
-permalink: /2020-09-15-rails-postgres-views/
-categories: [postgres, rails, views]
-title: Rails with postgresql views by leveraging active record entity models
----
-# Rails with postgresql views by leveraging active record entity models
-
-## Problem Statement
-
-We had a use case where we had to generate a report in an existing meeting scheduler system. This report shows all the data of the report around the meeting.
-
-While showing the report it involves the most complex logic based on role, meetings, meeting attendees, meeting customer information, meeting notes that are being captured. There are around 20+ filters present around the reports.
-
-We had to expose an endpoint which gives back information in a format of attendee and respective meeting. It could be csv, excel or any other format.
-
-
-
-## Initial implementation of reports in ruby
-
-Initially we have decide to implement all reportings in ruby. The naive approach will include initializing each object and associated objects to the meeting.
-
-This worked well initially for small amount of data. We have encountered performance issues when there are more than 2K meetings and each meeting has approximately 10. Which eventually become 21K objects initialization and storing the data in-memory while processing all of them.
-
-```ruby
-Benchmark.bm { |x| x.report {
- MeetingRequest.all.each do |meeting_request|
- meeting_request_details = meeting_request.meeting_meta_reports_on_demand(mm_role_uuid, [], ' || ', {template_mode: "separated"})
- end
-} }
- # user system total real
- # 444.780000 12.660000 457.440000 (780.303877)
- # => [#]
-```
-
-It takes 10 seconds to retrieve the data and to format it. In a real life scenario, we would have to account for the time needed for the request to go through all the stack, from routing to rendering the views. 10 seconds is a lot of time, especially if you have lots of requests coming.
-
-It starts taking more than 60 seconds if the request is having heavy data to manipulate and request.
-
-## Working with postgres views
-
-
-> * Database view is named query that provides another way to present data in the database tables. A view is defined based on one or more tables which are known as base tables. When you create a view, you basically create a query and assign it a name, therefore a view is useful for wrapping a commonly used complex query.*
-
-Postgres has different types of views which are present.
-* Logical Views
-* Materialized views
-
-
-#### **Logical Views**
-
- They evaluate the data in the tables underlying the view definition at the time the view is queried. It is a logical view of your tables, with no data stored anywhere else.
-
- The upside of a view is that it will always return the latest data to you. The downside of a view is that its performance depends on how good a select statement the view is based on. If the select statement used by the view joins many tables, or uses joins based on non-indexed columns, the view could perform poorly.
-
-#### **Materialized Views**
-
-They are similar to regular views, in that they are a logical view of your data (based on a select statement), however, the underlying query result set has been saved to a table. The upside of this is that when you query a materialized view, you are querying a table, which may also be indexed. ([source](https://stackoverflow.com/questions/93539/what-is-the-difference-between-views-and-materialized-views-in-oracle))
-
-> Given the fact that we will have a lot of updates at ongoing events and meeting managers expect the reports in real time without any stale data we have decided to go with logical views than materialized views.
-
-#### **Scenic view**
-
- I have decided to go with (scenic gem)[https://github.com/scenic-views/scenic] considering convention for versioning views that keeps migration history consistent and reversible and avoids having to duplicate SQL strings across migrations
-
-* **Creating a scenic view**
-
-```ruby
- $ rails generate scenic:view meeting
-Initializing plugins...
- create db/views/meetings_v01.sql
- create db/migrate/20180916125309_create_meetings.rb
-```
-
- Meeting View can be used as usal active record model and levarage all the functionalities at the same isolate the SQL queries in migration.
-
-```ruby
-# Model
-class MeetingView < ApplicationRecord
- self.primary_key = :meeting_uuid, :invite_user_uuid
-end
-```
-
-```ruby
-# [timestamp]_create_meetings.rb
-SELECT
- meeting_requests.id AS meeting_id,
- meeting_requests.uuid AS meeting_uuid,
- meeting_requests.meeting_with as meeting_with,
- ...
- ...
- ...
- FROM meeting_requests
-LEFT JOIN rooms ON rooms.id = meeting_requests.room_id
-LEFT OUTER JOIN topics ON topics.id = meeting_requests.topic_id
- ...
- ...
-LEFT OUTER JOIN requestor ON requestor.uuid = meeting_requests.requestor_uuid
-```
-
- We have bench makred same format of the response format and see a major shift in the time that it takes to prepare the data to export. Please check the below report
-
-```ruby
-Benchmark.bm { |x| x.report {
- meetings, te, tp, cp, pr = MeetingView.all.sort_and_grouping({}.merge({current_location: location}))
- settings = MeetingViewUtils::Settings.get_options(meetings, {}.merge({current_location: location}));0
- meeting_objs = MeetingViewUtils::MergedMeetingViewSerializer.new(meetings, settings, current_event).ondemand_attribs
-} }
-
-# user system total real
-# 0.220000 0.000000 0.220000 ( 3.059728)
-# => [#]
-```
-
-## **We have gone from 780sec to 3secs**
-
-
- As expected, DB Views approach is **260 times faster** than the naive ruby approach. If we have proper indexes for tables on what we are querying then it will be way faster. We are in the process of establishing the proper indexes and db scans while writing a scenic view so that it can improve a lot more.
-
-
-**I’m happy to answer any questions if there are any! HMU in the comments.**
diff --git a/_posts/README.md b/_posts/README.md
deleted file mode 100644
index 2633859..0000000
--- a/_posts/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Auto-convert markdown files To Posts
-
-[`fastpages`](https://github.com/fastai/fastpages) will automatically convert markdown files saved into this directory as blog posts!
-
-You must save your notebook with the naming convention `YYYY-MM-DD-*.md`. Examples of valid filenames are:
-
-```shell
-2020-01-28-My-First-Post.md
-2012-09-12-how-to-write-a-blog.md
-```
-
-# Resources
-
-- [Jekyll posts](https://jekyllrb.com/docs/posts/)
-- [Example markdown post](https://github.com/fastai/fastpages/blob/master/_posts/2020-01-14-test-markdown-post.md)
diff --git a/_sass/minima/custom-styles.scss b/_sass/minima/custom-styles.scss
deleted file mode 100644
index a895a6a..0000000
--- a/_sass/minima/custom-styles.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*-----------------------------------*/
-/*--- IMPORT STYLES FOR FASTPAGES ---*/
-@import "minima/fastpages-styles";
-
-
-
-/*-----------------------------------*/
-/*----- ADD YOUR STYLES BELOW -------*/
-
-// If you want to turn off dark background for syntax highlighting, comment or delete the below line.
-@import "minima/fastpages-dracula-highlight";
-
-$content-width: 120%;
-$on-palm: 120%;
-$on-laptop: 120%;
-$on-medium: 120%;
-$on-large: 120%;
\ No newline at end of file
diff --git a/_sass/minima/custom-variables.scss b/_sass/minima/custom-variables.scss
deleted file mode 100644
index bcdce4a..0000000
--- a/_sass/minima/custom-variables.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-// override defalt minima variables
-
-// width of the content area
-// can be set as "px" or "%"
-$content-width: 1000px;
-$on-palm: 800px;
-$on-laptop: 1000px;
-$on-medium: 1000px;
-$on-large: 1200px;
diff --git a/_sass/minima/fastpages-dracula-highlight.scss b/_sass/minima/fastpages-dracula-highlight.scss
deleted file mode 100644
index cadd407..0000000
--- a/_sass/minima/fastpages-dracula-highlight.scss
+++ /dev/null
@@ -1,213 +0,0 @@
-// Override Syntax Highlighting In Minima With the Dracula Theme: https://draculatheme.com/
-// If you wish to override any of this CSS, do so in _sass/minima/custom-styles.css
-
-$dt-gray-dark: #282a36; // Background
-$dt-code-cell-background: #323443;
-$dt-gray: #44475a; // Current Line & Selection
-$dt-gray-light: #f8f8f2; // Foreground
-$dt-blue: #6272a4; // Comment
-$dt-cyan: #8be9fd;
-$dt-green: #50fa7b;
-$dt-orange: #ffb86c;
-$dt-pink: #ff79c6;
-$dt-purple: #bd93f9;
-$dt-red: #ff5555;
-$dt-yellow: #f1fa8c;
-$dt-green-light: rgb(172, 229, 145);
-
-.language-python + .language-plaintext {
- border-left: 1px solid grey;
- margin-left: 1rem !important;
-}
-
-// ensure dark background for code in markdown
-[class^="language-"]:not(.language-plaintext) pre,
-[class^="language-"]:not(.language-plaintext) code {
- background-color: $dt-code-cell-background !important;
- color: $dt-gray-light;
-}
-
-.language-python + .language-plaintext code { background-color: white !important; }
-.language-python + .language-plaintext pre { background-color: white !important; }
-
-// for Jupyter Notebook HTML Code Cells modified from https://www.fast.ai/public/css/hyde.css
-
-.input_area pre, .input_area div {
- margin-bottom:2rem !important;
- margin-top:1.5rem !important;
- padding-bottom:0 !important;
- padding-top:0 !important;
- background: #323443 !important;
- -webkit-font-smoothing: antialiased;
- text-rendering: optimizeLegibility;
- font-family: Menlo, Monaco, Consolas, "Lucida Console", Roboto, Ubuntu, monospace;
- border-radius: 5px;
- font-size: 100%;
-}
-.output_area pre, .output_area div {
- margin-bottom:1rem !important;
- margin-top:1rem !important;
- padding-bottom:0 !important;
- padding-top:0 !important;
-}
-.input_area pre {
- border-left: 1px solid lightcoral;
-}
-.output_area pre {
- border-left: 1px solid grey;
- margin-left: 1rem !important;
-}
-
-.code_cell table { width: auto; }
-
-/* Dracula Theme v1.2.5
- *
- * https://github.com/zenorocha/dracula-theme
- *
- * Copyright 2016, All rights reserved
- *
- * Code licensed under the MIT license
- *
- */
-
-.highlight {
- background: $dt-code-cell-background !important;
- color: $dt-gray-light !important;
- pre, code {
- background: $dt-code-cell-background;
- color: $dt-gray-light;
- }
-
- .hll,
- .s,
- .sa,
- .sb,
- .sc,
- .dl,
- .sd,
- .s2,
- .se,
- .sh,
- .si,
- .sx,
- .sr,
- .s1,
- .ss {
- color:rgb(231, 153, 122);
- }
-
- .go {
- color: $dt-gray;
- }
-
- .err,
- .g,
- .l,
- .n,
- .x,
- .ge,
- .gr,
- .gh,
- .gi,
- .gp,
- .gs,
- .gu,
- .gt,
- .ld,
- .no,
- .nd,
- .pi,
- .ni,
- .ne,
- .nn,
- .nx,
- .py,
- .w,
- .bp {
- color: $dt-gray-light;
- background-color: $dt-code-cell-background !important;
- }
-
- .p {
- font-weight: bold;
- color: rgb(102, 217, 239);
- }
-
- .ge {
- text-decoration: underline;
- }
-
- .bp {
- font-style: italic;
- }
-
- .c,
- .ch,
- .cm,
- .cpf,
- .c1,
- .cs {
- color: $dt-blue;
- }
-
- .kd,
- .kt,
- .nb,
- .nl,
- .nv,
- .vc,
- .vg,
- .vi,
- .vm {
- color: $dt-cyan;
- }
-
- .kd,
- .nb,
- .nl,
- .nv,
- .vc,
- .vg,
- .vi,
- .vm {
- font-style: italic;
- }
-
- .fm,
- .na,
- .nc,
- .nf
- {
- color: $dt-green-light;
- }
-
- .k,
- .o,
- .cp,
- .kc,
- .kn,
- .kp,
- .kr,
- .nt,
- .ow {
- color: $dt-pink;
- }
-
- .kc {
- color: $dt-green-light;
- }
-
- .m,
- .mb,
- .mf,
- .mh,
- .mi,
- .mo,
- .il {
- color: $dt-purple;
- }
-
- .gd {
- color: $dt-red;
- }
-}
diff --git a/_sass/minima/fastpages-styles.scss b/_sass/minima/fastpages-styles.scss
deleted file mode 100644
index 39ee074..0000000
--- a/_sass/minima/fastpages-styles.scss
+++ /dev/null
@@ -1,262 +0,0 @@
-//Default Overrides For Styles In Minima
-// If you wish to override any of this CSS, do so in _sass/minima/custom-styles.css
-
-.post img {
- display: block;
- // border:1px solid #021a40;
- vertical-align: top;
- margin-left: auto;
- margin-right: auto;
-}
-
-img.emoji{
- display: inline !important;
- vertical-align: baseline !important;
-}
-
-.post figcaption {
- text-align: center;
- font-size: .8rem;
- font-style: italic;
- color: light-grey;
-}
-
-.page-content {
- -webkit-font-smoothing: antialiased !important;
- text-rendering: optimizeLegibility !important;
- font-family: "Segoe UI", SegoeUI, Roboto, "Segoe WP", "Helvetica Neue", "Helvetica", "Tahoma", "Arial", sans-serif !important;
-}
-
-// make non-headings slightly lighter
-.post-content p, .post-content li {
- font-size: 20px;
- color: #515151;
-}
-
-.post-link{
- font-weight: normal;
-}
-
-// change padding of headings
-h1 {
- margin-top:2.5rem !important;
-}
-
-h2 {
- margin-top:2rem !important;
-}
-
-h3, h4 {
- margin-top:1.5rem !important;
-}
-
-p {
- margin-top:1rem !important;
- margin-bottom:1rem !important;
-}
-
-h1, h2, h3, h4 {
- font-weight: normal !important;
- margin-bottom:0.5rem !important;
- code {
- font-size: 100%;
- }
-}
-
-pre {
- margin-bottom:1.5rem !important;
-}
-
-// make sure the post title doesn't have too much spacing
-.post-title { margin-top: .5rem !important; }
-
-li {
- h3, h4 {
- margin-top:.05rem !important;
- margin-bottom:.05rem !important;
- }
- .post-meta-description {
- color: rgb(88, 88, 88);
- font-size: 15px;
- margin-top:.05rem !important;
- margin-bottom:.05rem !important;
- }
-}
-
-
-
-// Code Folding
- details.description[open] summary::after {
- content: attr(data-open);
-}
-
-details.description:not([open]) summary::after {
- content: attr(data-close);
-}
-
-// Notebook badges
-.notebook-badge-image {
- border:0 !important;
-}
-
-// Adjust font size for footnotes.
-.footnotes {
- font-size: 12px !important;
- p, li{
- font-size: 12px !important;
- }
-}
-
-// Adjust with of social media icons were getting cut off
-.social-media-list{
- .svg-icon {
- width: 25px !important;
- height: 23px !important;
- }
-}
-
-// Make Anchor Links Appear Only on Hover
-
-.anchor-link {
- opacity: 0;
- padding-left: 0.375em;
- \-webkit-text-stroke: 1.75px white;
- \-webkit-transition: opacity 0.2s ease-in-out 0.1s;
- \-moz-transition: opacity 0.2s ease-in-out 0.1s;
- \-ms-transition: opacity 0.2s ease-in-out 0.1s;
-}
-
-h1:hover .anchor-link,
-h2:hover .anchor-link,
-h3:hover .anchor-link,
-h4:hover .anchor-link,
-h5:hover .anchor-link,
-h6:hover .anchor-link {
- opacity: 1;
-}
-
-
-// category tags
-.category-tags {
- margin-top: .25rem !important;
- margin-bottom: .25rem !important;
- font-size: 105%;
-}
-
-// Custom styling for homepage post previews
-.post-meta-title, .post-meta{
- margin-top: .25em !important;
- margin-bottom: .25em !important;
- font-size: 105%;
-}
-
-.page-description {
- margin-top: .5rem !important;
- margin-bottom: .5rem !important;
- color: #585858;
- font-size: 115%;
-}
-
-// Custom styling for category tags
-.category-tags-icon {
- font-size: 75% !important;
- padding-left: 0.375em;
- opacity: 35%;
-}
-.category-tags-link {
- color:rgb(187, 129, 129) !important;
- font-size: 13px !important;
-}
-
-// Search Page Styles
-.js-search-results {padding-top: 0.2rem;}
-.search-results-list-item {padding-bottom: 1rem;}
-.search-results-list-item .search-result-title {
- font-size: 16px;
- color: #d9230f;
-}
-.search-result-rel-url {color: silver;}
-.search-results-list-item a {display: block; color: #777;}
-.search-results-list-item a:hover, .search-results-list-item a:focus {text-decoration: none;}
-.search-results-list-item a:hover .search-result-title {text-decoration: underline;}
-
-.search-result-rel-date {
- color: rgb(109, 120, 138);
- font-size: 14px;
-}
-
-.search-result-preview {
- color: #777;
- font-size: 16px;
- margin-top:.02rem !important;
- margin-bottom:.02rem !important;
-}
-.search-result-highlight {
- color: #2e0137;
- font-weight:bold;
-}
-
-// Handle Overflow With Table Output
-
-table {
- display: block !important;
- overflow-x: auto;
- white-space: nowrap;
- font-size: 75%;
- border:none;
- th{
- text-align: center! important;
- }
- td{
- text-overflow:ellipsis;
- overflow:hidden;
- max-width: 15em;
- }
-}
-
-// customize scrollbars
-::-webkit-scrollbar {
- width: 14px;
- height: 18px;
-}
-::-webkit-scrollbar-thumb {
- height: 6px;
- border: 4px solid rgba(0, 0, 0, 0);
- background-clip: padding-box;
- -webkit-border-radius: 7px;
- background-color: #9D9D9D;
- -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05);
-}
-::-webkit-scrollbar-button {
- width: 0;
- height: 0;
- display: none;
-}
-::-webkit-scrollbar-corner {
- background-color: transparent;
-}
-
-// Wrap text outputs instead of horizontal scroll
-.output_text.output_execute_result {
- pre{
- white-space: pre-wrap;
- }
-}
-
-
-// Handling large charts on mobile devices
-// @media only screen and (max-width: 1200px) {
-// /* for mobile phone and tablet devices */
-// .output_wrapper{
-// overflow: scroll;
-// }
-// }
-
-.output_wrapper{
- overflow: scroll;
-}
-
-.svg-icon.orange{
- width: 30px;
- height: 23px;
-}
diff --git a/_word/README.md b/_word/README.md
deleted file mode 100644
index 303a35f..0000000
--- a/_word/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# Automatically Convert MS Word (*.docx) Documents To Blog Posts
-
-_Note: You can convert Google Docs to Word Docs by navigating to the File menu, and selecting Download > Microsoft Word (.docx)_
-
-[`fastpages`](https://github.com/fastai/fastpages) will automatically convert Word Documents (.docx) saved into this directory as blog posts!. Furthermore, images in your document are saved and displayed as you would expect on your blog post automatically.
-
-## Usage
-
-1. Create a Word Document (must be .docx) with the contents of your blog post.
-
-2. Save your file with the naming convention `YYYY-MM-DD-*.docx` into the `/_word` folder of this repo. For example `2020-01-28-My-First-Post.docx`. This [naming convention is required by Jekyll](https://jekyllrb.com/docs/posts/) to render your blog post.
- - Be careful to name your file correctly! It is easy to forget the last dash in `YYYY-MM-DD-`. Furthermore, the character immediately following the dash should only be an alphabetical letter. Examples of valid filenames are:
-
- ```shell
- 2020-01-28-My-First-Post.docx
- 2012-09-12-how-to-write-a-blog.docx
- ```
-
- - If you fail to name your file correctly, `fastpages` will automatically attempt to fix the problem by prepending the last modified date of your notebook to your generated blog post. However, it is recommended that you name your files properly yourself for more transparency.
-
-3. Synchronize your files with GitHub by [following the instructions in this blog post](https://www.fast.ai/2020/01/18/gitblog/).
diff --git a/assets/badges/binder.svg b/assets/badges/binder.svg
deleted file mode 100644
index 327f6b6..0000000
--- a/assets/badges/binder.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/badges/colab.svg b/assets/badges/colab.svg
deleted file mode 100644
index c08066e..0000000
--- a/assets/badges/colab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/assets/badges/github.svg b/assets/badges/github.svg
deleted file mode 100644
index e02d8ed..0000000
--- a/assets/badges/github.svg
+++ /dev/null
@@ -1 +0,0 @@
-View On GitHubView On GitHub
\ No newline at end of file
diff --git a/assets/js/search-data.json b/assets/js/search-data.json
deleted file mode 100644
index e49b551..0000000
--- a/assets/js/search-data.json
+++ /dev/null
@@ -1,32 +0,0 @@
----
----
-{
- {% assign comma = false %}
- {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
- {% for post in site.posts %}
- {% if post.search_exclude != true %}
- {% if comma == true%},{% endif %}"post{{ forloop.index0 }}": {
- "title": "{{ post.title | replace: '&', '&' }}",
- "content": "{{ post.content | markdownify | replace: '= 200 && request.status < 400) {
- // Success!
- var data = JSON.parse(request.responseText);
-
- {% if site.search_tokenizer_separator != nil %}
- lunr.tokenizer.separator = {{ site.search_tokenizer_separator }}
- {% else %}
- lunr.tokenizer.separator = /[\s\-/]+/
- {% endif %}
-
- var index = lunr(function () {
- this.ref('id');
- this.field('title', { boost: 200 });
- this.field('content', { boost: 2 });
- this.field('url');
- this.metadataWhitelist = ['position']
-
- for (var i in data) {
- this.add({
- id: i,
- title: data[i].title,
- content: data[i].content,
- url: data[i].url
- });
- }
- });
-
- searchResults(index, data);
- } else {
- // We reached our target server, but it returned an error
- console.log('Error loading ajax request. Request status:' + request.status);
- }
- };
-
- request.onerror = function(){
- // There was a connection error of some sort
- console.log('There was a connection error');
- };
-
- request.send();
-
- function searchResults(index, data) {
- var index = index;
- var docs = data;
- var searchInput = document.querySelector('.js-search-input');
- var searchResults = document.querySelector('.js-search-results');
-
- function hideResults() {
- searchResults.innerHTML = '';
- searchResults.classList.remove('active');
- }
-
- jtd.addEvent(searchInput, 'keydown', function(e){
- switch (e.keyCode) {
- case 38: // arrow up
- e.preventDefault();
- var active = document.querySelector('.search-result.active');
- if (active) {
- active.classList.remove('active');
- if (active.parentElement.previousSibling) {
- var previous = active.parentElement.previousSibling.querySelector('.search-result');
- previous.classList.add('active');
- }
- }
- return;
- case 40: // arrow down
- e.preventDefault();
- var active = document.querySelector('.search-result.active');
- if (active) {
- if (active.parentElement.nextSibling) {
- var next = active.parentElement.nextSibling.querySelector('.search-result');
- active.classList.remove('active');
- next.classList.add('active');
- }
- } else {
- var next = document.querySelector('.search-result');
- if (next) {
- next.classList.add('active');
- }
- }
- return;
- case 13: // enter
- e.preventDefault();
- var active = document.querySelector('.search-result.active');
- if (active) {
- active.click();
- } else {
- var first = document.querySelector('.search-result');
- if (first) {
- first.click();
- }
- }
- return;
- }
- });
-
- jtd.addEvent(searchInput, 'keyup', function(e){
- switch (e.keyCode) {
- case 27: // When esc key is pressed, hide the results and clear the field
- hideResults();
- searchInput.value = '';
- return;
- case 38: // arrow up
- case 40: // arrow down
- case 13: // enter
- e.preventDefault();
- return;
- }
-
- hideResults();
-
- var input = this.value;
- if (input === '') {
- return;
- }
-
- var results = index.query(function (query) {
- var tokens = lunr.tokenizer(input)
- query.term(tokens, {
- boost: 10
- });
- query.term(tokens, {
- wildcard: lunr.Query.wildcard.TRAILING
- });
- });
-
- if (results.length > 0) {
- searchResults.classList.add('active');
- var resultsList = document.createElement('ul');
- resultsList.classList.add('search-results-list');
- searchResults.appendChild(resultsList);
-
- for (var i in results) {
- var result = results[i];
- var doc = docs[result.ref];
-
- var resultsListItem = document.createElement('li');
- resultsListItem.classList.add('search-results-list-item');
- resultsList.appendChild(resultsListItem);
-
- var resultLink = document.createElement('a');
- resultLink.classList.add('search-result');
- resultLink.setAttribute('href', doc.url);
- resultsListItem.appendChild(resultLink);
-
- var resultTitle = document.createElement('div');
- resultTitle.classList.add('search-result-title');
- resultTitle.innerText = doc.title;
- resultLink.appendChild(resultTitle);
-
- var resultRelUrl = document.createElement('span');
- resultRelUrl.classList.add('search-result-rel-date');
- resultRelUrl.innerText = doc.date;
- resultTitle.appendChild(resultRelUrl);
-
- var metadata = result.matchData.metadata;
- var contentFound = false;
- for (var j in metadata) {
- if (metadata[j].title) {
- var position = metadata[j].title.position[0];
- var start = position[0];
- var end = position[0] + position[1];
- resultTitle.innerHTML = doc.title.substring(0, start) + '' + doc.title.substring(start, end) + '' + doc.title.substring(end, doc.title.length)+''+doc.date+'';
-
- } else if (metadata[j].content && !contentFound) {
- contentFound = true;
-
- var position = metadata[j].content.position[0];
- var start = position[0];
- var end = position[0] + position[1];
- var previewStart = start;
- var previewEnd = end;
- var ellipsesBefore = true;
- var ellipsesAfter = true;
- for (var k = 0; k < 3; k++) {
- var nextSpace = doc.content.lastIndexOf(' ', previewStart - 2);
- var nextDot = doc.content.lastIndexOf('.', previewStart - 2);
- if ((nextDot > 0) && (nextDot > nextSpace)) {
- previewStart = nextDot + 1;
- ellipsesBefore = false;
- break;
- }
- if (nextSpace < 0) {
- previewStart = 0;
- ellipsesBefore = false;
- break;
- }
- previewStart = nextSpace + 1;
- }
- for (var k = 0; k < 10; k++) {
- var nextSpace = doc.content.indexOf(' ', previewEnd + 1);
- var nextDot = doc.content.indexOf('.', previewEnd + 1);
- if ((nextDot > 0) && (nextDot < nextSpace)) {
- previewEnd = nextDot;
- ellipsesAfter = false;
- break;
- }
- if (nextSpace < 0) {
- previewEnd = doc.content.length;
- ellipsesAfter = false;
- break;
- }
- previewEnd = nextSpace;
- }
- var preview = doc.content.substring(previewStart, start);
- if (ellipsesBefore) {
- preview = '... ' + preview;
- }
- preview += '' + doc.content.substring(start, end) + '';
- preview += doc.content.substring(end, previewEnd);
- if (ellipsesAfter) {
- preview += ' ...';
- }
-
- var resultPreview = document.createElement('div');
- resultPreview.classList.add('search-result-preview');
- resultPreview.innerHTML = preview;
- resultLink.appendChild(resultPreview);
- }
- }
- }
- }
- });
-
- // jtd.addEvent(searchInput, 'blur', function(){
- // setTimeout(function(){ hideResults() }, 300);
- // });
- }
- }
-
-// function pageFocus() {
-// var mainContent = document.querySelector('.js-main-content');
-// mainContent.focus();
-// }
-
- // Document ready
-
- jtd.onReady(function(){
- // initNav();
- // pageFocus();
- if (typeof lunr !== 'undefined') {
- initSearch();
- }
- });
-
- })(window.jtd = window.jtd || {});
\ No newline at end of file
diff --git a/assets/js/vendor/lunr.min.js b/assets/js/vendor/lunr.min.js
deleted file mode 100644
index 34b279d..0000000
--- a/assets/js/vendor/lunr.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6
- * Copyright (C) 2019 Oliver Nightingale
- * @license MIT
- */
-!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.6",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r1&&(se&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:sa?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index 4beeef3..0000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-version: "3"
-services:
- fastpages: &fastpages
- working_dir: /data
- environment:
- - INPUT_BOOL_SAVE_MARKDOWN=false
- build:
- context: ./_action_files
- dockerfile: ./Dockerfile
- image: fastpages-dev
- logging:
- driver: json-file
- options:
- max-size: 50m
- stdin_open: true
- tty: true
- volumes:
- - .:/data/
-
- converter:
- <<: *fastpages
- command: /fastpages/action_entrypoint.sh
-
- watcher:
- <<: *fastpages
- command: watchmedo shell-command --command /fastpages/action_entrypoint.sh --pattern *.ipynb --recursive --drop
- network_mode: host # for GitHub Codespaces https://github.com/features/codespaces/
-
- jekyll:
- working_dir: /data
- image: jekyll/jekyll:4.0.1
- restart: unless-stopped
- ports:
- - "4000:4000"
- volumes:
- - .:/data/
- command: >
- bash -c "gem install bundler
- && chmod -R u+rwx . && jekyll serve --trace --strict_front_matter"
-
diff --git a/images/.DS_Store b/images/.DS_Store
deleted file mode 100644
index 66d0c0a..0000000
Binary files a/images/.DS_Store and /dev/null differ
diff --git a/images/airbnb.png b/images/airbnb.png
deleted file mode 100644
index f248913..0000000
Binary files a/images/airbnb.png and /dev/null differ
diff --git a/images/bitly.png b/images/bitly.png
deleted file mode 100644
index 8fd0dc9..0000000
Binary files a/images/bitly.png and /dev/null differ
diff --git a/images/chart-preview.png b/images/chart-preview.png
deleted file mode 100644
index 572b325..0000000
Binary files a/images/chart-preview.png and /dev/null differ
diff --git a/images/copied_from_nb/README.md b/images/copied_from_nb/README.md
deleted file mode 100644
index 37c795c..0000000
--- a/images/copied_from_nb/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-
Warning
-
-Do not manually save images into this folder. This is used by GitHub Actions to automatically copy images. Any images you save into this folder could be deleted at build time.
\ No newline at end of file
diff --git a/images/diagram.png b/images/diagram.png
deleted file mode 100644
index 2607910..0000000
Binary files a/images/diagram.png and /dev/null differ
diff --git a/images/dropbox.png b/images/dropbox.png
deleted file mode 100644
index 8132604..0000000
Binary files a/images/dropbox.png and /dev/null differ
diff --git a/images/erb-context.png b/images/erb-context.png
deleted file mode 100644
index 0c12a1d..0000000
Binary files a/images/erb-context.png and /dev/null differ
diff --git a/images/etsy.png b/images/etsy.png
deleted file mode 100644
index ed8c7d3..0000000
Binary files a/images/etsy.png and /dev/null differ
diff --git a/images/facebook.png b/images/facebook.png
deleted file mode 100644
index 702b34f..0000000
Binary files a/images/facebook.png and /dev/null differ
diff --git a/images/favicon.ico b/images/favicon.ico
deleted file mode 100644
index d89bcf4..0000000
Binary files a/images/favicon.ico and /dev/null differ
diff --git a/images/favicon_2.ico b/images/favicon_2.ico
deleted file mode 100644
index cb75474..0000000
Binary files a/images/favicon_2.ico and /dev/null differ
diff --git a/images/flickr.png b/images/flickr.png
deleted file mode 100644
index 5d46117..0000000
Binary files a/images/flickr.png and /dev/null differ
diff --git a/images/github.png b/images/github.png
deleted file mode 100644
index 916e908..0000000
Binary files a/images/github.png and /dev/null differ
diff --git a/images/google-ai.png b/images/google-ai.png
deleted file mode 100644
index f4b485d..0000000
Binary files a/images/google-ai.png and /dev/null differ
diff --git a/images/google-developers.png b/images/google-developers.png
deleted file mode 100644
index fdccd0c..0000000
Binary files a/images/google-developers.png and /dev/null differ
diff --git a/images/heroku.png b/images/heroku.png
deleted file mode 100644
index 00bf3d4..0000000
Binary files a/images/heroku.png and /dev/null differ
diff --git a/images/hulu.png b/images/hulu.png
deleted file mode 100644
index ba92002..0000000
Binary files a/images/hulu.png and /dev/null differ
diff --git a/images/indeed.png b/images/indeed.png
deleted file mode 100644
index f04f126..0000000
Binary files a/images/indeed.png and /dev/null differ
diff --git a/images/instagram.png b/images/instagram.png
deleted file mode 100644
index 7af826f..0000000
Binary files a/images/instagram.png and /dev/null differ
diff --git a/images/linkedin.png b/images/linkedin.png
deleted file mode 100644
index cbc967b..0000000
Binary files a/images/linkedin.png and /dev/null differ
diff --git a/images/logo.png b/images/logo.png
deleted file mode 100644
index d89bcf4..0000000
Binary files a/images/logo.png and /dev/null differ
diff --git a/images/logo2.png b/images/logo2.png
deleted file mode 100644
index ee8f242..0000000
Binary files a/images/logo2.png and /dev/null differ
diff --git a/images/lyft.png b/images/lyft.png
deleted file mode 100644
index b2907d4..0000000
Binary files a/images/lyft.png and /dev/null differ
diff --git a/images/medium.png b/images/medium.png
deleted file mode 100644
index 847b45c..0000000
Binary files a/images/medium.png and /dev/null differ
diff --git a/images/mysql-connector.png b/images/mysql-connector.png
deleted file mode 100644
index 17f00be..0000000
Binary files a/images/mysql-connector.png and /dev/null differ
diff --git a/images/netflix.png b/images/netflix.png
deleted file mode 100644
index 6493d95..0000000
Binary files a/images/netflix.png and /dev/null differ
diff --git a/images/paypal.png b/images/paypal.png
deleted file mode 100644
index ef193d8..0000000
Binary files a/images/paypal.png and /dev/null differ
diff --git a/images/pinterest.png b/images/pinterest.png
deleted file mode 100644
index 82bcf78..0000000
Binary files a/images/pinterest.png and /dev/null differ
diff --git a/images/rails_db_views/db-views.png b/images/rails_db_views/db-views.png
deleted file mode 100644
index b65f071..0000000
Binary files a/images/rails_db_views/db-views.png and /dev/null differ
diff --git a/images/rails_db_views/db_views_schema.png b/images/rails_db_views/db_views_schema.png
deleted file mode 100644
index bb41f51..0000000
Binary files a/images/rails_db_views/db_views_schema.png and /dev/null differ
diff --git a/images/rails_db_views/ruby-heavy-lifting.png b/images/rails_db_views/ruby-heavy-lifting.png
deleted file mode 100644
index 442a5f1..0000000
Binary files a/images/rails_db_views/ruby-heavy-lifting.png and /dev/null differ
diff --git a/images/rails_db_views/ruby_heavy_lifting.png b/images/rails_db_views/ruby_heavy_lifting.png
deleted file mode 100644
index 25d90a8..0000000
Binary files a/images/rails_db_views/ruby_heavy_lifting.png and /dev/null differ
diff --git a/images/reddit.png b/images/reddit.png
deleted file mode 100644
index bf7cbc0..0000000
Binary files a/images/reddit.png and /dev/null differ
diff --git a/images/robinhood.png b/images/robinhood.png
deleted file mode 100644
index 5ca7e7b..0000000
Binary files a/images/robinhood.png and /dev/null differ
diff --git a/images/shopify.png b/images/shopify.png
deleted file mode 100644
index 93f3369..0000000
Binary files a/images/shopify.png and /dev/null differ
diff --git a/images/slack.png b/images/slack.png
deleted file mode 100644
index 599b6f2..0000000
Binary files a/images/slack.png and /dev/null differ
diff --git a/images/spotify.png b/images/spotify.png
deleted file mode 100644
index 3012bf2..0000000
Binary files a/images/spotify.png and /dev/null differ
diff --git a/images/square.png b/images/square.png
deleted file mode 100644
index 2e2be46..0000000
Binary files a/images/square.png and /dev/null differ
diff --git a/images/squarespace.png b/images/squarespace.png
deleted file mode 100644
index 9cdc4b4..0000000
Binary files a/images/squarespace.png and /dev/null differ
diff --git a/images/stripe.png b/images/stripe.png
deleted file mode 100644
index 5d44afa..0000000
Binary files a/images/stripe.png and /dev/null differ
diff --git a/images/twilio.png b/images/twilio.png
deleted file mode 100644
index 379de8c..0000000
Binary files a/images/twilio.png and /dev/null differ
diff --git a/images/uber.png b/images/uber.png
deleted file mode 100644
index 241e9ca..0000000
Binary files a/images/uber.png and /dev/null differ
diff --git a/images/yahoo.png b/images/yahoo.png
deleted file mode 100644
index d38e78b..0000000
Binary files a/images/yahoo.png and /dev/null differ
diff --git a/images/yelp.png b/images/yelp.png
deleted file mode 100644
index 002208d..0000000
Binary files a/images/yelp.png and /dev/null differ
diff --git a/images/youtube.png b/images/youtube.png
deleted file mode 100644
index 9946ccf..0000000
Binary files a/images/youtube.png and /dev/null differ
diff --git a/index.html b/index.html
deleted file mode 100644
index 3fa049e..0000000
--- a/index.html
+++ /dev/null
@@ -1,54 +0,0 @@
----
-layout: home
-search_exclude: true
-image: images/logo.png
----
-
-
-
-
-
-
I’m a Staff Engineer passionate about solving complex problems, scaling systems, and mentoring teams—all backed by over a decade of hands-on experience in high-growth environments