~jacksonchen666/jacksonchen666.com

e3ffa8ab1e0f43ceedb1d8e6eb7962a447dfbea0 — Jackson Chen 2 years ago 9e6e03b + 8d3d58f
Merge branch 'minimal-blog'

this merge transforms the website design to a more minimalistic design
and along removes most of the unneeded pages on the website
52 files changed, 313 insertions(+), 837 deletions(-)

M .gitlab-ci.yml
M Gemfile
M Gemfile.lock
M LICENSE
M _config.yml
D _includes/footer.html
D _includes/navigation.html
M _layouts/author.html
M _layouts/bare.html
M _layouts/default.html
M _layouts/post.html
M _posts/2021-06-17-your-mac-has-the-ability-to-create-wired-network-for-your-iphone.md
M _posts/2021-07-23-list-of-posts-comments-and-text-where-jacksonchen666-does-stupidity.md
D apple-script.md
A assets/css/style.scss
A assets/images/bullet.svg
D assets/style/_post_style.sass
D assets/style/authors.sass
D assets/style/ideas.sass
D assets/style/main.sass
D assets/style/nav.sass
D assets/style/post.sass
D assets/style/post_style.sass
D challenges.md
D coding.md
D colorful.css
D endless-typing/endless-typing.css
D endless-typing/endless-typing.js
D endless-typing/index.html
D favicon.ico
M feedback.md
D fps.md
D hue-colorful.css
M ideas.md
M index.md
D latest-video.md
D life.md
D memes.md
D more-ideas.md
D more-questions.md
M portfolio.md
D posts.md
M questions.md
D randomQuotes.js
M rss.md
D sitemap.md
M sitemap.xml
D submission/submitted.md
D submission/too-large
D submission/wtf.md
D thanks.md
D youtube-latest.js
M .gitlab-ci.yml => .gitlab-ci.yml +1 -1
@@ 3,7 3,7 @@ variables:

workflow:
  rules:
    - if: '$CI_COMMIT_BRANCH'
    - if: '$CI_COMMIT_BRANCH == "master"'

pages:
  image: ruby:2.7

M Gemfile => Gemfile +2 -3
@@ 9,7 9,8 @@ source "https://rubygems.org"
# Happy Jekylling!
gem "jekyll", "~> 4.2.0"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
#gem "minima", "~> 2.5"
gem "jekyll-theme-hacker", "~> 0.2.0"
# gem "jekyll-theme-minimal", "~> 0.0.4"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.


@@ 17,11 18,9 @@ gem "minima", "~> 2.5"
# If you have any plugins, put them here!
group :jekyll_plugins do
  gem "jekyll-feed", "~> 0.12"
  gem 'jekyll-sitemap'
  gem 'jekyll-compose'
  gem 'jekyll-seo-tag'
  gem 'jekyll-mentions'
  gem 'jekyll-environment-variables'
  gem 'classifier-reborn'
end


M Gemfile.lock => Gemfile.lock +4 -11
@@ 43,8 43,6 @@ GEM
      terminal-table (~> 2.0)
    jekyll-compose (0.12.0)
      jekyll (>= 3.7, < 5.0)
    jekyll-environment-variables (1.0.1)
      jekyll (>= 3.0, < 5.x)
    jekyll-feed (0.15.1)
      jekyll (>= 3.7, < 5.0)
    jekyll-mentions (1.6.0)


@@ 54,8 52,9 @@ GEM
      sassc (> 2.0.1, < 3.0)
    jekyll-seo-tag (2.7.1)
      jekyll (>= 3.8, < 5.0)
    jekyll-sitemap (1.4.0)
      jekyll (>= 3.7, < 5.0)
    jekyll-theme-hacker (0.2.0)
      jekyll (> 3.5, < 5.0)
      jekyll-seo-tag (~> 2.0)
    jekyll-watch (2.2.1)
      listen (~> 3.0)
    kramdown (2.3.1)


@@ 67,10 66,6 @@ GEM
      rb-fsevent (~> 0.10, >= 0.10.3)
      rb-inotify (~> 0.9, >= 0.9.10)
    mercenary (0.4.0)
    minima (2.5.1)
      jekyll (>= 3.5, < 5.0)
      jekyll-feed (~> 0.9)
      jekyll-seo-tag (~> 2.1)
    minitest (5.14.4)
    nokogiri (1.12.2-x86_64-darwin)
      racc (~> 1.4)


@@ 101,12 96,10 @@ DEPENDENCIES
  classifier-reborn
  jekyll (~> 4.2.0)
  jekyll-compose
  jekyll-environment-variables
  jekyll-feed (~> 0.12)
  jekyll-mentions
  jekyll-seo-tag
  jekyll-sitemap
  minima (~> 2.5)
  jekyll-theme-hacker (~> 0.2.0)
  tzinfo (~> 1.2)
  tzinfo-data
  wdm (~> 0.1.1)

M LICENSE => LICENSE +1 -2
@@ 1,7 1,6 @@
MIT License

Copyright (c) 2019 css.gg
Copyright (c) 2020 JacksonChen666
Copyright (c) 2020-2021 JacksonChen666

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

M _config.yml => _config.yml +1 -3
@@ 28,14 28,12 @@ twitter_username: JacksonChen666
github_username:  JacksonChen666

# Build settings
theme: minima
theme: jekyll-theme-hacker
plugins:
  - jekyll-feed
  - jekyll-sitemap
  - jekyll-compose
  - jekyll-seo-tag
  - jekyll-mentions
  - jekyll-environment-variables
  - classifier-reborn

sass:

D _includes/footer.html => _includes/footer.html +0 -8
@@ 1,8 0,0 @@
<footer>
    <a target="_blank" rel="noopener noreferrer" href="https://youtube.com/JacksonChen666"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M5 7h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zM2 8a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H5a3 3 0 0 1-3-3V8zm8 1l4 3-4 3V9z" fill="currentColor"/></svg></a>
    <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/{{ site.twitter_username }}"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8 3a2 2 0 0 1 2 2v3h6a2 2 0 1 1 0 4h-6v2a3 3 0 0 0 3 3h3a2 2 0 1 1 0 4h-3a7 7 0 0 1-7-7V5a2 2 0 0 1 2-2z" fill="currentColor"/></svg></a>
    <a target="_blank" rel="noopener noreferrer" href="https://gitlab.com/JacksonChen666/JacksonChen666.gitlab.io/blame/master{% if page.url != '/' %}{{ page.url | remove: '.html' }}{% else %}/index{% endif %}.md"><svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 4a1 1 0 1 1 2 0v5.17a3.001 3.001 0 0 1 0 5.66V20a1 1 0 1 1-2 0v-5.17a3.001 3.001 0 0 1 0-5.66V4zm1 9a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" fill="currentColor"/></svg></a>
    <a target="_blank" rel="noopener noreferrer" href="https://gitlab.com/{{ site.github_username }}"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M7 5C7 3.89543 7.89543 3 9 3C10.1046 3 11 3.89543 11 5C11 5.74028 10.5978 6.38663 10 6.73244V14.0396H11.7915C12.8961 14.0396 13.7915 13.1441 13.7915 12.0396V10.7838C13.1823 10.4411 12.7708 9.78837 12.7708 9.03955C12.7708 7.93498 13.6662 7.03955 14.7708 7.03955C15.8753 7.03955 16.7708 7.93498 16.7708 9.03955C16.7708 9.77123 16.3778 10.4111 15.7915 10.7598V12.0396C15.7915 14.2487 14.0006 16.0396 11.7915 16.0396H10V17.2676C10.5978 17.6134 11 18.2597 11 19C11 20.1046 10.1046 21 9 21C7.89543 21 7 20.1046 7 19C7 18.2597 7.4022 17.6134 8 17.2676V6.73244C7.4022 6.38663 7 5.74028 7 5Z" fill="currentColor"/></svg></a>
    <a target="_blank" rel="noopener noreferrer" href="mailto:r979tq1q@duck.com"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.00977 5.83789C3.00977 5.28561 3.45748 4.83789 4.00977 4.83789H20C20.5523 4.83789 21 5.28561 21 5.83789V17.1621C21 18.2667 20.1046 19.1621 19 19.1621H5C3.89543 19.1621 3 18.2667 3 17.1621V6.16211C3 6.11449 3.00333 6.06765 3.00977 6.0218V5.83789ZM5 8.06165V17.1621H19V8.06199L14.1215 12.9405C12.9499 14.1121 11.0504 14.1121 9.87885 12.9405L5 8.06165ZM6.57232 6.80554H17.428L12.7073 11.5263C12.3168 11.9168 11.6836 11.9168 11.2931 11.5263L6.57232 6.80554Z" fill="currentColor"/></svg></a>
    <a href="{{ '/legal' | relative_url }}" title="Legal"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M7 8V13C7 15.7614 9.23858 18 12 18C14.7614 18 17 15.7614 17 13V8H7ZM5 4H19V13C19 16.866 15.866 20 12 20C8.13401 20 5 16.866 5 13V4Z" fill="currentColor"/></svg></a>
</footer>

