├── .github └── workflows │ ├── index.yml │ └── publish.yml ├── .gitignore ├── LICENSE ├── README.md ├── cinder ├── 404.html ├── __init__.py ├── base.html ├── content.html ├── css │ ├── base.css │ ├── base.min.css │ ├── bootstrap-custom.css │ ├── bootstrap-custom.min.css │ ├── cinder.css │ ├── cinder.min.css │ ├── highlight.css │ └── highlight.min.css ├── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── img │ ├── favicon.ico │ ├── grid1.png │ ├── grid10.png │ ├── grid11.png │ ├── grid12.png │ ├── grid13.png │ ├── grid14.png │ ├── grid15.png │ ├── grid16.png │ ├── grid17.png │ ├── grid18.png │ ├── grid19.png │ ├── grid2.png │ ├── grid20.png │ ├── grid3.png │ ├── grid4.png │ ├── grid5.png │ ├── grid6.png │ ├── grid7.png │ ├── grid8.png │ └── grid9.png ├── js │ ├── base.js │ └── bootstrap-3.0.3.min.js ├── keyboard-modal.html ├── main.html ├── mkdocs_theme.yml ├── nav-sub.html ├── nav.html ├── search-modal.html └── toc.html ├── docs ├── CNAME ├── Changelog.md ├── Cloud │ ├── Google Cloud Setup Notes.md │ └── index.md ├── Databases │ ├── Database GUIs.md │ ├── Databases.md │ ├── PostgreSQL Tools.md │ ├── PostgreSQL.md │ ├── Views vs. Materialized Views.md │ └── index.md ├── Developer Tools │ ├── Web Browsers │ │ ├── Firefox Developer Edition.md │ │ ├── Web Browsers.md │ │ └── index.md │ └── index.md ├── Docker │ ├── Docker Compose Reference Docs.md │ ├── Docker.md │ └── index.md ├── Documentation │ ├── MkDocs.md │ └── index.md ├── GCP │ ├── Google Cloud APIs.md │ ├── Google Cloud Setup Notes.md │ ├── Install gcloud SDK on Ubuntu.md │ ├── Install gcloud SDK on Windows.md │ ├── Setup Cloud SQL for PostgreSQL in Production.md │ └── index.md ├── Git │ ├── Git Tools.md │ └── index.md ├── Github │ ├── Github Actions for R.md │ └── index.md ├── Lists │ ├── Recurring Shopping List.md │ └── index.md ├── Obsidian │ ├── Mermaid Diagrams.md │ ├── Obsidian Git Plugin Notes.md │ ├── Obsidian.md │ ├── Publishing Workflow.md │ ├── Templater Plugin Notes.md │ └── index.md ├── PKM │ ├── PKM.md │ └── index.md ├── Powwater │ ├── Database Documentation.md │ └── index.md ├── Productivity │ ├── Notes on Finishing Projects.md │ ├── Productivity.md │ ├── Time Management.md │ └── index.md ├── Project Management │ ├── Ludicrously Complex Projects in Software Development.md │ ├── Project Management Pipeline.md │ ├── Project Management.md │ ├── Taming a Chaotic Project.md │ └── index.md ├── Python │ ├── Python.md │ └── index.md ├── R │ ├── Base Package Hidden Gems in R.md │ ├── Data Validation Packages in R.md │ ├── Databases with R Resources.md │ ├── Databases with R │ │ ├── Using Pool.md │ │ └── index.md │ ├── EDA Packages in R.md │ ├── Plumber Logging.md │ ├── Plumber REST APIs in R.md │ ├── Plumber Resources.md │ ├── R Books.md │ ├── R Development.md │ ├── R Miscellaneous Notes.md │ ├── R Shiny Packages.md │ ├── RStudio Configuration Notes.md │ ├── Shiny Apps as Packages in R.md │ ├── Tools Package Hidden Gems in R.md │ ├── Useful Packages in R List.md │ ├── Utils Package Hidden Gems in R.md │ └── index.md ├── README.md ├── System Design │ ├── System Design Primer.md │ ├── System Design.md │ └── index.md ├── Tools │ ├── Web Browsers │ │ ├── Firefox Developer Edition.md │ │ ├── Web Browsers.md │ │ └── index.md │ └── index.md ├── WSL │ ├── WSL Commands and Installs.md │ ├── WSL Ubuntu on Windows Community Preview.md │ ├── WSL.md │ ├── WSLg.md │ └── index.md ├── Web Development │ ├── APIs.md │ ├── Backend Web Architecture.md │ ├── HTTP Requests Notes.md │ ├── Javascript.md │ ├── WebDev Resource List.md │ └── index.md ├── Windows │ ├── How to Cleanup Windows from Command Line.md │ ├── SFC and DISM Commands.md │ ├── Using diskusage Command in Windows.md │ ├── WinGet CLI Setup and Settings.md │ ├── Windows Command Line Commands Overview.md │ ├── images │ │ ├── 30a735f876001d6cee61a4dcc976f71a.png │ │ ├── 75fd153f5ebcd65f454177ebe73be758.png │ │ └── Windows-10-SFC-Scannow-in-action.png │ └── index.md ├── _assets │ ├── Pasted image 20210501120642.png │ ├── Pasted image 20210501123611.png │ ├── Pasted image 20210501123655.png │ ├── Pasted image 20210501123722.png │ ├── wsl-comm-preview.png │ └── zapier-introduction-to-apis.pdf ├── _attachments │ ├── Pasted image 20210501120642.png │ ├── Pasted image 20210501123611.png │ ├── Pasted image 20210501123655.png │ ├── Pasted image 20210501123722.png │ └── zapier-introduction-to-apis.pdf ├── _daily │ ├── .pages │ ├── 2020-04-20.md │ ├── 2021-04-21.md │ ├── 2021-04-22.md │ ├── 2021-04-23.md │ ├── 2021-04-24.md │ ├── 2021-04-25.md │ ├── 2021-04-28.md │ ├── 2021-04-29.md │ ├── 2021-05-01.md │ ├── 2021-05-02.md │ ├── 2021-05-03.md │ ├── 2021-05-04.md │ └── index.md ├── index.md └── setup.md ├── mkdocs.yml └── site ├── CNAME ├── Changelog └── index.html ├── Cloud ├── Google Cloud Setup Notes │ └── index.html └── index.html ├── Databases ├── Database GUIs │ └── index.html ├── Databases │ └── index.html ├── PostgreSQL Tools │ └── index.html ├── PostgreSQL │ └── index.html ├── Views vs. Materialized Views │ └── index.html └── index.html ├── Developer Tools └── Web Browsers │ ├── Firefox Developer Edition │ └── index.html │ └── Web Browsers │ └── index.html ├── Docker ├── Docker Compose Reference Docs │ └── index.html ├── Docker │ └── index.html └── index.html ├── Documentation ├── MkDocs │ └── index.html └── index.html ├── GCP ├── Google Cloud APIs │ └── index.html ├── Google Cloud Setup Notes │ └── index.html ├── Install gcloud SDK on Ubuntu │ └── index.html ├── Install gcloud SDK on Windows │ └── index.html └── Setup Cloud SQL for PostgreSQL in Production │ └── index.html ├── Git ├── Git Tools │ └── index.html └── index.html ├── Github ├── Github Actions for R │ └── index.html └── index.html ├── Lists └── Recurring Shopping List │ └── index.html ├── Obsidian ├── Mermaid Diagrams │ └── index.html ├── Obsidian Git Plugin Notes │ └── index.html ├── Obsidian │ └── index.html ├── Publishing Workflow │ └── index.html ├── Templater Plugin Notes │ └── index.html └── index.html ├── PKM ├── PKM │ └── index.html └── index.html ├── Powwater ├── Database Documentation │ └── index.html └── index.html ├── Productivity ├── Notes on Finishing Projects │ └── index.html ├── Productivity │ └── index.html ├── Time Management │ └── index.html └── index.html ├── Project Management ├── Ludicrously Complex Projects in Software Development │ └── index.html ├── Project Management Pipeline │ └── index.html ├── Project Management │ └── index.html ├── Taming a Chaotic Project │ └── index.html └── index.html ├── Python ├── Python │ └── index.html └── index.html ├── R ├── Base Package Hidden Gems in R │ └── index.html ├── Data Validation Packages in R │ └── index.html ├── Databases with R Resources │ └── index.html ├── Databases with R │ └── Using Pool │ │ └── index.html ├── EDA Packages in R │ └── index.html ├── Plumber Logging │ └── index.html ├── Plumber REST APIs in R │ └── index.html ├── Plumber Resources │ └── index.html ├── R Books │ └── index.html ├── R Development │ └── index.html ├── R Miscellaneous Notes │ └── index.html ├── R Shiny Packages │ └── index.html ├── RStudio Configuration Notes │ └── index.html ├── Shiny Apps as Packages in R │ └── index.html ├── Tools Package Hidden Gems in R │ └── index.html ├── Useful Packages in R List │ └── index.html ├── Utils Package Hidden Gems in R │ └── index.html └── index.html ├── System Design ├── System Design Primer │ └── index.html ├── System Design │ └── index.html └── index.html ├── Tools ├── Web Browsers │ ├── Firefox Developer Edition │ │ └── index.html │ ├── Web Browsers │ │ └── index.html │ └── index.html └── index.html ├── WSL ├── WSL Commands and Installs │ └── index.html ├── WSL Ubuntu on Windows Community Preview │ └── index.html ├── WSL │ └── index.html ├── WSLg │ └── index.html └── index.html ├── Web Development ├── APIs │ └── index.html ├── Backend Web Architecture │ └── index.html ├── HTTP Requests Notes │ └── index.html ├── Javascript │ └── index.html ├── WebDev Resource List │ └── index.html └── index.html ├── Windows ├── How to Cleanup Windows from Command Line │ └── index.html ├── SFC and DISM Commands │ └── index.html ├── Using diskusage Command in Windows │ └── index.html ├── WinGet CLI Setup and Settings │ └── index.html ├── Windows Command Line Commands Overview │ └── index.html ├── images │ ├── Windows-10-SFC-Scannow-in-action.png │ ├── image-20210327021344936.png │ └── image-20210327021421066.png └── index.html ├── _assets ├── Pasted image 20210501120642.png ├── Pasted image 20210501123611.png ├── Pasted image 20210501123655.png ├── Pasted image 20210501123722.png ├── wsl-comm-preview.png └── zapier-introduction-to-apis.pdf ├── _attachments ├── Pasted image 20210501120642.png ├── Pasted image 20210501123611.png ├── Pasted image 20210501123655.png ├── Pasted image 20210501123722.png └── zapier-introduction-to-apis.pdf ├── _daily ├── 2020-04-20 │ └── index.html ├── 2021-04-21 │ └── index.html ├── 2021-04-22 │ └── index.html ├── 2021-04-23 │ └── index.html ├── 2021-04-24 │ └── index.html ├── 2021-04-25 │ └── index.html ├── 2021-04-28 │ └── index.html ├── 2021-04-29 │ └── index.html ├── 2021-05-01 │ └── index.html ├── 2021-05-02 │ └── index.html ├── 2021-05-03 │ └── index.html ├── 2021-05-04 │ └── index.html └── index.html ├── css ├── base.css ├── base.min.css ├── bootstrap-custom.css ├── bootstrap-custom.min.css ├── cinder.css ├── cinder.min.css ├── highlight.css ├── highlight.min.css └── timeago.css ├── fonts ├── fontawesome-webfont.eot ├── fontawesome-webfont.svg ├── fontawesome-webfont.ttf └── fontawesome-webfont.woff ├── img ├── favicon.ico ├── grid1.png ├── grid10.png ├── grid11.png ├── grid12.png ├── grid13.png ├── grid14.png ├── grid15.png ├── grid16.png ├── grid17.png ├── grid18.png ├── grid19.png ├── grid2.png ├── grid20.png ├── grid3.png ├── grid4.png ├── grid5.png ├── grid6.png ├── grid7.png ├── grid8.png └── grid9.png ├── index.html ├── js ├── base.js ├── bootstrap-3.0.3.min.js ├── timeago.min.js └── timeago_mkdocs_material.js ├── search ├── lunr.js ├── main.js ├── search_index.json └── worker.js ├── setup └── index.html ├── sitemap.xml └── sitemap.xml.gz /.github/workflows/index.yml: -------------------------------------------------------------------------------- 1 | name: Create markdown indexes 2 | 3 | # Controls when the action will run. 4 | on: 5 | # Triggers the workflow on push or pull request events but only for the master branch 6 | # push: 7 | # branches: 8 | # - master 9 | # - main 10 | workflow_dispatch: 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | steps: 16 | - uses: actions/checkout@v2.3.4 17 | - uses: DaanV2/Markdown-Action-Create-Indexes@v1.5.13 18 | with: 19 | folder: ${{github.workspace}}/docs 20 | - name: Commit changes 21 | continue-on-error: true 22 | run: | 23 | cd ${{github.workspace}} 24 | git config --global user.email "Bot@Blockception.com" 25 | git config --global user.name "Blockception Bot" 26 | git add . 27 | git commit -m "auto: Generated typescript includes" 28 | git push 29 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: Publish Vault 2 | on: 3 | push: 4 | branches: 5 | - master 6 | - main 7 | jobs: 8 | deploy: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | - uses: actions/setup-python@v2 13 | with: 14 | python-version: 3.x 15 | - run: pip install mkdocs 16 | - run: pip install mkdocs-roamlinks-plugin 17 | - run: pip install mkdocs-awesome-pages-plugin 18 | - run: pip install mkdocs-git-revision-date-localized-plugin 19 | - run: pip install mkdocs-monorepo-plugin 20 | - run: pip install mkdocs-minify-plugin 21 | - run: mkdocs build --clean 22 | - run: mkdocs gh-deploy --force 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/settings.json 2 | 3 | .history/ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Published Vault 2 | 3 | [![Create markdown indexes](https://github.com/jimbrig/obsidian_published/actions/workflows/index.yml/badge.svg)](https://github.com/jimbrig/obsidian_published/actions/workflows/index.yml) 4 | 5 | [![Publish Vault](https://github.com/jimbrig/obsidian_published/actions/workflows/publish.yml/badge.svg)](https://github.com/jimbrig/obsidian_published/actions/workflows/publish.yml) 6 | ## Setup 7 | 8 | ### MkDocs 9 | 10 | ```powershell 11 | pip install mkdocs 12 | mkdocs build 13 | mkdocs serve 14 | mkdocs gh-deploy 15 | ``` 16 | 17 | ### Plugins 18 | 19 | | Plugin | Version | 20 | | :---------------------------------------: | :-----: | 21 | | mkdocs | 1.1.2 | 22 | | mkdocs-autolinks-plugin | 0.4.0 | 23 | | mkdocs-awesome-pages-plugin | 2.5.0 | 24 | | mkdocs-git-revision-date-localized-plugin | 0.9.2 | 25 | | mkdocs-minify-plugin | 0.4.0 | 26 | | mkdocs-monorepo-plugin | 0.4.14 | 27 | | mkdocs-roamlinks-plugin | 0.1.3 | 28 | 29 | #### Installations 30 | 31 | ```powershell 32 | $ pip install mkdocs / 33 | mkdocs-autolinks-plugin / 34 | mkdocs-awesome-pages-plugin / 35 | mkdocs-git-revision-date-localized-plugin / 36 | mkdocs-monorepo-plugin / 37 | mkdocs-roamlinks-plugin / 38 | mkdocs-minify-plugin 39 | 40 | $ pip list | grep mkdocs-* 41 | mkdocs 1.1.2 42 | mkdocs-autolinks-plugin 0.4.0 43 | mkdocs-awesome-pages-plugin 2.5.0 44 | mkdocs-git-revision-date-localized-plugin 0.9.2 45 | mkdocs-minify-plugin 0.4.0 46 | mkdocs-monorepo-plugin 0.4.14 47 | mkdocs-roamlinks-plugin 0.1.3 48 | ``` 49 | 50 | #### Configuration 51 | 52 | ```yaml 53 | plugins: 54 | - search 55 | - autolinks 56 | - roamlinks 57 | - awesome-pages 58 | - git-revision-date-localized: 59 | type: timeago 60 | - minify: 61 | minify_html: true 62 | markdown_extensions: 63 | - toc: 64 | permalink: ⚑ 65 | baselevel: 2 66 | - codehilite: 67 | linenums: false 68 | guess_lang: true 69 | - footnotes 70 | - abbr 71 | - admonition 72 | - meta 73 | - def_list 74 | ``` 75 | 76 | ### Apendix: Publish Obsidian Notes with MkDocs (template) 77 | 78 | Would you like to make some of your [Obsidian](https://obsidian.md/) notes public? 79 | 80 | This template gives you an easy way to publish your Obsidian notes using Github pages. 81 | 82 | With this template, you get these out-of-the-box: 83 | 84 | - an awesome website based on Material theme, complete with a search bar (Checkout this template published [here](https://jobindj.github.io/obsidian-mkdocs/)) 85 | - get the Obsidian/Roam style `[[wikilinks]]` from your vault in your published notes 86 | - Toggle between light and dark mode 87 | 88 | #### How to get started? 89 | 90 | 1. Create a new github repository using [this template](https://github.com/jobindj/obsidian-mkdocs/generate) 91 | - Give a name to your public notes repository in this step. By default your notes will be published at `` 92 | - You need to copy only the `main` branch while create the repo from the template 93 | 2. Clone the repository you generated into your Obsidian folder/vault. 94 | 3. Move the notes you would like to make public to the `repo-name/docs` folder. 95 | - Easiest way to do this would be using drag and drop within Obsidian 96 | 4. Commit and push the changes. Github actions will publish your notes using [MkDocs](https://www.mkdocs.org/), with the [Material theme](https://squidfunk.github.io/mkdocs-material/). 97 | 98 | #### Configuring your website 99 | 100 | #### How do I arrange sections and pages? 101 | 102 | By default, the sections and pages will follow the folder structure within `/docs`. 103 | 104 | - If you would like to arrange the pages manually, then use the `nav` option in the `mkdocs.yml` [configuration file](https://www.mkdocs.org/#adding-pages) at the root of this repo to set custom page navigation. 105 | - For example, see the setup for [the Blue Book](https://lyz-code.github.io/blue-book/) at [github](https://github.com/lyz-code/blue-book/blob/master/mkdocs.yml). Managing each page using `nav` can become cumbersome as the number of notes increase though! 106 | - The Materials theme provides multiple options to arrange [sections](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#navigation-sections), use [navigation tabs](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/#navigation-tabs), and many other helpful [navigation setups](https://squidfunk.github.io/mkdocs-material/setup/setting-up-navigation/) 107 | 108 | #### Alternatives 109 | 110 | - [kmaasrud/oboe](https://github.com/kmaasrud/oboe): tool to convert an Obsidian vault into a static directory of HTML files. 111 | - [Jackiexiao/foam-mkdocs-template](https://github.com/Jackiexiao/foam-mkdocs-template): template for Obsidian/Foam using mkdocs/mkdocs-material/mkdocs-roamlinks-plugin 112 | - [foambubble/foam-template](https://github.com/foambubble/foam-template): Foam workpace template 113 | -------------------------------------------------------------------------------- /cinder/404.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 | 5 |
6 |
7 |

404

8 |

Page not found

9 |

Home

10 |
11 |
12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /cinder/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/__init__.py -------------------------------------------------------------------------------- /cinder/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% if config.site_description %}{% endif %} 9 | {% if config.site_author %}{% endif %} 10 | {% if page.canonical_url %}{% endif %} 11 | 12 | 13 | {% block htmltitle %} 14 | {% if page.title %}{{ page.title }} - {% endif %}{{ config.site_name }} 15 | {% endblock %} 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | {% if config.theme.highlightjs is defined and config.theme.highlightjs is sameas false %} 27 | 28 | {% else %} 29 | {% if config.theme.colorscheme %} 30 | 31 | {% else %} 32 | 33 | {% endif %} 34 | {% endif %} 35 | 36 | {%- for path in config['extra_css'] %} 37 | 38 | {%- endfor %} 39 | 40 | 41 | 45 | 46 | {% if config.google_analytics %} 47 | 63 | {% endif %} 64 | 65 | {% block extrahead %} {% endblock %} 66 | 67 | 68 | 69 | 70 | {% include "nav.html" %} 71 | 72 |
73 | {% block content %} 74 | {% if page.meta.disable_toc %} 75 |
{% include "content.html" %}
76 | {% else %} 77 |
{% include "toc.html" %}
78 |
{% include "content.html" %}
79 | {% endif %} 80 | {% endblock %} 81 |
82 | 83 | {% if not config.theme.disable_footer %} 84 |
85 | {% block footer %} 86 | {% if not config.theme.disable_footer_except_revision %} 87 |
88 |

{% if config.copyright %} 89 | {{ config.copyright }}
90 | {% endif %} 91 | Documentation built with MkDocs. 92 |