D _includes/navigation.html => _includes/navigation.html +0 -14
@@ 1,14 0,0 @@
<nav class="navbar">
    <ul class="navbar-nav">
        <li class="nav-item"><a href="{{ '/' | include.url_type }}" title="Home Page" class="nav-link"><svg fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m6 22.879c-1.6568 0-3-1.3432-3-3v-10c0-0.03389 0.00169-0.0674 0.00498-0.10043h-0.00498c0-0.57596 0.2288-1.1283 0.63607-1.5356l6.2426-6.2426c1.1715-1.1716 3.071-1.1716 4.2426 0l6.2426 6.2426c0.4073 0.40726 0.6361 0.95963 0.6361 1.5356h-5e-3c0.0033 0.03303 5e-3 0.06654 5e-3 0.10043v10c0 1.6568-1.3431 3-3 3h-12zm6.7071-19.464 6.2929 6.2929v10.172c0 0.5522-0.4477 1-1 1h-3v-5c0-1.6569-1.3431-3-3-3s-3 1.3431-3 3v5h-3c-0.55228 0-1-0.4478-1-1v-10.172l6.2929-6.293c0.3905-0.39052 1.0237-0.39052 1.4142 0z" clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"/></svg><span class="link-text">Home</span></a></li>
        <li class="nav-item"><a href="{{ '/questions' | include.url_type }}" title="Questions" class="nav-link"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><text stroke="null" fill="currentColor" x="4" y="19" id="svg_1" font-size="24" font-family="Helvetica, Arial, sans-serif" text-anchor="start" xml:space="preserve">?</text></svg><span class="link-text">Questions</span></a></li>
        <li class="nav-item"><a href="{{ '/ideas' | include.url_type }}" title="Ideas" class="nav-link"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 9c0 2.9611 1.6088 5.5465 4 6.9297v0.0702c0 2.2092 1.7909 4 4 4 2.2091 0 4-1.7908 4-4v-0.0702c2.3912-1.3832 4-3.9686 4-6.9297 0-4.4183-3.5817-8-8-8-4.4183 0-8 3.5817-8 8zm12 4.4722c1.2275-1.0986 2-2.6952 2-4.4722 0-3.3137-2.6863-6-6-6-3.3137 0-6 2.6863-6 6 0 1.777 0.7725 3.3736 2 4.4722l2-9e-4v2.5287c0 1.1045 0.8954 1.9999 2 1.9999 1.1045 0 2-0.8954 2-2v-2.5286l2 9e-4z" clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"/><path d="m10 21.006v-0.0064c0.5883 0.3403 1.2714 0.5351 2 0.5351s1.4117-0.1948 2-0.5351v0.0064c0 1.1046-0.8954 2-2 2s-2-0.8954-2-2z" fill="currentColor"/></svg><span class="link-text">Ideas</span></a></li>
        <li class="nav-item"><a href="{{ '/feedback' | include.url_type }}" title="Feedback" class="nav-link"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.00977 5.83789C3.00977 5.28561 3.45748 4.83789 4.00977 4.83789H20C20.5523 4.83789 21 5.28561 21 5.83789V17.1621C21 18.2667 20.1046 19.1621 19 19.1621H5C3.89543 19.1621 3 18.2667 3 17.1621V6.16211C3 6.11449 3.00333 6.06765 3.00977 6.0218V5.83789ZM5 8.06165V17.1621H19V8.06199L14.1215 12.9405C12.9499 14.1121 11.0504 14.1121 9.87885 12.9405L5 8.06165ZM6.57232 6.80554H17.428L12.7073 11.5263C12.3168 11.9168 11.6836 11.9168 11.2931 11.5263L6.57232 6.80554Z" fill="currentColor"/></svg><span class="link-text">Feedback</span></a></li>
	<li class="nav-item"><a href="{{ '/rss' | include.url_type }}" title="RSS feeds" class="nav-link"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14 3V3.28988C16.8915 4.15043 19 6.82898 19 10V17H20V19H4V17H5V10C5 6.82898 7.10851 4.15043 10 3.28988V3C10 1.89543 10.8954 1 12 1C13.1046 1 14 1.89543 14 3ZM7 17H17V10C17 7.23858 14.7614 5 12 5C9.23858 5 7 7.23858 7 10V17ZM14 21V20H10V21C10 22.1046 10.8954 23 12 23C13.1046 23 14 22.1046 14 21Z" fill="currentColor"/></svg><span class="link-text">RSS</span></a></li>
        <li class="nav-item"><a href="{{ '/coding' | include.url_type }}" title="Coding stuff" class="nav-link"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m13.325 3.0501-4.6576 17.382 1.9319 0.5176 4.6575-17.382-1.9318-0.51764z" fill="currentColor"/><path d="m7.612 18.361 1.3594-1.4484-5e-4 -0.0191-5.0943-4.7812 4.7904-5.1041-1.4583-1.3687-6.1591 6.5624 6.5624 6.1591z" fill="currentColor"/><path d="m16.388 18.361-1.3594-1.4484 5e-4 -0.0191 5.0943-4.7812-4.7904-5.1041 1.4583-1.3687 6.1591 6.5624-6.5624 6.1591z" fill="currentColor"/></svg><span class="link-text">Coding</span></a></li>
        <li class="nav-item"><a href="{{ '/posts' | include.url_type }}" title="Posts" class="nav-link"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m6 6c0-0.55228 0.44772-1 1-1h10c0.5523 0 1 0.44772 1 1s-0.4477 1-1 1h-10c-0.55229 0-1-0.44772-1-1z" fill="currentColor"/><path d="m6 10c0-0.55229 0.44772-1 1-1h10c0.5523 0 1 0.44771 1 1 0 0.5523-0.4477 1-1 1h-10c-0.55229 0-1-0.4477-1-1z" fill="currentColor"/><path d="m7 13c-0.55228 0-1 0.4477-1 1s0.44771 1 1 1h10c0.5523 0 1-0.4477 1-1s-0.4477-1-1-1h-10z" fill="currentColor"/><path d="m6 18c0-0.5523 0.44772-1 1-1h4c0.5523 0 1 0.4477 1 1s-0.4477 1-1 1h-4c-0.55228 0-1-0.4477-1-1z" fill="currentColor"/><path d="m2 4c0-1.6568 1.3432-3 3-3h14c1.6569 0 3 1.3432 3 3v16c0 1.6569-1.3431 3-3 3h-14c-1.6568 0-3-1.3431-3-3v-16zm3-1h14c0.5523 0 1 0.44771 1 1v16c0 0.5523-0.4477 1-1 1h-14c-0.55228 0-1-0.4477-1-1v-16c0-0.55228 0.44771-1 1-1z" clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"/></svg><span class="link-text">Posts</span></a></li>
        <li class="nav-item"><a href="{{ '/portfolio' | include.url_type }}" title="Portfolio" class="nav-link"><svg fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4 1.5c-1.1046 0-2 0.89543-2 2v1c0 0.05666 0.00236 0.11278 0.00698 0.16825-1.1688 0.40986-2.007 1.5229-2.007 2.8318v12c0 1.6569 1.3432 3 3 3h18c1.6569 0 3-1.3431 3-3v-12c0-1.6568-1.3431-3-3-3h-9.126c-0.4441-1.7252-2.0102-3-3.874-3h-4zm5.7324 3c-0.34581-0.5978-0.99216-1-1.7324-1h-4v1h5.7324zm-6.7324 2c-0.55228 0-1 0.44772-1 1v12c0 0.5523 0.44772 1 1 1h18c0.5523 0 1-0.4477 1-1v-12c0-0.55228-0.4477-1-1-1h-18z" clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"/></svg><span class="link-text">Portfolio</span></a></li>
        <li class="nav-item"><a href="{{ '/sitemap' | include.url_type }}" title="Index" class="nav-link"><svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m15.343 15.243c2.3432-2.3431 2.3432-6.1421 0-8.4852-2.3431-2.3432-6.1421-2.3432-8.4852 0-2.3431 2.3431-2.3431 6.1421 0 8.4852 2.3432 2.3432 6.1421 2.3432 8.4852 0zm1.4143-9.8994c2.8851 2.8852 3.1059 7.4258 0.6621 10.564 0.0153 0.0135 0.0303 0.0276 0.045 0.0422l4.2426 4.2427c0.3905 0.3905 0.3905 1.0237 0 1.4142s-1.0237 0.3905-1.4142 0l-4.2426-4.2426c-0.0147-0.0147-0.0288-0.0297-0.0423-0.045-3.1385 2.4438-7.6792 2.223-10.564-0.6621-3.1242-3.1242-3.1242-8.1896 0-11.314 3.1242-3.1242 8.1896-3.1242 11.314 0z" clip-rule="evenodd" fill="currentColor" fill-rule="evenodd"/></svg><span class="link-text">Index</span></a></li>
    </ul>
</nav>


M _layouts/author.html => _layouts/author.html +2 -2
@@ 1,8 1,8 @@
---
layout: bare
custom_nav: true
custom_head: '<link rel="stylesheet" type="text/css" href="/assets/style/authors.css"><style>main { min-height: calc(100vh - 5.1rem) !important; }</style>'
---
<article itemprop="articleBody" class="container" id="main_content">
{% assign username = page.title %}
<h2 id="name">{{ page.name }}</h2>
<p id="username">{{ username }}</p>


@@ 26,4 26,4 @@ custom_head: '<link rel="stylesheet" type="text/css" href="/assets/style/authors
{% endcapture %}
{{ markdownified | markdownify }}
</div>
{% include footer.html %}
</article>

M _layouts/bare.html => _layouts/bare.html +6 -9
@@ 1,22 1,19 @@
---
---
<!DOCTYPE html>{% assign layout.custom_nav = false %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta name="google-site-verification" content="F07ZPniaA5zDRDgqVDMcvGqginMOIKnKhHtwVS49Irg">
    <link rel="preload" href="{{ '/assets/style/main.css' | relative_url }}" as="style">
    <link rel="stylesheet" type="text/css" href="{{ '/assets/style/main.css' | relative_url }}">{% if layout.custom_nav != true %}
    <link rel="preload" href="{{ '/assets/style/nav.css' | relative_url }}" as="style">
    <link rel="stylesheet" type="text/css" href="{{ '/assets/style/nav.css' | relative_url }}">{% endif %}
    <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}" as="style">
    <meta name="viewport" content="width=device-width initial-scale=1">
    {{ layout.custom_head }}
    {{ page.custom_head }}
    {% seo %}
</head>
<body>
{% include navigation.html url_type='relative_url' %}
<main>
<h1>Jackson Chen</h1>
<header class="container">
<a href="/" id="a-title"><h1>Jackson Chen</h1></a>
<h2><a href="/questions">Questions</a> | <a href="/ideas">Ideas</a> | <a href="/feedback">Feedback</a> | <a href="/portfolio">Portfolio</a> | <a href="/rss">RSS</a> | <a href="mailto:r979tq1q@duck.com">Email</a></h2>
</header>
{{ content }}
</main>
</body>

M _layouts/default.html => _layouts/default.html +1 -2
@@ 1,8 1,7 @@
---
layout: bare
---
<article itemprop="articleBody">
<article itemprop="articleBody" class="container" id="main_content">
{{ content }}
</article>

{% include footer.html %}

M _layouts/post.html => _layouts/post.html +4 -7
@@ 1,22 1,19 @@
---
layout: bare
custom_nav: true
custom_head: '<link rel="stylesheet" type="text/css" href="/assets/style/post.css"><style>main { min-height: calc(100vh - 5.1rem) !important; }</style>'
---
<link rel="alternate" type="application/rss+xml" href="{{ '/feeds/posts.xml' | relative_url }}" />
<div id="content">
<div class="container">
<h2 itemprop="title">{{ page.title }}</h2>
<span itemprop="date">{{ page.date | date_to_rfc822 | strip_html }} {% if page.last_modified_date %}(last updated {{ page.last_modified_date | date_to_rfc822 | strip_html }}){% endif %}</span> - Written by {% unless page.author contains "<a href='/unknown-author'>Unknown Author</a>" %}@{% endunless %}{{ page.author }}
<hr>
<article itemprop="articleBody">
</div>
<article itemprop="articleBody" class="container" id="main_content">
{{ content }}
</article>
</div>
<div id="related_posts">
<div id="related_posts" class="container">
<hr>
<h3>Related Posts</h3>
{% capture related_posts %}{% include post_list.md posts_list=site.related_posts offset=1 amount=5 %}{% endcapture %}
{{ related_posts | markdownify }}
</div>

{% include footer.html %}

M _posts/2021-06-17-your-mac-has-the-ability-to-create-wired-network-for-your-iphone.md => _posts/2021-06-17-your-mac-has-the-ability-to-create-wired-network-for-your-iphone.md +6 -6
@@ 18,15 18,15 @@ Clickbait? No clue, but it's possible for anyone to hook up your iPhone's charge
1. Connect your iPhone to your Mac, using the charging cable.
2. Open System Preferences
    1. Navigate to the sharing window
    ![Screenshot of macOS's System Preferences](/assets/img/posts/mac-iphone-wired/system-preferences.png){: loading="lazy"}
    ![Screenshot of macOS's System Preferences](/assets/images/posts/mac-iphone-wired/system-preferences.png){: loading="lazy"}
    2. Navigate to "Internet Sharing" service
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the Internet Sharing section](/assets/img/posts/mac-iphone-wired/internet-sharing-section.png){: loading="lazy"}
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the Internet Sharing section](/assets/images/posts/mac-iphone-wired/internet-sharing-section.png){: loading="lazy"}
        1. Choose the device you want to share the internet from the dropdown
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the dropdown menu to share the connection from.](/assets/img/posts/mac-iphone-wired/internet-sharing-share-from.png){: loading="lazy"}
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the dropdown menu to share the connection from.](/assets/images/posts/mac-iphone-wired/internet-sharing-share-from.png){: loading="lazy"}
        2. Choose the "computer" called iPhone USB (and optionally other devices [^2])
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the menu list showing devices it can share an internet connection to.](/assets/img/posts/mac-iphone-wired/internet-sharing-share-to.png){: loading="lazy"}
        ![Screenshot of macOS's System Preferences Sharing pane highlighting the menu list showing devices it can share an internet connection to.](/assets/images/posts/mac-iphone-wired/internet-sharing-share-to.png){: loading="lazy"}
    3. Enable the "Internet Sharing" service by ticking the box next to the "Internet Sharing" service
    ![Screenshot of macOS System Preferences Sharing pane showing a warning message saying: "Are you sure you want to turn on Internet sharing? If your computer is connected to a network, turning on Internet sharing may affect the network settings of other computers and disrupt the network. Contact your system administrator before turning on Internet sharing."](/assets/img/posts/mac-iphone-wired/network-disruption.png){: loading="lazy"}
    ![Screenshot of macOS System Preferences Sharing pane showing a warning message saying: "Are you sure you want to turn on Internet sharing? If your computer is connected to a network, turning on Internet sharing may affect the network settings of other computers and disrupt the network. Contact your system administrator before turning on Internet sharing."](/assets/images/posts/mac-iphone-wired/network-disruption.png){: loading="lazy"}
    macOS may tell you that what you are about to do might disrupt the network and change network settings of other computers. If you use an enterprise network (office, school, etc), I'd recommend checking with your system/network administrator to see if the "Internet Sharing" service will not disrupt the network.

## Speed tests


@@ 53,4 53,4 @@ Most of the magic should happen in the charging cable, where the Mac sends in an
This post shows how to use a Mac system and some iPhone charging cables to create a system where the charging cable for your iPhone is the ethernet cable, like how computers have it. I hope this post was useful. Any questions can be directed to my [twitter dms](https://twitter.com/messages/compose?recipient_id=909886275741679616).

[^1]: Data transfer capabilities meaning that you can backup your iPhone, restore it, etc. Though, I cannot confirm if that's what's required.
[^2]: Choosing an ethernet port as a device to share to may result in changing the network settings of your ISP, potentially resulting in ISP downtime, and your ISP may terminate your service. **THE AUTHOR IS NOT RESPONSIBLE AND LIABLE FOR ANY DAMAGES CAUSED BY THE USER. ENABLE AT YOUR OWN RISK** ![Screenshot of macOS System Preferences Sharing pane showing a warning message saying: "If you turn on this port, your Internet Service provider might terminate your service to prevent you from disrupting its network. In some cases (if you use a cable modem, for example) you might unintentionally affect the network settings of your ISP and violate the terms of your service agreement."](/assets/img/posts/mac-iphone-wired/isp-disruption.png){: loading="lazy"}
\ No newline at end of file
[^2]: Choosing an ethernet port as a device to share to may result in changing the network settings of your ISP, potentially resulting in ISP downtime, and your ISP may terminate your service. **THE AUTHOR IS NOT RESPONSIBLE AND LIABLE FOR ANY DAMAGES CAUSED BY THE USER. ENABLE AT YOUR OWN RISK** ![Screenshot of macOS System Preferences Sharing pane showing a warning message saying: "If you turn on this port, your Internet Service provider might terminate your service to prevent you from disrupting its network. In some cases (if you use a cable modem, for example) you might unintentionally affect the network settings of your ISP and violate the terms of your service agreement."](/assets/images/posts/mac-iphone-wired/isp-disruption.png){: loading="lazy"}
\ No newline at end of file

M _posts/2021-07-23-list-of-posts-comments-and-text-where-jacksonchen666-does-stupidity.md => _posts/2021-07-23-list-of-posts-comments-and-text-where-jacksonchen666-does-stupidity.md +1 -1
@@ 14,7 14,7 @@ Those are the types of mistakes I'll list, but not the non-factual mistakes I ma

That means I won't include some silly (debatable?) mistake where I incorrectly write [the wrong year at the top of the post](https://www.reddit.com/r/billwurtz/comments/l40flm/the_music_video_here_comes_the_sun_was_rendered/){: target="_blank" rel="noopener noreferrer"} (though [another user has expressed changing muscle memory issues](https://www.reddit.com/r/billwurtz/comments/l40flm/the_music_video_here_comes_the_sun_was_rendered/gkl6n5h/){: target="_blank" rel="noopener noreferrer"} that does still happen to me in different ways)

[I guess it explains why I'm downvoted on more of programming stuff or whatever.](/assets/img/posts/stupids/per-subreddit-votes.png){: target="_blank" rel="noopener noreferrer"}
[I guess it explains why I'm downvoted on more of programming stuff or whatever.](/assets/images/posts/stupids/per-subreddit-votes.png){: target="_blank" rel="noopener noreferrer"}

OK, now on to the format. I will be using [hyperlinks](https://en.wikipedia.org/wiki/Hyperlink){: target="_blank" rel="noopener noreferrer"}, and also rank it by the level of stupidity, so referencing the things on this page by number is probably a bad idea, because in the very future I might do the dumbest thing possible.


D apple-script.md => apple-script.md +0 -43
@@ 1,43 0,0 @@
---
title: Applescript
description: Page of applescript
---
I actually like programming stuff. So far, I've learned 4 total languages (and more counting): Python, HTML (and related), Java, and AppleScript<br>
AppleScript is for mac only. If you are on other OS, it won't work properly.

<style>
    a+pre{display:none;}
    a:hover+pre,pre:hover{display:block;}
    pre{margin-bottom:-18px;margin-top:3px;}
</style>

Here is where I'll share my AppleScript scripts (hover to see code):<noscript>You'll need javascript to open code from links</noscript><br>
<a href="#random-output-volume" onclick="openAppleScript();">Random Output Volume</a><br>
<a href="#random-input-volume" onclick="openAppleScript();">Random Input Volume</a><br>
<a href="#typing-spammer" onclick="openAppleScript();">Typing spammer</a><br>
<a href="#fun-progress-bar" onclick="openAppleScript();">Fun progress bar</a><br>
<a href="#auto-join-zoom" onclick="openAppleScript();">Auto join Zoom</a>

<script>
    function openAppleScript() {
        switch (location.hash) {
            case "#random-output-volume":
                window.open("applescript://com.apple.scripteditor?action=new&script=set+originalv+to+output+volume+of+%28get+volume+settings%29%0D%0Aset+repeatz+to+the+text+returned+of+%28display+dialog+%22How+many+times+do+you+want+to+set+the+volume+randomly%3F%22+default+answer+%22100%22%29%0D%0Arepeat+repeatz+times%0D%0A%09%28set+volume+output+volume+random+number+from+0+to+100%29%0D%0Aend+repeat%0D%0Aset+volume+output+volume+originalv", name="_parent");
                break;
            case "#random-input-volume":
                window.open("applescript://com.apple.scripteditor?action=new&script=set%20originalv%20to%20input%20volume%20of%20(get%20volume%20settings)%0Arepeat%0A%20%20%20%20try%0A%20%20%20%20%20%20%20%20set%20volume%20input%20volume%20(random%20number%20from%200%20to%20100)%0A%20%20%20%20%20%20%20%20delay%20(random%20number%20from%200.0%20to%200.5)%0A%20%20%20%20on%20error%0A%20%20%20%20%20%20%20%20set%20volume%20input%20volume%20originalv%0A%20%20%20%20%20%20%20%20return%20originalv%0A%20%20%20%20end%20try%0Aend%20repeat", name="_parent");
                break;
            case "#typing-spammer":
                window.open("applescript://com.apple.scripteditor?action=new&script=set+spamText+to+the+text+returned+of+%28display+dialog+%22What+to+spam%3F%22+default+answer+%22%22%29%0D%0Aset+repeatTimes+to+the+text+returned+of+%28display+dialog+%22Times+to+spam%22+default+answer+%2250%22%29%0D%0Adelay+5%0D%0Atell+application+%22System+Events%22%0D%0A%09repeat+repeatTimes+times%0D%0A%09%09keystroke+spamText%0D%0A%09%09key+code+36%0D%0A%09end+repeat%0D%0Aend+tell", name="_parent");
                break;
            case "#fun-progress-bar":
                window.open("applescript://com.applescriptedior?action=new&script='%23+Save+as+APP+for+extra+enjoyment%0D%28*%0APTS+means+progress+total+steps%0APD+means+progress+descrition+%0APAD+means+progress+additional+description%0APCS+means+progress+completed+steps%0APInfo+means+progress+info+%28additional+description%29%0A*%29%0Dglobal+PTS%2C+PD%2C+PAD%2C+PCS%2C+numberz%2C+PInfo%0D%0Don+varChecks%28%29%0D%09set+PTS+to+progress+total+steps%0D%09set+PD+to+progress+description%0D%09set+PAD+to+progress+additional+description%0D%09set+PCS+to+progress+completed+steps%0Dend+varChecks%0D%0Don+setPTS%28contentz%29%0D%09set+progress+total+steps+to+contentz%0Dend+setPTS%0D%0Don+setPD%28contentz%29%0D%09set+progress+description+to+contentz%0Dend+setPD%0D%0Don+setPAD%28contentz%29%0D%09set+progress+additional+description+to+contentz%0Dend+setPAD%0D%0Don+setPCS%28contentz%29%0D%09set+progress+completed+steps+to+contentz%0Dend+setPCS%0D%0Dset+numberz+to+%7B-1%2C+1%7D%0DsetPTS%281000%29%0DsetPD%28%22Fun+Progress+Bar%22%29%0DsetPCS%28progress+total+steps+%2F+2%29%0D%0Don+flowChecks%28%29%0D%09varChecks%28%29%0D%09if+PCS+is+less+than+0+then%0D%09%09set+PCS+to+setPCS%280%29%0D%09%09set+PAD+to+setPAD%28%22Interger+underflow%2C+please+wait%22%29%0D%09%09repeat+PTS+%2F+2+times%0D%09%09%09set+PCS+to+setPCS%28PCS+%2B+1%29%0D%09%09%09varChecks%28%29%0D%09%09%09delay+0.005%0D%09%09end+repeat%0D%09%09%0D%09else+if+PCS+is+greater+than+PTS+-+1+then%0D%09%09set+PCS+to+setPCS%28PTS%29%0D%09%09set+PAD+to+setPAD%28%22Interger+overflow%2C+please+wait%22%29%0D%09%09repeat+PTS+%2F+2+times%0D%09%09%09set+PCS+to+setPCS%28PCS+-+1%29%0D%09%09%09varChecks%28%29%0D%09%09%09delay+0.005%0D%09%09end+repeat%0D%09end+if%0D%09numChecks%28%29%0D%09return%0Dend+flowChecks%0D%0Don+numChecks%28%29%0D%09varChecks%28%29%0D%09%23+Checks+the+number+and+adds+extra+text+to+it%0D%09if+PCS+is+500+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Middle%29%22%29%0D%09%09%0D%09else+if+PCS+is+less+than+10+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Extremely+Low%29%22%29%0D%09%09%0D%09else+if+PCS+is+greater+than+990+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Extremely+High%29%22%29%0D%09%09%0D%09else+if+PCS+is+less+than+50+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Very+Low%29%22%29%0D%09%09%0D%09else+if+PCS+is+greater+than+950+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Very+High%29%22%29%0D%09%09%0D%09else+if+PCS+is+less+than+100+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28Low%29%22%29%0D%09%09%0D%09else+if+PCS+is+greater+than+900+then%0D%09%09set+PAD+to+setPAD%28PInfo+%26+%22%28High%29%22%29%0D%09%09%0D%09end+if%0D%09return%0Dend+numChecks%0D%0Don+repeating%28%29%0D%09try%0D%09%09repeat%0D%09%09%09varChecks%28%29%0D%09%09%09set+PInfo+to+PCS+%26+%22%2F%22+%26+PTS+%26+%22+steps+%22%0D%09%09%09set+PTS+to+setPCS%28PCS+%2B+%28some+item+of+numberz%29%29%0D%09%09%09set+PAD+to+setPAD%28PInfo%29%0D%09%09%09%0D%09%09%09flowChecks%28%29%0D%09%09%09delay+5.0E-5%0D%09%09end+repeat%0D%09on+error+the+errorMsg+number+the+errorNum%0D%09%09set+PD+to+setPD%28%22Interrupted+by+error%22%29%0D%09%09set+PAD+to+setPAD%28%22Error%3A+%22+%26+the+errorNum+%26+%22.+%22+%26+the+errorMsg%29%0D%09%09if+errorNum+is+-128+then%0D%09%09%09return%0D%09%09else%0D%09%09%09display+dialog+%22Error%3A+%22+%26+the+errorNum+%26+%22.+%22+%26+the+errorMsg+buttons+%7B%22OK%22%7D+default+button+1+giving+up+after+10%0D%09%09%09return%0D%09%09end+if%0D%09%09return%0D%09end+try%0Dend+repeating%0D%0Drepeating%28%29%0D%0Don+quit%0D%09setPTS%280%29%0D%09setPD%28%22%22%29%0D%09setPAD%28%22%22%29%0D%09setPCS%280%29%0D%09continue+quit%0Dend+quit%0D'", name="_parent");
                break;
            case "#auto-join-zoom":
                window.open("applescript://com.apple.scripteditor?action=new&script=%23%20It%20is%20recommended%20that%20you%20save%20this%20script%20as%20an%20application%2C%20so%20you%20don't%20have%20to%20open%20Script%20editor.%0A(*%20%0AIt%20all%20started%20when%20I%20wanted%20to%20join%20zoom%20faster%20than%20a%20human%20could%20do%20with%20no%20prompt%20like%20how%20I%20expected%20like%20this.%0AI%20first%20discovered%20zoom.us's%20URL%20scheme%20to%20join%20meeting%2C%20but%20when%20I%20found%20out%20it%20doesn't%20work%2C%20I%20started%20to%20make%20this%20program.%0AAfter%20this%20all%20of%20stuff%2C%20I%20finally%20have%20something%20that%20is%20constantly%20updated.%0AAfter%20this%20pandemic%20is%20over%2C%20development%20might%20slow%20down%20or%20become%20discontinued.%0A*)%0Aglobal%20meetingNames%2C%20meetingIDs%2C%20meetingPwds%2C%20wname%0A%23%20Compiling%20the%20app%20will%20reset%20all%20your%20saved%20meetings!%0Aproperty%20meetingNames%20%3A%20%7B%7D%0Aproperty%20meetingIDs%20%3A%20%7B%7D%0Aproperty%20meetingPwds%20%3A%20%7B%7D%0A%23%20Consistent%20setup%20example%3A%0A%23set%20%7BmeetingNames%2C%20meetingIDs%2C%20meetingPwds%7D%20to%20%7B%7B%22Example%20without%20password%22%2C%20%22Example%20with%20password%22%7D%2C%20%7B%22000000001%22%2C%20%22000000002%22%7D%2C%20%7Bmissing%20value%2C%20%22P4ssw0rd!%22%7D%7D%0A%0Aon%20joinMeeting(meetingID%2C%20meetingPwd)%0A%09tell%20application%20%22System%20Events%22%0A%09%09activate%20application%20%22zoom.us%22%0A%09%09if%20wname%20is%20%22Login%22%20then%20%23%20both%20login%20and%202%20buttons%20screen%0A%09%09%09try%0A%09%09%09%09my%20doWithTimeout(%22click%20UI%20element%202%20of%20group%201%20of%20window%20%5C%22Login%5C%22%20of%20application%20process%20%5C%22zoom.us%5C%22%22%2C%2010)%0A%09%09%09on%20error%20errmsg%20number%20errnum%0A%09%09%09%09activate%20me%0A%09%09%09%09error%20%22Error%3A%20%22%20%26%20errnum%20%26%20%22.%20%22%20%26%20errmsg%20%26%20%22%5CnUnable%20to%20click%20specified%20button%22%0A%09%09%09end%20try%0A%09%09%09try%0A%09%09%09%09click%20text%20field%201%20of%20window%201%20of%20application%20process%20%22zoom.us%22%0A%09%09%09on%20error%0A%09%09%09%09my%20doWithTimeout(%22click%20UI%20element%202%20of%20group%201%20of%20window%20%5C%22Login%5C%22%20of%20application%20process%20%5C%22zoom.us%5C%22%22%2C%2010)%0A%09%09%09%09click%20text%20field%201%20of%20window%201%20of%20application%20process%20%22zoom.us%22%0A%09%09%09end%20try%0A%09%09else%20if%20wname%20is%20%22Zoom%22%20then%0A%09%09%09my%20doWithTimeout(%22click%20UI%20Element%2015%20of%20window%20%5C%22Zoom%5C%22%20of%20application%20process%20%5C%22zoom.us%5C%22%22%2C%2010)%0A%09%09%09click%20text%20field%201%20of%20window%201%20of%20application%20process%20%22zoom.us%22%0A%09%09else%20if%20wname%20contains%20%22Zoom%20Meeting%22%20or%20wname%20is%20%22Window%22%20then%0A%09%09%09activate%20me%0A%09%09%09display%20dialog%20%22It%20seems%20like%20you%20are%20already%20in%20a%20meeting%22%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09%09%09return%20false%0A%09%09else%0A%09%09%09error%20%22Please%20only%20use%20while%20logged%20out%2C%20or%20logged%20into%20zoom.%20I%20do%20not%20understand%20the%20window%20name%2C%20%22%20%26%20wname%0A%09%09%09return%20false%0A%09%09end%20if%0A%09%09tell%20process%20%22zoom.us%22%20to%20keystroke%20meetingID%20%26%20return%0A%09%09if%20meetingPwd%20is%20not%20missing%20value%20then%20%23%20yeah%20it's%20all%20pretty%20much%20the%20same%0A%09%09%09try%0A%09%09%09%09my%20doWithTimeout(%22click%20text%20field%201%20of%20group%201%20of%20window%201%20of%20application%20process%20%5C%22zoom.us%5C%22%22%2C%2010)%0A%09%09%09on%20error%20errmsg%20number%20errnum%0A%09%09%09%09if%20errmsg%20is%20%22System%20Events%20got%20an%20error%3A%20Can’t%20get%20group%201%20of%20window%201%20of%20application%20process%20%5C%22zoom.us%5C%22.%20Invalid%20index.%22%20or%20errmsg%20is%20%22System%20Events%20got%20an%20error%3A%20Can’t%20get%20window%201%20of%20application%20process%20%5C%22zoom.us%5C%22.%20Invalid%20index.%22%20then%20error%20%22Cannot%20get%20password%20window%22%20number%20errnum%0A%09%09%09end%20try%0A%09%09%09tell%20process%20%22zoom.us%22%20to%20keystroke%20meetingPwd%20%26%20return%0A%09%09end%20if%0A%09end%20tell%0A%09return%20true%0Aend%20joinMeeting%0A%0Aon%20userPrompt()%0A%09lengthCheck()%0A%09getWinName()%0A%09set%20allowJoin%20to%20true%0A%09if%20wname%20contains%20%22Zoom%20Meeting%22%20or%20wname%20is%20%22Window%22%20or%20wname%20contains%20%22Breakout%20Room%22%20then%0A%09%09set%20allowJoin%20to%20false%0A%09%09activate%20me%0A%09%09display%20dialog%20%22You%20are%20already%20in%20a%20meeting%2C%20so%20joining%20meeting%20is%20disabled.%22%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09else%20if%20wname%20is%20%22%22%20then%0A%09%09set%20allowJoin%20to%20false%0A%09%09activate%20me%0A%09%09display%20dialog%20%22I%20cannot%20figure%20which%20window%20it%20is%2C%20so%20I%20am%20unable%20to%20join%20for%20you.%22%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09end%20if%0A%09set%20extras%20to%20%7B%22Add%20meeting...%22%2C%20%22Remove%20meeting...%22%2C%20%22Change%20meeting%20info...%22%2C%20%22Get%20Meeting%20ID%20and%20password...%22%2C%20%22I%20DON'T%20HAVE%20TIME%20TO%20ADD%2C%20JUST%20JOIN%22%7D%0A%09activate%20me%0A%09set%20choice%20to%20choose%20from%20list%20meetingNames%20%26%20extras%20default%20items%20item%201%20of%20(meetingNames%20%26%20extras)%0A%09if%20choice%20is%20false%20then%20return%20%23%20cancel%0A%09set%20choice%20to%20choice%20as%20text%0A%09if%20choice%20is%20%22Add%20meeting...%22%20then%0A%09%09addToList()%0A%09else%20if%20choice%20is%20%22Remove%20meeting...%22%20then%0A%09%09removeFromList()%0A%09else%20if%20choice%20is%20%22Change%20meeting%20info...%22%20then%0A%09%09changeInfo()%0A%09else%20if%20choice%20is%20%22Get%20Meeting%20ID%20and%20password...%22%20then%0A%09%09getIDPwd()%0A%09else%20if%20choice%20is%20%22I%20DON'T%20HAVE%20TIME%20TO%20ADD%2C%20JUST%20JOIN%22%20then%0A%09%09if%20allowJoin%20is%20true%20then%0A%09%09%09noTime()%0A%09%09else%0A%09%09%09display%20dialog%20%22You%20can't%20join%20meetings%20because%20you%20are%20already%20in%20a%20meeting%22%20buttons%20%7B%22OK%20FINE%22%7D%20default%20button%201%0A%09%09%09userPrompt()%0A%09%09end%20if%0A%09%09return%0A%09else%0A%09%09if%20allowJoin%20is%20false%20then%0A%09%09%09display%20dialog%20%22You%20are%20still%20in%20the%20meeting%22%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09%09%09return%0A%09%09end%20if%0A%09%09repeat%20with%20a%20from%201%20to%20length%20of%20meetingNames%0A%09%09%09if%20choice%20is%20item%20a%20of%20meetingNames%20then%0A%09%09%09%09joinMeeting(item%20a%20of%20meetingIDs%2C%20item%20a%20of%20meetingPwds)%0A%09%09%09%09exit%20repeat%0A%09%09%09end%20if%0A%09%09end%20repeat%0A%09end%20if%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20extras%0A%09%09if%20choice%20is%20item%20a%20of%20extras%20then%0A%09%09%09userPrompt()%0A%09%09%09return%0A%09%09end%20if%0A%09end%20repeat%0Aend%20userPrompt%0A%0Aon%20emergencyMode()%20%23%20incase%20something%20doesn't%20work%0A%09set%20extras%20to%20%7B%22Add%20meeting...%22%2C%20%22Remove%20meeting...%22%2C%20%22Change%20meeting%20info...%22%7D%0A%09activate%20me%0A%09set%20choice%20to%20choose%20from%20list%20meetingNames%20%26%20extras%20default%20items%20item%201%20of%20(meetingNames%20%26%20extras)%20with%20prompt%20%22What%20meeting%20info%20would%20you%20like%20to%20view%3F%22%0A%09if%20choice%20is%20false%20then%20%23%20cancel%0A%09%09return%0A%09end%20if%0A%09set%20choice%20to%20choice%20as%20text%0A%09if%20choice%20is%20%22Add%20meeting...%22%20then%0A%09%09addToList()%0A%09else%20if%20choice%20is%20%22Remove%20meeting...%22%20then%0A%09%09removeFromList()%0A%09else%20if%20choice%20is%20%22Change%20meeting%20info...%22%20then%0A%09%09changeInfo()%0A%09else%0A%09%09repeat%20with%20a%20from%201%20to%20length%20of%20meetingNames%0A%09%09%09if%20choice%20is%20item%20a%20of%20meetingNames%20then%0A%09%09%09%09showIDPwd(item%20a%20of%20meetingNames%2C%20item%20a%20of%20meetingPwds)%0A%09%09%09%09exit%20repeat%0A%09%09%09end%20if%0A%09%09end%20repeat%0A%09end%20if%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20extras%0A%09%09if%20choice%20is%20item%20a%20of%20extras%20then%0A%09%09%09emergencyMode()%0A%09%09%09return%0A%09%09end%20if%0A%09end%20repeat%0Aend%20emergencyMode%0A%0Aon%20lengthCheck()%0A%09if%20(length%20of%20meetingNames)%20≠%20(length%20of%20meetingIDs)%20or%20(length%20of%20meetingNames)%20≠%20(length%20of%20meetingPwds)%20then%0A%09%09display%20dialog%20%22The%20lists%20are%20unequal%20in%20size%2C%20and%20all%20additional%20items%20will%20be%20removed.%5CnAmounts%3A%5CnMeeting%20Names%3A%20%22%20%26%20length%20of%20meetingNames%20%26%20%22%5CnMeeting%20IDs%3A%20%22%20%26%20length%20of%20meetingIDs%20%26%20%22%5CnMeeting%20passwords%3A%20%22%20%26%20length%20of%20meetingPwds%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09%09set%20stuff%20to%20%7BmeetingNames%2C%20meetingIDs%2C%20meetingPwds%7D%0A%09%09set%20minimum%20to%200%0A%09%09repeat%20with%20a%20from%201%20to%20length%20of%20stuff%0A%09%09%09if%20minimum%20is%200%20or%20(length%20of%20item%20a%20of%20stuff)%20is%20less%20than%20minimum%20then%0A%09%09%09%09set%20minimum%20to%20(length%20of%20item%20a%20of%20stuff)%0A%09%09%09end%20if%0A%09%09end%20repeat%0A%09%09set%20%7BmeetingNames%2C%20meetingIDs%2C%20meetingPwds%7D%20to%20%7Bitems%201%20thru%20minimum%20of%20meetingNames%2C%20items%201%20thru%20minimum%20of%20meetingIDs%2C%20items%201%20thru%20minimum%20of%20meetingPwds%7D%0A%09end%20if%0Aend%20lengthCheck%0A%0Aon%20getWinName()%20%23%20yes%20getting%20the%20window%20has%20been%20a%20too%20hard%20process%0A%09launch%20application%20%22zoom.us%22%0A%09try%0A%09%09tell%20application%20%22System%20Events%22%0A%09%09%09tell%20process%20%22zoom.us%22%20to%20set%20wname%20to%20name%20of%20front%20window%0A%09%09end%20tell%0A%09on%20error%20errmsg%20number%20errnum%0A%09%09if%20errnum%20is%20600%20or%20errmsg%20is%20%22System%20Events%20got%20an%20error%3A%20Application%20isn’t%20running.%22%20then%20%23%20System%20Events%20has%20stopped%20working%0A%09%09%09do%20shell%20script%20%22pkill%20System%20Events%22%0A%09%09%09delay%203%0A%09%09%09tell%20application%20%22System%20Events%22%0A%09%09%09%09tell%20process%20%22zoom.us%22%20to%20set%20wname%20to%20name%20of%20front%20window%0A%09%09%09end%20tell%0A%09%09else%20if%20errnum%20is%20-1719%20and%20errmsg%20is%20not%20%22System%20Events%20got%20an%20error%3A%20Can’t%20get%20window%201%20of%20process%20%5C%22zoom.us%5C%22.%20Invalid%20index.%22%20then%0A%09%09%09activate%20me%0A%09%09%09display%20dialog%20%22Please%20enable%20accessibility%20access%20for%20me%20to%20join%20zoom%20for%20you%5CnError%3A%20%22%20%26%20errmsg%20%26%20%22%20%22%20%26%20errnum%0A%09%09%09tell%20application%20%22System%20Preferences%22%0A%09%09%09%09activate%20application%20%22System%20Preferences%22%0A%09%09%09%09reveal%20anchor%20%22Privacy%22%20of%20pane%20id%20%22com.apple.preference.security%22%0A%09%09%09%09authorize%20pane%20id%20%22com.apple.preference.security%22%0A%09%09%09end%20tell%0A%09%09%09set%20temp%20to%20getWinNameLoop((current%20date)%20%2B%2060)%0A%09%09%09if%20length%20of%20temp%20is%203%20and%20item%203%20of%20temp%20is%20true%20then%20error%20item%201%20of%20temp%20number%20item%202%20of%20temp%0A%09%09else%20if%20errmsg%20is%20%22System%20Events%20got%20an%20error%3A%20Can’t%20get%20window%201%20of%20process%20%5C%22zoom.us%5C%22.%20Invalid%20index.%22%20then%0A%09%09%09do%20shell%20script%20%22pkill%20zoom.us%22%0A%09%09%09launch%20application%20%22zoom.us%22%0A%09%09%09set%20temp%20to%20getWinNameLoop((current%20date)%20%2B%2030)%0A%09%09%09if%20length%20of%20temp%20is%203%20and%20item%203%20of%20temp%20is%20true%20then%20error%20item%201%20of%20temp%20number%20item%202%20of%20temp%0A%09%09else%0A%09%09%09display%20dialog%20%22Error%3A%20%22%20%26%20errnum%20%26%20%22.%20%22%20%26%20errmsg%20%26%20%22%5CnPress%20OK%20to%20continue%22%0A%09%09%09emergencyMode()%0A%09%09%09return%0A%09%09end%20if%0A%09end%20try%0A%09return%20wname%0Aend%20getWinName%0A%0Aon%20getWinNameLoop(timeOutTime)%0A%09repeat%0A%09%09try%0A%09%09%09tell%20application%20%22System%20Events%22%0A%09%09%09%09tell%20process%20%22zoom.us%22%20to%20set%20wname%20to%20name%20of%20front%20window%0A%09%09%09end%20tell%0A%09%09%09exit%20repeat%0A%09%09on%20error%20errmsg%20number%20errnum%0A%09%09%09if%20(current%20date)%20%3E%20timeOutTime%20then%20return%20%7Berrmsg%2C%20errnum%2C%20true%7D%0A%09%09end%20try%0A%09end%20repeat%0A%09return%20wname%0Aend%20getWinNameLoop%0A%0Aon%20getIDPwd()%0A%09if%20length%20of%20meetingNames%20is%200%20then%20error%20%22There's%20nothing%20to%20see...%22%20number%20-2573%0A%09set%20choice%20to%20(choose%20from%20list%20meetingNames%20default%20items%20item%201%20of%20meetingNames%20with%20prompt%20%22What%20meeting%20info%20would%20you%20like%20to%20view%3F%22)%20as%20text%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20meetingNames%0A%09%09if%20choice%20is%20(item%20a%20of%20meetingNames%20as%20text)%20then%0A%09%09%09showIDPwd(item%20a%20of%20meetingNames%2C%20item%20a%20of%20meetingIDs%2C%20item%20a%20of%20meetingPwds)%0A%09%09%09exit%20repeat%0A%09%09end%20if%0A%09end%20repeat%0A%09return%20choice%0Aend%20getIDPwd%0A%0Aon%20showIDPwd(meetingName%2C%20meetingID%2C%20meetingPwd)%0A%09set%20tempText%20to%20(%22Meeting%20Name%3A%20%22%20%26%20meetingName%20%26%20%22%5CnMeeting%20ID%3A%20%22%20%26%20meetingID%20%26%20%22%5CnMeeting%20link%3A%20https%3A%2F%2Fzoom.us%2Fj%2F%22%20%26%20meetingID)%0A%09if%20meetingPwd%20is%20not%20missing%20value%20then%20set%20tempText%20to%20(tempText%20%26%20%22%3Fpwd%3D%22%20%26%20meetingPwd)%0A%09display%20dialog%20tempText%20buttons%20%7B%22OK%22%7D%20default%20button%201%0A%09return%0Aend%20showIDPwd%0A%0Aon%20addToList()%0A%09copy%20repeatUntilAnswered(%22What%20meeting%20name%20to%20use%3F%22)%20to%20the%20end%20of%20meetingNames%0A%09repeat%0A%09%09set%20mID%20to%20text%20returned%20of%20(display%20dialog%20%22What%20is%20the%20meeting%20ID%3F%22%20default%20answer%20%22%22)%0A%09%09if%20length%20of%20regexMatch(mID%2C%20%22%2F%5E%5C%5Cd%7B9%2C11%7D%24%2F%22)%20is%20less%20than%201%20then%0A%09%09%09display%20dialog%20%22Meeting%20IDs%20can%20only%20contain%20numbers%2C%20and%20must%20be%20between%209%20and%2011%20characters.%22%20with%20icon%20caution%0A%09%09else%0A%09%09%09exit%20repeat%0A%09%09end%20if%0A%09end%20repeat%0A%09copy%20mID%20to%20the%20end%20of%20meetingIDs%0A%09set%20mPwd%20to%20text%20returned%20of%20(display%20dialog%20%22What%20is%20the%20meeting%20password%3F%20(Required%20if%20set)%22%20default%20answer%20%22%22)%20as%20string%0A%09if%20mPwd%20is%20%22%22%20then%20set%20mPwd%20to%20missing%20value%0A%09copy%20mPwd%20to%20the%20end%20of%20meetingPwds%0A%09return%0Aend%20addToList%0A%0Aon%20changeInfo()%0A%09if%20length%20of%20meetingNames%20is%200%20then%20error%20%22There's%20nothing%20to%20see...%22%20number%20-2573%0A%09set%20rename%20to%20choose%20from%20list%20meetingNames%20with%20prompt%20%22Which%20meeting%20would%20you%20like%20to%20change%3F%22%20default%20items%20item%201%20of%20meetingNames%0A%09if%20rename%20is%20false%20then%20return%0A%09set%20changeChoice%20to%20choose%20from%20list%20%7B%22Name%22%2C%20%22Meeting%20ID%22%2C%20%22Meeting%20Password%22%7D%20with%20prompt%20%22Which%20info%20do%20you%20want%20to%20change%3F%22%20default%20items%20%7B%22Name%22%7D%0A%09if%20changeChoice%20is%20false%20then%20return%0A%09set%20rename%20to%20rename%20as%20text%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20meetingNames%0A%09%09if%20(item%20a%20of%20meetingNames%20as%20text)%20is%20rename%20then%0A%09%09%09set%20changeChoice%20to%20changeChoice%20as%20text%0A%09%09%09set%20mn%20to%20item%20a%20of%20meetingNames%0A%09%09%09if%20changeChoice%20is%20%22Name%22%20then%0A%09%09%09%09set%20item%20a%20of%20meetingNames%20to%20text%20returned%20of%20(display%20dialog%20%22What%20would%20you%20like%20to%20rename%20%22%20%26%20mn%20%26%20%22%20to%3F%22%20default%20answer%20(mn))%0A%09%09%09%09exit%20repeat%0A%09%09%09else%20if%20changeChoice%20is%20%22Meeting%20ID%22%20then%0A%09%09%09%09repeat%0A%09%09%09%09%09set%20temp%20to%20text%20returned%20of%20(display%20dialog%20%22What%20meeting%20ID%20would%20you%20like%20to%20change%20to%20on%20%22%20%26%20mn%20%26%20%22%3F%22%20default%20answer%20(item%20a%20of%20meetingIDs))%0A%09%09%09%09%09if%20length%20of%20regexMatch(temp%2C%20%22%2F%5E%5C%5Cd%7B9%2C11%7D%24%2F%22)%20is%20less%20than%201%20then%0A%09%09%09%09%09%09display%20dialog%20%22Meeting%20IDs%20can%20only%20contain%20numbers%2C%20and%20must%20be%20between%209%20and%2011%20cahracters.%22%20with%20icon%20caution%0A%09%09%09%09%09else%0A%09%09%09%09%09%09exit%20repeat%0A%09%09%09%09%09end%20if%0A%09%09%09%09end%20repeat%0A%09%09%09%09set%20item%20a%20of%20meetingIDs%20to%20temp%0A%09%09%09else%20if%20changeChoice%20is%20%22Meeting%20Password%22%20then%0A%09%09%09%09set%20temp%20to%20text%20returned%20of%20(display%20dialog%20%22What%20meeting%20password%20would%20you%20like%20to%20change%20to%20on%20%22%20%26%20mn%20%26%20%22%3F%22%20default%20answer%20%22%22)%0A%09%09%09%09if%20temp%20is%20%22%22%20then%20set%20temp%20to%20missing%20value%0A%09%09%09%09set%20item%20a%20of%20meetingPwds%20to%20temp%0A%09%09%09end%20if%0A%09%09%09exit%20repeat%0A%09%09end%20if%0A%09end%20repeat%0A%09return%0Aend%20changeInfo%0A%0Aon%20removeFromList()%0A%09if%20length%20of%20meetingNames%20is%200%20then%20error%20%22There's%20nothing%20to%20see...%22%20number%20-2573%0A%09set%20%7BtoRemove%2C%20cleanList%2C%20cleanList2%2C%20cleanList3%7D%20to%20%7B(choose%20from%20list%20meetingNames%20with%20prompt%20%22Remove%20meeting%20from%20list%3A%22%20default%20items%20item%201%20of%20meetingNames)%20as%20text%2C%20%7B%7D%2C%20%7B%7D%2C%20%7B%7D%7D%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20meetingNames%0A%09%09if%20(item%20a%20of%20meetingNames%20as%20text)%20is%20not%20toRemove%20then%0A%09%09%09set%20%7BcleanList%2C%20cleanList2%2C%20cleanList3%7D%20to%20%7BcleanList%20%26%20(item%20a%20of%20meetingNames)%2C%20cleanList2%20%26%20(item%20a%20of%20meetingIDs)%2C%20cleanList3%20%26%20(item%20a%20of%20meetingPwds)%7D%0A%09%09end%20if%0A%09end%20repeat%0A%09set%20%7BmeetingNames%2C%20meetingIDs%2C%20meetingPwds%7D%20to%20%7BcleanList%2C%20cleanList2%2C%20cleanList3%7D%0A%09return%20%7BcleanList%2C%20cleanList2%2C%20cleanList3%7D%0Aend%20removeFromList%0A%0Aon%20versionCheck()%0A%09set%20%7BappVersion%2C%20supportedVersions%2C%20supported%2C%20maxTime%7D%20to%20%7Bversion%20of%20application%20%22zoom.us%22%2C%20%7B%225.2.1%22%7D%2C%20false%2C%20(current%20date)%20%2B%2010%7D%0A%09repeat%20with%20a%20from%201%20to%20length%20of%20supportedVersions%0A%09%09try%0A%09%09%09if%20appVersion%20contains%20(item%20a%20of%20supportedVersions%20as%20text)%20then%0A%09%09%09%09set%20supported%20to%20true%0A%09%09%09%09exit%20repeat%0A%09%09%09end%20if%0A%09%09on%20error%20errmsg%20number%20errnum%0A%09%09%09if%20((current%20date)%20%3E%20maxTime)%20then%20error%20errmsg%20number%20errnum%0A%09%09end%20try%0A%09end%20repeat%0A%09if%20supported%20is%20false%20then%20display%20dialog%20%22Zoom.us%20version%20unsupported!%20You%20may%20need%20to%20do%20it%20manually%22%0A%09userPrompt()%0A%09return%0Aend%20versionCheck%0A%0Aon%20repeatUntilAnswered(prompt)%0A%09repeat%0A%09%09set%20temp%20to%20text%20returned%20of%20(display%20dialog%20prompt%20default%20answer%20%22%22)%0A%09%09if%20temp%20is%20not%20%22%22%20then%20exit%20repeat%0A%09end%20repeat%0A%09return%20temp%0Aend%20repeatUntilAnswered%0A%0Aon%20doWithTimeout(uiScript%2C%20timeoutSeconds)%0A%09set%20endDate%20to%20(current%20date)%20%2B%20timeoutSeconds%0A%09repeat%0A%09%09try%0A%09%09%09run%20script%20%22tell%20application%20%5C%22System%20Events%5C%22%5Cn%22%20%26%20uiScript%20%26%20%22%5Cnend%20tell%22%0A%09%09%09exit%20repeat%0A%09%09on%20error%20errorMessage%20number%20errnum%0A%09%09%09if%20((current%20date)%20%3E%20endDate)%20then%20error%20errorMessage%20number%20errnum%0A%09%09end%20try%0A%09end%20repeat%0Aend%20doWithTimeout%0A%0Aon%20noTime()%0A%09repeat%0A%09%09set%20ids%20to%20text%20returned%20of%20(display%20dialog%20%22Meeting%20ID%22%20default%20answer%20%22%22)%0A%09%09if%20length%20of%20regexMatch(ids%2C%20%22%2F%5E%5C%5Cd%7B9%2C11%7D%24%2F%22)%20is%20less%20than%201%20then%0A%09%09%09display%20dialog%20%22Invalid.%20Meeting%20IDs%20must%20be%20between%209%20to%2011%20characters%20long.%22%20with%20icon%20caution%0A%09%09else%0A%09%09%09exit%20repeat%0A%09%09end%20if%0A%09end%20repeat%0A%09set%20pwd%20to%20text%20returned%20of%20(display%20dialog%20%22Meeting%20password%20(Required%20if%20set)%22%20default%20answer%20%22%22)%0A%09if%20pwd%20is%20%22%22%20then%20set%20pwd%20to%20missing%20value%0A%09joinMeeting(ids%2C%20pwd)%0A%09return%0Aend%20noTime%0A%0Aon%20regexMatch(_subject%2C%20_regex)%0A%09set%20_js%20to%20%22(new%20String(%60%22%20%26%20_subject%20%26%20%22%60)).match(%22%20%26%20_regex%20%26%20%22)%22%0A%09set%20_result%20to%20run%20script%20_js%20in%20%22JavaScript%22%0A%09if%20_result%20is%20null%20or%20_result%20is%20missing%20value%20then%20return%20%7B%7D%0A%09return%20_result%0Aend%20regexMatch%0A%0AversionCheck()", name="_parent");
                break;
        }
    }
    window.addEventListener('hashchange', openAppleScript, false);
    openAppleScript();
</script>
\ No newline at end of file

A assets/css/style.scss => assets/css/style.scss +277 -0
@@ 0,0 1,277 @@
---
---
$background: #1a1a1a;

// Yoink and modified! License: https://github.com/pages-themes/hacker/blob/ad45333b8bfa60b45326efd95a5a6302eb67e268/LICENSE ;;; Source: https://github.com/pages-themes/hacker/blob/master/_sass/jekyll-theme-hacker.scss
@import "rouge-base16-dark";
@import "default_colors";

$body-background: $cod-grey !default;
$body-foreground: $gallery !default;
$header: $conifer !default;
$blockquote-color: $silver-chalice !default;
$blockquote-border: $dove-grey !default;
$container-max-width: 1000px;

@mixin media-max-width($max-width) {
  @media (max-width: $max-width) {
      @content;
  }
}

body {
  margin: 0;
  padding: 0;
  background: #1a1a1a;
  color: $body-foreground;
  font-size: 16px;
  line-height: 1.5;
  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
}

/* General & 'Reset' Stuff */

.container {
  width: 90%;
  max-width: $container-max-width;
  margin: 0 auto;
}

section {
  display: block;
  margin: 0 0 20px 0;
}

h1, h2, h3, h4, h5, h6 {
  margin: 0 0 20px;
}

li {
  line-height: 1.4 ;
}

/* Header, <header>
   header   - container
   h1       - project name
   h2       - project description
*/

header {
  background: rgba(0, 0, 0, 0.1);
 width: 100%;
  border-bottom: 1px dashed $conifer; //header;
  padding: 20px 0;
  margin: 0 0 40px 0;
}

header h1 {
  font-size: 30px;
  line-height: 1.5;
  margin: 0 0 0 -40px;
  font-weight: bold;
  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
  color: $conifer;//$header;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1),
               0 0 5px rgba(181, 232, 83, 0.1),
               0 0 10px rgba(181, 232, 83, 0.1);
  letter-spacing: -1px;
  -webkit-font-smoothing: antialiased;
  @include media-max-width($container-max-width) {
    margin-left: 0;
  }
}


header h1:before {
  content: "./ ";
  font-size: 24px;
}

header h2 {
  font-size: 18px;
  font-weight: 300;
  color: #666;
  margin-bottom: 0px;
}

#downloads .btn {
  display: inline-block;
  text-align: center;
  margin: 0;
}

/* Main Content
*/

#main_content {
  width: 100%;
  -webkit-font-smoothing: antialiased;
}
#main_content img {
  max-width: 100%
}

h1, h2, h3, h4, h5, h6 {
  font-weight: normal;
  font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
  color: $header;
  letter-spacing: -0.03em;
  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1),
               0 0 5px rgba(181, 232, 83, 0.1),
               0 0 10px rgba(181, 232, 83, 0.1);
}

#main_content h1 {
  font-size: 30px;
}