93 | {% endif %} 94 | 95 | {% if page and page.meta.revision_date %} 96 | {% if config.theme.disable_footer_except_revision %}
{% else %}
{% endif %} 97 | Revised on: {{ page.meta.revision_date }} 98 | {% endif %} 99 | {% endblock %} 100 |
101 | {% endif %} 102 | 103 | {%- block scripts %} 104 | 105 | 106 | 107 | {% if config.theme.highlightjs is defined and config.theme.highlightjs is sameas false %} 108 | 109 | {% else %} 110 | 111 | {% if config.theme.hljs_languages %} 112 | {%- for lang in config.theme.hljs_languages %} 113 | 114 | {%- endfor %} 115 | {% endif %} 116 | 117 | {% endif %} 118 | 119 | 120 | {% if config.shortcuts %} 121 | 122 | {% endif %} 123 | 124 | {%- for path in config['extra_javascript'] %} 125 | 126 | {%- endfor %} 127 | {%- endblock %} 128 | 129 | {% if 'search' in config['plugins'] %}{%- include "search-modal.html" %}{% endif %} 130 | {%- include "keyboard-modal.html" %} 131 | 132 | 133 | 134 | {% if page and page.is_homepage %} 135 | 139 | {% endif %} 140 | -------------------------------------------------------------------------------- /cinder/content.html: -------------------------------------------------------------------------------- 1 | {% if page.meta.source %} 2 | 7 | {% endif %} 8 | 9 | {{ page.content }} 10 | -------------------------------------------------------------------------------- /cinder/css/base.min.css: -------------------------------------------------------------------------------- 1 | html{scroll-padding-top:70px}body{padding-top:70px}p>img{max-width:100%;height:auto}ul.nav li.first-level{font-weight:bold}ul.nav li.third-level{padding-left:12px}div.col-md-3{padding-left:0}div.col-md-9{padding-bottom:100px}div.source-links{float:right}.bs-sidebar.affix{position:static}.bs-sidebar.well{padding:0}.bs-sidenav{margin-top:30px;margin-bottom:30px;padding-top:10px;padding-bottom:10px;border-radius:5px}.bs-sidebar .nav>li>a{display:block;padding:5px 20px;z-index:1}.bs-sidebar .nav>li>a:hover,.bs-sidebar .nav>li>a:focus{text-decoration:none;border-right:1px solid}.bs-sidebar .nav>.active>a,.bs-sidebar .nav>.active:hover>a,.bs-sidebar .nav>.active:focus>a{font-weight:bold;background-color:transparent;border-right:1px solid}.bs-sidebar .nav .nav{display:none;margin-bottom:8px}.bs-sidebar .nav .nav>li>a{padding-top:3px;padding-bottom:3px;padding-left:30px;font-size:90%}@media(min-width:992px){.bs-sidebar .nav>.active>ul{display:block}.bs-sidebar.affix,.bs-sidebar.affix-bottom{width:213px}.bs-sidebar.affix{position:fixed;top:80px;max-height:calc(100% - 180px);overflow-y:auto}.bs-sidebar.affix-bottom{position:absolute}.bs-sidebar.affix-bottom .bs-sidenav,.bs-sidebar.affix .bs-sidenav{margin-top:0;margin-bottom:0}}@media(min-width:1200px){.bs-sidebar.affix-bottom,.bs-sidebar.affix{width:263px}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:0;margin-left:0}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:00px}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.bs-callout h4{font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{border-radius:3px}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-default{border-left-color:#fa023c}.bs-callout-default h4{color:#fa023c}.bs-callout-primary{border-left-color:#428bca}.bs-callout-primary h4{color:#428bca}.bs-callout-success{border-left-color:#5cb85c}.bs-callout-success h4{color:#5cb85c}.bs-callout-danger{border-left-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{border-left-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{border-left-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.headerlink{display:none;padding-left:.5em}h1:hover .headerlink,h2:hover .headerlink,h3:hover .headerlink,h4:hover .headerlink,h5:hover .headerlink,h6:hover .headerlink{display:inline-block}.admonition{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.admonition p:last-child{margin-bottom:0}.admonition code{border-radius:3px}.admonition+.admonition{margin-top:-5px}.admonition.note{border-left-color:#428bca}.admonition.warning{border-left-color:#f0ad4e}.admonition.danger{border-left-color:#d9534f}.admonition-title{font-size:19px;font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.admonition.note>.admonition-title{color:#428bca}.admonition.warning>.admonition-title{color:#f0ad4e}.admonition.danger>.admonition-title{color:#d9534f} 2 | -------------------------------------------------------------------------------- /cinder/css/cinder.css: -------------------------------------------------------------------------------- 1 | /* 2 | Cinder Theme for MkDocs | Copyright 2015 Christopher Simpkins | MIT License 3 | */ 4 | 5 | body { 6 | font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 7 | font-size: 16px; 8 | line-height: 1.7; 9 | background-color: #FFF; 10 | color: #343838; 11 | } 12 | h1, h2, h3, h4, h5, h6 { 13 | font-family:'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 14 | color: #222; 15 | } 16 | h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { 17 | color: #B1B7B9; 18 | } 19 | 20 | h2 { 21 | margin-top: 35px; 22 | } 23 | 24 | h1, h2 { 25 | font-weight: 700; 26 | } 27 | h4 { 28 | font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 29 | font-weight: 300; 30 | margin-top: 20px; 31 | font-style: italic; 32 | } 33 | h5 { 34 | font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 35 | font-weight: 300; 36 | font-variant: small-caps; 37 | } 38 | pre, code { 39 | background-color: #FCFDFF; 40 | } 41 | pre>code { 42 | font-size: 13px; 43 | } 44 | pre { 45 | margin-top: 25px; 46 | margin-bottom: 25px; 47 | } 48 | .lead { 49 | font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; 50 | font-weight: 400; 51 | line-height: 1.4; 52 | letter-spacing: 0.0312em; 53 | color: #B1B7B9; 54 | } 55 | .navbar-default { 56 | background-color: #343838; 57 | border-bottom: 8px #EBF2F2 solid; 58 | } 59 | .bs-sidenav { 60 | background-image: url("../img/grid11.png"); 61 | background-repeat: repeat; 62 | font-family: Inter,"Helvetica Neue",Helvetica,Arial,sans-serif; 63 | font-size: 13px; 64 | } 65 | .well { 66 | background-color: #FCFDFF; 67 | } 68 | .btn-default { 69 | background-color:#FCFDFF; 70 | } 71 | .table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th { 72 | background-color: #FCFDFF; 73 | } 74 | #mkdocs-search-query:focus { 75 | outline: none; 76 | -webkit-box-shadow: none; 77 | box-shadow: none; 78 | } 79 | #mkdocs-search-query { 80 | font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; 81 | font-size: 20px; 82 | font-weight: 700; 83 | color: #343838; 84 | height: 45px; 85 | } 86 | footer > hr { 87 | width: 35%; 88 | } 89 | -------------------------------------------------------------------------------- /cinder/css/cinder.min.css: -------------------------------------------------------------------------------- 1 | body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;line-height:1.7;background-color:#FFF;color:#343838}h1,h2,h3,h4,h5,h6{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;color:#222}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{color:#b1b7b9}h2{margin-top:35px}h1,h2{font-weight:700}h4{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;margin-top:20px;font-style:italic}h5{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;font-variant:small-caps}pre,code{background-color:#fcfdff}pre>code{font-size:13px}pre{margin-top:25px;margin-bottom:25px}.lead{font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.4;letter-spacing:.0312em;color:#b1b7b9}.navbar-default{background-color:#343838;border-bottom:8px #ebf2f2 solid}.bs-sidenav{background-image:url("../img/grid11.png");background-repeat:repeat;font-family:Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px}.well{background-color:#fcfdff}.btn-default{background-color:#fcfdff}.table-striped>tbody>tr:nth-child(2n+1)>td,.table-striped>tbody>tr:nth-child(2n+1)>th{background-color:#fcfdff}#mkdocs-search-query:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#mkdocs-search-query{font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;font-weight:700;color:#343838;height:45px}footer>hr{width:35%} 2 | -------------------------------------------------------------------------------- /cinder/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #FCFDFF; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-quote { 17 | color: #998; 18 | font-style: italic; 19 | } 20 | 21 | .hljs-keyword, 22 | .hljs-selector-tag, 23 | .hljs-subst { 24 | color: #333; 25 | font-weight: bold; 26 | } 27 | 28 | .hljs-number, 29 | .hljs-literal, 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-tag .hljs-attr { 33 | color: #008080; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-doctag { 38 | color: #d14; 39 | } 40 | 41 | .hljs-title, 42 | .hljs-section, 43 | .hljs-selector-id { 44 | color: #900; 45 | font-weight: bold; 46 | } 47 | 48 | .hljs-subst { 49 | font-weight: normal; 50 | } 51 | 52 | .hljs-type, 53 | .hljs-class .hljs-title { 54 | color: #458; 55 | font-weight: bold; 56 | } 57 | 58 | .hljs-tag, 59 | .hljs-name, 60 | .hljs-attribute { 61 | color: #000080; 62 | font-weight: normal; 63 | } 64 | 65 | .hljs-regexp, 66 | .hljs-link { 67 | color: #009926; 68 | } 69 | 70 | .hljs-symbol, 71 | .hljs-bullet { 72 | color: #990073; 73 | } 74 | 75 | .hljs-built_in, 76 | .hljs-builtin-name { 77 | color: #0086b3; 78 | } 79 | 80 | .hljs-meta { 81 | color: #999; 82 | font-weight: bold; 83 | } 84 | 85 | .hljs-deletion { 86 | background: #fdd; 87 | } 88 | 89 | .hljs-addition { 90 | background: #dfd; 91 | } 92 | 93 | .hljs-emphasis { 94 | font-style: italic; 95 | } 96 | 97 | .hljs-strong { 98 | font-weight: bold; 99 | } 100 | -------------------------------------------------------------------------------- /cinder/css/highlight.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fcfdff}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{color:teal}.hljs-string,.hljs-doctag{color:#d14}.hljs-title,.hljs-section,.hljs-selector-id{color:#900;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-type,.hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-tag,.hljs-name,.hljs-attribute{color:navy;font-weight:normal}.hljs-regexp,.hljs-link{color:#009926}.hljs-symbol,.hljs-bullet{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} 2 | -------------------------------------------------------------------------------- /cinder/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /cinder/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /cinder/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /cinder/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/favicon.ico -------------------------------------------------------------------------------- /cinder/img/grid1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid1.png -------------------------------------------------------------------------------- /cinder/img/grid10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid10.png -------------------------------------------------------------------------------- /cinder/img/grid11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid11.png -------------------------------------------------------------------------------- /cinder/img/grid12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid12.png -------------------------------------------------------------------------------- /cinder/img/grid13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid13.png -------------------------------------------------------------------------------- /cinder/img/grid14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid14.png -------------------------------------------------------------------------------- /cinder/img/grid15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid15.png -------------------------------------------------------------------------------- /cinder/img/grid16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid16.png -------------------------------------------------------------------------------- /cinder/img/grid17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid17.png -------------------------------------------------------------------------------- /cinder/img/grid18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid18.png -------------------------------------------------------------------------------- /cinder/img/grid19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid19.png -------------------------------------------------------------------------------- /cinder/img/grid2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid2.png -------------------------------------------------------------------------------- /cinder/img/grid20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid20.png -------------------------------------------------------------------------------- /cinder/img/grid3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid3.png -------------------------------------------------------------------------------- /cinder/img/grid4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid4.png -------------------------------------------------------------------------------- /cinder/img/grid5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid5.png -------------------------------------------------------------------------------- /cinder/img/grid6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid6.png -------------------------------------------------------------------------------- /cinder/img/grid7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid7.png -------------------------------------------------------------------------------- /cinder/img/grid8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid8.png -------------------------------------------------------------------------------- /cinder/img/grid9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/cinder/img/grid9.png -------------------------------------------------------------------------------- /cinder/js/base.js: -------------------------------------------------------------------------------- 1 | function getSearchTerm() { 2 | var sPageURL = window.location.search.substring(1); 3 | var sURLVariables = sPageURL.split('&'); 4 | for (var i = 0; i < sURLVariables.length; i++) { 5 | var sParameterName = sURLVariables[i].split('='); 6 | if (sParameterName[0] == 'q') { 7 | return sParameterName[1]; 8 | } 9 | } 10 | } 11 | 12 | $(document).ready(function() { 13 | /** 14 | * ------------------------------------------------------------------------ 15 | * Taken from themes/mkdocs/js/base.js 16 | * ------------------------------------------------------------------------ 17 | */ 18 | var search_term = getSearchTerm(), 19 | $search_modal = $('#mkdocs_search_modal'), 20 | $keyboard_modal = $('#mkdocs_keyboard_modal'); 21 | 22 | if (search_term) { 23 | $search_modal.modal(); 24 | } 25 | 26 | // make sure search input gets autofocus everytime modal opens. 27 | $search_modal.on('shown.bs.modal', function() { 28 | $search_modal.find('#mkdocs-search-query').focus(); 29 | }); 30 | 31 | // Close search modal when result is selected 32 | // The links get added later so listen to parent 33 | $('#mkdocs-search-results').click(function(e) { 34 | if ($(e.target).is('a')) { 35 | $search_modal.modal('hide'); 36 | } 37 | }); 38 | 39 | if (typeof shortcuts !== 'undefined') { 40 | // Populate keyboard modal with proper Keys 41 | $keyboard_modal.find('.help.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.help]; 42 | $keyboard_modal.find('.prev.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.previous]; 43 | $keyboard_modal.find('.next.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.next]; 44 | $keyboard_modal.find('.search.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.search]; 45 | 46 | // Keyboard navigation 47 | document.addEventListener("keydown", function(e) { 48 | if ($(e.target).is(':input')) return true; 49 | var key = e.which || e.key || window.event && window.event.key; 50 | var page; 51 | switch (key) { 52 | case shortcuts.next: 53 | page = $('.navbar a[rel="next"]:first').prop('href'); 54 | break; 55 | case shortcuts.previous: 56 | page = $('.navbar a[rel="prev"]:first').prop('href'); 57 | break; 58 | case shortcuts.search: 59 | e.preventDefault(); 60 | $keyboard_modal.modal('hide'); 61 | $search_modal.modal('show'); 62 | $search_modal.find('#mkdocs-search-query').focus(); 63 | break; 64 | case shortcuts.help: 65 | $search_modal.modal('hide'); 66 | $keyboard_modal.modal('show'); 67 | break; 68 | default: 69 | break; 70 | } 71 | if (page) { 72 | $keyboard_modal.modal('hide'); 73 | window.location.href = page; 74 | } 75 | }); 76 | } 77 | 78 | $('table').addClass('table table-striped table-hover'); 79 | 80 | // Improve the scrollspy behaviour when users click on a TOC item. 81 | $(".bs-sidenav a").on("click", function() { 82 | var clicked = this; 83 | setTimeout(function() { 84 | var active = $('.nav li.active a'); 85 | active = active[active.length - 1]; 86 | if (clicked !== active) { 87 | $(active).parent().removeClass("active"); 88 | $(clicked).parent().addClass("active"); 89 | } 90 | }, 50); 91 | }); 92 | }); 93 | 94 | 95 | /** 96 | * ------------------------------------------------------------------------ 97 | * Taken from themes/mkdocs/js/base.js 98 | * ------------------------------------------------------------------------ 99 | */ 100 | 101 | $('body').scrollspy({ 102 | target: '.bs-sidebar', 103 | offset: 100 104 | }); 105 | 106 | /* Prevent disabled links from causing a page reload */ 107 | $("li.disabled a").click(function() { 108 | event.preventDefault(); 109 | }); 110 | 111 | // See https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes 112 | // We only list common keys below. Obscure keys are omited and their use is discouraged. 113 | var keyCodes = { 114 | 8: 'backspace', 115 | 9: 'tab', 116 | 13: 'enter', 117 | 16: 'shift', 118 | 17: 'ctrl', 119 | 18: 'alt', 120 | 19: 'pause/break', 121 | 20: 'caps lock', 122 | 27: 'escape', 123 | 32: 'spacebar', 124 | 33: 'page up', 125 | 34: 'page down', 126 | 35: 'end', 127 | 36: 'home', 128 | 37: '←', 129 | 38: '↑', 130 | 39: '→', 131 | 40: '↓', 132 | 45: 'insert', 133 | 46: 'delete', 134 | 48: '0', 135 | 49: '1', 136 | 50: '2', 137 | 51: '3', 138 | 52: '4', 139 | 53: '5', 140 | 54: '6', 141 | 55: '7', 142 | 56: '8', 143 | 57: '9', 144 | 65: 'a', 145 | 66: 'b', 146 | 67: 'c', 147 | 68: 'd', 148 | 69: 'e', 149 | 70: 'f', 150 | 71: 'g', 151 | 72: 'h', 152 | 73: 'i', 153 | 74: 'j', 154 | 75: 'k', 155 | 76: 'l', 156 | 77: 'm', 157 | 78: 'n', 158 | 79: 'o', 159 | 80: 'p', 160 | 81: 'q', 161 | 82: 'r', 162 | 83: 's', 163 | 84: 't', 164 | 85: 'u', 165 | 86: 'v', 166 | 87: 'w', 167 | 88: 'x', 168 | 89: 'y', 169 | 90: 'z', 170 | 91: 'Left Windows Key / Left ⌘', 171 | 92: 'Right Windows Key', 172 | 93: 'Windows Menu / Right ⌘', 173 | 96: 'numpad 0', 174 | 97: 'numpad 1', 175 | 98: 'numpad 2', 176 | 99: 'numpad 3', 177 | 100: 'numpad 4', 178 | 101: 'numpad 5', 179 | 102: 'numpad 6', 180 | 103: 'numpad 7', 181 | 104: 'numpad 8', 182 | 105: 'numpad 9', 183 | 106: 'multiply', 184 | 107: 'add', 185 | 109: 'subtract', 186 | 110: 'decimal point', 187 | 111: 'divide', 188 | 112: 'f1', 189 | 113: 'f2', 190 | 114: 'f3', 191 | 115: 'f4', 192 | 116: 'f5', 193 | 117: 'f6', 194 | 118: 'f7', 195 | 119: 'f8', 196 | 120: 'f9', 197 | 121: 'f10', 198 | 122: 'f11', 199 | 123: 'f12', 200 | 124: 'f13', 201 | 125: 'f14', 202 | 126: 'f15', 203 | 127: 'f16', 204 | 128: 'f17', 205 | 129: 'f18', 206 | 130: 'f19', 207 | 131: 'f20', 208 | 132: 'f21', 209 | 133: 'f22', 210 | 134: 'f23', 211 | 135: 'f24', 212 | 144: 'num lock', 213 | 145: 'scroll lock', 214 | 186: ';', 215 | 187: '=', 216 | 188: ',', 217 | 189: '‐', 218 | 190: '.', 219 | 191: '?', 220 | 192: '`', 221 | 219: '[', 222 | 220: '\', 223 | 221: ']', 224 | 222: ''', 225 | }; 226 | -------------------------------------------------------------------------------- /cinder/keyboard-modal.html: -------------------------------------------------------------------------------- 1 | 41 | -------------------------------------------------------------------------------- /cinder/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {# 4 | The entry point for the MkDocs Theme. 5 | 6 | Any theme customisations should override this file to redefine blocks defined in 7 | the various templates. The custom theme should only need to define a main.html 8 | which `{% extends "base.html" %}` and defines various blocks which will replace 9 | the blocks defined in base.html and its included child templates. 10 | #} -------------------------------------------------------------------------------- /cinder/mkdocs_theme.yml: -------------------------------------------------------------------------------- 1 | cinder_theme: true 2 | 3 | static_templates: 4 | - 404.html 5 | 6 | include_search_page: false 7 | search_index_only: false 8 | 9 | shortcuts: 10 | help: 191 # ? 11 | next: 78 # n 12 | previous: 80 # p 13 | search: 83 # s 14 | -------------------------------------------------------------------------------- /cinder/nav-sub.html: -------------------------------------------------------------------------------- 1 | {% if not nav_item.children %} 2 |
  • 3 | {{ nav_item.title }} 4 |
  • 5 | {% else %} 6 | 14 | {% endif %} 15 | -------------------------------------------------------------------------------- /cinder/nav.html: -------------------------------------------------------------------------------- 1 | 110 | -------------------------------------------------------------------------------- /cinder/search-modal.html: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /cinder/toc.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | jimsvault.jimbrig.com 2 | -------------------------------------------------------------------------------- /docs/Changelog.md: -------------------------------------------------------------------------------- 1 | - 2021-05-05 at 00h02 · [[Firefox Developer Edition]] 2 | - 2021-05-05 at 00h02 · [[_published/docs/Tools/Web Browsers/Web Browsers]] 3 | - 2021-05-05 at 00h02 · [[APIs]] 4 | - 2021-05-05 at 00h02 · [[index]] 5 | - 2021-05-05 at 00h02 · [[README]] 6 | - 2021-05-05 at 00h02 · [[index]] 7 | - 2021-05-04 at 23h58 · [[Using Pool]] 8 | - 2021-05-04 at 20h23 · [[Setup Cloud SQL for PostgreSQL in Production]] 9 | - 2021-05-04 at 20h04 · [[Install gcloud SDK on Windows]] 10 | - 2021-05-04 at 20h04 · [[Install gcloud SDK on Ubuntu]] 11 | -------------------------------------------------------------------------------- /docs/Cloud/Google Cloud Setup Notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-28 10:15 3 | modification date: Wednesday 28th April 2021 10:15:09 4 | tags: ["#gcp", "dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Google Cloud Setup Notes 9 | 10 | ## Environment Setup and Configuration 11 | 12 | 1. In the [Google Cloud Console](https://console.cloud.google.com/), select or create a GCP project. 13 | - [Project Selector Page](https://console.cloud.google.com/projectselector2/home/dashboard?_ga=2.153494008.1742946965.1610938789-26772365.1609112598) 14 | 2. Ensure [Billing is Enabled](https://cloud.google.com/billing/docs/how-to/modify-project) for the project. 15 | 3. [Enable the Cloud Run API](http://console.cloud.google.com/apis/library/run.googleapis.com?_ga=2.220194521.1742946965.1610938789-26772365.1609112598). 16 | 4. [Install and Initialize `gcloud` SDK](https://cloud.google.com/sdk/docs/) on local machine. 17 | - On windows run, `cinst gcloud` if using Chocolatey. 18 | - Update components via `gcloud components update` 19 | 5. Authenticate GCP (two methods): 20 | - Using a dedicated `service account` 21 | 22 | *** 23 | Links: 24 | Source: 25 | 26 | -------------------------------------------------------------------------------- /docs/Cloud/index.md: -------------------------------------------------------------------------------- 1 | # Cloud 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Google Cloud Setup Notes](Google Cloud Setup Notes.md) -------------------------------------------------------------------------------- /docs/Databases/Database GUIs.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-02 18:26 3 | modification date: Sunday 2nd May 2021 18:26:03 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Database GUIs 9 | 10 | - [pgAdmin4](https://www.pgadmin.org/download/pgadmin-4-windows/) 11 | - [DBeaver](https://dbeaver.com/) 12 | - [Valentina Studio](https://www.valentina-db.com/en/get-free-valentina-studio) 13 | - [Beekeeper Studio](https://www.beekeeperstudio.io/) 14 | - [DBTarzan](https://aferrandi.github.io/dbtarzan/) 15 | - [DB Browser (SQLite)](https://sqlitebrowser.org/) 16 | - [DataGrip](https://www.jetbrains.com/datagrip/?ref=eversql.com) 17 | - [MySQL Workbench](https://www.mysql.com/products/workbench/) 18 | - [PostGUI](https://github.com/priyank-purohit/PostGUI) 19 | 20 | ## PostgreSQL Specific 21 | 22 | *⭐ = Recommended* 23 | 24 | - [Adminer](https://www.adminer.org/) - Full-featured database management tool written in PHP. 25 | - [Beekeeper Studio](https://www.beekeeperstudio.io/) - Free and open source SQL client with a modern UI and great Postgres support. Cross platform. ⭐ 26 | - [DataGrip](https://www.jetbrains.com/datagrip/) - IDE with advanced tool sets and good cross-platform experience (Commercial Software).⭐ 27 | - [Datazenit](https://datazenit.com/) - Web-based PostgreSQL GUI (Commercial Software). 28 | - [DataRow](https://www.datarow.com/) - Cross-platform SQL Client for Amazon Redshift: Simple, Effortless, Extensible. 29 | - [DBeaver](https://dbeaver.io/) - Universal Database Manager with excellent support for PostgreSQL.⭐ 30 | - [dbglass](http://dbglass.web-pal.com/) - Cross-platform desktop client for PostgreSQL, built with Electron. 31 | - [Holistics](https://www.holistics.io/) - Online cross platform database management tool and SQL query reporting GUI with strong PostgreSQL support (Commercial Software). 32 | - [JackDB](https://www.jackdb.com/) - Web-based SQL query interface (Commercial Software). 33 | - [Metabase](https://www.metabase.com/) - Simple dashboards, charts and query tool for PostgreSQL. 34 | - [Numeracy](https://numeracy.co/) - Fast SQL editor with charts and dashboards for PostgreSQL (Commercial Software). 35 | - [OmniDB](https://omnidb.org/en/) - Open Source Collaborative Environment For Database Management 36 | - [pgAdmin](https://www.pgadmin.org/) - PostgreSQL Administration and Management GUI.⭐ 37 | - [pgModeler](https://pgmodeler.io/) - pgModeler is an open-source PostgreSQL Database Modeler. 38 | - [pgweb](https://github.com/sosedoff/pgweb) - Web-based PostgreSQL database browser written in Go.⭐ 39 | - [phpPgAdmin](https://github.com/phppgadmin/phppgadmin) - The Premier Web Based Administration Tool for PostgreSQL. 40 | - [Postbird](https://github.com/Paxa/postbird) - PostgreSQL Client for macOS. 41 | - [PostgresCompare](https://www.postgrescompare.com/) - Cross-platform database comparison and deployment tool (Commercial Software). 42 | - [Postico](https://eggerapps.at/postico/) - Modern PostgreSQL Client for macOS (Commercial Software). 43 | - [PSequel](http://www.psequel.com/) - Clean and simple interface to perform common PostgreSQL tasks quickly (Commercial Software). 44 | - [SQL Tabs](http://www.sqltabs.com/) - Cross Platform Desktop Client for PostgreSQL written in JS. 45 | - [SQLPro for Postgres](http://macpostgresclient.com/) - Simple, powerful PostgreSQL manager for macOS (Commercial Software). 46 | - [temBoard](https://github.com/dalibo/temboard) - Web-based PostgreSQL GUI and monitoring. 47 | - [TablePlus](https://tableplus.com/) - Native App which let you edit database and structure. High-end security ensured (Commercial Software). 48 | - [Valentina Studio](https://www.valentina-db.com/en/valentina-studio-overview) - Cross-platform database administration tool (Free/Commercial)⭐ 49 | 50 | *** 51 | Links: 52 | Source: 53 | 54 | -------------------------------------------------------------------------------- /docs/Databases/Databases.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-25 00:04 3 | modification date: Sunday 25th April 2021 00:04:17 4 | tags: ["#moc"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Databases - MOC 9 | 10 | ## Database Engines 11 | - [[PostgreSQL]] 12 | 13 | ## Database Design 14 | 15 | - [[Views vs. Materialized Views]] 16 | 17 | ## Tools 18 | 19 | - [[PostgreSQL Tools]] 20 | 21 | *** 22 | Backlinks: 23 | Sources: 24 | 25 | 26 | -------------------------------------------------------------------------------- /docs/Databases/PostgreSQL Tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-24 11:37 3 | modification date: Saturday 24th April 2021 11:37:38 4 | tags: ["#dba", "#postgres", "#dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # PostgreSQL Tools 9 | 10 | ## PostgreSQL Engine 11 | 12 | - [PostgreSQL: The world's most advanced open source database](https://www.postgresql.org/) 13 | - [PostgreSQL: About](https://www.postgresql.org/about/) 14 | - [PostgreSQL: Documentation: 13: PostgreSQL 13.2 Documentation](https://www.postgresql.org/docs/13/index.html) 15 | - [PostgreSQL: Downloads](https://www.postgresql.org/download/) 16 | - [PostgreSQL: Software Catalogue - Administration/development tools](https://www.postgresql.org/download/products/1-administrationdevelopment-tools/) 17 | 18 | ## CLI 19 | 20 | - [pgcli](https://github.com/dbcli/pgcli) - Postgres CLI with autocompletion and syntax highlighting 21 | - [pgsh](https://github.com/sastraxi/pgsh) - Branch your PostgreSQL Database like Git 22 | - [psql](https://www.postgresql.org/docs/current/static/app-psql.html) - The built-in PostgreSQL CLI client 23 | - [psql2csv](https://github.com/fphilipe/psql2csv) - Run a query in psql and output the result as CSV 24 | - [nancy](https://gitlab.com/postgres-ai/nancy) - The Nancy CLI is a unified way to manage automated database experiments either in clouds or on-premise 25 | - [schemaspy](https://github.com/schemaspy/schemaspy) - SchemaSpy is a JAVA JDBC-compliant tool for generating your database to HTML documentation, including Entity Relationship diagrams 26 | 27 | ## Monitoring 28 | 29 | 30 | 31 | - [check\_pgactivity](https://github.com/OPMDG/check_pgactivity) - check\_pgactivity is designed to monitor PostgreSQL clusters from Nagios. It offers many options to measure and monitor useful performance metrics. 32 | - [Check\_postgres](https://github.com/bucardo/check_postgres) - Nagios check\_postgres plugin for checking status of PostgreSQL databases. 33 | - [Instrumental](https://github.com/Instrumental/instrumentald) - Real-time performance monitoring, including [pre-made graphs](https://instrumentalapp.com/docs/instrumentald/postgresql#suggested-graphs) for ease of setup (Commercial Software) 34 | - [libzbxpgsql](https://github.com/cavaliercoder/libzbxpgsql) - Comprehensive PostgreSQL monitoring module for Zabbix. 35 | - [PMM](https://github.com/percona/pmm) - Percona Monitoring and Management (PMM) is a Free and Open Source platform for monitoring and managing PostgreSQL, MySQL, and MongoDB. 36 | - [Pome](https://github.com/rach/pome) - Pome stands for PostgreSQL Metrics. Pome is a PostgreSQL Metrics Dashboard to keep track of the health of your database. 37 | - [pgmetrics](https://pgmetrics.io/) - pgmetrics is an open-source, zero-dependency, single-binary tool that can collect a lot of information and statistics from a running PostgreSQL server and display it in easy-to-read text format or export it as JSON and CSV for scripting. 38 | - [pg\_view](https://github.com/zalando/pg_view) - Open-source command-line tool that shows global system stats, per-partition information, memory stats and other information. 39 | - [pgwatch2](https://github.com/cybertec-postgresql/pgwatch2) - Flexible and easy to get started PostgreSQL metrics monitor focusing on Grafana dashboards. 40 | - [pgbench](https://www.postgresql.org/docs/devel/static/pgbench.html) - Run a benchmark test on PostgreSQL. 41 | - [opm.io](http://opm.io/) - Open PostgreSQL Monitoring is a free software suite designed to help you manage your PostgreSQL servers. It can gather stats, display dashboards and send warnings when something goes wrong. 42 | - [okmeter.io](https://okmeter.io/pg) - Commercial SaaS agent-based monitoring with a very detailed PostgreSQL plugin. It automatically gathers 100s of stats, displays dashboards on every aspect and sends alerts when something goes wrong (Commercial Software). 43 | 44 | ## GUI 45 | 46 | 47 | - 48 | 49 | - dbeaver - 50 | 51 | - Valentina Studio - 52 | 53 | - 54 | 55 | - pgAdmin4 56 | - Dbeaver 57 | - Beekeeper Studio 58 | - Valentina Studio 59 | - DBTarzan 60 | 61 | 62 | ## Developer Tools 63 | 64 | - pgHero 65 | - pgSync 66 | - postgres-ai/database-lab 67 | - DBML, dbdocs.io, dbdiagram.io 68 | - PostgREST 69 | - postGIS 70 | - WAL-G: 71 | - [wal-g/wal-g: Archival and Restoration for Postgres (github.com)](https://github.com/wal-g/wal-g#configuration) 72 | 73 | 74 | ## Docker 75 | - [postgres (docker.com)](https://hub.docker.com/_/postgres) 76 | - [postgres/Dockerfile](https://github.com/docker-library/postgres/blob/7bd41786539082857396f4d1b4f1cb326ebee8de/13/Dockerfile) 77 | - [postgresai/extended-postgres (docker.com)](https://hub.docker.com/r/postgresai/extended-postgres) 78 | 79 | ``` 80 | docker pull postgresai/extended-postgres 81 | ``` 82 | 83 | - [postgresai/sync-instance (docker.com)](https://hub.docker.com/r/postgresai/sync-instance) 84 | 85 | ```powershell 86 | docker pull postgresai/sync-instances 87 | 88 | docker run \ 89 | --name sync_instance \ 90 | --env PGDATA=/var/lib/postgresql/pgdata \ 91 | --env WALG_GS_PREFIX="gs://{BUCKET}/{SCOPE}" \ 92 | --env GOOGLE_APPLICATION_CREDENTIALS="/etc/sa/credentials.json" \ 93 | --volume {PATH_TO_CREDENTIALS}:/etc/sa/credentials.json \ 94 | --volume /var/lib/dblab/data:/var/lib/postgresql/pgdata:rshared \ 95 | --detach \ 96 | postgresai/sync-instance:13 97 | ``` 98 | 99 | 100 | [postgrest/postgrest (docker.com)](https://hub.docker.com/r/postgrest/postgrest) 101 | [postgrestoauth/api (docker.com)](https://hub.docker.com/r/postgrestoauth/api) 102 | [PostgREST Documentation — PostgREST 7.0.1 documentation](https://postgrest.org/en/stable/#) 103 | 104 | ## Extensions 105 | 106 | - [Table of Contents — pgRouting Manual (3.1)](https://docs.pgrouting.org/latest/en/index.html) 107 | - 108 | 109 | *** 110 | Links: 111 | Source: 112 | 113 | -------------------------------------------------------------------------------- /docs/Databases/Views vs. Materialized Views.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-24 23:55 3 | modification date: Saturday 24th April 2021 23:55:19 4 | tags: ["#database", "postgresql", "dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Views vs. Materialized Views 9 | 10 | What are the major differences between a view and materialized view, and why should you use one over the other? 11 | 12 | ## Views 13 | 14 | Normal views have their own advantages and disadvantages in comparison to *materialized views*. 15 | 16 | A view is created with the `Create View` `SQL` command and contains all data obtained from the supplied view query expression. 17 | 18 | A primary advantage of views is that you can query them in the same manner as you would any normal database schema's table and retrieve the latest updated calculated results. 19 | 20 | The key here is that views **always compute** every time they are queried or accessed in any way; which may be seen as both a pro and con. 21 | 22 | Another side-note is that in the circumstance you make any type of update to the content in a View, it will always be *“pushed back”* and updated in the original table. 23 | 24 | Likewise, the reverse is also true: any changes that are made to the original base table are instantly reflected in the View. 25 | 26 | What this means, however, is that the performance of a View will **always be slower** than that of a materialized view. The major advantage is that a View doesn’t actually require storage space. You can also have total control over which users can or cannot view sensitive information within the database itself. 27 | 28 | A materialized view, on the other hand, is a **physical copy** of those original base tables. Think of it more like a photograph of the original base table. The key difference is that a materialized view **will not be updated** every time it is interacted with. 29 | 30 | 31 | *** 32 | 33 | Links: [[Databases]] | [[PostgreSQL]] | [[System Design]] | [[Web Development]] 34 | 35 | Source: [What are Materialized Views? A 5 Minute Introduction (educative.io)](https://www.educative.io/blog/materialized-view-introduction) 36 | 37 | -------------------------------------------------------------------------------- /docs/Databases/index.md: -------------------------------------------------------------------------------- 1 | # Databases 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Database GUIs](Database GUIs.md) 8 | - [Databases](Databases.md) 9 | - [PostgreSQL Tools](PostgreSQL Tools.md) 10 | - [PostgreSQL](PostgreSQL.md) 11 | - [Views vs. Materialized Views](Views vs. Materialized Views.md) -------------------------------------------------------------------------------- /docs/Developer Tools/Web Browsers/Firefox Developer Edition.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 12:04 3 | modification date: Saturday 1st May 2021 12:04:00 4 | tags: ["#dev", "#webdev", "#tools"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Firefox Developer Edition 9 | > Really, just use Firefox for fuck sake. 10 | 11 | ## Features 12 | The key killer feature of Firefox is *containers*. 13 | 14 | ## Settings 15 | - General: 16 | - Enable `Ctrl + Tab` to cycle through tabs in recently used order: 17 | 18 | ![[_assets/Pasted image 20210501120642.png]] 19 | 20 | - 21 | 22 | ## Themes 23 | 24 | Currently using the [Matte Black (Red) Theme](https://addons.mozilla.org/en-US/firefox/addon/matte-black-red/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=featured) 25 | 26 | ## Extensions 27 | 28 | - [Keeper Password Manager & Digital Vault](https://addons.mozilla.org/en-US/firefox/addon/keeper-password-manager-digita/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 29 | - [Momentum](https://addons.mozilla.org/en-US/firefox/addon/momentumdash/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 30 | - [OneTab](https://addons.mozilla.org/en-US/firefox/addon/onetab/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 31 | - [Raindrop.io](https://addons.mozilla.org/en-US/firefox/addon/raindropio/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 32 | - [Drak Reader](https://addons.mozilla.org/en-US/firefox/addon/darkreader/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 33 | 34 | 35 | Non-Essential Extensions: 36 | 37 | - [Evernote Web Clipper](https://addons.mozilla.org/en-US/firefox/addon/evernote-web-clipper/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 38 | - [Instapaper](https://addons.mozilla.org/en-US/firefox/addon/instapaper-official/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 39 | - [TamperMonkey](https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 40 | 41 | ## Developer Tools 42 | 43 | - See [30 Tips Tricks with the Firefox Developer Tools](https://lakatos.medium.com/30-tips-tricks-with-the-firefox-developer-tools-2e3f2ca5bc61) Medium article 44 | 45 | You can save a snapshot of the network requests in your Network Monitor. It saves them as HAR or [HTTP Archive](https://w3c.github.io/web-performance/specs/HAR/Overview.html) format. You can also import HAR files and have them display in the Network Monitor so you can debug them. 46 | 47 | 48 | 49 | *** 50 | Links: 51 | Sources: 52 | - [30 Tips Tricks with the Firefox Developer Tools](https://lakatos.medium.com/30-tips-tricks-with-the-firefox-developer-tools-2e3f2ca5bc61) 53 | - [Mozilla Github Organization Account Home Page](https://github.com/mozilla) 54 | - [Calling all web developers: here’s why you should be using Firefox](https://stories.jotform.com/calling-all-web-developers-heres-why-you-should-be-using-firefox-983f012d4aec?source=search_post---------0&gi=644a2b41bbe0) 55 | - [Firefox is the best browser for web-developers](https://dev.to/krishnakakade/firefox-is-the-best-browser-for-web-developers-49i7) -------------------------------------------------------------------------------- /docs/Developer Tools/Web Browsers/Web Browsers.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 12:35 3 | modification date: Saturday 1st May 2021 12:35:12 4 | tags: ["#moc"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Web Browsers 9 | ![[_assets/Pasted image 20210501123611.png]] 10 | 11 | ![[_assets/Pasted image 20210501123655.png]] 12 | 13 | ![[_assets/Pasted image 20210501123722.png]] 14 | 15 | Currently my primary web browsers are: 16 | - [Microsoft Edge Canary] 17 | - [Mozilla Firefox Developer Edition] 18 | 19 | 20 | 21 | *** 22 | Links: 23 | Source: 24 | 25 | -------------------------------------------------------------------------------- /docs/Developer Tools/Web Browsers/index.md: -------------------------------------------------------------------------------- 1 | # Web Browsers 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Firefox Developer Edition](Firefox Developer Edition.md) 8 | - [Web Browsers](Web Browsers.md) -------------------------------------------------------------------------------- /docs/Developer Tools/index.md: -------------------------------------------------------------------------------- 1 | # Developer Tools 2 | 3 | ## Categories 4 | - [Web Browsers](./Web%20Browsers/index.md) 5 | 6 | ## Documents 7 | -------------------------------------------------------------------------------- /docs/Docker/Docker.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 20:48 3 | modification date: Saturday 1st May 2021 20:48:48 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Docker Best Practices 9 | 10 | - Utilize multistage builds and set `DOCKER_BUILDKIT=1` environment variable to allow them to build *in parallel*. 11 | - You can also copy files between stages in multistage builds from previous layers 12 | - Split long `RUN` commands into multiple lines per statement and *alphabetize the order* of the arguments 13 | - `apt-get` notes: 14 | - don't run `apt-get upgrade` or `dist-upgrade` since that will be the job of the base image 15 | - keep `apt-get update` and `apt-get install` together 16 | 17 | ``` 18 | RUN apt-get update && apt-get install -y \ 19 | package-bar \ 20 | package-baz \ 21 | package-foo 22 | ``` 23 | 24 | - Build an Image from a Github Repo (without a dockerfile) 25 | 26 | ```powershell 27 | docker build -t myimage:latest -f- https://github.com/docker-library/hello-world.git < Dockerfiles are the recipe for building images and should add all the binaries/other files you need to make your service work. There are a couple of exceptions to this: secrets (i.e.: credentials), configs (i.e.: configuration files), and application state data (e.g.: your database data). Note that secrets and configs are read only. 114 | 115 | > Compose files are used to describe how a set of services are deployed and interact. The Compose format is used not only for a single engine (i.e.: docker-compose) but also for orchestrated environments like Swarm and Kubernetes. The goal of the Compose format is to make it easy to write an application and test it locally, then deploy it to an orchestrated environment with little or no changes. This goal limits what we can change in the format because of fundamental differences like how each environemtn handles volumes and data storage. 116 | 117 | 118 | *** 119 | Links: 120 | Source: [Best practices for writing Dockerfiles | Docker Documentation](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/) 121 | 122 | -------------------------------------------------------------------------------- /docs/Docker/index.md: -------------------------------------------------------------------------------- 1 | # Docker 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Docker Compose Reference Docs](Docker Compose Reference Docs.md) 8 | - [Docker](Docker.md) -------------------------------------------------------------------------------- /docs/Documentation/MkDocs.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-02 16:54 3 | modification date: Sunday 2nd May 2021 16:54:15 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # MkDocs 9 | 10 | ## Installation 11 | 12 | ### Requirements 13 | 14 | - [Python](https://www.python.org/) 15 | - [pip]() 16 | 17 | ## Setup 18 | 19 | - Ensure `pip` is installed and in `PATH`: 20 | 21 | ```powershell 22 | py -m pip --version 23 | ``` 24 | 25 | 26 | *** 27 | Links: 28 | Source: 29 | 30 | -------------------------------------------------------------------------------- /docs/Documentation/index.md: -------------------------------------------------------------------------------- 1 | # Documentation 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [MkDocs](MkDocs.md) -------------------------------------------------------------------------------- /docs/GCP/Google Cloud APIs.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-04 19:48 3 | modification date: Tuesday 4th May 2021 19:48:06 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Google Cloud APIs 9 | 10 | *** 11 | Links: [[Google Cloud APIs]] | [[GCP/Google Cloud Setup Notes]] 12 | Source: [Google APIs Explorer  |  Google Developers](https://developers.google.com/apis-explorer) 13 | 14 | -------------------------------------------------------------------------------- /docs/GCP/Google Cloud Setup Notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-28 10:15 3 | modification date: Wednesday 28th April 2021 10:15:09 4 | tags: ["#gcp", "#dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Google Cloud Setup Notes 9 | 10 | ## Reference 11 | 12 | - [How-to Guides  |  Cloud SDK Documentation  |  Google Cloud](https://cloud.google.com/sdk/docs/how-to) 13 | - [Quickstart: Getting started with Cloud SDK  |  Cloud SDK Documentation (google.com)](https://cloud.google.com/sdk/docs/quickstart) 14 | - [Installing Google Cloud SDK  |  Cloud SDK Documentation](https://cloud.google.com/sdk/docs/install) 15 | - [The gcloud command-line tool cheat sheet  |  Cloud SDK Documentation (google.com)](https://cloud.google.com/sdk/docs/cheatsheet) 16 | - [gcloud command-line tool overview  |  Cloud SDK Documentation (google.com)](https://cloud.google.com/sdk/gcloud) 17 | - [Initializing Cloud SDK  |  Cloud SDK Documentation  |  Google Cloud](https://cloud.google.com/sdk/docs/initializing) 18 | - [Managing SDK Components  |  Cloud SDK Documentation  |  Google Cloud](https://cloud.google.com/sdk/docs/components) 19 | - [Managing SDK Properties  |  Cloud SDK Documentation  |  Google Cloud](https://cloud.google.com/sdk/docs/properties) 20 | - [Scripting gcloud tool commands  |  Cloud SDK Documentation (google.com)](https://cloud.google.com/sdk/docs/scripting-gcloud) 21 | - [Quickstart  |  Secret Manager Documentation  |  Google Cloud](https://cloud.google.com/secret-manager/docs/quickstart) 22 | 23 | ## Environment Setup and Configuration 24 | 25 | 1. In the [Google Cloud Console](https://console.cloud.google.com/), select or create a GCP project. 26 | - [Project Selector Page](https://console.cloud.google.com/projectselector2/home/dashboard?_ga=2.153494008.1742946965.1610938789-26772365.1609112598) 27 | 2. Ensure [Billing is Enabled](https://cloud.google.com/billing/docs/how-to/modify-project) for the project. 28 | 3. [Enable the Cloud Run API](http://console.cloud.google.com/apis/library/run.googleapis.com?_ga=2.220194521.1742946965.1610938789-26772365.1609112598). 29 | 4. [Install and Initialize `gcloud` SDK](https://cloud.google.com/sdk/docs/) on local machine. 30 | - On windows run, `cinst gcloud` if using Chocolatey. 31 | - Update components via `gcloud components update` 32 | 5. Authenticate GCP (two methods): 33 | - Using a dedicated `service account` 34 | 35 | *** 36 | Links: [[Install gcloud SDK on Ubuntu]] 37 | Source: [How-to Guides  |  Cloud SDK Documentation  |  Google Cloud](https://cloud.google.com/sdk/docs/how-to) 38 | -------------------------------------------------------------------------------- /docs/GCP/Install gcloud SDK on Windows.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-04 19:44 3 | modification date: Tuesday 4th May 2021 19:44:50 4 | tags: ["#gcp", "#dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Install gcloud SDK on Windows 9 | 10 | 1. Download the [Cloud SDK installer](https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe). 11 | 12 | Alternatively, open a PowerShell terminal and run the following PowerShell commands. 13 | 14 | ```powershell 15 | (New\-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\\GoogleCloudSDKInstaller.exe") 16 | 17 | & $env:Temp\\GoogleCloudSDKInstaller.exe 18 | ``` 19 | 20 | 2. Launch the installer and follow the prompts. The installer is signed by Google LLC. 21 | 22 | If you'd like to enable screen reader mode, select the **Turn on screen reader mode** option for a more streamlined screen reader experience. To read more about the Cloud SDK screen reader experience, refer to the [Accessibility features guide](https://cloud.google.com/sdk/docs/enabling-accessibility-features). 23 | 24 | ![Google Cloud SDK Setup welcome dialog for Windows with checkbox for enabling screen reader mode](https://cloud.google.com/sdk/docs/images/screen-reader-mode.png) 25 | 26 | 3. Cloud SDK requires Python; supported versions are Python 3 (preferred, 3.5 to 3.8) and Python 2 (2.7.9 or higher). 27 | 28 | The installer will install all necessary dependencies, including the needed Python version. While Cloud SDK currently uses Python 3 by default, you can use an existing Python installation if necessary by **unchecking** the option to Install Bundled Python. 29 | 30 | 4. After installation has completed, the installer presents several options: 31 | 32 | ![Windows installer prompts](https://cloud.google.com/sdk/images/windows-installer-prompt.png) 33 | 34 | Make sure that the following are selected: 35 | 36 | - **Start Google Cloud SDK Shell** 37 | - **Run `gcloud init`** 38 | 39 | The installer starts a terminal window and runs the [`gcloud init`](https://cloud.google.com/sdk/gcloud/reference/init) command. 40 | 41 | 5. The default installation does not include the App Engine extensions required to deploy an application using `gcloud` commands. These components can be installed using the [Cloud SDK component manager](https://cloud.google.com/sdk/docs/managing-components). 42 | 43 | **Troubleshooting tips:** 44 | 45 | - If the Cloud SDK fails to run after installing version 274.0.0, please refer to this [tracking bug](https://issuetracker.google.com/issues/146458519) for the latest workarounds. 46 | - If your installation is unsuccessful due to the `find` command not being recognized, ensure your `PATH` environment variable is set to include the folder containing `find`. Usually, this is `C:\WINDOWS\system32;`. 47 | - If you have just uninstalled Cloud SDK, you will need to reboot your system before installing Cloud SDK again. 48 | 49 | ### Optional: Install the latest Google Cloud Client Libraries 50 | 51 | You can download [Cloud Client Libraries](https://cloud.google.com/sdk/cloud-client-libraries) for supported languages. 52 | 53 | ## Other installation options 54 | 55 | Depending on your development needs, instead of the [recommended installation](https://cloud.google.com/sdk/docs/install#installation_instructions), you can use an alternative method of installing Cloud SDK: 56 | 57 | - **Using Cloud SDK with scripts or Continuous Integration/Deployment?** Download a [versioned archive](https://cloud.google.com/sdk/docs/downloads-versioned-archives) for a non-interactive installation of a specific version of Cloud SDK. 58 | - **Need to run Cloud SDK as a Docker image?** Use the [Cloud SDK Docker image](https://cloud.google.com/sdk/docs/downloads-docker) for the latest release (or specific version) of Cloud SDK. 59 | - **Running Ubuntu and prefer automatic updates?** Use a [snap package](https://cloud.google.com/sdk/docs/downloads-snap) to install the Cloud SDK. 60 | - For Windows and macOS interactive installations, and all other use cases, run the [interactive installer](https://cloud.google.com/sdk/docs/downloads-interactive) to install the latest release of Cloud SDK. 61 | 62 | ## What's in the box? 63 | 64 | All of the installation methods above install the default Cloud SDK components, which include `gcloud`, `gsutil` and `bq` command-line tools. 65 | 66 | You can [install additional components](https://cloud.google.com/sdk/gcloud/guide/managing-components) using the `gcloud components install` command, or by installing the appropriate deb or RPM packages. 67 | 68 | ## Managing an installation 69 | 70 | After you have installed Cloud SDK, you can use commands in the [`gcloud components`](https://cloud.google.com/sdk/gcloud/reference/components) command group to [manage your installation](https://cloud.google.com/sdk/gcloud/guide/managing-components). This includes viewing installed components, adding and removing components, and upgrading to a new version (or downgrading to a specific version) of Cloud SDK. 71 | 72 | **Note:** Updating and removing components using `gcloud components` is disabled if you installed Cloud SDK using _apt-get_ or _yum_. To manage the Cloud SDK in this case, continue using the package management tool used during installation. 73 | 74 | ## Older versions of Cloud SDK 75 | 76 | If you'd need an older version of Cloud SDK to revert to, you can find all previous releases available to download from [this archive](https://storage.cloud.google.com/cloud-sdk-release). 77 | 78 | *** 79 | Links: [[Install gcloud SDK on Ubuntu]] | [[GCP/Google Cloud Setup Notes]] 80 | Source: [Installing Google Cloud SDK  (Windows) |  Cloud SDK Documentation](https://cloud.google.com/sdk/docs/install#windows) 81 | 82 | -------------------------------------------------------------------------------- /docs/GCP/index.md: -------------------------------------------------------------------------------- 1 | # GCP 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Google Cloud APIs](Google Cloud APIs.md) 8 | - [Google Cloud Setup Notes](Google Cloud Setup Notes.md) 9 | - [Install gcloud SDK on Ubuntu](Install gcloud SDK on Ubuntu.md) 10 | - [Install gcloud SDK on Windows](Install gcloud SDK on Windows.md) 11 | - [Setup Cloud SQL for PostgreSQL in Production](Setup Cloud SQL for PostgreSQL in Production.md) -------------------------------------------------------------------------------- /docs/Git/Git Tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-02 16:37 3 | modification date: Sunday 2nd May 2021 16:37:13 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Git Tools 9 | 10 | 11 | 12 | *** 13 | Links: 14 | Source: 15 | 16 | -------------------------------------------------------------------------------- /docs/Git/index.md: -------------------------------------------------------------------------------- 1 | # Git 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Git Tools](Git Tools.md) -------------------------------------------------------------------------------- /docs/Github/index.md: -------------------------------------------------------------------------------- 1 | # Github 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Github Actions for R](Github Actions for R.md) -------------------------------------------------------------------------------- /docs/Lists/Recurring Shopping List.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-03 11:42 3 | modification date: Monday 3rd May 2021 11:42:54 4 | tags: ["#list"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Recurring Shopping List 9 | 10 | ## Amazon 11 | 12 | - 13 | 14 | 15 | *** 16 | Links: 17 | Source: 18 | 19 | -------------------------------------------------------------------------------- /docs/Lists/index.md: -------------------------------------------------------------------------------- 1 | # Lists 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Recurring Shopping List](Recurring Shopping List.md) -------------------------------------------------------------------------------- /docs/Obsidian/Mermaid Diagrams.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-03 20:08 3 | modification date: Monday 3rd May 2021 20:08:17 4 | tags: ["#obsidian", "#pkm"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Mermaid Diagrams 9 | 10 | This is a brief walkthrough on how to create [mermaid diagrams]() with Obsidian using Markdown. 11 | 12 | Obsidian uses [Mermaid](https://mermaid-js.github.io/) to render diagrams and charts. Mermaid also provides [a helpful live editor](https://mermaid-js.github.io/mermaid-live-editor). 13 | 14 |
    ```mermaid
    15 | sequenceDiagram
    16 |     Alice->>+John: Hello John, how are you?
    17 |     Alice->>+John: John, can you hear me?
    18 |     John-->>-Alice: Hi Alice, I can hear you!
    19 |     John-->>-Alice: I feel great!
    20 | ```
    21 | 22 | ```mermaid 23 | sequenceDiagram 24 | Alice->>+John: Hello John, how are you? 25 | Alice->>+John: John, can you hear me? 26 | John-->>-Alice: Hi Alice, I can hear you! 27 | John-->>-Alice: I feel great! 28 | ``` 29 | 30 | *** 31 | Links: 32 | Source: 33 | 34 | -------------------------------------------------------------------------------- /docs/Obsidian/Obsidian Git Plugin Notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-20 10:49 3 | modification date: Tuesday 20th April 2021 10:49:45 4 | tags: "#note" 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Obsidian Git Plugin Notes 9 | 10 | ## Initialize with `Git` 11 | 12 | ``` 13 | git init 14 | gh repo create --private 15 | touch .gitignore 16 | notepad .gitignore 17 | git add * 18 | git commit -m "init" 19 | git push --set-upstream origin master 20 | ``` 21 | 22 | *** 23 | Links: [[Obsidian]] 24 | *** 25 | Source: 26 | 27 | - [denolehov/obsidian-git: Backup your Obsidian.md vault with git (github.com)](https://github.com/denolehov/obsidian-git) 28 | - [obsidian-git-tut-windows/README.md at main · gitobsidiantutorial/obsidian-git-tut-windows (github.com)](https://github.com/gitobsidiantutorial/obsidian-git-tut-windows/blob/main/README.md) 29 | - [ssh agent - How can I run ssh-add automatically, without a password prompt? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-a-password-prompt/90869#90869) 30 | - [Adding an existing project to GitHub using the command line - GitHub Docs](https://docs.github.com/en/github/importing-your-projects-to-github/adding-an-existing-project-to-github-using-the-command-line) 31 | *** 32 | -------------------------------------------------------------------------------- /docs/Obsidian/Publishing Workflow.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-02 15:42 3 | modification date: Sunday 2nd May 2021 15:42:09 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Publishing Workflow 9 | 10 | Instead of paying for the built-in [Obsidian Publish Feature](https://obsidian.md/publish) this workflow utilizes the fast, simple, and nice looking [MkDocs](https://www.mkdocs.org/) static sit generator to publish an Obsidian Vault. 11 | 12 | ## Initial Setup 13 | 14 | 1. Fork the Obsidian-MkDocs Github repo template from [jobindj/obsidian-mkdocs](https://github.com/jobindj/obsidian-mkdocs) 15 | - Note: if your obsidian vault is already a git repository you may want to utilize `git submodules` instead of nesting git repo's. 16 | 2. Clone the newly forked repo into your local obsidian vault 17 | 3. Move any notes you want published into the `/docs` folder 18 | 4. Commit and push changes to trigger the [Github Action](https://github.com/jobindj/obsidian-mkdocs/blob/main/.github/workflows/ci.yml) to publish your notes 19 | 20 | Example Code: 21 | 22 | ```powershell 23 | # navigate to obsidian vault's directory 24 | cd 25 | 26 | # add a git submodule for the mkdocs repo under a folder named '_published' 27 | git submodule add git@github.com:jimbrig/obsidian_published.git _published 28 | 29 | # move some notes into the _published/docs folder 30 | ``` 31 | 32 | ## Configuration 33 | 34 | Configure the published site's [mkdocs.yml]() configuration file located in the root level of the MkDocs folder. 35 | 36 | *See [MkDocs Configuration Documentation]() for more details* 37 | 38 | https://www.mkdocs.org/#adding-pages 39 | 40 | *** 41 | Links: 42 | Source: 43 | 44 | -------------------------------------------------------------------------------- /docs/Obsidian/Templater Plugin Notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-20 10:25 3 | modification date: Tuesday 20th April 2021 10:25:36 4 | tags: "#note" 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Templater Plugin Notes 9 | 10 | *** 11 | 12 | Source: [Introduction | Templater (silentvoid13.github.io)](https://silentvoid13.github.io/Templater/docs/) 13 | Links: [[PKM|Personal Knowledge Management]] | [[Obsidian]] -------------------------------------------------------------------------------- /docs/Obsidian/index.md: -------------------------------------------------------------------------------- 1 | # Obsidian 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Mermaid Diagrams](Mermaid Diagrams.md) 8 | - [Obsidian Git Plugin Notes](Obsidian Git Plugin Notes.md) 9 | - [Obsidian](Obsidian.md) 10 | - [Publishing Workflow](Publishing Workflow.md) 11 | - [Templater Plugin Notes](Templater Plugin Notes.md) -------------------------------------------------------------------------------- /docs/PKM/PKM.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/PKM/PKM.md -------------------------------------------------------------------------------- /docs/PKM/index.md: -------------------------------------------------------------------------------- 1 | # PKM 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [PKM](PKM.md) -------------------------------------------------------------------------------- /docs/Powwater/Database Documentation.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-20 10:59 3 | modification date: Tuesday 20th April 2021 10:59:08 4 | tags: ["#work", "#pow", "#r"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Database Documentation 9 | 10 | ## Schema 11 | 12 | ## Connecting 13 | 14 | ## Running Locally in Docker Container 15 | 16 | - pgsync/pg_dump to retrieve SQL from remote hosted production database 17 | - spin up docker container for postgres locally with correct credentials (password=p, port=5432, dbname = postgres, etc.) 18 | - create copy of remote database's public schema in the newly created docker container 19 | - connect to local container database instance from apps, API, etc. 20 | 21 | 22 | ## Resources: 23 | 24 | ### Tools 25 | 26 | - Database Markup Language (DBML) 27 | - dbdocs.io 28 | - dbdiagram.io 29 | - PostgreSQL 30 | - psql 31 | - pgcli 32 | 33 | ### GUI's 34 | 35 | - pgAdmin4 36 | - Valentina Studio 37 | - DBeaver 38 | - VSCode 39 | - RStudio 40 | 41 | ### R Packages 42 | 43 | - DBI 44 | - RPostgres 45 | - RPostgreSQL 46 | - Pool 47 | - dbplyr 48 | - dbplyr 49 | - dbx 50 | - connections 51 | - sqlpetr 52 | - sqldf 53 | 54 | and more... 55 | 56 | 57 | *** 58 | Links: [[PostgreSQL]] | [[PostgreSQL Tools]] | [[System Design]] | [[Databases]] 59 | Source: 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /docs/Powwater/index.md: -------------------------------------------------------------------------------- 1 | # Powwater 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Database Documentation](Database Documentation.md) -------------------------------------------------------------------------------- /docs/Productivity/Notes on Finishing Projects.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-25 00:15 3 | modification date: Sunday 25th April 2021 00:15:40 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Notes on Finishing Projects 9 | 10 | ## **Set Limitations** 11 | 12 | - **Time**: Force time constraints on yourself to avoid wasting useless time that does not reach you closer to your end [[desired outcome]]. 13 | 14 | - **Tools**: Limit the number of possible tools at your disposal. There's never enough time to try them all out and is a perfect excuse for you to trick yourself into thinking you're *being productive* when you are just **procrastinating**. 15 | 16 | - **Undo's**: This is a big one. Limit yourself to *avoid resetting and undoing projects mid-development at all costs*. **Learn to live with imperfection.** 17 | 18 | 19 | 20 | 21 | *** 22 | Links: 23 | Source: 24 | 25 | -------------------------------------------------------------------------------- /docs/Productivity/Productivity.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/Productivity/Productivity.md -------------------------------------------------------------------------------- /docs/Productivity/Time Management.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-25 00:23 3 | modification date: Sunday 25th April 2021 00:23:17 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Time Management 9 | 10 | > Time is merely an illusion - therefore I can procrastinate and it doesn't matter! 11 | 12 | ## Time Tracking 13 | 14 | Use tools (internal, external, or simple manual tracking) to decipher what you are spending (and wasting your time) on. 15 | 16 | Simply gathering data is not enough, you should reflect on the collected times and perform a "post-mortem" on what you could be spending your time on. 17 | 18 | ### Time Tracking Tools 19 | 20 | - TMetric 21 | - Toggl 22 | - Clockify 23 | - etc. 24 | 25 | [Manual Tracking]() - at [[Tychobra]] we utilize an internal application we created ourselves called *T3* for this, but anything works the key is to consistently and thorouly track you time regardless of the medium used to track it. 26 | 27 | 28 | ## Get Clear On Priorities 29 | 30 | Get clear on your priorities. 31 | 32 | ## Batch Tasks and Time Blocks 33 | 34 | Use your calendar, task manager coupled with labels, or a [[time block planner]] to block your time into chunks that contain similar tasks. 35 | 36 | 37 | ## Learn how to say **NO** 38 | 39 | 40 | 41 | *** 42 | Links: 43 | Sources: 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /docs/Productivity/index.md: -------------------------------------------------------------------------------- 1 | # Productivity 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Notes on Finishing Projects](Notes on Finishing Projects.md) 8 | - [Productivity](Productivity.md) 9 | - [Time Management](Time Management.md) -------------------------------------------------------------------------------- /docs/Project Management/Ludicrously Complex Projects in Software Development.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-24 10:10 3 | modification date: Saturday 24th April 2021 10:10:15 4 | tags: ["#productivity", "#pkm", "#work"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Ludicrously Complex Projects 9 | 10 | ## Clear Ownership 11 | 12 | Split out the project into separate buckets of work duties with leaders for each bucket: 13 | 14 | - Administrative 15 | - Technical 16 | - Strategy and Planning 17 | 18 | ## Track Progress 19 | 20 | Communicate and track project's progression through sharing a project timeline and use it as a *single source of truth*. Keep it updated to reflect reality. 21 | 22 | ## Make Effective Decisions 23 | 24 | - Brainstorm and be thoughtful by taking into account any and all long and short term implications. 25 | - Optimize for efficiency 26 | - Organize and Communicate 27 | 28 | ## Manage Dependencies 29 | 30 | Anticipate bottlenecks – Make a table or diagram that maps out who your team relies on, and who relies on your team. 31 | 32 | Keep tabs on it – Assign one owner from each side who looks after each dependency. Make sure the dependency owners understand and communicate the impact of changes to all upstream and downstream teams. 33 | 34 | 35 | 36 | *** 37 | Links: 38 | Source: [The Top 8 Tips for Managing Complex Software Projects (atlassian.com)](https://www.atlassian.com/team-playbook/plays/ludicrously-complex-software-projects) 39 | 40 | -------------------------------------------------------------------------------- /docs/Project Management/Project Management Pipeline.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-24 09:53 3 | modification date: Saturday 24th April 2021 09:53:23 4 | tags: ["#productivity", "#pkm", "#work"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Project Management Pipeline 9 | 10 | Having a good plan is the most important strategy for getting a project **done**. 11 | 12 | ## Step 1: Collection 13 | 14 | Collect *all* work related items that are part of the project, including: 15 | 16 | - Physical Handwritten Notes and Brainstorms 17 | - Meeting/Call Agendas and Notes 18 | - Emails/Correspondence with Client 19 | - Open Tasks in Task Manager 20 | - Open Github Issues 21 | - Slack Messages 22 | - Data received from client 23 | - etc. 24 | 25 | After collecting, prioritize the pieces as tasks that are part of the project - if get stuck prioritizing ask yourself: 26 | 27 | 1. Which one has the most immediate hard deadline? 28 | 2. Which task will make the most positive effect if it is finished ASAP? 29 | 3. Are any of these tasks dependent on another one? 30 | 4. Am I dependent on another person to complete something else before starting? 31 | 5. Is there a task that I must get off my plate to clear my mind and move forward? 32 | 33 | 34 | ## Step 2: Develop a Process 35 | 36 | Next, outline and list out all the necessary steps to complete each task, asking these three questions: 37 | 38 | 1. What are all the tasks and micro-tasks that must be done to complete this? 39 | 2. Who needs to weigh in on, contribute to, perform a quality assurance check on, or sign off on the work? 40 | 3. Is this the most efficient way to get from A to Z on this particular project? 41 | 42 | ## Step 3: Get Organized 43 | 44 | Committing to being organized and finding a structure that fits the project's needs gives a fresh insight into what needs to get done, re-prioritized, or reorganized. 45 | 46 | Set a time each week, such as every Friday afternoon or Monday morning, to review work items. This not only keeps your mind fresh but also helps you see all the things that are part of a bigger project and vision. Change happens, so you’re probably updating a lot of tasks in the course of a week. This review process will help you stay on top of your moving work 47 | 48 | ## Step 4: Just Do It 49 | 50 | Now that you’ve completed the first four steps, it’s time to take action. Pull the trigger; press publish; deliver the final product. What do you do _right now_? 51 | 52 | Based on David Allen’s GTD methodology, consider these four things: 53 | 54 | 1. **Context.** What can you do right now? 55 | 2. **Time available.** What do you have time to do right now? 56 | 3. **Energy available.** What are you able to accomplish right now? 57 | 4. **Priority.** After answering the first three questions, start working on the highest priority item. 58 | 59 | 60 | *** 61 | Links: [[Project Management]] | [[PKM]] | [[Productivity]] 62 | Source: [Five Steps to Getting a Project Done | LiquidPlanner](https://www.liquidplanner.com/blog/5-steps-to-getting-a-project-done/#:~:text=Five%20Steps%20to%20Getting%20a%20Project%20Done.%201,to%20review.%205%205.%20Just%20do%20it%21%20) 63 | 64 | -------------------------------------------------------------------------------- /docs/Project Management/Project Management.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/Project Management/Project Management.md -------------------------------------------------------------------------------- /docs/Project Management/index.md: -------------------------------------------------------------------------------- 1 | # Project Management 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Ludicrously Complex Projects in Software Development](Ludicrously Complex Projects in Software Development.md) 8 | - [Project Management Pipeline](Project Management Pipeline.md) 9 | - [Project Management](Project Management.md) 10 | - [Taming a Chaotic Project](Taming a Chaotic Project.md) -------------------------------------------------------------------------------- /docs/Python/Python.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-02 17:08 3 | modification date: Sunday 2nd May 2021 17:08:56 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Python 9 | 10 | ## Installation 11 | 12 | 13 | 14 | *** 15 | Links: 16 | Source: 17 | 18 | -------------------------------------------------------------------------------- /docs/Python/index.md: -------------------------------------------------------------------------------- 1 | # Python 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Python](Python.md) -------------------------------------------------------------------------------- /docs/R/Data Validation Packages in R.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-28 10:15 3 | modification date: Wednesday 28th April 2021 10:15:09 4 | tags: ["#r"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Data Validation Packages and Tools in R 9 | 10 | ## Packages 11 | 12 | - [pointblank](https:/github.com/rich-iannone/pointblank) 13 | - [assertr](https://github.com/ropensci/assertr) 14 | - [assertthat](https://github.com/hadley/assertthat) 15 | - [checkmate](https://github.com/mllg/checkmate) 16 | - [ruler](https://github.com/echasnovski/ruler) 17 | - [ensurer](https://github.com/smbache/ensurer) 18 | - [tester](https://github.com/gastonstat/tester) 19 | - [sealr](https://github.com/uribo/sealr) 20 | - [validateIt](https://github.com/Luwei-Ying/validateIt) 21 | 22 | More leaned towards validation: 23 | 24 | - [naniar](https://github.com/njtierney/naniar) 25 | - [skimr](https://github.com/ropensci/skimr) 26 | - [validate](https://github.com/data-cleaning/validate) 27 | 28 | Miscellaneous/Related 29 | 30 | - [rstudio/shinyvalidate](https://github.com/rstudio/shinyvalidate) 31 | 32 | - [shinyFeedback](https://github.com/merlinoa/shinyFeedback) 33 | 34 | - [rjsonvalidate](https://github.com/ropensci/jsonvalidate) 35 | 36 | - [validator](https://github.com/manybabies/validator) 37 | 38 | - [lumberjack](https://github.com/markvanderloo/lumberjack): Track changes in data with ease 39 | 40 | - [Lumberjack-App](https://github.com/jcweaver5/ShinyApp-Lumberjack-App): The lumberjack-app is a Shiny Application that predicts tree volume in cubic feet from a linear model using data from the "trees" dataset in the R datasets package -------------------------------------------------------------------------------- /docs/R/Databases with R Resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-21 18:51 3 | modification date: Wednesday 21st April 2021 18:51:54 4 | tags: ["#r", "resources", "database"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Databases with R Resources 9 | 10 | ## Resources: 11 | 12 | - [Databases using R (rstudio.com)](https://db.rstudio.com/) 13 | - [A Comprehensive Introduction to Working with Databases using R - Rsquared Academy Blog](https://blog.rsquaredacademy.com/working-with-databases-using-r/) 14 | 15 | ### R Packages 16 | 17 | - [r-dbi/DBI](https://github.com/r-dbi/DBI) 18 | - [r-dbi/RPostgres](https://github.com/r-dbi/RPostgres) (DBI Driver) & [tomoakin/RPostgreSQL](https://github.com/tomoakin/RPostgreSQL) (ODBC Driver) 19 | - [rstudio/pool](https://github.com/rstudio/pool) 20 | - [data-cleaning/validatedb](https://data-cleaning.github.io/validatedb/) 21 | - [r-dbi/dblog](https://github.com/r-dbi/dblog) 22 | - [dbx] 23 | - [databaser] 24 | - [threadr] & [dbr] 25 | - [DatabaseConnector] 26 | - [ShinyPostgreSQL] 27 | - [dittodb] 28 | - 29 | 30 | *** 31 | Links: 32 | Source: 33 | 34 | -------------------------------------------------------------------------------- /docs/R/Databases with R/index.md: -------------------------------------------------------------------------------- 1 | # Databases with R 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Using Pool](Using Pool.md) -------------------------------------------------------------------------------- /docs/R/Plumber Logging.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-21 16:32 3 | modification date: Wednesday 21st April 2021 16:32:53 4 | tags: ["#r", "#api", "#plumber"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Plumber Logging 9 | 10 | The [plumber R package](https://www.rplumber.io/docs/) is used to expose R functions as API endpoints. Due to plumber’s incredible flexibility, most major API design decisions are left up to the developer. One important consideration to be made when developing APIs is how to log information about API requests and responses. This information can be used to determine how plumber APIs are performing and how they are being utilized. 11 | 12 | An example of logging API requests in plumber is included in the [package documentation](https://www.rplumber.io/docs/routing-and-input.html#filters). That example uses a filter to log information about incoming requests before a response has been generated. This is certainly a valid approach, but it means that the log cannot contain details about the response since the response hasn’t been created yet. In this post we will look at an alternative approach to logging plumber APIs that uses [preroute and postroute hooks](https://www.rplumber.io/docs/programmatic-usage.html#router-hooks) to log information about each API request and its associated response. 13 | 14 | ## Logging 15 | 16 | Logging packages for R: 17 | 18 | - [logger](https://daroczig.github.io/logger/) 19 | 20 | ## Example API 21 | 22 | In this example, I use the [logger package](https://daroczig.github.io/logger/) to generate the actual log entries. Using this package isn’t required, but it does provide some convenient functionality that we will take advantage of. 23 | 24 | Since we will be registering hooks for our API, we will need both a `plumber.R` file and an `entrypoint.R` file. The `plumber.R` file contains the following: 25 | 26 | ```r 27 | # plumber.R 28 | 29 | library(plumber) 30 | 31 | #* @apiTitle Logging Example 32 | #* @apiDescription Simple example API for implementing logging with Plumber 33 | 34 | #* Echo back the input 35 | #* @param msg The message to echo 36 | #* @get /echo 37 | function(msg = "") { 38 | list(msg = paste0("The message is: '", msg, "'")) 39 | } 40 | 41 | #* Plot a histogram 42 | #* @png 43 | #* @get /plot 44 | function() { 45 | rand <- rnorm(100) 46 | hist(rand) 47 | } 48 | ``` 49 | 50 | Now that we’ve defined two endpoints (`/echo` and `/plot`), we can use `entrypoint.R` to setup logging using preroute and postroute hooks. 51 | 52 | First, we need to configure the logger package: 53 | 54 | ``` 55 | # entrypoint.R 56 | library(plumber) 57 | 58 | # logging 59 | library(logger) 60 | 61 | # Specify how logs are written 62 | log_dir <- "logs" 63 | if (!fs::dir_exists(log_dir)) fs::dir_create(log_dir) 64 | log_appender(appender_tee(tempfile("plumber_", log_dir, ".log"))) 65 | ``` 66 | 67 | The `log_appender()` function is used to specify which appender method is used for logging. Here we use `appender_tee()` so that logs will be written to `stdout` and to a specific file path. We create a directory called `logs/` in the current working directory to store the resulting logs. Every log file is assigned a unique name using `tempfile()`. This prevents errors that can occur if concurrent processes try to write to the same file. 68 | 69 | Now, we need to create a helper function that we will use when creating log entries: 70 | 71 | ``` 72 | convert_empty <- function(string) { 73 | if (string == "") { 74 | "-" 75 | } else { 76 | string 77 | } 78 | } 79 | ``` 80 | 81 | This function takes an empty string and converts it into a dash (`"-"`). We will use this to ensure that empty log values still get recorded so that it is easy to read the log files. We’re now ready to create our plumber router and register the hooks necessary for logging: 82 | 83 | ``` 84 | pr <- plumb("plumber.R") 85 | 86 | pr$registerHooks( 87 | list( 88 | preroute = function() { 89 | # Start timer for log info 90 | tictoc::tic() 91 | }, 92 | postroute = function(req, res) { 93 | end <- tictoc::toc(quiet = TRUE) 94 | # Log details about the request and the response 95 | log_info('{convert_empty(req$REMOTE_ADDR)} "{convert_empty(req$HTTP_USER_AGENT)}" {convert_empty(req$HTTP_HOST)} {convert_empty(req$REQUEST_METHOD)} {convert_empty(req$PATH_INFO)} {convert_empty(res$status)} {round(end$toc - end$tic, digits = getOption("digits", 5))}') 96 | } 97 | ) 98 | ) 99 | 100 | pr 101 | ``` 102 | 103 | *** 104 | Links: [[R Development]] 105 | Source: [Plumber Logging · R Views (rstudio.com)](https://rviews.rstudio.com/2019/08/13/plumber-logging/) 106 | 107 | -------------------------------------------------------------------------------- /docs/R/Plumber REST APIs in R.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | # Building REST APIs with R and Plumber 6 | 7 | REST stands for “Representational State Transfer”, meaning it represents a set of rules developers follow when creating APIs (i.e. you get a responding piece of data, the response, whenever you make a request to a particular URL). 8 | 9 | Every request is composed of these four parts: 10 | 11 | 1. **Endpoint** - a part of the URL - The endpoint for `https://example.com/predict` is `/predict`. 12 | 2. **Method** - a type of request you’re sending; used to perform one of these actions: *Create, Read, Update, Delete (CRUD)*. Can be one of the following: 13 | - `GET` 14 | - `POST` 15 | - `PUT` 16 | - `PATCH` 17 | - `DELETE` 18 | 3. **Headers** – used for providing information (think authentication credentials, for example). They are provided as key-value pairs. 19 | 4. **Body** – information that is sent to the server. Used only when not making `GET` requests. 20 | 21 | Most of the time, the response returned after making a request is in JSON format. The alternative format is XML, but JSON is more common. You can also return other objects, such as images instead. You’ll learn how to do that today. 22 | 23 | R allows you to develop REST APIs with the plumber package. You can read the official documentation here. 24 | 25 | It’s easy to repurpose any R script file to an API with plumber, because you only have to decorate your functions with comments. You’ll see all about it in a bit. 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/R/Plumber Resources.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-21 18:51 3 | modification date: Wednesday 21st April 2021 18:51:09 4 | tags: ["#r", "#api", "resources"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Plumber Resources 9 | 10 | *** 11 | Links: 12 | Source: 13 | 14 | -------------------------------------------------------------------------------- /docs/R/R Development.md: -------------------------------------------------------------------------------- 1 | # R Development 2 | 3 | - [[Plumber Logging]] -------------------------------------------------------------------------------- /docs/R/R Miscellaneous Notes.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-28 10:25 3 | modification date: Wednesday 28th April 2021 10:25:18 4 | tags: ["#r"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # R Miscellaneous Notes 9 | 10 | \### Package Development Guidelines 11 | 12 | The script should be used to document all changes and additions to 13 | package code. In addition, git-flow branches should be used for all 14 | added features and bug fixes. The \*\*development\*\* branch serves as the 15 | “test” / “work-in-progress” branch while the \*\*master\*\* branch is the 16 | “production” branch and should only be updated when creating a new 17 | \*\*release\*\*. 18 | 19 | For example, say I wanted to add a new feature / function - the 20 | following steps would be used: 21 | 22 | 1. Using \*Git-Flow\*, a new branch should be created off the current 23 | \*\*development\*\* branch with a name corresponding to the new feature. 24 | 2. Once in the new branch, add functions via the \*\*devhist.R\*\* script 25 | via . 26 | 3. Edit the new .R file and commit changes and push to feature branch. 27 | 4. Add tests for new function and document additions via , and document 28 | this in the \*\*devhist.R\*\* script. 29 | 5. Add example usage of the new feature via , and document this in the 30 | \*\*devhist.R\*\* script. 31 | 6. Document, Test, Check, Build, and Install. 32 | 7. Finally, merge feature branch with development branch using git-flow 33 | and if desired create a new release and merge with master branch 34 | updating the package version. 35 | 36 | ### Ideas 37 | 38 | ### Functions 39 | 40 | #### Workflow Functions 41 | 42 | - Project Configuration 43 | - Version Control and Git 44 | - Directory Structure 45 | - Project Variables 46 | - External Data Sources 47 | - Caching 48 | - Pipelines 49 | - Databases and Query’s 50 | - GoogleDrive 51 | - Files Metadata 52 | - Codebooks, Data Dictionaries, Name Tables 53 | - Documentation 54 | - CI 55 | - Testing 56 | - Code Review 57 | 58 | #### Actuarial Functions 59 | 60 | - Compare to Prior 61 | - Retentions 62 | - Policy Periods 63 | - Grouping by Occurrence 64 | - Exposure Lagging 65 | - Experience Mod Factors 66 | - Industry Loss Costs 67 | - Data Validation Checks 68 | - Manual Adjustments 69 | - Triangle Formation 70 | - LDF Derivation 71 | - LDF Interpolation 72 | - Discount Factors 73 | - Data Summaries 74 | - Loss Costs 75 | - Severity 76 | - Frequency 77 | - Credibiilty 78 | - Allocation 79 | - Projections 80 | - Development Methods 81 | - BF Methods 82 | - Parrallelogram Methods 83 | - Evaluation Dates / Year-Month Time Series Data 84 | - Persistency 85 | - NCCI 86 | - Credibility 87 | - Simulations and Confidence Intervals / Levels 88 | - Benchmarking 89 | - Contigency Tables 90 | - Survival Analysis 91 | 92 | #### Utility Functions 93 | 94 | - Parsing 95 | - Dates 96 | - Excel 97 | 98 | ### Data Structures 99 | 100 | - Lossruns 101 | - Triangles 102 | - Exposures 103 | - Industry Loss Costs 104 | 105 | ### RStudio Addins 106 | 107 | - Project Init 108 | - Dependencies 109 | - Styling 110 | - Create Script with Header 111 | - Git Setup 112 | - Name Table Addin 113 | - Excel Integration Addin(s) 114 | - Remote / Raw Data Directories (Persistent Data Storage) 115 | - Shiny App Init 116 | - Find and Replace 117 | - Data Manipulation (MiniUI with a Pivot Table) 118 | - Markdown Addins 119 | - Prefixer / @importFrom 120 | - Clipboard 121 | 122 | ### Templates 123 | 124 | - Project Directory 125 | - Package Directory 126 | - Shiny App Directory 127 | - Markdown HTML Template 128 | - README Template 129 | - Package DESCRIPTION template 130 | - Excel Output Template 131 | - Shiny Apps HTML Templates 132 | - HTML Widget Templates 133 | - PDF Acturial Report Template 134 | - Latex Tables 135 | 136 | ### Shiny Apps 137 | 138 | - Modules 139 | - Highcharter 140 | - DT 141 | - CSS, Bootstrap, Java, HTML 142 | 143 | ### Options 144 | 145 | - Global options 146 | - .Rprofile 147 | - .Renviron 148 | - Git 149 | - BB & GH 150 | - Conflicts 151 | - DT 152 | - Knitr 153 | - Pre-Commit Hooks 154 | - Shiny 155 | - Highcharter 156 | 157 | ### Data 158 | 159 | - CRM - People, Emails, Phones, Expertise, Clients, Budgets, etc. 160 | - Historical Archived Data (Versioning) 161 | - Git LFS 162 | - Example Lossruns, Exposures, Industry Data 163 | - Triangles, LDFs, Discount Factors 164 | - Simulation Outputs 165 | - Transactional Data 166 | - Liberty, Sedgwick, etc extraction. 167 | 168 | ### Resources and Learning 169 | 170 | - 171 | - 172 | - 173 | - 174 | - 175 | - 176 | - 177 | - 178 | 179 | *** 180 | Links: 181 | Source: 182 | 183 | -------------------------------------------------------------------------------- /docs/R/RStudio Configuration Notes.md: -------------------------------------------------------------------------------- 1 | # RStudio Configuration 2 | 3 | ## Directories 4 | 5 | * `%localappdata%\RStudio-Desktop` - RStudio Desktop Internal State 6 | * `%appdata%\RStudio` - RStudio Configuration Directory (Preferences) 7 | -------------------------------------------------------------------------------- /docs/R/Shiny Apps as Packages in R.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-28 10:25 3 | modification date: Wednesday 28th April 2021 10:25:57 4 | tags: ["#r", "rshiny"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Shiny Apps as Packages in R 9 | 10 | ### Books 11 | 12 | - [Engineering Shiny Book Chapter on Structuring App as Package ](https://engineering-shiny.org/structure.html#shiny-app-as-a-package) ⭐ 13 | - [Mastering Shiny Package Chapter](https://mastering-shiny.org/scaling-packaging.html) ⭐ 14 | 15 | 16 | ### Blog Posts 17 | 18 | - [Workflow: Part 1](https://rtask.thinkr.fr/blog/building-big-shiny-apps-a-workflow-1/) 19 | 20 | - [Workflow: Part 2](https://rtask.thinkr.fr/blog/building-big-shiny-apps-a-workflow-2/) 21 | 22 | 23 | ### Articles 24 | 25 | - [Building Shiny App as a Package](https://rtask.thinkr.fr/building-a-shiny-app-as-a-package/) ⭐ 26 | - [Packaging Shiny Applications: A Deep Dive](https://www.mango-solutions.com/packaging-shiny-applications-a-deep-dive/) ⭐ 27 | - [Best Practices for Developing Robust Shiny Dashboards as R Packages](https://www.inwt-statistics.com/read-blog/best-practice-development-of-robust-shiny-dashboards-as-r-packages.html) ⭐ 28 | - [Dean Attali: Packaging Shiny Apps](https://deanattali.com/2015/04/21/r-package-shiny-app/) 29 | 30 | ## Further Reading 31 | 32 | ### R Package Development 33 | 34 | These resources are for general package development within the R ecosystem. 35 | 36 | #### R-Core & CRAN 37 | 38 | - [Official R Manuals](https://cran.r-project.org/manuals.html) 39 | - [Writing R Extensions](https://cran.r-project.org/doc/manuals/R-exts.html) ⭐ 40 | - [CRAN Task Views Homepage](https://cran.r-project.org/web/views/#:~:text=CRAN%20Task%20Views.%20CRAN%20task%20views%20aim%20to,can%20be%20automatically%20installed%20using%20the%20ctv%20package.) ⭐ 41 | - [Robust Research](https://cran.r-project.org/web/views/ReproducibleResearch.html) 42 | - [Web Technologies](https://cran.r-project.org/web/views/WebTechnologies.html) ⭐ 43 | 44 | 45 | #### rOpenSci 46 | 47 | - [rOpenSci Package DevGuide](https://devguide.ropensci.org/) ⭐ 48 | 49 | #### BioConductor 50 | 51 | - [BioConductor Package Guidelines](https://www.bioconductor.org/developers/package-guidelines/) ⭐ 52 | - [Building Packages for BioConductor](https://www.bioconductor.org/developers/how-to/buildingPackagesForBioc/) 53 | - [Unit Testing](https://bioconductor.org/developers/how-to/unitTesting-guidelines/) 54 | - [Creating Workflow Packages](https://www.bioconductor.org/developers/how-to/workflows/) ⭐ 55 | 56 | #### RStudio 57 | 58 | - [Developing Packages with RStudio](https://support.rstudio.com/hc/en-us/articles/200486488-Developing-Packages-with-RStudio) 59 | - [Building, Testing and Distributing Packages]( https://support.rstudio.com/hc/en-us/articles/200486508-Building-Testing-and-Distributing-Packages) 60 | - [Writing Package Documentation](https://support.rstudio.com/hc/en-us/articles/200532317-Writing-Package-Documentation) 61 | 62 | - [RStudio Video: Auto-Magic Package Development](https://rstudio.com/resources/rstudioconf-2020/auto-magic-package-development/) 63 | 64 | 65 | #### Books 66 | 67 | > See [R-Project's Book Listing](https://www.r-project.org/doc/bib/R-books.html) for more resources on all topics R related. 68 | 69 | - [R Packages (Hadley Wickham)](http://r-pkgs.had.co.nz/) ⭐ 70 | - [Advanced R (Hadley Wickam)](https://adv-r.hadley.nz/) 71 | - [Advanced R Course (Florian Privé)](https://privefl.github.io/advr38book/) 72 | - [R Package Workshop Bookdown](https://combine-australia.github.io/r-pkg-dev/) ⭐ 73 | - [Best Practices: R Development Workshop](https://combine-australia.github.io/r-pkg-dev/good-practices-and-advice.html) ⭐ 74 | - [Advanced Topics: R Development Workshop](https://combine-australia.github.io/r-pkg-dev/advanced-topics.html) 75 | - [Package Development in R](https://iqss.github.io/dss-rbuild/) 76 | - [Package Development Chapter in "Modern R with Tidyverse"](https://b-rodrigues.github.io/modern_R/package-development.html) ⭐ 77 | 78 | 79 | #### Tutorials 80 | 81 | - [Writing an R package from scratch (Hilary Parker)]( https://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/) 82 | - [Writing an R package from scratch (Updated) (Thomas Westlake)](https://r-mageddon.netlify.com/post/writing-an-r-package-from-scratch/) 83 | - [usethis workflow for package development (Emil Hvitfeldt)](https://www.hvitfeldt.me/blog/usethis-workflow-for-package-development/) 84 | - [R package primer (Karl Broman)](https://kbroman.org/pkg_primer/) ⭐ 85 | - [R Package Development Pictorial (Matthew J Denny)](http://www.mjdenny.com/R_Package_Pictorial.html) 86 | - [Building R Packages with Devtools (Jiddu Alexander)](http://www.jiddualexander.com/blog/r-package-building/) 87 | - [Developing R packages (Jeff Leek)](https://github.com/jtleek/rpackages) 88 | - [R Package Tutorial (Colautti Lab)](https://colauttilab.github.io/RCrashCourse/Package_tutorial.html) 89 | - [Instructions for creating your own R package (MIT)](http://web.mit.edu/insong/www/pdf/rpackage_instructions.pdf) 90 | - [How to Create and Distribute an R Package (Shian Su)](https://medium.com/@shiansu/how-to-create-and-distribute-an-r-package-a296217435dc) 91 | 92 | #### Workshops 93 | 94 | - [R Forwards Package Workshop (Chicago, February 23, 2019)](https://github.com/forwards/workshops/tree/master/Chicago2019) 95 | - [Write your own R package (UBC STAT 545)](http://stat545.com/packages00_index.html) 96 | 97 | #### Blogs 98 | 99 | - [How to develop good R packages (for open science) (Malle Salmon)](https://masalmon.eu/2017/12/11/goodrpackages/) 100 | - [R-Task: RMD First Development](https://rtask.thinkr.fr/when-development-starts-with-documentation/)⭐ 101 | 102 | 103 | #### Style 104 | 105 | - [Tidyverse](https://style.tidyverse.org/) 106 | - [Google](https://google.github.io/styleguide/Rguide.html) 107 | - [Jean Fan](https://jef.works/R-style-guide/) 108 | - [A Computational Analysis of the Dynamics of R Style Based on 94 Million Lines of Code from All CRAN Packages in the Past 20 Years. (Yen, C.Y., Chang, M.H.W., Chan, C.H.)](https://github.com/chainsawriot/rstyle) 109 | 110 | 111 | 112 | ### Shiny Modules 113 | - 114 | 115 | 116 | ### Desktop Applications 117 | 118 | - 119 | 120 | *** 121 | Links: 122 | Source: 123 | 124 | -------------------------------------------------------------------------------- /docs/R/Tools Package Hidden Gems in R.md: -------------------------------------------------------------------------------- 1 | Check Unstated Dependencies in Tests: `tools:::check_packages_used_in_tests()` 2 | 3 | > Source: [r-devel/r-svn)](https://github.com/r-devel/r-svn/blob/fea2297d223e590841dac705a44a86c1f011740c/src/library/tools/R/check.R#L4030) 4 | 5 | ``` 6 | tools:::check_packages_used_in_tests(dir = ".", testdir = "tests/testthat") 7 | ``` 8 | 9 | -------------------------------------------------------------------------------- /docs/R/Useful Packages in R List.md: -------------------------------------------------------------------------------- 1 | # Useful R Packages to Look Into 2 | 3 | ## Awesome Lists 4 | 5 | - [qinwf/awesome-R: A curated list of awesome R packages, frameworks and software](https://github.com/qinwf/awesome-R) 6 | - [grabear/awesome-rshiny: An awesome R-shiny list!](https://github.com/grabear/awesome-rshiny) 7 | - 8 | 9 | ## R Universe 10 | 11 | [R-Universe]([https://github.com/r-universe) provides monorepos for R packages and renders them into nice websites. 12 | 13 | | Source | Github Repository | Website | 14 | | :-------------------------------------------------------: | :----------------------------------------------------------: | :----------------------------------------------------------: | 15 | | [data-cleaning](https://github.com/data-cleaning) | [r-universe/data-cleaning](https://github.com/r-universe/data-cleaning) | [data-cleaning.r-universe.dev](https://data-cleaning.r-universe.dev/) | 16 | | [rOpenSci](https://github.com/ropensci) | [r-universe/ropensci](https://github.com/r-universe/ropensci) | [ropensci.r-universe.dev](https://ropensci.r-universe.dev/) | 17 | | [RStudio](https://github.com/rstudio) | [r-universe/rstudio](https://github.com/r-universe/rstudio) | [rstudio.r-universe.dev](https://rstudio.r-universe.dev/) | 18 | | [Appsilon](https://github.com/Appsilon) | [r-universe/appsilon](https://github.com/r-universe/appsilon) | [appsilon.r-universe.dev](https://appsilon.r-universe.dev/) | 19 | | [r-dbi](https://github.com/r-dbi) | [r-universe/r-dbi](https://github.com/r-universe/r-dbi) | [r-dbi.r-universe.dev](https://r-dbi.r-universe.dev/) | 20 | | [JohnCoene](https://github.com/JohnCoene) | [r-universe/johncoene](https://github.com/r-universe/johncoene) | [johncoene.r-universe.dev](https://johncoene.r-universe.dev/) | 21 | | [HenrikBengtsson](https://github.com/HenrikBengtsson) | [r-universe/henrikbengtsson](https://github.com/r-universe/henrikbengtsson) | [henrikbengtsson.r-universe.dev](https://henrikbengtsson.r-universe.dev/) | 22 | | [daattali](https://github.com/daattali) | [r-universe/daattali](https://github.com/r-universe/daattali) | [daattali.r-universe.dev](https://daattali.r-universe.dev/) | 23 | | [eddelbuettel](https://github.com/eddelbuettel) | [r-universe/eddelbuettel](https://github.com/r-universe/eddelbuettel) | [eddelbuettel.r-universe.dev](https://eddelbuettel.r-universe.dev/) | 24 | | [r-forge](https://github/com/r-forge) | [r-universe/r-forge](https://github.com/r-universe/r-forge) | [r-forge.r-universe.dev](https://r-forge.r-universe.dev/) | 25 | | [dreamRs](https://github.com/dreamRs) | [r-universe/dreamrs](https://github.com/r-universe/dreamrs) | [dreamrs.r-universe.dev](https://dreamrs.r-universe.dev/) | 26 | | [MarkEdmondson1234](https://github.com/MarkEdmondson1234) | [r-universe/markedmondson1234](https://github.com/r-universe/markedmondson1234) | [markedmondson1234.r-universe.dev](https://markedmondson1234.r-universe.dev/) | 27 | | [jimhester](https://github.com/jimhester) | [r-universe/jimhester](https://github.com/r-universe/jimhester) | [jimhester.r-universe.dev](https://jimhester.r-universe.dev/) | 28 | | [RinteRface](https://github.com/RinteRface) | [r-universe/rinterface](https://github.com/r-universe/rinterface) | [rinterface.r-universe.dev](https://rinterface.r-universe.dev/) | 29 | | [ColinFay](https://github.com/ColinFay) | [r-universe/colinfay](https://github.com/r-universe/colinfay) | [colinfay.r-universe.dev](https://colinfay.r-universe.dev/) | 30 | | [tidyverse](https://github.com/tidyverse) | [r-universe/tidyverse](https://github.com/r-universe/tidyverse) | [tidyverse.r-universe.dev](https://tidyverse.r-universe.dev/) | 31 | | [r-spatial](https://github.com/r-spatial) | [r-universe/r-spatial](https://github.com/r-universe/r-spatial) | [r-spatial.r-universe.dev](https://r-spatial.r-universe.dev/) | 32 | | [cboettig](https://github.com/cboettig) | [r-universe/cboettig](https://github.com/r-universe/cboettig) | [cboettig.r-universe.dev](https://cboettig.r-universe.dev/) | 33 | | [yihui (Yihui Xie)](https://github.com/yihui) | [r-universe/yihui: yihui](https://github.com/r-universe/yihui) | [yihui.r-universe.dev](https://yihui.r-universe.dev/) | 34 | | (Various) | [r-universe/test: test](https://github.com/r-universe/test) | [test.r-universe.dev](https://test.r-universe.dev/) | 35 | | [the cloudyr project](https://github.com/cloudyr) | [r-universe/cloudyr](https://github.com/r-universe/cloudyr) | [cloudyr.r-universe.dev](https://cloudyr.r-universe.dev/) | 36 | | [Microsoft Azure](https://github.com/Azure) | [r-universe/azure](https://github.com/r-universe/azure) | [azure.r-universe.dev](https://azure.r-universe.dev/) | 37 | 38 | ## R Shiny Related 39 | 40 | - [ThinkR-open/golem: A Framework for Building Robust Shiny Apps](https://github.com/ThinkR-open/golem) 41 | - [colinfay/golemexamples](https://github.com/ColinFay/golemexamples) 42 | - [tyronehunt/GolemShinyTemplate](https://github.com/tyronehunt/GolemShinyTemplate) 43 | - 44 | 45 | - [ColinFay/glouton: 'JS-cookies' in Shiny](https://github.com/ColinFay/glouton) 46 | - [ColinFay/cordes: Boilerplate for Wrapping Node Modules in R packages](https://github.com/ColinFay/cordes) 47 | - [r4fun/keys: Keyboard Shortcuts for shiny](https://github.com/r4fun/keys) 48 | - [ColinFay/crrry: 'crrri' recipes for shiny](https://github.com/ColinFay/crrry) 49 | - [ColinFay/dockerfiler: Easy Dockerfile Creation from R](https://github.com/ColinFay/dockerfiler) 50 | - [yonicd/whereami: Reliably return location where command is called from in R](https://github.com/yonicd/whereami) 51 | - [ColinFay/minifyr: Wrapper around node-minify NodeJS module](https://github.com/ColinFay/minifyr) 52 | - [grabear/shiny-pathfinder-loot: An R shiny app used to keep up with loot tables on Google Sheets during Pathfinder/RPG sessions](https://github.com/grabear/shiny-pathfinder-loot) 53 | - -------------------------------------------------------------------------------- /docs/R/Utils Package Hidden Gems in R.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Utils Package Hidden Gems 4 | 5 | ### `readClipboard` and` writeClipboard` 6 | 7 | One of my favorite duo of functions from **utils** is _readCLipboard_ and _writeClipboard_. If you’re doing some manipulation to get a quick answer between R and Excel, these functions can come in handy. _readClipboard_ reads in whatever is currently on the Clipboard. 8 | 9 | For example, let’s copy a column of cells from Excel. 10 | 11 | ![readClipboard in R from Excel](https://i1.wp.com/theautomatic.net/wp-content/uploads/2019/03/readClipboard-in-R.png?w=640) 12 | 13 | We can now run _readClipboard()_ in R. The result of running this command is a vector containing the column of cells we just copied. Each cell corresponds to an element in the vector. 14 | 15 | ![readClipboard result in R](https://i1.wp.com/theautomatic.net/wp-content/uploads/2019/03/readClipboard-result-in-R.png?w=640) 16 | 17 | Similarly, if we want to write a vector of elements to the clipboard, we can the _writeClipboard_ command: 18 | 19 | ``` 20 | test <- c("write", "to", "clipboard") 21 | writeClipboard(test) 22 | ``` 23 | 24 | Now, the vector **test** has been copied to the clipboard. If you paste the result in Excel, you’ll see a column of cells corresponding to the vector you just copied. 25 | 26 | ![writeClipboard result in R](https://i1.wp.com/theautomatic.net/wp-content/uploads/2019/03/writeClipboard-result-in-R.png?w=640) 27 | 28 | ### `combn` 29 | 30 | The _combn_ function is useful for getting the possible combinations of an input vector. For instance, let’s say we want to get all of the possible 2-element combinations of a vector, we could do this: 31 | 32 | ``` 33 | food <- c("apple", "grape", "orange", "pear", "peach", "banana") 34 | combn(food, 2) 35 | ``` 36 | 37 | ![combn get all combinations of a vector's elements in R](https://i2.wp.com/theautomatic.net/wp-content/uploads/2019/03/combn-get-all-combinations-of-a-vector-in-r.png?w=640) 38 | 39 | In general, the first parameter of _combn_ is the vector of elements you want to get possible combinations from. The second parameter is the number of elements you want in each combination. So if you need to get all possible 3-element or 4-element combinations, you would just need to change this number to three or four. 40 | 41 | ``` 42 | combn(food, 3) 43 | combn(food, 4) 44 | ``` 45 | 46 | We can also add a parameter called **simplify** to make the function return a list of each combination, rather than giving back a matrix output like above. 47 | 48 | ``` 49 | combn(food, 3, simplify = FALSE) 50 | ``` 51 | 52 | ### `fileSnapshot` 53 | 54 | The _fileSnapshot_ function is one R’s collection of file manipulation functions. To learn more about file manipulation and getting information on files in R, [check out this post](http://theautomatic.net/2018/07/11/manipulate-files-r/). 55 | 56 | _fileSnapshot_ will list and provide details about the files in a directory. This function returns a list of objects. 57 | 58 | ``` 59 | # get file snapshot of current directory 60 | snapshot <- fileSnapshot() 61 | 62 | # or file snapshot of another directory 63 | snapshot <- fileSnapshot("C:/some/other/directory") 64 | ``` 65 | 66 | fileSnapshot returns a list, which here we will just call “snapshot”. The most useful piece of information can be garnered from this by referencing “info”: 67 | 68 | `snapshot$info` 69 | 70 | Here, snapshot$info is a data frame showing information about the files in the input folder parameter. Its headers include: 71 | 72 | - size ==> size of file 73 | - isdir ==> is file a directory? ==> TRUE or FALSE 74 | - mode ==> the file permissions in [octal](http://permissions-calculator.org/) 75 | - mtime ==> last modified time stamp 76 | - ctime ==> time stamp created 77 | - atime ==> time stamp last accessed 78 | - exe ==> type of executable (or “no” if not an executable) 79 | 80 | ### `download.file` 81 | 82 | _download.file_ does just what it sounds like – downloads a file from the internet to the destination provided in the function’s input. The first parameter is the URL of the file you wish to download. The second parameter is the name you want to give to the downloaded file. Below, we download a file and call it “census\_data.csv”. 83 | 84 | ``` 85 | download.file("https://www2.census.gov/programs-surveys/popest/datasets/2010/2010-eval-estimates/cc-est2010-alldata.csv", "census_data.csv") 86 | ``` 87 | 88 | ### `fix` - **modify an object on the fly** 89 | 90 | The **utils** package also has the ability to modify objects on the fly with the _fix_ function. For instance, let’s say you define a function interactively, and you want to make some modification. 91 | 92 | ``` 93 | some_func <- function(num) 94 | { 95 | 3 * num + 1 96 | 97 | } 98 | ``` 99 | 100 | Now, let’s modify the function with _fix_: `fix(some_func)`: 101 | 102 | ![fix function in r](https://i1.wp.com/theautomatic.net/wp-content/uploads/2019/04/fix-function-in-r.png?w=640) 103 | 104 | When you call _fix_, it comes up with an editor allowing you to modify the definition of the function. You can also call _fix_ to modify a vector or data frame. 105 | 106 | ``` 107 | fix(iris) 108 | ``` 109 | 110 | ![fix data frame in r](https://i1.wp.com/theautomatic.net/wp-content/uploads/2019/04/fix-data-frame-in-r.png?w=640) -------------------------------------------------------------------------------- /docs/R/index.md: -------------------------------------------------------------------------------- 1 | # R 2 | 3 | ## Categories 4 | - [Databases with R](./Databases%20with%20R/index.md) 5 | 6 | ## Documents 7 | - [Base Package Hidden Gems in R](Base Package Hidden Gems in R.md) 8 | - [Data Validation Packages in R](Data Validation Packages in R.md) 9 | - [Databases with R Resources](Databases with R Resources.md) 10 | - [EDA Packages in R](EDA Packages in R.md) 11 | - [Plumber Logging](Plumber Logging.md) 12 | - [Plumber REST APIs in R](Plumber REST APIs in R.md) 13 | - [Plumber Resources](Plumber Resources.md) 14 | - [R Books](R Books.md) 15 | - [R Development](R Development.md) 16 | - [R Miscellaneous Notes](R Miscellaneous Notes.md) 17 | - [R Shiny Packages](R Shiny Packages.md) 18 | - [RStudio Configuration Notes](RStudio Configuration Notes.md) 19 | - [Shiny Apps as Packages in R](Shiny Apps as Packages in R.md) 20 | - [Tools Package Hidden Gems in R](Tools Package Hidden Gems in R.md) 21 | - [Useful Packages in R List](Useful Packages in R List.md) 22 | - [Utils Package Hidden Gems in R](Utils Package Hidden Gems in R.md) -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Obsidian Vault 2 | 3 | ## Favorites 4 | 5 | - [R Books](https://github.com/jimbrig/obsidian_vault/blob/master/R/R%20Books.md) 6 | -------------------------------------------------------------------------------- /docs/System Design/System Design Primer.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-29 11:38 3 | modification date: Thursday 29th April 2021 11:38:32 4 | tags: ["#dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # System Design Primer 9 | 10 | ![](https://github.com/donnemartin/system-design-primer/raw/master/images/jrUBAF7.png) 11 | 12 | ## Performance vs scalability 13 | 14 | A service is **scalable** if it results in increased **performance** in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to handle larger units of work, such as when datasets grow.[1](http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html) 15 | 16 | Another way to look at performance vs scalability: 17 | 18 | - If you have a **performance** problem, your system is slow for a single user. 19 | - If you have a **scalability** problem, your system is fast for a single user but slow under heavy load. 20 | 21 | ### [](https://github.com/donnemartin/system-design-primer#sources-and-further-reading-1)Source(s) and further reading 22 | 23 | - [A word on scalability](http://www.allthingsdistributed.com/2006/03/a_word_on_scalability.html) 24 | - [Scalability, availability, stability, patterns](http://www.slideshare.net/jboner/scalability-availability-stability-patterns/) 25 | 26 | ## [](https://github.com/donnemartin/system-design-primer#latency-vs-throughput)Latency vs throughput 27 | 28 | **Latency** is the time to perform some action or to produce some result. 29 | 30 | **Throughput** is the number of such actions or results per unit of time. 31 | 32 | Generally, you should aim for **maximal throughput** with **acceptable latency**. 33 | 34 | ### [](https://github.com/donnemartin/system-design-primer#sources-and-further-reading-2)Source(s) and further reading 35 | 36 | ## Availability vs consistency 37 | 38 | ### [](https://github.com/donnemartin/system-design-primer#cap-theorem)CAP theorem 39 | 40 | [![](https://github.com/donnemartin/system-design-primer/raw/master/images/bgLMI2u.png)](https://github.com/donnemartin/system-design-primer/blob/master/images/bgLMI2u.png) 41 | _[Source: CAP theorem revisited](http://robertgreiner.com/2014/08/cap-theorem-revisited)_ 42 | 43 | In a distributed computer system, you can only support two of the following guarantees: 44 | 45 | - **Consistency** \- Every read receives the most recent write or an error 46 | - **Availability** \- Every request receives a response, without guarantee that it contains the most recent version of the information 47 | - **Partition Tolerance** \- The system continues to operate despite arbitrary partitioning due to network failures 48 | 49 | _Networks aren't reliable, so you'll need to support partition tolerance. You'll need to make a software tradeoff between consistency and availability._ 50 | 51 | #### [](https://github.com/donnemartin/system-design-primer#cp---consistency-and-partition-tolerance)CP - consistency and partition tolerance 52 | 53 | Waiting for a response from the partitioned node might result in a timeout error. CP is a good choice if your business needs require atomic reads and writes. 54 | 55 | #### [](https://github.com/donnemartin/system-design-primer#ap---availability-and-partition-tolerance)AP - availability and partition tolerance 56 | 57 | Responses return the most readily available version of the data available on any node, which might not be the latest. Writes might take some time to propagate when the partition is resolved. 58 | 59 | AP is a good choice if the business needs allow for [eventual consistency](https://github.com/donnemartin/system-design-primer#eventual-consistency) or when the system needs to continue working despite external errors. 60 | 61 | ### [](https://github.com/donnemartin/system-design-primer#sources-and-further-reading-3)Source(s) and further reading 62 | 63 | - [CAP theorem revisited](http://robertgreiner.com/2014/08/cap-theorem-revisited/) 64 | - [A plain english introduction to CAP theorem](http://ksat.me/a-plain-english-introduction-to-cap-theorem) 65 | - [CAP FAQ](https://github.com/henryr/cap-faq) 66 | - [The CAP theorem](https://www.youtube.com/watch?v=k-Yaq8AHlFA) 67 | 68 | - [Understanding latency vs throughput](https://community.cadence.com/cadence_blogs_8/b/sd/archive/2010/09/13/understanding-latency-vs-throughput) 69 | 70 | *** 71 | Links: [[System Design]] | [[Web Development]] | [[Databases]] 72 | Source: [donnemartin/system-design-primer](https://github.com/donnemartin/system-design-primer) 73 | 74 | 75 | -------------------------------------------------------------------------------- /docs/System Design/System Design.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/System Design/System Design.md -------------------------------------------------------------------------------- /docs/System Design/index.md: -------------------------------------------------------------------------------- 1 | # System Design 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [System Design Primer](System Design Primer.md) 8 | - [System Design](System Design.md) -------------------------------------------------------------------------------- /docs/Tools/Web Browsers/Firefox Developer Edition.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 12:04 3 | modification date: Saturday 1st May 2021 12:04:00 4 | tags: ["#dev", "#webdev", "#tools"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Firefox Developer Edition 9 | > Really, just use Firefox for fuck sake. 10 | 11 | ## Features 12 | The key killer feature of Firefox is *containers*. 13 | 14 | ## Settings 15 | - General: 16 | - Enable `Ctrl + Tab` to cycle through tabs in recently used order: 17 | 18 | ![[_assets/Pasted image 20210501120642.png]] 19 | 20 | - 21 | 22 | ## Themes 23 | 24 | Currently using the [Matte Black (Red) Theme](https://addons.mozilla.org/en-US/firefox/addon/matte-black-red/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=featured) 25 | 26 | ## Extensions 27 | 28 | - [Keeper Password Manager & Digital Vault](https://addons.mozilla.org/en-US/firefox/addon/keeper-password-manager-digita/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 29 | - [Momentum](https://addons.mozilla.org/en-US/firefox/addon/momentumdash/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 30 | - [OneTab](https://addons.mozilla.org/en-US/firefox/addon/onetab/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 31 | - [Raindrop.io](https://addons.mozilla.org/en-US/firefox/addon/raindropio/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 32 | - [Drak Reader](https://addons.mozilla.org/en-US/firefox/addon/darkreader/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 33 | 34 | 35 | Non-Essential Extensions: 36 | 37 | - [Evernote Web Clipper](https://addons.mozilla.org/en-US/firefox/addon/evernote-web-clipper/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 38 | - [Instapaper](https://addons.mozilla.org/en-US/firefox/addon/instapaper-official/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 39 | - [TamperMonkey](https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) 40 | 41 | ## Developer Tools 42 | 43 | - See [30 Tips Tricks with the Firefox Developer Tools](https://lakatos.medium.com/30-tips-tricks-with-the-firefox-developer-tools-2e3f2ca5bc61) Medium article 44 | 45 | You can save a snapshot of the network requests in your Network Monitor. It saves them as HAR or [HTTP Archive](https://w3c.github.io/web-performance/specs/HAR/Overview.html) format. You can also import HAR files and have them display in the Network Monitor so you can debug them. 46 | 47 | 48 | 49 | *** 50 | Links: 51 | Sources: 52 | - [30 Tips Tricks with the Firefox Developer Tools](https://lakatos.medium.com/30-tips-tricks-with-the-firefox-developer-tools-2e3f2ca5bc61) 53 | - [Mozilla Github Organization Account Home Page](https://github.com/mozilla) 54 | - [Calling all web developers: here’s why you should be using Firefox](https://stories.jotform.com/calling-all-web-developers-heres-why-you-should-be-using-firefox-983f012d4aec?source=search_post---------0&gi=644a2b41bbe0) 55 | - [Firefox is the best browser for web-developers](https://dev.to/krishnakakade/firefox-is-the-best-browser-for-web-developers-49i7) -------------------------------------------------------------------------------- /docs/Tools/Web Browsers/Web Browsers.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 12:35 3 | modification date: Saturday 1st May 2021 12:35:12 4 | tags: ["#moc"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # Web Browsers 9 | ![[_assets/Pasted image 20210501123611.png]] 10 | 11 | ![[_assets/Pasted image 20210501123655.png]] 12 | 13 | ![[_assets/Pasted image 20210501123722.png]] 14 | 15 | Currently my primary web browsers are: 16 | - [Microsoft Edge Canary] 17 | - [Mozilla Firefox Developer Edition] 18 | 19 | 20 | 21 | *** 22 | Links: 23 | Source: 24 | 25 | -------------------------------------------------------------------------------- /docs/Tools/Web Browsers/index.md: -------------------------------------------------------------------------------- 1 | # Web Browsers 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [Firefox Developer Edition](Firefox Developer Edition.md) 8 | - [Web Browsers](Web Browsers.md) -------------------------------------------------------------------------------- /docs/Tools/index.md: -------------------------------------------------------------------------------- 1 | # Tools 2 | 3 | ## Categories 4 | - [Web Browsers](./Web%20Browsers/index.md) 5 | 6 | ## Documents 7 | -------------------------------------------------------------------------------- /docs/WSL/WSL Commands and Installs.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 20:04 3 | modification date: Saturday 1st May 2021 20:04:32 4 | tags: ["#dev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # WSL Commands and Installs 9 | 10 | ## Initial WSL Installations 11 | 12 | - Update, upgrade, and cleanup `apt` packages library 13 | - Install `build-essential`, `autoconf`, and `libtool` 14 | - Install `python`, `gcloud sdk`, and `github-cli` (Python, Git, and Bash should already be included with installation and upgraded in step 1 above) 15 | 16 | ``` 17 | sudp apt update && sudo apt upgrade && sudo apt autoclean 18 | sudo apt-get install build-essential autoconf libtool 19 | ``` 20 | 21 | ## Install gcloud sdk 22 | 23 | Follow the instruction below to install the Cloud SDK: 24 | 25 | 1. Add the Cloud SDK distribution URI as a package source: 26 | 27 | ```bash 28 | echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list 29 | 30 | sudo apt-get install apt-transport-https ca-certificates 31 | 32 | curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - 33 | ``` 34 | 35 | 2. Update and install the Cloud SDK: 36 | 37 | ```bash 38 | sudo apt-get update && sudo apt-get install google-cloud-sdk 39 | ``` 40 | 41 | 3. Run `gcloud init` to initialize the SDK: 42 | 43 | ```bash 44 | gcloud init 45 | ``` 46 | 47 | ## Install Python 48 | 49 | ## Install Node.js 50 | 51 | ## Install Github-CLI 52 | 53 | ## Install Git 54 | 55 | 56 | 57 | ## New WSLg GUI Applications 58 | 59 | - Install Edge with new [WSLg](https://github.com/windows/wslg) version of WSL that supports GUI applications natively. 60 | 61 | ```bash 62 | sudo apt update && sudo apt upgrade 63 | sudo curl https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_91.0.852.0-1_amd64.deb -o /tmp/edge.deb 64 | sudo apt install /tmp/edge.deb \-y 65 | ``` 66 | 67 | - Install RStudio: 68 | 69 | ```bash 70 | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 71 | sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu focal-cran40/" 72 | sudo apt update 73 | sudo apt install r-base 74 | sudo apt-get install gdebi-core 75 | wget https://download1.rstudio.org/desktop/bionic/amd64/rstudio-1.2.5042-amd64.deb 76 | sudo gdebi rstudio-1.2.5042-amd64.deb 77 | ``` 78 | 79 | *** 80 | Links: 81 | Source: 82 | 83 | -------------------------------------------------------------------------------- /docs/WSL/WSL Ubuntu on Windows Community Preview.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-03 20:23 3 | modification date: Monday 3rd May 2021 20:23:08 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # WSL Ubuntu on Windows Community Preview 9 | 10 | Can only download from [this link to Windows Store](https://www.microsoft.com/en-us/p/ubuntu-on-windows-community-preview/9p9q5zh1hrr0?rtc=1&activetab=pivot:overviewtab) currently. 11 | 12 | ![[wsl-comm-preview.png]] 13 | 14 | 15 | *** 16 | Links: [MS Store Link](https://www.microsoft.com/en-us/p/ubuntu-on-windows-community-preview/9p9q5zh1hrr0?rtc=1&activetab=pivot:overviewtab) | [Article by Microsoft]() 17 | Source: [Announcing Ubuntu on Windows Community Preview – WSL 2 | Ubuntu](https://ubuntu.com/blog/announcing-ubuntu-on-windows-community-preview-wsl-2) 18 | 19 | -------------------------------------------------------------------------------- /docs/WSL/WSL.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 20:04 3 | modification date: Saturday 1st May 2021 20:04:32 4 | tags: ["#moc"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # WSL- Contents 9 | 10 | ## Contents: 11 | 12 | - [[WSL Commands and Installs]] 13 | - [[WSL Ubuntu on Windows Community Preview]] 14 | 15 | 16 | *** 17 | Backlinks: 18 | Sources: 19 | 20 | 21 | -------------------------------------------------------------------------------- /docs/WSL/WSLg.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-03 20:25 3 | modification date: Monday 3rd May 2021 20:25:48 4 | tags: ["#note"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # WSLg 9 | 10 | In April 2021, Windows announced the preview for the new version of [[WSL]] named **WSLg** with support got graphical user interface applications (GUIs). 11 | 12 | Enhance the experience by downloading graphics drivers to support hardware acceleration, etc: 13 | 14 | - [GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer](https://developer.nvidia.com/cuda/wsl) [^1] 15 | - [Documentation – CUDA WSL + DirectML Support](https://docs.nvidia.com/cuda/wsl-user-guide/index.html) 16 | - [NVIDIA Blog – CUDA on WSL](https://devblogs.nvidia.com/announcing-cuda-on-windows-subsystem-for-linux-2/) 17 | - [Microsoft Blog – Windows Subsystem for Linux](https://blogs.windows.com/windowsdeveloper/?p=55781) 18 | - [Microsoft Docs: What is WSL?](https://docs.microsoft.com/en-us/windows/wsl/about) 19 | - [Medium Article: Run RAPIDS on Microsoft Windows 10 using WSL 2](https://medium.com/rapids-ai/running-rapids-on-microsoft-windows-10-using-wsl-2-the-windows-subsystem-for-linux-c5cbb2c56e04) 20 | - [CUDA WSL Forum](https://forums.developer.nvidia.com/c/accelerated-computing/cuda/cuda-on-windows-subsystem-for-linux-wsl-2/303) 21 | 22 | [^1]: Note: NVIDIA drivers for WSL with CUDA and DirectML support are available as preview for [Microsoft Windows Insider Program](https://insider.windows.com/en-us/getting-started/) members who have registered for the [NVIDIA Developer Program](https://developer.nvidia.com/developer-program). 23 | 24 | *** 25 | Links: [[WSL]] | [[WSLg]] | [[WSL Ubuntu on Windows Community Preview]] 26 | Reference: [WSLg Architecture](https://devblogs.microsoft.com/commandline/wslg-architecture/) | [Windows Insider](https://insider.windows.com/en-us/getting-started) | [NVIDIA Developer Docs](https://docs.nvidia.com/cuda/wsl-user-guide/index.html) 27 | Source: [WSLg Architecture](https://devblogs.microsoft.com/commandline/wslg-architecture/) 28 | -------------------------------------------------------------------------------- /docs/WSL/index.md: -------------------------------------------------------------------------------- 1 | # WSL 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [WSL Commands and Installs](WSL Commands and Installs.md) 8 | - [WSL Ubuntu on Windows Community Preview](WSL Ubuntu on Windows Community Preview.md) 9 | - [WSL](WSL.md) 10 | - [WSLg](WSLg.md) -------------------------------------------------------------------------------- /docs/Web Development/APIs.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-04-25 17:08 3 | modification date: Sunday 25th April 2021 17:08:39 4 | tags: ["#dev", "#api", "#pdf"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # APIs 9 | 10 | ![[_assets/zapier-introduction-to-apis.pdf]] 11 | 12 | *** 13 | Links: [[System Design]] 14 | Source: [An Introduction to APIs | Zapier](https://zapier.com/learn/apis/) 15 | 16 | -------------------------------------------------------------------------------- /docs/Web Development/WebDev Resource List.md: -------------------------------------------------------------------------------- 1 | --- 2 | creation date: 2021-05-01 13:07 3 | modification date: Saturday 1st May 2021 13:07:53 4 | tags: ["#resources", "#webdev"] 5 | author: Jimmy Briggs 6 | --- 7 | 8 | # WebDev Resource List 9 | 10 | - [MDN Web Docs](https://developer.mozilla.org/en-US/) ⭐ 11 | - 12 | 13 | *** 14 | Links: 15 | Source: 16 | 17 | -------------------------------------------------------------------------------- /docs/Web Development/index.md: -------------------------------------------------------------------------------- 1 | # Web Development 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [APIs](APIs.md) 8 | - [Backend Web Architecture](Backend Web Architecture.md) 9 | - [HTTP Requests Notes](HTTP Requests Notes.md) 10 | - [Javascript](Javascript.md) 11 | - [WebDev Resource List](WebDev Resource List.md) -------------------------------------------------------------------------------- /docs/Windows/How to Cleanup Windows from Command Line.md: -------------------------------------------------------------------------------- 1 | A clean and tidy computer is hard to maintain over time on windows, and therefore one must be tediously maintaining their system for optimal performance. This means running a scan for malware, cleaning your hard drive using [cleanmgr](https://www.file.net/info/command.html?q=cleanmgr) and [sfc /scannow](https://www.file.net/info/command.html?q=sfc%20%2Fscannow), [uninstalling programs](https://www.file.net/info/uninstall.html?q=unnecessary%20programs) that you no longer need, checking for *autostart* programs (using [msconfig](https://www.file.net/info/command.html?q=msconfig)) and enabling Windows' [Automatic Update](https://www.file.net/info/command.html?q=wuauclt%20%2FShowWindowsUpdate). Always remember to perform periodic backups, or at least to set restore points. 2 | 3 | Should you experience an actual problem, try to recall the last thing you did, or the last thing you installed before the problem appeared for the first time. Use the [resmon](https://www.file.net/info/command.html?q=resmon) command to identify the processes that are causing your problem. Even for serious problems, rather than reinstalling Windows, you are better off repairing of your installation or, for Windows 8 and later versions, executing the [DISM.exe /Online /Cleanup-image /Restorehealth](https://www.file.net/info/command.html?q=DISM.exe%20%2FOnline%20%2FCleanup-image%20%2FRestorehealth) command. This allows you to repair the operating system without losing data. 4 | 5 | To help you analyze the duet.exe process on your computer, the following programs have proven to be helpful: [Security Task Manager](https://www.neuber.com/taskmanager/index.html?ref=file.net) displays all running Windows tasks, including embedded hidden processes, such as keyboard and browser monitoring or *autostart* entries. A unique security risk rating indicates the likelihood of the process being potential spyware, malware or a Trojan. [Malwarebytes Anti-Malware](https://www.file.net/tools/remove-virus.html) detects and removes sleeping spyware, adware, Trojans, keyloggers, malware and trackers from your hard drive. 6 | 7 | ## Reference: 8 | 9 | Utilities: 10 | 11 | - `cleanmgr` or the Disk Cleanup (run as Admin for full system cleanup) 12 | - `uninstall tool` or `geek.exe` 13 | - `msconfig` 14 | - `sysinternals` suite of executables 15 | - `Security Task Manager` 16 | - `Malwarebytes` 17 | 18 | Commands: 19 | 20 | - `wuauclt /ShowWindowsUpdate` 21 | - `resmon` 22 | - `msconfig` 23 | - `cleanmgr` 24 | - `sfc /scannow` 25 | - `DISM.exe /Online /Cleanup-image /Restorehealth` -------------------------------------------------------------------------------- /docs/Windows/Using diskusage Command in Windows.md: -------------------------------------------------------------------------------- 1 | Links: [010-PROGRAMMING](010-PROGRAMMING.md) 2 | Tags: #windows #dev #cli #tool 3 | 4 | --- 5 | 6 | # Windows New Command Line Tool - `diskusage` 7 | 8 | If you are running a Windows Insider Preview build (20277, 21277, or later) you can now utilize a great new Windows CLI feature: `diskusage`. Note that I am writing this as of December 17, 2020. 9 | 10 | Remember that this tool is still in development so some features aren't completely stable, but whatever, let's look into it! 11 | 12 | ## Using `diskusage` 13 | 14 | **Disk Usage** allows you to check out how much space your drives are taking up using the Command Prompt. There are some other handy parameters for analysis, too. 15 | 16 | Open up your command prompt and run `diskusage /?`: 17 | 18 | As of can see the command comes fully loaded with a suite of flags, commands, and arguments. 19 | 20 | ### Caveat: Bytes Only 21 | 22 | One caveat of the tool is that it currently only recognizes *bytes*, so if you wanted to search for file larger than 1.73 gigabytes you would have to input 1,857,573,355.52 bytes! 23 | 24 | I suggest using a simple tool to convert from GB/KB/MB \<-> Bytes like [a search engine's unit conversion tool](https://www.bing.com/search?PC=U523&q=convert+bytes+to+gbs&pglt=547&FORM=ANNTA1), a dedicated website like [Byte Converter](https://whatsabyte.com/P1/byteconverter.htm) or better yet a command line utility like [humaize-bytes](https://github.com/plribeiro3000/humanize-bytes/blob/master/README.md). 25 | 26 | For those who cannot remember the [binary prefix multipliers](https://en.wikipedia.org/wiki/Binary_prefix) here's a reference conversion table: 27 | 28 | ![](https://i.pinimg.com/originals/d5/92/48/d5924822305e112de21e549a2a9c469b.gif) 29 | 30 | When Disk Usage is fully functional, you'll be able to create specific configuration files that contain the search and analysis options you regularly use, saving you additional time when analyzing your data. 31 | -------------------------------------------------------------------------------- /docs/Windows/WinGet CLI Setup and Settings.md: -------------------------------------------------------------------------------- 1 | # WinGet CLI Settings 2 | 3 | You can configure WinGet by editing the `settings.json` file. Running `winget settings` will open the file in the default json editor, if no editor is configured, notepad.exe is used. 4 | 5 | ## File Location 6 | 7 | Settings file is located in `%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json` 8 | 9 | If you are using the non-packaged WinGet version by building it from source code, the file will be located under `%LOCALAPPDATA%\Microsoft\WinGet\Settings\settings.json` 10 | 11 | ## Source 12 | 13 | The `source` settings involve configuration to the WinGet source. 14 | 15 | ``` 16 | "source": { 17 | "autoUpdateIntervalInMinutes": 3 18 | }, 19 | ``` 20 | 21 | ### autoUpdateIntervalInMinutes 22 | 23 | A positive integer represents the update interval in minutes. The check for updates only happens when a source is used. A zero will disable the check for updates to a source. Any other values are invalid. 24 | 25 | - Disable: 0 26 | - Default: 5 27 | 28 | To manually update the source use `winget source update` 29 | 30 | ## Visual 31 | 32 | The `visual` settings involve visual elements that are displayed by WinGet 33 | 34 | ``` 35 | "visual": { 36 | "progressBar": "accent" 37 | }, 38 | ``` 39 | 40 | ### progressBar 41 | 42 | Color of the progress bar that WinGet displays when not specified by arguments. 43 | 44 | - accent (default) 45 | - retro 46 | - rainbow 47 | 48 | ## Experimental Features 49 | 50 | To allow work to be done and distributed to early adopters for feedback, settings can be used to enable "experimental" features. 51 | 52 | The `experimentalFeatures` settings involve the configuration of these "experimental" features. Individual features can be enabled under this node. The example below shows sample experimental features. 53 | 54 | ``` 55 | "experimentalFeatures": { 56 | "experimentalCmd": true, 57 | "experimentalArg": false 58 | }, 59 | ``` 60 | 61 | ### experimentalMSStore 62 | 63 | Microsoft Store App support in WinGet is currently implemented as an experimental feature. It supports a curated list of utility apps from Microsoft Store. You can enable the feature as shown below. 64 | 65 | ``` 66 | "experimentalFeatures": { 67 | "experimentalMSStore": true 68 | }, 69 | ``` 70 | 71 | ### list 72 | 73 | While work is in progress on list, the command is hidden behind a feature toggle. One can enable it as below: 74 | 75 | ``` 76 | "experimentalFeatures": { 77 | "list": true 78 | }, 79 | ``` 80 | 81 | ### upgrade 82 | 83 | While work is in progress on upgrade, the command is hidden behind a feature toggle. One can enable it as below: 84 | 85 | ``` 86 | "experimentalFeatures": { 87 | "upgrade": true 88 | }, 89 | ``` 90 | 91 | ### uninstall 92 | 93 | While work is in progress on uninstall, the command is hidden behind a feature toggle. One can enable it as below: 94 | 95 | ``` 96 | "experimentalFeatures": { 97 | "uninstall": true 98 | }, 99 | ``` 100 | 101 | ### import 102 | 103 | While work is in progress for import, the command is hidden behind a feature toggle. One can enable it as below: 104 | 105 | ``` 106 | "experimentalFeatures": { 107 | "import": true 108 | }, 109 | ``` 110 | 111 | ### restSource 112 | 113 | While work is in progress for rest source support, the feature is hidden behind a feature toggle. Enabling this will not change how client works currently and will allow testing any additional rest sources added. One can enable it as below: 114 | 115 | ``` 116 | "experimentalFeatures": { 117 | "restSource": true 118 | }, 119 | ``` -------------------------------------------------------------------------------- /docs/Windows/images/30a735f876001d6cee61a4dcc976f71a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/Windows/images/30a735f876001d6cee61a4dcc976f71a.png -------------------------------------------------------------------------------- /docs/Windows/images/75fd153f5ebcd65f454177ebe73be758.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/Windows/images/75fd153f5ebcd65f454177ebe73be758.png -------------------------------------------------------------------------------- /docs/Windows/images/Windows-10-SFC-Scannow-in-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/Windows/images/Windows-10-SFC-Scannow-in-action.png -------------------------------------------------------------------------------- /docs/Windows/index.md: -------------------------------------------------------------------------------- 1 | # Windows 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [How to Cleanup Windows from Command Line](How to Cleanup Windows from Command Line.md) 8 | - [SFC and DISM Commands](SFC and DISM Commands.md) 9 | - [Using diskusage Command in Windows](Using diskusage Command in Windows.md) 10 | - [WinGet CLI Setup and Settings](WinGet CLI Setup and Settings.md) 11 | - [Windows Command Line Commands Overview](Windows Command Line Commands Overview.md) -------------------------------------------------------------------------------- /docs/_assets/Pasted image 20210501120642.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/Pasted image 20210501120642.png -------------------------------------------------------------------------------- /docs/_assets/Pasted image 20210501123611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/Pasted image 20210501123611.png -------------------------------------------------------------------------------- /docs/_assets/Pasted image 20210501123655.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/Pasted image 20210501123655.png -------------------------------------------------------------------------------- /docs/_assets/Pasted image 20210501123722.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/Pasted image 20210501123722.png -------------------------------------------------------------------------------- /docs/_assets/wsl-comm-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/wsl-comm-preview.png -------------------------------------------------------------------------------- /docs/_assets/zapier-introduction-to-apis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_assets/zapier-introduction-to-apis.pdf -------------------------------------------------------------------------------- /docs/_attachments/Pasted image 20210501120642.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_attachments/Pasted image 20210501120642.png -------------------------------------------------------------------------------- /docs/_attachments/Pasted image 20210501123611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_attachments/Pasted image 20210501123611.png -------------------------------------------------------------------------------- /docs/_attachments/Pasted image 20210501123655.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_attachments/Pasted image 20210501123655.png -------------------------------------------------------------------------------- /docs/_attachments/Pasted image 20210501123722.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_attachments/Pasted image 20210501123722.png -------------------------------------------------------------------------------- /docs/_attachments/zapier-introduction-to-apis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/docs/_attachments/zapier-introduction-to-apis.pdf -------------------------------------------------------------------------------- /docs/_daily/.pages: -------------------------------------------------------------------------------- 1 | title: Daily 2 | -------------------------------------------------------------------------------- /docs/_daily/2020-04-20.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-20 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-19]] | [[2021-04-21]] >> 8 | 9 | # Tuesday, April 2021 10 | 11 | > An aspirational diet will have you dreaming of success; but it's the attachment of expectations and tangible goals that feeds the desire, persistence, and fortitude required to make the win. 12 | > — Lorii Myers 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] Powwater: Implement new delivery fee pricing table from Ellie (see emails): [Link to GitHub Issue](https://github.com/powwater/adminportal/issues/34) 18 | - [x] Adminportal: Add new data_prep R script, SQL creation file, and CSV lookup for the pricing table 19 | - [ ] Add a new field to orders table showing the delivery fee tier associated with that order 20 | - [ ] Add a new field to orders table for order type fees (i.e. Refill orders are X amount more than New orders) 21 | - [ ] Create new tab in Adminportal that displays delivery fee tiers in a table: 22 | - Columns: 23 | - Tier (i.e. interval in Kilometers) 24 | - New (Base) Fee 25 | - Refill Fee (should be a surcharge - use `shinyFeedback`) 26 | - Swap Fee (should be a discount - use `shinyFeedback`) 27 | - Rows: 28 | - Need to discuss this further with client - do we need alternative tables between vendors? If so should add `vendor_uid` to table. 29 | - Add buttons to make table and data editable and allow addition of new tiers/removal of old tiers 30 | - Display historical order route distance and time information as reference for pricing the tiers (see vendor's app) 31 | 32 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-21.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-21 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-20]] | [[2021-04-22]] >> 8 | 9 | # Wednesday, April 2021 10 | 11 | > If you're walking down the right path and you're willing to keep walking, eventually you'll make progress. 12 | > — Barack Obama 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | ### Leftover from Tuesday, April 2021: 18 | 19 | - [ ] Finish delivery fee pricing table's implementation 20 | - [ ] Add to adminportal for "default" powwater delivery fee tiers 21 | - [ ] Add to vendor dashboard (non-editable for all vendors except Dutch Water) 22 | - [ ] NOTE: Dutch Water - all deliveries are free of charge 23 | - [ ] 24 | 25 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-22 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-21]] | [[2021-04-23]] >> 8 | 9 | # Thursday, April 2021 10 | 11 | > Feeling grateful to or appreciative of someone or something in your life actually attracts more of the things that you appreciate and value into your life. 12 | > — Christiane Northrup 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-23.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-23 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-22]] | [[2021-04-24]] >> 8 | 9 | # Friday, April 2021 10 | 11 | > If you're not making mistakes, you're not taking risks, and that means you're not going anywhere. The key is to make mistakes faster than the competition, so you have more changes to learn and win. 12 | > — John W. Holt, Jr. 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-24.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-24 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-23]] | [[2021-04-25]] >> 8 | 9 | # Saturday, April 2021 10 | 11 | > When a man is an upright contender, only real people are bound to be around; but if he is a downright pretender, then fake people surround and always abound to be found. 12 | > — Anuj Somany 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: 20 | 21 | - -------------------------------------------------------------------------------- /docs/_daily/2021-04-25.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-25 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-24]] | [[2021-04-26]] >> 8 | 9 | # Sunday, April 2021 10 | 11 | ## Quote of the Day #quotes 12 | 13 | > Named must your fear be before banish it you can. 14 | > — Yoda 15 | 16 | [[Saved Quotes]] 17 | 18 | ## ✔️ Todo: 19 | 20 | ### [[Powwater API]] : 21 | 22 | Tags: #pow #api 23 | 24 | Tasks: 25 | 26 | - [ ] Review all code in `plumber.R` and refactor accordingly - think MVP, speed, no unnecessary enhancements just because they seem *cool* and worth learning. 27 | - [ ] Replace all [[R-Packages: DBI| DBI]] `DBI::dbConnect` connection `conn` objects with [[R-Packages: pool| Pool]] (i.e. `pool::poolCreate`, `pool::poolCheckout`, etc.) 28 | - [ ] Review Transactions for Database ensuring are working properly though unit tests. 29 | - [ ] Implement full test suite against API endpoints and authentication filters. 30 | - [ ] Create a `/customers//locations` endpoint to `GET` (retrieve), `POST` (add new), and `PUT` (update existing) REST Methods. 31 | - [ ] Limit all payloads sent between requests and responses to the minimum amount of data necessary and collaborate with Patrick on how to optimize these responses with additional restructuring 32 | 33 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-28.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-28 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-27]] | [[2021-04-29]] >> 8 | 9 | # Wednesday, April 2021 10 | 11 | > The determination to win is the better part of winning. 12 | > — Daisaku Ikeda 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-04-29.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-04-29 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-28]] | [[2021-04-30]] >> 8 | 9 | # Thursday, April 2021 10 | 11 | > The best way to not feel hopeless is to get up and do something. Don't wait for good things to happen to you. If you go out and make some good things happen, you will fill the world with hope, you will fill yourself with hope. 12 | > — Barack Obama 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] Review `powpolished` authentication/registration/login process and database schema with Pat: 18 | 19 | ### Questions: 20 | 21 | - How does accounts table and API use the `polished_key` and `hashed_polished_key` 22 | 23 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-05-01.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-05-01 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-04-30]] | [[2021-05-02]] >> 8 | 9 | # Saturday, May 2021 10 | 11 | > At that point where you have decided to upgrade from aspiration to expectation and have begun to visualize an outcome, something incredibly important has happened, you have committed to the process of change. 12 | > — Lorii Myers 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-05-02.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-05-02 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-05-01]] | [[2021-05-03]] >> 8 | 9 | # Sunday, May 2021 10 | 11 | > Whether you think you can or think you can't, you're right.. 12 | > — Henry Ford 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/2021-05-03.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-05-03 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-05-02]] | [[2021-05-04]] >> 8 | 9 | # Monday, May 2021 10 | 11 | > I wanted to achieve something essential in life, something that is not measured by money or position in society. The mountains are not stadiums where I satisfy my ambitions to achieve. They are my cathedrals, the houses of my religion. In the mountains I attempt to understand my life. They are the way I practice my religion. In the mountains I celebrate creation, on each journey I am reborn. 12 | > — Anatoli Boukreev 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] FD&BR Fantasy Review: 18 | - [ ] 19 | 20 | ## 📝 Notes: 21 | 22 | ### FD&BR 23 | 24 | - Travis D'Arneau hurt for Braves -> Options include: 25 | - **William Contreras** - Advice: Contreras kicked off the scoring with a two-out RBI single to left field off Ross Stripling in the second inning. With veteran backstop Travis d'Arnaud sidelined for the next two months due to a sprained left thumb, the 23-year-old catching prospect will get an extended opportunity, alongside fellow youngster Alex Jackson, to show he belongs at the major-league level. He's worthy of a speculative roster spot in deeper mixed leagues and two-catcher formats. () 26 | - Austin Jackson on IL 27 | - -------------------------------------------------------------------------------- /docs/_daily/2021-05-04.md: -------------------------------------------------------------------------------- 1 | --- 2 | Date: 2021-05-04 3 | Tags: "#daily" 4 | Author: Jimmy Briggs 5 | --- 6 | 7 | << [[2021-05-03]] | [[2021-05-05]] >> 8 | 9 | # Tuesday, May 2021 10 | 11 | > The last time doesn't exist. It's only this time. And everything is going to be different this time. There's only now. 12 | > — Bill Murray 13 | 14 | 15 | ## ✔️ Todo: 16 | 17 | - [ ] 18 | 19 | ## 📝 Notes: -------------------------------------------------------------------------------- /docs/_daily/index.md: -------------------------------------------------------------------------------- 1 | # Daily Notes 2 | 3 | ## Categories 4 | 5 | 6 | ## Documents 7 | - [2020-04-20](2020-04-20.md) 8 | - [2021-04-21](2021-04-21.md) 9 | - [2021-04-22](2021-04-22.md) 10 | - [2021-04-23](2021-04-23.md) 11 | - [2021-04-24](2021-04-24.md) 12 | - [2021-04-25](2021-04-25.md) 13 | - [2021-04-28](2021-04-28.md) 14 | - [2021-04-29](2021-04-29.md) 15 | - [2021-05-01](2021-05-01.md) 16 | - [2021-05-02](2021-05-02.md) 17 | - [2021-05-03](2021-05-03.md) 18 | - [2021-05-04](2021-05-04.md) 19 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # JimsVault 2 | 3 | ## Categories 4 | - [Cloud](./Cloud/index.md) 5 | - [Databases](./Databases/index.md) 6 | - [Developer Tools](./Developer%20Tools/index.md) 7 | - [Docker](./Docker/index.md) 8 | - [Documentation](./Documentation/index.md) 9 | - [GCP](./GCP/index.md) 10 | - [Git](./Git/index.md) 11 | - [Github](./Github/index.md) 12 | - [Lists](./Lists/index.md) 13 | - [Obsidian](./Obsidian/index.md) 14 | - [PKM](./PKM/index.md) 15 | - [Powwater](./Powwater/index.md) 16 | - [Productivity](./Productivity/index.md) 17 | - [Project Management](./Project%20Management/index.md) 18 | - [Python](./Python/index.md) 19 | - [R](./R/index.md) 20 | - [System Design](./System%20Design/index.md) 21 | - [Tools](./Tools/index.md) 22 | - [WSL](./WSL/index.md) 23 | - [Web Development](./Web%20Development/index.md) 24 | - [Windows](./Windows/index.md) 25 | - [_daily](./_daily/index.md) 26 | 27 | ## Documents 28 | - [Changelog](Changelog.md) 29 | - [README](README.md) 30 | - [setup](setup.md) 31 | -------------------------------------------------------------------------------- /docs/setup.md: -------------------------------------------------------------------------------- 1 | # Setup ⚙️ 2 | 3 | ## MkDocs 4 | 5 | ```powershell 6 | pip install mkdocs 7 | mkdocs build 8 | mkdocs serve 9 | mkdocs gh-deploy 10 | ``` 11 | 12 | ## Plugins 13 | 14 | | Plugin | Version | 15 | | :---------------------------------------: | :-----: | 16 | | mkdocs | 1.1.2 | 17 | | mkdocs-autolinks-plugin | 0.4.0 | 18 | | mkdocs-awesome-pages-plugin | 2.5.0 | 19 | | mkdocs-git-revision-date-localized-plugin | 0.9.2 | 20 | | mkdocs-minify-plugin | 0.4.0 | 21 | | mkdocs-monorepo-plugin | 0.4.14 | 22 | | mkdocs-roamlinks-plugin | 0.1.3 | 23 | 24 | ## Installations 25 | 26 | ```powershell 27 | $ pip install mkdocs / 28 | mkdocs-autolinks-plugin / 29 | mkdocs-awesome-pages-plugin / 30 | mkdocs-git-revision-date-localized-plugin / 31 | mkdocs-monorepo-plugin / 32 | mkdocs-roamlinks-plugin / 33 | mkdocs-minify-plugin 34 | 35 | $ pip list | grep mkdocs-* 36 | mkdocs 1.1.2 37 | mkdocs-autolinks-plugin 0.4.0 38 | mkdocs-awesome-pages-plugin 2.5.0 39 | mkdocs-git-revision-date-localized-plugin 0.9.2 40 | mkdocs-minify-plugin 0.4.0 41 | mkdocs-monorepo-plugin 0.4.14 42 | mkdocs-roamlinks-plugin 0.1.3 43 | ``` 44 | 45 | ### Configuration 46 | 47 | ```yaml 48 | plugins: 49 | - search 50 | - autolinks 51 | - roamlinks 52 | - awesome-pages 53 | - git-revision-date-localized: 54 | type: timeago 55 | - minify: 56 | minify_html: true 57 | markdown_extensions: 58 | - toc: 59 | permalink: ⚑ 60 | baselevel: 2 61 | - codehilite: 62 | linenums: false 63 | guess_lang: true 64 | - footnotes 65 | - abbr 66 | - admonition 67 | - meta 68 | - def_list 69 | ``` -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | --- 2 | site_name: Jims Obsidian Vault 3 | site_description: Personal Obsidian Vault Published using MkDocs 4 | site_author: Jimmy Briggs 5 | site_url: https://vault.jimbrig.com 6 | copyright: Copyright © 2021 Jimmy Briggs 7 | repo_url: https://github.com/jimbrig/obsidian_published 8 | repo_name: jimbrig/obsidian_published 9 | remote_branch: gh-pages 10 | edit_uri: blob/main/docs/ 11 | use_directory_urls: true 12 | plugins: 13 | - search 14 | # - autolinks 15 | # - section-index 16 | # - mkdocs-newsletter 17 | - roamlinks 18 | - awesome-pages 19 | - git-revision-date-localized: 20 | type: timeago 21 | - minify: 22 | minify_html: true 23 | markdown_extensions: 24 | - toc: 25 | permalink: ⚑ 26 | baselevel: 2 27 | - codehilite: 28 | linenums: false 29 | guess_lang: true 30 | - footnotes 31 | - abbr 32 | - admonition 33 | - meta 34 | - def_list 35 | # - pymdownx.arithmatex 36 | # - pymdownx.betterem: 37 | # smart_enable: all 38 | # - pymdownx.caret 39 | # - pymdownx.critic 40 | # - pymdownx.details 41 | # - pymdownx.emoji: 42 | # emoji_generator: "!!python/name:pymdownx.emoji.to_svg" 43 | # - pymdownx.inlinehilite 44 | # - pymdownx.magiclink 45 | # - pymdownx.mark 46 | # - pymdownx.smartsymbols 47 | # - pymdownx.snippets 48 | # - pymdownx.superfences 49 | # - pymdownx.tabbed 50 | # - pymdownx.tasklist: 51 | # custom_checkbox: true 52 | # - pymdownx.tilde 53 | theme: 54 | name: null 55 | custom_dir: cinder 56 | colorscheme: dracula 57 | highlightjs: true 58 | language: "en" 59 | favicon: "_attachments/obsidian.ico" 60 | icon: 61 | repo: fontawesome/brands/github 62 | features: 63 | - tabs 64 | - search.highlight 65 | nav: 66 | - Home: index.md 67 | - Setup: setup.md 68 | - Categories: 69 | - Daily Notes: 70 | - ... | _daily/*.md 71 | - Featured: 72 | - ... | R/*.md 73 | - ... | GCP/*.md 74 | - ... | Databases/*.md 75 | - ... | Windows/*.md 76 | - ... | WSL/*.md 77 | - ... | System Design/*.md 78 | - Everything: 79 | - ... 80 | - Changelog: Changelog.md 81 | # extra_css: 82 | # - stylesheets/extra.css 83 | # - stylesheets/links.css 84 | extra: 85 | version: 1.0 86 | social: 87 | - icon: fontawesome/brands/github-alt 88 | link: https://github.com/jimbrig 89 | - icon: fontawesome/solid/rss 90 | link: https://lyz-code.github.io/blue-book/newsletter/0_newsletter_index 91 | -------------------------------------------------------------------------------- /site/CNAME: -------------------------------------------------------------------------------- 1 | jimsvault.jimbrig.com 2 | -------------------------------------------------------------------------------- /site/Windows/images/Windows-10-SFC-Scannow-in-action.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/Windows/images/Windows-10-SFC-Scannow-in-action.png -------------------------------------------------------------------------------- /site/Windows/images/image-20210327021344936.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/Windows/images/image-20210327021344936.png -------------------------------------------------------------------------------- /site/Windows/images/image-20210327021421066.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/Windows/images/image-20210327021421066.png -------------------------------------------------------------------------------- /site/_assets/Pasted image 20210501120642.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/Pasted image 20210501120642.png -------------------------------------------------------------------------------- /site/_assets/Pasted image 20210501123611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/Pasted image 20210501123611.png -------------------------------------------------------------------------------- /site/_assets/Pasted image 20210501123655.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/Pasted image 20210501123655.png -------------------------------------------------------------------------------- /site/_assets/Pasted image 20210501123722.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/Pasted image 20210501123722.png -------------------------------------------------------------------------------- /site/_assets/wsl-comm-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/wsl-comm-preview.png -------------------------------------------------------------------------------- /site/_assets/zapier-introduction-to-apis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_assets/zapier-introduction-to-apis.pdf -------------------------------------------------------------------------------- /site/_attachments/Pasted image 20210501120642.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_attachments/Pasted image 20210501120642.png -------------------------------------------------------------------------------- /site/_attachments/Pasted image 20210501123611.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_attachments/Pasted image 20210501123611.png -------------------------------------------------------------------------------- /site/_attachments/Pasted image 20210501123655.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_attachments/Pasted image 20210501123655.png -------------------------------------------------------------------------------- /site/_attachments/Pasted image 20210501123722.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_attachments/Pasted image 20210501123722.png -------------------------------------------------------------------------------- /site/_attachments/zapier-introduction-to-apis.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/_attachments/zapier-introduction-to-apis.pdf -------------------------------------------------------------------------------- /site/css/base.min.css: -------------------------------------------------------------------------------- 1 | html{scroll-padding-top:70px}body{padding-top:70px}p>img{max-width:100%;height:auto}ul.nav li.first-level{font-weight:bold}ul.nav li.third-level{padding-left:12px}div.col-md-3{padding-left:0}div.col-md-9{padding-bottom:100px}div.source-links{float:right}.bs-sidebar.affix{position:static}.bs-sidebar.well{padding:0}.bs-sidenav{margin-top:30px;margin-bottom:30px;padding-top:10px;padding-bottom:10px;border-radius:5px}.bs-sidebar .nav>li>a{display:block;padding:5px 20px;z-index:1}.bs-sidebar .nav>li>a:hover,.bs-sidebar .nav>li>a:focus{text-decoration:none;border-right:1px solid}.bs-sidebar .nav>.active>a,.bs-sidebar .nav>.active:hover>a,.bs-sidebar .nav>.active:focus>a{font-weight:bold;background-color:transparent;border-right:1px solid}.bs-sidebar .nav .nav{display:none;margin-bottom:8px}.bs-sidebar .nav .nav>li>a{padding-top:3px;padding-bottom:3px;padding-left:30px;font-size:90%}@media(min-width:992px){.bs-sidebar .nav>.active>ul{display:block}.bs-sidebar.affix,.bs-sidebar.affix-bottom{width:213px}.bs-sidebar.affix{position:fixed;top:80px;max-height:calc(100% - 180px);overflow-y:auto}.bs-sidebar.affix-bottom{position:absolute}.bs-sidebar.affix-bottom .bs-sidenav,.bs-sidebar.affix .bs-sidenav{margin-top:0;margin-bottom:0}}@media(min-width:1200px){.bs-sidebar.affix-bottom,.bs-sidebar.affix{width:263px}}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:0;margin-left:0}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:00px}.bs-callout{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.bs-callout h4{font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.bs-callout p:last-child{margin-bottom:0}.bs-callout code{border-radius:3px}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-default{border-left-color:#fa023c}.bs-callout-default h4{color:#fa023c}.bs-callout-primary{border-left-color:#428bca}.bs-callout-primary h4{color:#428bca}.bs-callout-success{border-left-color:#5cb85c}.bs-callout-success h4{color:#5cb85c}.bs-callout-danger{border-left-color:#d9534f}.bs-callout-danger h4{color:#d9534f}.bs-callout-warning{border-left-color:#f0ad4e}.bs-callout-warning h4{color:#f0ad4e}.bs-callout-info{border-left-color:#5bc0de}.bs-callout-info h4{color:#5bc0de}.headerlink{display:none;padding-left:.5em}h1:hover .headerlink,h2:hover .headerlink,h3:hover .headerlink,h4:hover .headerlink,h5:hover .headerlink,h6:hover .headerlink{display:inline-block}.admonition{padding:20px;margin:20px 0;border:1px solid #eee;border-left-width:5px;border-radius:3px;background-color:#fcfdff}.admonition p:last-child{margin-bottom:0}.admonition code{border-radius:3px}.admonition+.admonition{margin-top:-5px}.admonition.note{border-left-color:#428bca}.admonition.warning{border-left-color:#f0ad4e}.admonition.danger{border-left-color:#d9534f}.admonition-title{font-size:19px;font-style:normal;font-weight:400;margin-top:0;margin-bottom:5px}.admonition.note>.admonition-title{color:#428bca}.admonition.warning>.admonition-title{color:#f0ad4e}.admonition.danger>.admonition-title{color:#d9534f} 2 | -------------------------------------------------------------------------------- /site/css/cinder.css: -------------------------------------------------------------------------------- 1 | /* 2 | Cinder Theme for MkDocs | Copyright 2015 Christopher Simpkins | MIT License 3 | */ 4 | 5 | body { 6 | font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; 7 | font-size: 16px; 8 | line-height: 1.7; 9 | background-color: #FFF; 10 | color: #343838; 11 | } 12 | h1, h2, h3, h4, h5, h6 { 13 | font-family:'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 14 | color: #222; 15 | } 16 | h1 small, h2 small, h3 small, h4 small, h5 small, h6 small, .h1 small, .h2 small, .h3 small, .h4 small, .h5 small, .h6 small, h1 .small, h2 .small, h3 .small, h4 .small, h5 .small, h6 .small, .h1 .small, .h2 .small, .h3 .small, .h4 .small, .h5 .small, .h6 .small { 17 | color: #B1B7B9; 18 | } 19 | 20 | h2 { 21 | margin-top: 35px; 22 | } 23 | 24 | h1, h2 { 25 | font-weight: 700; 26 | } 27 | h4 { 28 | font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 29 | font-weight: 300; 30 | margin-top: 20px; 31 | font-style: italic; 32 | } 33 | h5 { 34 | font-family: 'Inter', 'Helvetica Neue', Helvetica, Arial, sans-serif; 35 | font-weight: 300; 36 | font-variant: small-caps; 37 | } 38 | pre, code { 39 | background-color: #FCFDFF; 40 | } 41 | pre>code { 42 | font-size: 13px; 43 | } 44 | pre { 45 | margin-top: 25px; 46 | margin-bottom: 25px; 47 | } 48 | .lead { 49 | font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; 50 | font-weight: 400; 51 | line-height: 1.4; 52 | letter-spacing: 0.0312em; 53 | color: #B1B7B9; 54 | } 55 | .navbar-default { 56 | background-color: #343838; 57 | border-bottom: 8px #EBF2F2 solid; 58 | } 59 | .bs-sidenav { 60 | background-image: url("../img/grid11.png"); 61 | background-repeat: repeat; 62 | font-family: Inter,"Helvetica Neue",Helvetica,Arial,sans-serif; 63 | font-size: 13px; 64 | } 65 | .well { 66 | background-color: #FCFDFF; 67 | } 68 | .btn-default { 69 | background-color:#FCFDFF; 70 | } 71 | .table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th { 72 | background-color: #FCFDFF; 73 | } 74 | #mkdocs-search-query:focus { 75 | outline: none; 76 | -webkit-box-shadow: none; 77 | box-shadow: none; 78 | } 79 | #mkdocs-search-query { 80 | font-family:"Inter", "Helvetica Neue", Helvetica, Arial, sans-serif; 81 | font-size: 20px; 82 | font-weight: 700; 83 | color: #343838; 84 | height: 45px; 85 | } 86 | footer > hr { 87 | width: 35%; 88 | } 89 | -------------------------------------------------------------------------------- /site/css/cinder.min.css: -------------------------------------------------------------------------------- 1 | body{font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:16px;line-height:1.7;background-color:#FFF;color:#343838}h1,h2,h3,h4,h5,h6{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;color:#222}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{color:#b1b7b9}h2{margin-top:35px}h1,h2{font-weight:700}h4{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;margin-top:20px;font-style:italic}h5{font-family:'Inter','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300;font-variant:small-caps}pre,code{background-color:#fcfdff}pre>code{font-size:13px}pre{margin-top:25px;margin-bottom:25px}.lead{font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;line-height:1.4;letter-spacing:.0312em;color:#b1b7b9}.navbar-default{background-color:#343838;border-bottom:8px #ebf2f2 solid}.bs-sidenav{background-image:url("../img/grid11.png");background-repeat:repeat;font-family:Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px}.well{background-color:#fcfdff}.btn-default{background-color:#fcfdff}.table-striped>tbody>tr:nth-child(2n+1)>td,.table-striped>tbody>tr:nth-child(2n+1)>th{background-color:#fcfdff}#mkdocs-search-query:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}#mkdocs-search-query{font-family:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:20px;font-weight:700;color:#343838;height:45px}footer>hr{width:35%} 2 | -------------------------------------------------------------------------------- /site/css/highlight.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | github.com style (c) Vasily Polovnyov 4 | 5 | */ 6 | 7 | .hljs { 8 | display: block; 9 | overflow-x: auto; 10 | padding: 0.5em; 11 | color: #333; 12 | background: #FCFDFF; 13 | } 14 | 15 | .hljs-comment, 16 | .hljs-quote { 17 | color: #998; 18 | font-style: italic; 19 | } 20 | 21 | .hljs-keyword, 22 | .hljs-selector-tag, 23 | .hljs-subst { 24 | color: #333; 25 | font-weight: bold; 26 | } 27 | 28 | .hljs-number, 29 | .hljs-literal, 30 | .hljs-variable, 31 | .hljs-template-variable, 32 | .hljs-tag .hljs-attr { 33 | color: #008080; 34 | } 35 | 36 | .hljs-string, 37 | .hljs-doctag { 38 | color: #d14; 39 | } 40 | 41 | .hljs-title, 42 | .hljs-section, 43 | .hljs-selector-id { 44 | color: #900; 45 | font-weight: bold; 46 | } 47 | 48 | .hljs-subst { 49 | font-weight: normal; 50 | } 51 | 52 | .hljs-type, 53 | .hljs-class .hljs-title { 54 | color: #458; 55 | font-weight: bold; 56 | } 57 | 58 | .hljs-tag, 59 | .hljs-name, 60 | .hljs-attribute { 61 | color: #000080; 62 | font-weight: normal; 63 | } 64 | 65 | .hljs-regexp, 66 | .hljs-link { 67 | color: #009926; 68 | } 69 | 70 | .hljs-symbol, 71 | .hljs-bullet { 72 | color: #990073; 73 | } 74 | 75 | .hljs-built_in, 76 | .hljs-builtin-name { 77 | color: #0086b3; 78 | } 79 | 80 | .hljs-meta { 81 | color: #999; 82 | font-weight: bold; 83 | } 84 | 85 | .hljs-deletion { 86 | background: #fdd; 87 | } 88 | 89 | .hljs-addition { 90 | background: #dfd; 91 | } 92 | 93 | .hljs-emphasis { 94 | font-style: italic; 95 | } 96 | 97 | .hljs-strong { 98 | font-weight: bold; 99 | } 100 | -------------------------------------------------------------------------------- /site/css/highlight.min.css: -------------------------------------------------------------------------------- 1 | .hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#fcfdff}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:bold}.hljs-number,.hljs-literal,.hljs-variable,.hljs-template-variable,.hljs-tag .hljs-attr{color:teal}.hljs-string,.hljs-doctag{color:#d14}.hljs-title,.hljs-section,.hljs-selector-id{color:#900;font-weight:bold}.hljs-subst{font-weight:normal}.hljs-type,.hljs-class .hljs-title{color:#458;font-weight:bold}.hljs-tag,.hljs-name,.hljs-attribute{color:navy;font-weight:normal}.hljs-regexp,.hljs-link{color:#009926}.hljs-symbol,.hljs-bullet{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:bold}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} 2 | -------------------------------------------------------------------------------- /site/css/timeago.css: -------------------------------------------------------------------------------- 1 | /* 2 | * timeago output is dynamic, which breaks when you print a page. 3 | * This ensures fallback to type "iso_date" when printing. 4 | */ 5 | 6 | .git-revision-date-localized-plugin-iso_date { display: none } 7 | 8 | @media print { 9 | .git-revision-date-localized-plugin-iso_date { display: inline } 10 | .git-revision-date-localized-plugin-timeago { display: none } 11 | } 12 | 13 | -------------------------------------------------------------------------------- /site/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /site/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /site/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /site/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/favicon.ico -------------------------------------------------------------------------------- /site/img/grid1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid1.png -------------------------------------------------------------------------------- /site/img/grid10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid10.png -------------------------------------------------------------------------------- /site/img/grid11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid11.png -------------------------------------------------------------------------------- /site/img/grid12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid12.png -------------------------------------------------------------------------------- /site/img/grid13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid13.png -------------------------------------------------------------------------------- /site/img/grid14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid14.png -------------------------------------------------------------------------------- /site/img/grid15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid15.png -------------------------------------------------------------------------------- /site/img/grid16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid16.png -------------------------------------------------------------------------------- /site/img/grid17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid17.png -------------------------------------------------------------------------------- /site/img/grid18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid18.png -------------------------------------------------------------------------------- /site/img/grid19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid19.png -------------------------------------------------------------------------------- /site/img/grid2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid2.png -------------------------------------------------------------------------------- /site/img/grid20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid20.png -------------------------------------------------------------------------------- /site/img/grid3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid3.png -------------------------------------------------------------------------------- /site/img/grid4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid4.png -------------------------------------------------------------------------------- /site/img/grid5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid5.png -------------------------------------------------------------------------------- /site/img/grid6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid6.png -------------------------------------------------------------------------------- /site/img/grid7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid7.png -------------------------------------------------------------------------------- /site/img/grid8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid8.png -------------------------------------------------------------------------------- /site/img/grid9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/img/grid9.png -------------------------------------------------------------------------------- /site/js/base.js: -------------------------------------------------------------------------------- 1 | function getSearchTerm() { 2 | var sPageURL = window.location.search.substring(1); 3 | var sURLVariables = sPageURL.split('&'); 4 | for (var i = 0; i < sURLVariables.length; i++) { 5 | var sParameterName = sURLVariables[i].split('='); 6 | if (sParameterName[0] == 'q') { 7 | return sParameterName[1]; 8 | } 9 | } 10 | } 11 | 12 | $(document).ready(function() { 13 | /** 14 | * ------------------------------------------------------------------------ 15 | * Taken from themes/mkdocs/js/base.js 16 | * ------------------------------------------------------------------------ 17 | */ 18 | var search_term = getSearchTerm(), 19 | $search_modal = $('#mkdocs_search_modal'), 20 | $keyboard_modal = $('#mkdocs_keyboard_modal'); 21 | 22 | if (search_term) { 23 | $search_modal.modal(); 24 | } 25 | 26 | // make sure search input gets autofocus everytime modal opens. 27 | $search_modal.on('shown.bs.modal', function() { 28 | $search_modal.find('#mkdocs-search-query').focus(); 29 | }); 30 | 31 | // Close search modal when result is selected 32 | // The links get added later so listen to parent 33 | $('#mkdocs-search-results').click(function(e) { 34 | if ($(e.target).is('a')) { 35 | $search_modal.modal('hide'); 36 | } 37 | }); 38 | 39 | if (typeof shortcuts !== 'undefined') { 40 | // Populate keyboard modal with proper Keys 41 | $keyboard_modal.find('.help.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.help]; 42 | $keyboard_modal.find('.prev.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.previous]; 43 | $keyboard_modal.find('.next.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.next]; 44 | $keyboard_modal.find('.search.shortcut kbd')[0].innerHTML = keyCodes[shortcuts.search]; 45 | 46 | // Keyboard navigation 47 | document.addEventListener("keydown", function(e) { 48 | if ($(e.target).is(':input')) return true; 49 | var key = e.which || e.key || window.event && window.event.key; 50 | var page; 51 | switch (key) { 52 | case shortcuts.next: 53 | page = $('.navbar a[rel="next"]:first').prop('href'); 54 | break; 55 | case shortcuts.previous: 56 | page = $('.navbar a[rel="prev"]:first').prop('href'); 57 | break; 58 | case shortcuts.search: 59 | e.preventDefault(); 60 | $keyboard_modal.modal('hide'); 61 | $search_modal.modal('show'); 62 | $search_modal.find('#mkdocs-search-query').focus(); 63 | break; 64 | case shortcuts.help: 65 | $search_modal.modal('hide'); 66 | $keyboard_modal.modal('show'); 67 | break; 68 | default: 69 | break; 70 | } 71 | if (page) { 72 | $keyboard_modal.modal('hide'); 73 | window.location.href = page; 74 | } 75 | }); 76 | } 77 | 78 | $('table').addClass('table table-striped table-hover'); 79 | 80 | // Improve the scrollspy behaviour when users click on a TOC item. 81 | $(".bs-sidenav a").on("click", function() { 82 | var clicked = this; 83 | setTimeout(function() { 84 | var active = $('.nav li.active a'); 85 | active = active[active.length - 1]; 86 | if (clicked !== active) { 87 | $(active).parent().removeClass("active"); 88 | $(clicked).parent().addClass("active"); 89 | } 90 | }, 50); 91 | }); 92 | }); 93 | 94 | 95 | /** 96 | * ------------------------------------------------------------------------ 97 | * Taken from themes/mkdocs/js/base.js 98 | * ------------------------------------------------------------------------ 99 | */ 100 | 101 | $('body').scrollspy({ 102 | target: '.bs-sidebar', 103 | offset: 100 104 | }); 105 | 106 | /* Prevent disabled links from causing a page reload */ 107 | $("li.disabled a").click(function() { 108 | event.preventDefault(); 109 | }); 110 | 111 | // See https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes 112 | // We only list common keys below. Obscure keys are omited and their use is discouraged. 113 | var keyCodes = { 114 | 8: 'backspace', 115 | 9: 'tab', 116 | 13: 'enter', 117 | 16: 'shift', 118 | 17: 'ctrl', 119 | 18: 'alt', 120 | 19: 'pause/break', 121 | 20: 'caps lock', 122 | 27: 'escape', 123 | 32: 'spacebar', 124 | 33: 'page up', 125 | 34: 'page down', 126 | 35: 'end', 127 | 36: 'home', 128 | 37: '←', 129 | 38: '↑', 130 | 39: '→', 131 | 40: '↓', 132 | 45: 'insert', 133 | 46: 'delete', 134 | 48: '0', 135 | 49: '1', 136 | 50: '2', 137 | 51: '3', 138 | 52: '4', 139 | 53: '5', 140 | 54: '6', 141 | 55: '7', 142 | 56: '8', 143 | 57: '9', 144 | 65: 'a', 145 | 66: 'b', 146 | 67: 'c', 147 | 68: 'd', 148 | 69: 'e', 149 | 70: 'f', 150 | 71: 'g', 151 | 72: 'h', 152 | 73: 'i', 153 | 74: 'j', 154 | 75: 'k', 155 | 76: 'l', 156 | 77: 'm', 157 | 78: 'n', 158 | 79: 'o', 159 | 80: 'p', 160 | 81: 'q', 161 | 82: 'r', 162 | 83: 's', 163 | 84: 't', 164 | 85: 'u', 165 | 86: 'v', 166 | 87: 'w', 167 | 88: 'x', 168 | 89: 'y', 169 | 90: 'z', 170 | 91: 'Left Windows Key / Left ⌘', 171 | 92: 'Right Windows Key', 172 | 93: 'Windows Menu / Right ⌘', 173 | 96: 'numpad 0', 174 | 97: 'numpad 1', 175 | 98: 'numpad 2', 176 | 99: 'numpad 3', 177 | 100: 'numpad 4', 178 | 101: 'numpad 5', 179 | 102: 'numpad 6', 180 | 103: 'numpad 7', 181 | 104: 'numpad 8', 182 | 105: 'numpad 9', 183 | 106: 'multiply', 184 | 107: 'add', 185 | 109: 'subtract', 186 | 110: 'decimal point', 187 | 111: 'divide', 188 | 112: 'f1', 189 | 113: 'f2', 190 | 114: 'f3', 191 | 115: 'f4', 192 | 116: 'f5', 193 | 117: 'f6', 194 | 118: 'f7', 195 | 119: 'f8', 196 | 120: 'f9', 197 | 121: 'f10', 198 | 122: 'f11', 199 | 123: 'f12', 200 | 124: 'f13', 201 | 125: 'f14', 202 | 126: 'f15', 203 | 127: 'f16', 204 | 128: 'f17', 205 | 129: 'f18', 206 | 130: 'f19', 207 | 131: 'f20', 208 | 132: 'f21', 209 | 133: 'f22', 210 | 134: 'f23', 211 | 135: 'f24', 212 | 144: 'num lock', 213 | 145: 'scroll lock', 214 | 186: ';', 215 | 187: '=', 216 | 188: ',', 217 | 189: '‐', 218 | 190: '.', 219 | 191: '?', 220 | 192: '`', 221 | 219: '[', 222 | 220: '\', 223 | 221: ']', 224 | 222: ''', 225 | }; 226 | -------------------------------------------------------------------------------- /site/js/timeago_mkdocs_material.js: -------------------------------------------------------------------------------- 1 | // Script to ensure timeago keeps working when 2 | // used with mkdocs-material's instant loading feature 3 | 4 | if ( 5 | typeof app !== "undefined" && 6 | typeof app.document$ !== "undefined" 7 | ) { 8 | app.document$.subscribe(function() { 9 | var nodes = document.querySelectorAll('.timeago'); 10 | var locale = nodes[0].getAttribute('locale'); 11 | timeago.render(nodes, locale); 12 | }) 13 | } else { 14 | var nodes = document.querySelectorAll('.timeago'); 15 | var locale = nodes[0].getAttribute('locale'); 16 | timeago.render(nodes, locale); 17 | } 18 | -------------------------------------------------------------------------------- /site/search/main.js: -------------------------------------------------------------------------------- 1 | function getSearchTermFromLocation() { 2 | var sPageURL = window.location.search.substring(1); 3 | var sURLVariables = sPageURL.split('&'); 4 | for (var i = 0; i < sURLVariables.length; i++) { 5 | var sParameterName = sURLVariables[i].split('='); 6 | if (sParameterName[0] == 'q') { 7 | return decodeURIComponent(sParameterName[1].replace(/\+/g, '%20')); 8 | } 9 | } 10 | } 11 | 12 | function joinUrl (base, path) { 13 | if (path.substring(0, 1) === "/") { 14 | // path starts with `/`. Thus it is absolute. 15 | return path; 16 | } 17 | if (base.substring(base.length-1) === "/") { 18 | // base ends with `/` 19 | return base + path; 20 | } 21 | return base + "/" + path; 22 | } 23 | 24 | function formatResult (location, title, summary) { 25 | return ''; 26 | } 27 | 28 | function displayResults (results) { 29 | var search_results = document.getElementById("mkdocs-search-results"); 30 | while (search_results.firstChild) { 31 | search_results.removeChild(search_results.firstChild); 32 | } 33 | if (results.length > 0){ 34 | for (var i=0; i < results.length; i++){ 35 | var result = results[i]; 36 | var html = formatResult(result.location, result.title, result.summary); 37 | search_results.insertAdjacentHTML('beforeend', html); 38 | } 39 | } else { 40 | search_results.insertAdjacentHTML('beforeend', "

    No results found

    "); 41 | } 42 | } 43 | 44 | function doSearch () { 45 | var query = document.getElementById('mkdocs-search-query').value; 46 | if (query.length > min_search_length) { 47 | if (!window.Worker) { 48 | displayResults(search(query)); 49 | } else { 50 | searchWorker.postMessage({query: query}); 51 | } 52 | } else { 53 | // Clear results for short queries 54 | displayResults([]); 55 | } 56 | } 57 | 58 | function initSearch () { 59 | var search_input = document.getElementById('mkdocs-search-query'); 60 | if (search_input) { 61 | search_input.addEventListener("keyup", doSearch); 62 | } 63 | var term = getSearchTermFromLocation(); 64 | if (term) { 65 | search_input.value = term; 66 | doSearch(); 67 | } 68 | } 69 | 70 | function onWorkerMessage (e) { 71 | if (e.data.allowSearch) { 72 | initSearch(); 73 | } else if (e.data.results) { 74 | var results = e.data.results; 75 | displayResults(results); 76 | } else if (e.data.config) { 77 | min_search_length = e.data.config.min_search_length-1; 78 | } 79 | } 80 | 81 | if (!window.Worker) { 82 | console.log('Web Worker API not supported'); 83 | // load index in main thread 84 | $.getScript(joinUrl(base_url, "search/worker.js")).done(function () { 85 | console.log('Loaded worker'); 86 | init(); 87 | window.postMessage = function (msg) { 88 | onWorkerMessage({data: msg}); 89 | }; 90 | }).fail(function (jqxhr, settings, exception) { 91 | console.error('Could not load worker.js'); 92 | }); 93 | } else { 94 | // Wrap search in a web worker 95 | var searchWorker = new Worker(joinUrl(base_url, "search/worker.js")); 96 | searchWorker.postMessage({init: true}); 97 | searchWorker.onmessage = onWorkerMessage; 98 | } 99 | -------------------------------------------------------------------------------- /site/search/worker.js: -------------------------------------------------------------------------------- 1 | var base_path = 'function' === typeof importScripts ? '.' : '/search/'; 2 | var allowSearch = false; 3 | var index; 4 | var documents = {}; 5 | var lang = ['en']; 6 | var data; 7 | 8 | function getScript(script, callback) { 9 | console.log('Loading script: ' + script); 10 | $.getScript(base_path + script).done(function () { 11 | callback(); 12 | }).fail(function (jqxhr, settings, exception) { 13 | console.log('Error: ' + exception); 14 | }); 15 | } 16 | 17 | function getScriptsInOrder(scripts, callback) { 18 | if (scripts.length === 0) { 19 | callback(); 20 | return; 21 | } 22 | getScript(scripts[0], function() { 23 | getScriptsInOrder(scripts.slice(1), callback); 24 | }); 25 | } 26 | 27 | function loadScripts(urls, callback) { 28 | if( 'function' === typeof importScripts ) { 29 | importScripts.apply(null, urls); 30 | callback(); 31 | } else { 32 | getScriptsInOrder(urls, callback); 33 | } 34 | } 35 | 36 | function onJSONLoaded () { 37 | data = JSON.parse(this.responseText); 38 | var scriptsToLoad = ['lunr.js']; 39 | if (data.config && data.config.lang && data.config.lang.length) { 40 | lang = data.config.lang; 41 | } 42 | if (lang.length > 1 || lang[0] !== "en") { 43 | scriptsToLoad.push('lunr.stemmer.support.js'); 44 | if (lang.length > 1) { 45 | scriptsToLoad.push('lunr.multi.js'); 46 | } 47 | for (var i=0; i < lang.length; i++) { 48 | if (lang[i] != 'en') { 49 | scriptsToLoad.push(['lunr', lang[i], 'js'].join('.')); 50 | } 51 | } 52 | } 53 | loadScripts(scriptsToLoad, onScriptsLoaded); 54 | } 55 | 56 | function onScriptsLoaded () { 57 | console.log('All search scripts loaded, building Lunr index...'); 58 | if (data.config && data.config.separator && data.config.separator.length) { 59 | lunr.tokenizer.separator = new RegExp(data.config.separator); 60 | } 61 | 62 | if (data.index) { 63 | index = lunr.Index.load(data.index); 64 | data.docs.forEach(function (doc) { 65 | documents[doc.location] = doc; 66 | }); 67 | console.log('Lunr pre-built index loaded, search ready'); 68 | } else { 69 | index = lunr(function () { 70 | if (lang.length === 1 && lang[0] !== "en" && lunr[lang[0]]) { 71 | this.use(lunr[lang[0]]); 72 | } else if (lang.length > 1) { 73 | this.use(lunr.multiLanguage.apply(null, lang)); // spread operator not supported in all browsers: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator#Browser_compatibility 74 | } 75 | this.field('title'); 76 | this.field('text'); 77 | this.ref('location'); 78 | 79 | for (var i=0; i < data.docs.length; i++) { 80 | var doc = data.docs[i]; 81 | this.add(doc); 82 | documents[doc.location] = doc; 83 | } 84 | }); 85 | console.log('Lunr index built, search ready'); 86 | } 87 | allowSearch = true; 88 | postMessage({config: data.config}); 89 | postMessage({allowSearch: allowSearch}); 90 | } 91 | 92 | function init () { 93 | var oReq = new XMLHttpRequest(); 94 | oReq.addEventListener("load", onJSONLoaded); 95 | var index_path = base_path + '/search_index.json'; 96 | if( 'function' === typeof importScripts ){ 97 | index_path = 'search_index.json'; 98 | } 99 | oReq.open("GET", index_path); 100 | oReq.send(); 101 | } 102 | 103 | function search (query) { 104 | if (!allowSearch) { 105 | console.error('Assets for search still loading'); 106 | return; 107 | } 108 | 109 | var resultDocuments = []; 110 | var results = index.search(query); 111 | for (var i=0; i < results.length; i++){ 112 | var result = results[i]; 113 | doc = documents[result.ref]; 114 | doc.summary = doc.text.substring(0, 200); 115 | resultDocuments.push(doc); 116 | } 117 | return resultDocuments; 118 | } 119 | 120 | if( 'function' === typeof importScripts ) { 121 | onmessage = function (e) { 122 | if (e.data.init) { 123 | init(); 124 | } else if (e.data.query) { 125 | postMessage({ results: search(e.data.query) }); 126 | } else { 127 | console.error("Worker - Unrecognized message: " + e); 128 | } 129 | }; 130 | } 131 | -------------------------------------------------------------------------------- /site/sitemap.xml.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jimbrig/obsidian_published/0865fce060307cb6aadd041d88e29c864a62e8ef/site/sitemap.xml.gz --------------------------------------------------------------------------------