#main_content h2 {
  font-size: 24px;
}

#main_content h3 {
  font-size: 18px;
}

#main_content h4 {
  font-size: 14px;
}

#main_content h5 {
  font-size: 12px;
  text-transform: uppercase;
  margin: 0 0 5px 0;
}

#main_content h6 {
  font-size: 12px;
  text-transform: uppercase;
  color: #999;
  margin: 0 0 5px 0;
}

dt {
  font-style: italic;
  font-weight: bold;
}

ul li {
  list-style-image:url('../images/bullet.svg');
}

blockquote {
  color: $blockquote-color;
  padding-left: 10px;
  border-left: 1px dotted $blockquote-border;
}

pre {
  background: rgba(0, 0, 0, 0.9);
  border: 1px solid rgba(255, 255, 255, 0.15);
  padding: 10px;
  font-size: 16px;
  color: #b5e853;
  border-radius: 2px;
  word-wrap: normal;
  overflow: auto;
  overflow-y: hidden;
}

code.highlighter-rouge {
  background: rgba(0,0,0,0.9);
  border: 1px solid rgba(255, 255, 255, 0.15);
  padding: 0px 3px;
  margin: 0px -3px;
  color: #aa759f;
  border-radius: 2px;
}

table {
  width: 100%;
  margin: 0 0 20px 0;
}

th {
  text-align: left;
  border-bottom: 1px dashed #b5e853;
  padding: 5px 10px;
}

td {
  padding: 5px 10px;
}

hr {
  height: 0;
  border: 0;
  border-bottom: 1px dashed #b5e853;
  color: #b5e853;
}

/* Buttons
*/

.btn {
  display: inline-block;
  background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.3), rgba(35, 35, 35, 0.3) 50%, rgba(10, 10, 10, 0.3) 50%, rgba(0, 0, 0, 0.3));
  padding: 8px 18px;
  border-radius: 50px;
  border: 2px solid rgba(0, 0, 0, 0.7);
  border-bottom: 2px solid rgba(0, 0, 0, 0.7);
  border-top: 2px solid rgba(0, 0, 0, 1);
  color: rgba(255, 255, 255, 0.8);
  font-family: Helvetica, Arial, sans-serif;
  font-weight: bold;
  font-size: 13px;
  text-decoration: none;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.75);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.btn:hover {
  background: -webkit-linear-gradient(top, rgba(40, 40, 40, 0.6), rgba(35, 35, 35, 0.6) 50%, rgba(10, 10, 10, 0.8) 50%, rgba(0, 0, 0, 0.8));
}

.btn .icon {
  display: inline-block;
  width: 16px;
  height: 16px;
  margin: 1px 8px 0 0;
  float: left;
}

/* Links
   a, a:hover, a:visited
*/

a {
  color: #63c0f5;
  text-shadow: 0 0 5px rgba(104, 182, 255, 0.5);
}

/* Clearfix */

.cf:before, .cf:after {
  content:"";
  display:table;
}

.cf:after {
  clear:both;
}

.cf {
  zoom:1;
}

#a-title {
  text-decoration: none;
}
 
/* No more unoriginal content, time for some real stuff */

textarea, input, button {
	background: $background;
	color: $gallery;
}


A assets/images/bullet.svg => assets/images/bullet.svg +1 -0
@@ 0,0 1,1 @@
<svg viewBox="0 0 24 10" width="24" height="10" xmlns="http://www.w3.org/2000/svg"><path d="m13 1s9.54 4 9.54 4-9.54 3.99-9.54 3.99m-11.99-7.97s9.49 4 9.49 4-9.48 3.97-9.48 3.97" fill="none" stroke="#b5e853" stroke-width="2"/></svg>

D assets/style/_post_style.sass => assets/style/_post_style.sass +0 -66
@@ 1,66 0,0 @@
body
  hyphens: none

\:root
  --text-primary: #b6b6b6
  --text-secondary: #ececec
  --bg-primary: #23232e
  --bg-secondary: #141418

.navbar
  bottom: 0
  width: 100vw
  height: 3rem
  position: fixed
  padding-bottom: 30px !important
  background-color: #23232e
  text-decoration: none

main
    margin: 0 auto
    margin-bottom: 5.1rem !important
    width: clamp(30ch, 91%, 75ch)
    line-height: 1.7em
    // height: 100px // this line hides bottom page links, not sure why this is here

.navbar-nav
  list-style: none !important
  margin-left: -40px !important
  display: flex
  align-items: center
  overflow: auto
  flex-direction: row
  margin-top: 3px
  overflow-x: auto
  overflow-y: none

.nav-item
  width: 100%
  &:last-child
    margin-top: auto

.nav-link
  display: flex
  align-items: center
  height: 5rem
  text-decoration: none !important
  justify-content: center
  svg
    min-width: 1.5rem
    margin: 0 1.5rem
    width: 24px
    height: 24px

.link-text
  display: none
  margin-left: 1rem

table
  width: 100%

th, td
  padding: 2px 5px

table, th, td
  border: 1px solid currentColor
  border-collapse: collapse

D assets/style/authors.sass => assets/style/authors.sass +0 -32
@@ 1,32 0,0 @@
---
---

@import './assets/style/_post_style.sass'

.profile_picture
  height: 100px
  object-fit: scale-down

main
  align-items: center
  footer
    margin-top: auto
  h1
    margin-right: auto
  #username, #name
    margin: 0

.socials
  display: grid
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  width: 100%
  grid-gap: 1rem
  .link
    border: black solid
    background-color: var(--bg-secondary)
    border-radius: 20px
    text-align: center
    padding: 20px 0
    transition: all 200ms ease-in-out
  .link:hover
    transform: scale(1.1)

D assets/style/ideas.sass => assets/style/ideas.sass +0 -5
@@ 1,5 0,0 @@
---
---

article form textarea
  width: #{'min(98%, 37rem)'}

D assets/style/main.sass => assets/style/main.sass +0 -83
@@ 1,83 0,0 @@
---
---

\:root
  --main-bg: #181a1b
  --secondary-bg: #141414
  --main-color: #e8e6e3
  --secondory-color: #fff

@media (prefers-color-scheme: dark)
  \:root
    --main-bg: #181a1b
    --secondary-bg: #141414
    --main-color: #e8e6e3
    --secondory-color: #fff

@media (prefers-color-scheme: light)
  \:root
    --main-bg: #dcdad7
    --secondary-bg: #c4c1bc
    --main-color: #181a1b
    --secondory-color: #303436

body
  background: var(--main-bg)
  color: var(--main-color)
  overflow-wrap: break-word
  font-family: Arial
  font-size: #{'min(4vw, 18px)'}
  margin: 0
  padding: 0
  hyphens: none

main
  margin-right: 10px

a:not(#aname)
  color: #ff6a00
  cursor: pointer
  &:link
    color: orange
  &:visited
    color: #ff6a00
  &:hover
    color: red
  &:active
    color: green

textarea, hr
  color: var(--main-color)

textarea, button, input
  background-color: var(--secondary-bg)

button, input
  color: var(--secondory-color)
  border: 0 solid transparent
  border-radius: 2px

small
  font-size: 12px
/* https://developer.mozilla.org/en-US/docs/Web/CSS/Layout_cookbook/Sticky_footers */
main h1, footer
  flex-shrink: 0

main
  article, #content
    h1, h2, h3, h4, h5, h6, p, a
      margin-top: 0
    flex-grow: 1
  min-height: 100vh
  display: flex
  flex-direction: column
/* end of assisted help */
footer
  display: flex
  justify-content: center
  grid-gap: 1rem
  a
    color: gray !important
    transition: color 0.2s ease-in-out
    &:hover
      color: currentColor !important

D assets/style/nav.sass => assets/style/nav.sass +0 -80
@@ 1,80 0,0 @@
---
---

\:root
  --text-primary: #b6b6b6
  --text-secondory: #ececec
  --bg-primary: #23232e
  --bg-secondory: #141418

.navbar
  transition: width 250ms ease
  hyphens: none
  width: 5rem
  height: 100vh
  position: fixed
  padding-bottom: 30px !important
  background-color: #23232e
  text-decoration: none

main
  margin-left: 5.5rem

.navbar-nav
  list-style: none !important
  margin-left: -40px !important
  display: flex
  flex-direction: column
  align-items: center
  overflow: auto

.nav-item
  width: 100%
  &:last-child
    margin-top: auto

.nav-link
  display: flex
  align-items: center
  height: 5rem
  text-decoration: none !important
  svg
    min-width: 1.5rem
    margin: 0 1.5rem
    width: 24px
    height: 24px

.link-text
  display: none
  margin-left: 1rem

@media only screen and (max-width:600px)
  .navbar
    bottom: 0
    width: 100vw
    height: 3rem

  .navbar-nav
    flex-direction: row
    margin-top: 3px
    overflow-x: auto
    overflow-y: none

  .nav-link
    justify-content: center

  main
    margin-left: 0.5rem !important
    margin-bottom: 5.1rem !important
    min-height: calc(100vh - 5.1rem) !important

@media only screen and (min-width:600px)
  .navbar
    top: 0
    width: 5rem
    height: 100vh
    overflow-y: auto
    &:hover
      width: 16rem
      .link-text
        display: inline

D assets/style/post.sass => assets/style/post.sass +0 -10
@@ 1,10 0,0 @@
---
---

@import './assets/style/_post_style.sass'

main
  img
    object-fit: scale-down
    width: 100%


D assets/style/post_style.sass => assets/style/post_style.sass +0 -4
@@ 1,4 0,0 @@
---
---

@import './assets/style/_post_style.sass'

D challenges.md => challenges.md +0 -13
@@ 1,13 0,0 @@
---
title: Challenges
description: Challenges you can do if you're bored.
---
## Challenges
Bored? Well, you can try and complete some challenges.

**Challenges:**
- Install [Arch Linux](https://wiki.archlinux.org/title/Installation_guide)
- Try to find a word that rhymes like q and queue, but for H (please [email me if you find it](mailto:jackson@jacksonchen666.com).
- Find all rickrolls on this website

If you ever complete these challenges, you can [email me](mailto:jackson@jacksonchen666.com)
\ No newline at end of file

D coding.md => coding.md +0 -10
@@ 1,10 0,0 @@
---
title: Coding stuff
description: JacksonChen666's page of code
---
{% capture stuff %}[Python](https://gitlab.com/JacksonChen666/Random-Python-Ideas-2)
[AppleScript](apple-script)
[Coding time stats](https://wakatime.com/@JacksonChen666)
[Portfolio](portfolio)
{% endcapture %}
{{ stuff | newline_to_br }}

D colorful.css => colorful.css +0 -10
@@ 1,10 0,0 @@
@keyframes colorful {
    100%{
        filter:hue-rotate(360deg);
    }
}
html, * {
    background-color: red;
    margin: 0px;
    animation:colorful var(--animation-time,10s) linear infinite;
}
\ No newline at end of file

D endless-typing/endless-typing.css => endless-typing/endless-typing.css +0 -13
@@ 1,13 0,0 @@
body{min-height: 100vh; margin: 0; font-size: 1.2rem;}
footer{position: absolute; bottom: 0; width: 100%; height: 4rem; text-align: center;}
#typing{text-align: center; padding-top: 18vh; display: flex; flex-direction: column; justify-content: center; align-items: center;}
#typing #outputTyping{margin-top: 100px; width: 80%; height: 20vh; font-size: 1.25rem;}
#typing #output{width: 100%; height: 100%; resize: none;}
#typing #input{height: 30px; width: 90%;}
#typing, #typing #input{font-family: monospace; font-size: 1.8rem}
.correct{color: green;}
.incorrect{color: red;}

@media (prefers-color-scheme: dark){ /* dark reader, but with less */
    html, input, textarea{background-color: #181a1b; border-color: #575757; color: #e8e6e3;}
}
\ No newline at end of file

D endless-typing/endless-typing.js => endless-typing/endless-typing.js +0 -79
@@ 1,79 0,0 @@
"use strict";
let inputBox = document.querySelector("#input");
let toType = document.querySelector("#toType");
let toTypeNext = document.querySelector("#toTypeNext");
let outputTyping = document.querySelector("#output");
let wpmCount = document.querySelector("#wpm");
let wordsAmount = 10;
var charactersTyped = 0;
var started = false;
var startTime;
var held = [];

function getWords() {
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.open("GET", "https://gist.githubusercontent.com/deekayen/4148741/raw/98d35708fa344717d8eee15d11987de6c8e26d7d/1-1000.txt", false);
    xmlHttp.send(null);
    return xmlHttp.responseText.split("\n");
}

function highlight(text) {
    var input = inputBox.value;
    var newInnerHTML = "";
    for (var i = 0; text.length > i; i++) {
        if (parseInt(i) + 1 > input.length) {
            break;
        }
        newInnerHTML += `<span class='${input[i] === text[i] ? "correct" : "incorrect"}'>${text[i]}</span>`;
    }
    newInnerHTML += text.substring(parseInt(i));
    toType.innerHTML = newInnerHTML;
}

let words = getWords();

function randomWords() {
    var wordsChoice = [];
    while (wordsChoice.length != wordsAmount) {
        wordsChoice.push(words[parseInt(Math.random() * words.length + 1)]);
    }
    return wordsChoice.join(" ");
}

function calculateWPM() {
    if (!started) {
        return;
    }
    wpmCount.innerText = Math.round((charactersTyped / 5) / ((Date.now() - startTime) / 1000 / 60), 0);
}

toType.innerText = randomWords();
toTypeNext.innerText = randomWords();
inputBox.addEventListener('keyup', e => {
    held[e.keyCode] = false;
    highlight(toType.innerText);
    if (toType.innerText + " " === inputBox.value) {
        toType.innerText = toTypeNext.innerText;
        toTypeNext.innerText = randomWords();
        inputBox.value = "";
    }
    if (e.key.length !== 1) {
        outputTyping.value += `<${e.key}>`
    }
    else {
        outputTyping.value += e.key;
        if (started === false) {
            started = true;
            startTime = Date.now();
        }
        charactersTyped++;;
    }
});
inputBox.addEventListener('keydown', e => {
    if (held[e.keyCode] && e.keyCode >= 32) {
        e.preventDefault();
        return;
    }
    held[e.keyCode] = true;
})
setInterval(calculateWPM, 100);
\ No newline at end of file

D endless-typing/index.html => endless-typing/index.html +0 -27
@@ 1,27 0,0 @@
<!DOCTYPE html>
<html>
    <head>
        <script src="endless-typing.js" defer></script>
        <link rel="stylesheet" href="endless-typing.css">
        <meta name="viewport" content="width=device-width initial-scale=1">
        <title>Endless typing</title>
    </head>
    <body>
        <main>
            <div id="typing">
                <p id="toType"><noscript>Please enable JavaScript to continue<style>#input{display:none;}</style></noscript></p>
                <input type="text" id="input">
                <p id="toTypeNext"></p>
                <p>Gross WPM: <span id="wpm">0</span></p>
                <div id="outputTyping">
                    <p>Raw typing output:</p>
                    <textarea id="output" disabled></textarea>
                </div>
            </div>
        </main>
        <footer>
            <hr>
            <p>Created by JacksonChen666. MIT License &#169; 2020</p>
        </footer>
    </body>
</html>

D favicon.ico => favicon.ico +0 -0
M feedback.md => feedback.md +1 -2
@@ 1,7 1,6 @@
---
title: Video Feedback and Criticism
---
<link rel="alternate" type="application/rss+xml" href="{{ '/feeds/feedback.xml' | relative_url }}" />
## Video Feedback and Criticism
Maybe you can influence my video style to what more people would say as a more enjoyable experience.



@@ 50,7 49,7 @@ Abbreviations for responses to feedback:
</script>
{% if site.data.feedback.size %}
{% assign loopOffset = -1 | minus: 0 %}
{% assign loopLimit = 100 | plus: loopOffset | times: -1 %}
{% assign loopLimit = 100 | plus: 0 | times: -1 %}
{% for i in (loopLimit..loopOffset) reversed %}
{% assign thing = site.data.feedback[i] %}
{% if thing.output %}

D fps.md => fps.md +0 -49
@@ 1,49 0,0 @@
---
title: FPS test
description: Seeing your browser FPS
layout: none
---
<html lang="en">
<head>
    <style>
        html {
            font-family: Arial, Helvetica, sans-serif;
        }
        main div {
            text-align: center;
        }
    </style>
</head>
<body>
<main>
<div>
    <p>Your FPS is:</p>
    <p id="fps"></p>
    <p>When you specify to lag, javascript will start dividing random numbers 10 million times when it's running.</p>
    <button id="lagButton">Lag</button>
</div>
<script>
    var prev;
    const htmlFPSElement = document.getElementById("fps");
    const lagButton = document.getElementById("lagButton");
    var lag = false;
    lagButton.onclick = () => {
        lag = !lag;
    }
    function drawCallback(time) {
        if (prev != undefined) {
            htmlFPSElement.innerHTML = `${Math.round(1000/(time - prev))}`;
        }
        if (lag) {
            for (var i = 0; i < 10000000; i++) {
                Math.random() / Math.random();
            }
        }
        prev = time;
        window.requestAnimationFrame(drawCallback);
    }
    window.requestAnimationFrame(drawCallback);
</script>
</main>
</body>
</html>
\ No newline at end of file

D hue-colorful.css => hue-colorful.css +0 -10
@@ 1,10 0,0 @@
@keyframes hue-colorful { /* This is the animation. */
    0% {
        color: red;
    }
    100% {
        filter: hue-rotate(360deg);
        color: red;
    }
}
.colorful{animation: hue-colorful 5s linear infinite} /* This is how you put the animation in. */
\ No newline at end of file

M ideas.md => ideas.md +0 -1
@@ 3,7 3,6 @@ title: Ideas
description: Giving ideas to JacksonChen666 on this page since i don't know
custom_head: '<link rel="stylesheet" type="text/css" href="/assets/style/ideas.css">'
---
<link rel="alternate" type="application/rss+xml" href="{{ '/feeds/ideas.xml' | relative_url }}" />
{% include post_text.md textarea_name="i" textarea_max_length=10000 textarea_columns=80 textarea_rows=20 textarea_placeholder="Ideas or Suggestions" submit_value="GIVE IDEA" %}

{% if site.data.idea.size %}

M index.md => index.md +3 -55
@@ 1,57 1,5 @@
---
title: Home
title: Posts
description: Blog posts by JacksonChen666 basically
---
<script src="randomQuotes.js"></script>

## Hello, My name is Jackson
<small id="random_quotes"><noscript>"Please enable JavaScript to view these quotes" -JacksonChen666</noscript></small>

I like programming and software, and tend to have a collection of stuff related to it.
Programming projects, and operating systems setup in other ways like with encryption.

I tend to use the internet quite a lot, like "if you're ever gonna give me unrestricted access to the internet for long term I'll use hundreds of gigabytes of data" kind of internet guy.

[Oh hey, you should check out my latest video here](/latest-video)

That's all for here, you can continue exploring as I continue creating and expanding this website to whatever it might be.<br>
While you are here, you might as well help me give some ideas so I can continue creating. You can also use [GitLab](https://gitlab.com) for it.

[Website suggestions and ideas](ideas)

[Website issues](https://gitlab.com/JacksonChen666/JacksonChen666.gitlab.io/issues)

<script type="text/javascript">
    var quotesLists = [
        "How hard is it to use a computer?",
        "I like bill wurtz",
        "please stop looking at my twitter banner",
        "hi youtube",
        "Wait, am I a developer?",
        "Wait, am I a programmer?",
        "I have reached the state of unmotivated boredom",
        "Coding is fun",
        "Why are still alive",
        "h",
        "<a href='https://twitter.com/jacksonchen666/status/1303089255007350787'>Mark Rober</a>",
        "What a nice day",
        "I am not interesting...",
        "distraction is inevitable",
        "Hello?",
        "haha very funny",
        "Do you like my website?",
        "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
        "why won't this WORK",
        "new video coming soon. maybe. maybe not. maybe i'm gone. idk",
        "no, I would rather destroy humanity other than signing up for an email list",
        "Please enable JavaScript to view these quotes",
        "RSS in 2021",
        "Posts? Yeah blogs but like it's something"
    ]
    var endQuotes = "JacksonChen666";
    addQuotesListener("click", "random_quotes", quotesLists, endQuotes);
    constantRandomQuotes(quotesLists, endQuotes);
    randomQuotes(["Welcome to my new domain!"], "JacksonChen666");
</script>
<hr>

{% include post_list.md posts_list=site.posts offset=0 amount=10 %}
{% include post_list.md posts_list=site.posts offset=0 amount=100 %}

D latest-video.md => latest-video.md +0 -10
@@ 1,10 0,0 @@
---
layout: null
---
<script src="youtube-latest.js"></script>
<script>
    getLatestVideoID(function(id) {
        location.replace("https://youtube.com/watch?v=" + id);
    });
</script>
<noscript>Just because you have javascript disabled doesn't mean you can be redirected to my new video. <a href="https://youtube.com/JacksonChen666">Here's the channel link anyways.</a></noscript>
\ No newline at end of file

D life.md => life.md +0 -16
@@ 1,16 0,0 @@
---
title: My life
---
## My life

**EDIT:** i have no life

Interests:

[Programming](https://gitlab.com/JacksonChen666)<br>
Socializing with school students<br>
Video games<br>
[Watching youtube videos](https://youtube.com)<br>
[Making youtube videos](https://youtube.com/JacksonChen666)<br>
[Guest 666](https://www.youtube.com/watch?v=Gc2u6AFImn8&lc=UgylqFtsBWvFWnkQxFp4AaABAg) (yes i am normal and not)<br>
[Master chief](https://youtu.be/Tt7bzxurJ1I) (idk don't ask)

D memes.md => memes.md +0 -13
@@ 1,13 0,0 @@
---
title: Memes
description: Best of memes*
---
<style>
    .headline{font-size:1.75rem;}
</style>
{% capture memes %}[Toast of the peak](https://youtu.be/7FEuZYRx41M){: class="headline"}
[h](https://youtu.be/7FEuZYRx41M?t=247)
[This website was created on February 26th \t](https://youtu.be/7FEuZYRx41M?t=264)
[hello everybody M Y &nbsp; N &nbsp; A &nbsp; M &nbsp; E &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; I &nbsp; &nbsp; &nbsp; S &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; J &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; A &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; C &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; K &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; S &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; O &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; N](https://youtu.be/7FEuZYRx41M?t=370)
{% endcapture %}
{{ memes | newline_to_br}}
\ No newline at end of file

D more-ideas.md => more-ideas.md +0 -12
@@ 1,12 0,0 @@
---
title: Old Ideas
description: Old suggested ideas
---
[More current ideas](ideas)

{% include post_text.md textarea_name=i textarea_max_length=100000 textarea_columns=40 textarea_rows=10 textarea_placeholder="Ideas or Suggestions" submit_value="GIVE IDEA" %}
{% if site.data.idea.count >= 100 %}
{% include questions_ideas_csv.md csv_file=site.data.idea amount=900 offset=100 %}
{% else %}
Hey, there's less than a hundred ideas. Leave me alone.
{% endif %}
\ No newline at end of file

D more-questions.md => more-questions.md +0 -12
@@ 1,12 0,0 @@
---
title: Old Questions
description: Old questions asked by the people of idk
---
[Back to recent questions](questions)

{% include post_text.md textarea_name=q textarea_max_length=10000 textarea_columns=20 textarea_rows=5 textarea_placeholder="Questions" submit_value="ASK" %}
{% if site.data.question.size >= 100 %}
{% include questions_ideas_csv.md csv_file=site.data.question amount=1000 offset=100 %}
{% else %}
Hey, there's less than a hundred questions. Leave me alone.
{% endif %}

M portfolio.md => portfolio.md +0 -1
@@ 24,4 24,3 @@ description: Portfolio of things I made in the programming world
        - [Add the amount of servers online on the bungeecord onto the MOTD](https://gitlab.com/JacksonChen666/BungeecordMOTDServerCount)
- **HTML, JS, and the related stuff (self-taught)**
    - [My website](/)
    - [Endless typing](/endless-typing)

D posts.md => posts.md +0 -7
@@ 1,7 0,0 @@
---
title: Posts
description: Blog posts by JacksonChen666 basically
---
[RSS](/posts.xml)

{% include post_list.md posts_list=site.posts offset=0 amount=100 %}

M questions.md => questions.md +0 -1
@@ 2,7 2,6 @@
title: Questions
description: Questions for JacksonChen666
---
<link rel="alternate" type="application/rss+xml" href="{{ '/feeds/questions.xml' | relative_url }}" />
{% include post_text.md textarea_name="q" textarea_max_length=10000 textarea_columns=40 textarea_rows=10 textarea_placeholder="Questions" submit_value="ASK" %}

{% if site.data.question.size %}

D randomQuotes.js => randomQuotes.js +0 -20
@@ 1,20 0,0 @@
var defaultQList = ["<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/n0XaSvhTYd4?autoplay=1&controls=0&fs=0&loop=1&modestbranding=1&iv_load_policy=3\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen></iframe>"]
var defaultEQuote = "bill wurtz"

function randomQuotes(quotesList=defaultQList, endQuote=defaultEQuote, ElementId="random_quotes"){
	var quote = quotesList[Math.floor(Math.random() * quotesList.length)];
	document.getElementById(ElementId).innerHTML = "\"" + quote + "\" " + "-" + endQuote;
	return; 
}

function addQuotesListener(eventWithoutOn, ElementId, quotesList=defaultQList, endQuote=defaultEQuote){
	document.getElementById(ElementId).addEventListener(eventWithoutOn, function(){randomQuotes(quotesList, endQuote)});
	document.getElementById(ElementId).style.cursor = "pointer"; // yes, it is clickable from now on
}

function constantRandomQuotes(quotesList=defaultQList, endQuote=defaultEQuote, ElementId="random_quotes", time=10){
	randomQuotes(quotesList, endQuote, ElementId);
	if (quotesList != defaultQList && endQuote != defaultEQuote){
		setInterval(function(){randomQuotes(quotesList, endQuote, ElementId);}, time * 1000);
	}
}
\ No newline at end of file

M rss.md => rss.md +0 -3
@@ 4,8 4,5 @@ description: RSS (Atom version) feeds for JacksonChen666
---
# RSS Feeds
- [Posts]({{ '/feeds/posts.xml' | relative_url }})
- [Questions]({{ '/feeds/questions.xml' | relative_url }})
- [Ideas]({{ '/feeds/ideas.xml' | relative_url }})
- [Feedback]({{ '/feeds/feedback.xml' | relative_url }})
- Emergency Announcements (example: termination of accounts, subject to changes and coming soon)
- New YouTube videos (coming soon)

D sitemap.md => sitemap.md +0 -8
@@ 1,8 0,0 @@
---
title: Site Index
description: The site's pages
---
## Site Index

{% for i in site.pages %}{% if i.sitemap_hidden != true %}{% if i.name contains ".md" %}
- [{{i.name | replace: "-", " " | replace: ".md", "" | capitalize}}]({{i.url | replace: ".html", ""}}){% endif %}{% endif %}{% endfor %}

M sitemap.xml => sitemap.xml +2 -1
@@ 1,4 1,5 @@
---
layout: none
---
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">


@@ 9,4 10,4 @@
    <url>
        <loc>{{i.url | absolute_url | xml_escape}}</loc>
    </url>{% endfor %}
</urlset>
\ No newline at end of file
</urlset>

D submission/submitted.md => submission/submitted.md +0 -9
@@ 1,9 0,0 @@
---
title: Submission
sitemap_hidden: true
---
## thank

i will check

<a href='javascript:history.back();'>back</a>

D submission/too-large => submission/too-large +0 -9
@@ 1,9 0,0 @@
---
title: Too much input
sitemap_hidden: true
---
## oh, i'm over whelmed!

You need not over 10000 characters unless essay mode is engaged, or you're just trying to be an ass and cause a DoS.

<a href="/">Go home. I don't want something that big.</a>

D submission/wtf.md => submission/wtf.md +0 -15
@@ 1,15 0,0 @@
---
title: Wtf
sitemap_hidden: true
---
## what

what are you trying to do

what are you trying to tell me

you messed up your input

and then you're going to retype the entire thing

<a href='javascript:history.back();'>try again</a>

D thanks.md => thanks.md +0 -18
@@ 1,18 0,0 @@
---
title: Thanks
description: The thanks for everyone who made JacksonChen666's website possible
---

{% capture thanks %}## Thanks for most of this website's design:
[Sidebar](https://youtu.be/biOMz4puGt8){: target="_blank" rel="noopener noreferrer"}: [Fireship](https://www.youtube.com/channel/UCsBjURrPoezykLs9EqgamOA){: target="_blank" rel="noopener noreferrer"}
Sidebar svg icons: [css.gg](https://css.gg){: target="_blank" rel="noopener noreferrer"} (except for questions. it's just a question mark lol)
[Dark Reader](https://darkreader.org/){: target="_blank" rel="noopener noreferrer"}: Theming my website (of course I didn't get in touch with them)

## Thanks for the software that helped reduce size:
[Jekyll](https://jekyllrb.com){: target="_blank" rel="noopener noreferrer"}: Static website generator
[ImageOptim](https://imageoptim.com){: target="_blank" rel="noopener noreferrer"}: Image size reduction

## Thanks for the hosting of my website:
GitLab Pages: Hosting a static version of my website
{% endcapture %}
{{ thanks | newline_to_br }}

D youtube-latest.js => youtube-latest.js +0 -21
@@ 1,21 0,0 @@
// Source: https://stackoverflow.com/a/45342740/13104233
var channelID = "UCut1u2mQy5LMZw5UKgOQKjA";
var reqURL = "https://www.youtube.com/feeds/videos.xml?channel_id=";

// Fetching: https://www.codegrepper.com/code-examples/javascript/get+json+data+from+url+javascript
function getLatestVideoID(after) {
    getChannelInformation(function (jsonData) {
        var link = jsonData.items[0].link;
        var id = link.substr(link.indexOf("=") + 1);
        after(id);
    });
}

function getChannelInformation(after) {
    fetch("https://api.rss2json.com/v1/api.json?rss_url=" + encodeURIComponent(reqURL) + channelID)
        .then(res => res.json())
        .then((jsonData) => {
            after(jsonData);
        })
        .catch(err => { throw err });
}
\ No newline at end of file