initial without assets to not bloat the repo

This commit is contained in:
sneakers-the-rat 2022-11-16 20:50:17 -08:00
commit bbf802793a
36 changed files with 1386 additions and 0 deletions

5
.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
_site
.sass-cache
.jekyll-cache
.jekyll-metadata
vendor

37
Gemfile Normal file
View file

@ -0,0 +1,37 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.3.1"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
gem "jekyll-paginate", "~> 1.1"
gem "jekyll-seo-tag", "~> 2.8"
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", ">= 1", "< 3"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
# do not have a Java counterpart.
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]

86
Gemfile.lock Normal file
View file

@ -0,0 +1,86 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.1)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.1.10)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.15.5)
forwardable-extended (2.6.0)
http_parser.rb (0.8.0)
i18n (1.12.0)
concurrent-ruby (~> 1.0)
jekyll (4.3.1)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-paginate (1.1.0)
jekyll-sass-converter (2.2.0)
sassc (> 2.0.1, < 3.0)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
listen (3.7.1)
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)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.0)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.5)
rouge (4.0.0)
safe_yaml (1.0.5)
sassc (2.4.0)
ffi (~> 1.9)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.3.0)
webrick (1.7.0)
PLATFORMS
x86_64-darwin-21
DEPENDENCIES
http_parser.rb (~> 0.6.0)
jekyll (~> 4.3.1)
jekyll-feed (~> 0.12)
jekyll-paginate (~> 1.1)
jekyll-seo-tag (~> 2.8)
minima (~> 2.5)
tzinfo (>= 1, < 3)
tzinfo-data
wdm (~> 0.1.1)
BUNDLED WITH
2.3.25

66
_config.yml Normal file
View file

@ -0,0 +1,66 @@
# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely edit after that. If you find
# yourself editing this file very often, consider using Jekyll's data files
# feature for the data you need to update frequently.
#
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'bundle exec jekyll serve'. If you change this file, please restart the server process.
#
# If you need help with YAML syntax, here are some quick references for you:
# https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
# https://learnxinyminutes.com/docs/yaml/
#
# Site settings
# These are used to personalize your new site. If you look in the HTML files,
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
# You can create any custom variable you would like, and they will be accessible
# in the templates via {{ site.myvariable }}.
title: jon-e.net
email: j@nny.fyi
description: >- # this means to ignore newlines until "baseurl:"
jon-e.net - Internet Website
baseurl: "" # the subpath of your site, e.g. /blog
url: "https://jon-e.net" # the base hostname & protocol for your site, e.g. http://example.com
twitter_username: json_dirs
github_username: sneakers-the-rat
include:
- _pages
# Build settings
plugins:
- jekyll-feed
- jekyll-seo-tag
markdown: kramdown
# assets
sass:
sass_dir: _sass
style: compressed
# Permalinks
permalink: /:year-:month-:day/:title
# Exclude from processing.
# The following items will not be processed, by default.
# Any item listed under the `exclude:` key here will be automatically added to
# the internal "default list".
#
# Excluded items can be processed by explicitly listing the directories or
# their entries' file path in the `include:` list.
#
# exclude:
# - .sass-cache/
# - .jekyll-cache/
# - gemfiles/
# - Gemfile
# - Gemfile.lock
# - node_modules/
# - vendor/bundle/
# - vendor/cache/
# - vendor/gems/
# - vendor/ruby/

6
_includes/analytics.html Normal file
View file

@ -0,0 +1,6 @@
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', '{{ site.google_analytics }}', 'auto');
ga('send', 'pageview');
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>

View file

@ -0,0 +1,11 @@
<!-- Start disqus -->
<script src="{{ "/assets/js/disqusLoader.js" | relative_url }}" /></script>
<div id="disqus_thread"><h3>Discussion and feedback</h3></div>
<div class="disqus"></div>
<script>
disqusLoader('.disqus', {
scriptUrl: 'https://{{ site.disqus }}.disqus.com/embed.js'
});
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<!-- End disqus -->

6
_includes/footer.html Normal file
View file

@ -0,0 +1,6 @@
<footer>
<span>
&copy; <time datetime="{{ site.time }}">{{ site.time | date: '%Y' }}</time> {{ site.author.name }}. I speak only for myself.
<!-- Made with Jekyll using a customized https://github.com/chesterhow/tale/ theme. -->
</span>
</footer>

37
_includes/head.html Normal file
View file

@ -0,0 +1,37 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{% seo %}
<!-- CSS -->
<link rel="stylesheet" href="{{ "/assets/main.css" | relative_url }}">
<!-- scripts -->
<script src="{{ "/assets/js/jquery.min.js" | relative_url }}"></script>
<script src="{{ "/assets/js/sidenotes.js" | relative_url }}"></script>
{% if page.include_stl_viewer_js -%}
<script src="{{ "/assets/js/stlv/three.min.js" | relative_url }}"></script>
<script src="{{ "/assets/js/stlv/WebGL.js" | relative_url }}"></script>
<script src="{{ "/assets/js/stlv/STLLoader.js" | relative_url }}"></script>
<script src="{{ "/assets/js/stlv/OrbitControls.js" | relative_url }}"></script>
<script src="{{ "/assets/js/stlviewer-datatag.js" | relative_url }}"></script>
{% endif -%}
<!-- Favicon -->
{% for file in site.static_files -%}
{% if file.path contains '/assets/favicon-' -%}
{% assign parts = file.basename | split: '-' %} <link rel="icon" type="image/png" sizes="{{ parts[1] }}" href="{{ file.path | relative_url }}">
{% endif -%}
{% endfor %}
<link rel="shortcut icon" href="{{ 'favicon.ico' | relative_url }}">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<!-- RSS -->
{% feed_meta %}
<!-- Google Analytics-->
{% if site.google_analytics and jekyll.environment == 'production' %}
{% include analytics.html %}
{% endif %}
</head>

12
_includes/navigation.html Normal file
View file

@ -0,0 +1,12 @@
<nav class="nav">
<div class="nav-container">
<a href="{{ site.baseurl }}/">
<h2 class="nav-title"><img src="{{ '/assets/favicon-32x32.png' | prepend: site.baseurl }}" srcset="{{ '/assets/favicon-64x64.png' | prepend: site.baseurl }} 2x, {{ '/assets/favicon-96x96.png' | prepend: site.baseurl }} 3x, {{ '/assets/favicon-128x128.png' | prepend: site.baseurl }} 4x, {{ '/assets/favicon-256x256.png' | prepend: site.baseurl }} 8x"> {{ site.title }}</h2>
</a>
<ul>
<li><a href="{{ '/posts/' | prepend: site.baseurl }}">Posts</a></li>
<li><a href="{{ '/tags/' | prepend: site.baseurl }}">Tags</a></li>
<li><a href="{{ '/about/' | prepend: site.baseurl }}">About</a></li>
</ul>
</div>
</nav>

16
_layouts/default.html Normal file
View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body>
{% include navigation.html %}
<main>
{{ content }}
</main>
{% include footer.html %}
</body>
</html>

29
_layouts/home.html Normal file
View file

@ -0,0 +1,29 @@
---
layout: default
---
<div class="catalogue">
{% for post in paginator.posts %}
<a href="{{ post.url | prepend: site.baseurl }}" class="catalogue-item">
<div>
<time datetime="{{ post.date }}" class="catalogue-time">{{ post.date | date: "%Y-%m-%d" }}</time>
<h1 class="catalogue-title">{{ post.title }}</h1>
<div class="catalogue-line"></div>
<p>{% if post.perex -%}{{ post.perex }}{% else -%}{{ post.content | strip_html | truncatewords: 30 }}{% endif -%}</p>
</div>
</a>
{% endfor %}
</div>
<div class="pagination">
{% if paginator.previous_page %}
<a href="{{ paginator.previous_page_path | prepend: site.baseurl }}" class="left arrow">&#8592;</a>
{% endif %}
{% if paginator.next_page %}
<a href="{{ paginator.next_page_path | prepend: site.baseurl }}" class="right arrow">&#8594;</a>
{% endif %}
<span>{{ paginator.page }}</span>
</div>

54
_layouts/post.html Normal file
View file

@ -0,0 +1,54 @@
---
layout: default
---
<div class="post">
<div class="post-info">
{% if page.author or page.date %}
<span>Written</span>
{% if page.author %}
<span>by</span>
{% if page.author %}
{{ page.author }}
{% else %}
{{ site.author.name }}
{% endif %}
<br>
{% endif %}
{% if page.date %}
<span>on&nbsp;</span><time datetime="{{ page.date }}">{{ page.date | date: "%Y-%m-%d" }}</time>
{% endif %}
{% endif %}
</div>
<h1 class="post-title">{{ page.title }}</h1>
{% if page.tags %}
<div class="tags-clouds">
{% assign pt = page.tags | sort -%}
{% for tag in pt -%}
<a href="/tags/#{{ tag }}">{{ tag }}</a>
{% endfor %}
</div><br />
{% endif %}
<div class="post-line"></div>
{{ content }}
</div>
{% if page.comments %}
{% include disqus_comments.html %}
{% endif %}
<div class="pagination">
{% if page.next.url %}
<a href="{{ page.next.url | prepend: site.baseurl }}" class="left arrow">&#8592;</a>
{% endif %}
{% if page.previous.url %}
<a href="{{ page.previous.url | prepend: site.baseurl }}" class="right arrow">&#8594;</a>
{% endif %}
<a href="#" class="top"></a>
</div>

15
_pages/403.html Normal file
View file

@ -0,0 +1,15 @@
---
layout: default
title: "403"
permalink: /403.html
---
<div class="notfound">
<h1 class="notfound-error">403: Das ist verboten</h1>
<div class="notfound-line"></div>
<p class="notfound-message">
Oops! I'm afraid I can't do that, Dave. Let's
<a href="{{ site.baseurl }}/">head back home</a>.
</p>
<p></p>
</div>

15
_pages/404.html Normal file
View file

@ -0,0 +1,15 @@
---
layout: default
title: "404"
permalink: /404.html
---
<div class="notfound">
<h1 class="notfound-error">404: Page not found</h1>
<div class="notfound-line"></div>
<p class="notfound-message">
Oops! We can't seem to find the page you are looking for. Let's
<a href="{{ site.baseurl }}/">head back home</a>.
</p>
<p></p>
</div>

15
_pages/about.md Normal file
View file

@ -0,0 +1,15 @@
---
layout: post
title: "About"
author: "Chester"
permalink: /about/
---
A friend of mine writes short stories. One sunny day, I asked if he wanted a website to showcase his works and he agreed. I decided to use GitHub Pages to host his site. That way he wouldn't have to buy a domain and a server.
While doing some research up on GitHub Pages, I accidentally chanced upon this _simple, blog-aware, static site generator_ called [Jekyll](https://jekyllrb.com/) which works really well with GitHub Pages. I figured it would do just fine for my friend and I set about searching for a pretty theme. I wanted a theme with a _book-ish_ vibe. Unfortunately, most of the themes were too modern. Eventually, I caved and begun working on my own theme. With the help of [Poole](https://github.com/poole/poole), the Jekyll Butler, I was able to build **Tale**.
## Contribute
Feel free to create an issue or make a pull request on [GitHub](https://github.com/chesterhow/tale).
Thanks for reading!

50
_pages/posts.md Normal file
View file

@ -0,0 +1,50 @@
---
layout: default
title: "Posts"
permalink: /posts/
---
<div class="tags">
<div class="tags-header">
<h2 class="tags-header-title">{{ page.title }}</h2>
<div class="tags-header-line"></div>
</div>
<div class="tags-clouds">
{% for post in site.posts -%}
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture -%}
{% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture -%}
{% if forloop.first %}<a href="#{{ this_year }}">{{ this_year }}</a>{% endif -%}
{% unless forloop.last -%}
{% if this_year != next_year %}<a href="#{{ next_year }}">{{ next_year }}</a>{% endif -%}
{% endunless -%}
{% endfor -%}
</div>
{% for post in site.posts -%}
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture -%}
{% capture next_year %}{{ post.previous.date | date: "%Y" }}{% endcapture -%}
{% if forloop.first -%}
<div class="tags-item" id="{{ this_year }}">
<h2 class="tags-item-label">{{ this_year }}</h2>
{% endif -%}
<a class="tags-post" href="{{ post.url | prepend: site.baseurl }}">
<div>
<span class="tags-post-title">{{ post.title }}</span>
<div class="tags-post-line"></div>
</div>
<span class="tags-post-meta">
<time datetime="{{ post.date }}">
{{ post.date | date:"%Y-%m-%d" }}
</time>
</span>
</a>
{% if forloop.last -%}
</div>
{% else -%}
{% if this_year != next_year -%}
</div>
<div class="tags-item" id="{{ next_year }}">
<h2 class="tags-item-label">{{ next_year }}</h2>
{% endif -%}
{% endif -%}
{% endfor -%}
</div>

54
_pages/tags.md Normal file
View file

@ -0,0 +1,54 @@
---
layout: default
title: "Tags"
permalink: /tags/
---
<div class="tags">
<div class="tags-header">
<h2 class="tags-header-title">{{ page.title }}</h2>
<div class="tags-header-line"></div>
</div>
<div class="tags-clouds">
{% assign st = site.tags | sort -%}
{% for tag in st -%}
<a href="#{{ tag[0] }}">{{ tag[0] | replace: '_', ' ' }}</a>
{% endfor %}
</div>
{% for tag in st -%}
<div class="tags-item" id="{{ tag[0] }}">
<svg
class="tags-item-icon"
xmlns="http://www.w3.org/2000/svg"
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="feather feather-tag"
>
<path
d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z"
></path>
<line x1="7" y1="7" x2="7.01" y2="7"></line>
</svg>
<h2 class="tags-item-label">{{ tag[0] | replace: '_', ' ' }} <span><a href="/feed/by_tag/{{ tag[0] }}.xml">{feed}</a></span></h2>
{% for post in tag[1] -%}
<a class="tags-post" href="{{ post.url | prepend: site.baseurl }}">
<div>
<span class="tags-post-title">{{ post.title }}</span>
<div class="tags-post-line"></div>
</div>
<span class="tags-post-meta">
<time datetime="{{ post.date }}">
{{ post.date | date:"%Y-%m-%d" }}
</time>
</span>
</a>
{% endfor %}
</div>
{% endfor %}
</div>

View file

@ -0,0 +1,30 @@
---
layout: post
title: "Welcome to Jekyll!"
author: Jonny
date: 2022-11-16 20:28:54 -0800
tags: jekyll update
---
Youll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
Jekyll requires blog post files to be named according to the following format:
`YEAR-MONTH-DAY-title.MARKUP`
Where `YEAR` is a four-digit number, `MONTH` and `DAY` are both two-digit numbers, and `MARKUP` is the file extension representing the format used in the file. After that, include the necessary front matter. Take a look at the source for this post to get an idea about how it works.
Jekyll also offers powerful support for code snippets:
{% highlight ruby %}
def print_hi(name)
puts "Hi, #{name}"
end
print_hi('Tom')
#=> prints 'Hi, Tom' to STDOUT.
{% endhighlight %}
Check out the [Jekyll docs][jekyll-docs] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekylls GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll Talk][jekyll-talk].
[jekyll-docs]: https://jekyllrb.com/docs/home
[jekyll-gh]: https://github.com/jekyll/jekyll
[jekyll-talk]: https://talk.jekyllrb.com/

17
_sass/details.scss Normal file
View file

@ -0,0 +1,17 @@
details summary {
cursor: pointer;
color: $blue;
&:hover {
text-decoration: underline;
}
}
details[open] summary {
color: $default-color;
&:hover {
text-decoration: none;
}
}

167
_sass/fonts.scss Normal file
View file

@ -0,0 +1,167 @@
/* merriweather-regular - latin-ext_latin */
@font-face {
font-family: 'Merriweather';
font-style: normal;
font-weight: 400;
src: url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/merriweather-v22-latin-ext_latin-regular.svg#Merriweather') format('svg'); /* Legacy iOS */
}
/* merriweather-italic - latin-ext_latin */
@font-face {
font-family: 'Merriweather';
font-style: italic;
font-weight: 400;
src: url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/merriweather-v22-latin-ext_latin-italic.svg#Merriweather') format('svg'); /* Legacy iOS */
}
/* merriweather-700italic - latin-ext_latin */
@font-face {
font-family: 'Merriweather';
font-style: italic;
font-weight: 700;
src: url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700italic.svg#Merriweather') format('svg'); /* Legacy iOS */
}
/* merriweather-700 - latin-ext_latin */
@font-face {
font-family: 'Merriweather';
font-style: normal;
font-weight: 700;
src: url('/assets/fonts/merriweather-v22-latin-ext_latin-700.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/merriweather-v22-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/merriweather-v22-latin-ext_latin-700.svg#Merriweather') format('svg'); /* Legacy iOS */
}
/* source-sans-pro-italic - latin-ext_latin */
@font-face {
font-family: 'Source Sans Pro';
font-style: italic;
font-weight: 400;
src: url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-italic.svg#SourceSansPro') format('svg'); /* Legacy iOS */
}
/* source-sans-pro-regular - latin-ext_latin */
@font-face {
font-family: 'Source Sans Pro';
font-style: normal;
font-weight: 400;
src: url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-regular.svg#SourceSansPro') format('svg'); /* Legacy iOS */
}
/* source-sans-pro-700italic - latin-ext_latin */
@font-face {
font-family: 'Source Sans Pro';
font-style: italic;
font-weight: 700;
src: url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700italic.svg#SourceSansPro') format('svg'); /* Legacy iOS */
}
/* source-sans-pro-700 - latin-ext_latin */
@font-face {
font-family: 'Source Sans Pro';
font-style: normal;
font-weight: 700;
src: url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-sans-pro-v14-latin-ext_latin-700.svg#SourceSansPro') format('svg'); /* Legacy iOS */
}
/* source-code-pro-regular - latin-ext_latin */
@font-face {
font-family: 'Source Code Pro';
font-style: normal;
font-weight: 400;
src: url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-regular.svg#SourceCodePro') format('svg'); /* Legacy iOS */
}
/* source-code-pro-italic - latin-ext_latin */
@font-face {
font-family: 'Source Code Pro';
font-style: italic;
font-weight: 400;
src: url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-italic.svg#SourceCodePro') format('svg'); /* Legacy iOS */
}
/* source-code-pro-700 - latin-ext_latin */
@font-face {
font-family: 'Source Code Pro';
font-style: normal;
font-weight: 700;
src: url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700.svg#SourceCodePro') format('svg'); /* Legacy iOS */
}
/* source-code-pro-700italic - latin-ext_latin */
@font-face {
font-family: 'Source Code Pro';
font-style: italic;
font-weight: 700;
src: url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.eot'); /* IE9 Compat Modes */
src: local(''),
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.woff') format('woff'), /* Modern Browsers */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.ttf') format('truetype'), /* Safari, Android, iOS */
url('/assets/fonts/source-code-pro-v13-latin-ext_latin-700italic.svg#SourceCodePro') format('svg'); /* Legacy iOS */
}

25
_sass/stlviewer.scss Normal file
View file

@ -0,0 +1,25 @@
.stl-viewer {
width: 100%;
padding-top: 100%;
position: relative;
text-align: center;
vertical-align: middle;
canvas {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
}
.svs-custom { padding-top: 0% !important; margin: 0 auto; }
.svs-4-3 { padding-top: 100% !important; }
.svs-16-9 { padding-top: 100% !important; }
@media (min-width: 600px) {
.stl-viewer { padding-top: 56.25%; }
.svs-4-3 { padding-top: 75% !important; }
.svs-16-9 { padding-top: 56.25% !important; }
}

16
_sass/tale.scss Normal file
View file

@ -0,0 +1,16 @@
@import 'fonts';
@import 'tale/variables';
@import 'tale/base';
@import 'tale/code';
@import 'tale/post';
@import 'tale/syntax';
@import 'tale/layout';
@import 'tale/pagination';
@import 'tale/catalogue';
@import 'tale/404';
@import 'tale/tags';
@import 'tale/sidenote';
@import 'tale/footnotes';
@import 'tale/navigation';
@import 'stlviewer';
@import 'details';

22
_sass/tale/_404.scss Normal file
View file

@ -0,0 +1,22 @@
.notfound {
position: relative;
text-align: center;
margin: 4rem 0;
&-error {
font-size: 4rem;
margin: 1rem 0;
}
&-line {
border-top: 0.4rem solid $default-shade;
display: block;
margin: 0 auto 3rem;
width: 4rem;
}
&-message {
max-width: 25rem;
margin: 0 auto;
}
}

66
_sass/tale/_base.scss Normal file
View file

@ -0,0 +1,66 @@
* {
@include box-sizing;
line-height: 1.5;
}
html,
body {
color: $default-color;
margin: 0;
padding: 0;
}
html {
font-family: $serif-primary;
font-size: 14px;
overflow-y: scroll;
@media (min-width: 600px) {
font-size: 16px;
}
}
body {
-webkit-text-size-adjust: 100%;
}
h1,
h2,
h3,
h4,
h5,
h6 {
color: $default-shade;
font-family: $sans-serif;
line-height: normal;
}
a {
color: $blue;
text-decoration: none;
}
blockquote {
border-left: .25rem solid $grey-2;
color: $grey-1;
margin: .8rem 0;
padding: .5rem 1rem;
p:last-child {
margin-bottom: 0;
}
@media (min-width: 600px) {
padding: 0 5rem 0 1.25rem;
}
}
img {
display: block;
margin: 0 0 1rem;
max-width: 100%;
}
td {
vertical-align: top;
}

View file

@ -0,0 +1,39 @@
.catalogue {
&-item {
border-bottom: 1px solid $grey-2;
color: $default-color;
display: block;
padding: 2rem 0;
&:hover .catalogue-line,
&:focus .catalogue-line {
width: 5rem;
}
&:last-child {
border: 0;
}
}
&-time {
color: $default-tint;
font-family: $serif-secondary;
letter-spacing: .5px;
}
&-title {
color: $default-shade;
display: block;
font-family: $sans-serif;
font-size: 2rem;
font-weight: 700;
margin: .5rem 0;
}
&-line {
@include transition(all .3s ease-out);
border-top: .2rem solid $default-shade;
display: block;
width: 2rem;
}
}

46
_sass/tale/_code.scss Normal file
View file

@ -0,0 +1,46 @@
pre,
code {
font-family: $monospaced;
}
code {
background-color: $grey-3;
border-radius: 3px;
color: $code-color;
font-size: 85%;
padding: .25em .5em;
}
pre {
margin: 0 0 1rem;
}
pre code {
background-color: transparent;
color: inherit;
font-size: 85%;
padding: 0;
}
.highlight {
background-color: $grey-3;
border-radius: 3px;
line-height: 1.2;
margin: 0 0 1rem;
padding: 0.5rem;
pre {
margin-bottom: 0;
overflow-x: auto;
}
.lineno {
color: $default-tint;
display: inline-block; // Ensures the null space also isn't selectable
padding: 0 .75rem 0 .25rem;
// Make sure numbers aren't selectable
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
}

View file

@ -0,0 +1,12 @@
.footnotes {
border-top: .5px solid $grey-2;
font-size: 80%;
li {
padding: 0 1em 0 0;
p {
margin-bottom: 0;
}
}
}

92
_sass/tale/_layout.scss Normal file
View file

@ -0,0 +1,92 @@
.container {
margin: 0 auto;
max-width: 800px;
width: 80%;
}
main,
footer,
.nav-container {
display: block;
margin: 0 auto;
max-width: 800px;
width: 80%;
}
.nav {
box-shadow: 0 2px 2px -2px $shadow-color;
overflow: auto;
&-container {
margin: 1rem auto;
position: relative;
text-align: center;
}
&-title {
@include transition(all .2s ease-out);
color: $default-color;
display: inline-block;
margin: 0;
padding-right: .2rem;
&:hover,
&:focus {
opacity: .6;
}
}
ul {
list-style-type: none;
margin: 1rem 0 0;
padding: 0;
text-align: center;
}
li {
@include transition(all .2s ease-out);
color: $default-color;
display: inline-block;
opacity: .6;
padding: 0 2rem 0 0;
&:last-child {
padding-right: 0;
}
&:hover,
&:focus {
opacity: 1;
}
}
a {
color: $default-color;
font-family: $sans-serif;
}
}
@media (min-width: 600px) {
.nav {
&-container {
text-align: left;
}
ul {
bottom: 0;
position: absolute;
right: 0;
}
}
}
footer {
font-family: $serif-secondary;
padding: 2rem 0;
text-align: center;
span {
color: $default-color;
font-size: .8rem;
}
}

View file

@ -0,0 +1,5 @@
.nav-container img {
display: inline;
margin: 0;
vertical-align: middle;
}

View file

@ -0,0 +1,44 @@
.pagination {
border-top: .5px solid $grey-2;
font-family: $serif-secondary;
padding-top: 2rem;
position: relative;
text-align: center;
span {
color: $default-shade;
font-size: 1.1rem;
}
.top {
@include transition(all .3s ease-out);
color: $default-color;
font-family: $sans-serif;
font-size: 1.1rem;
opacity: .6;
&:hover {
opacity: 1;
}
}
.arrow {
@include transition(all .3s ease-out);
color: $default-color;
position: absolute;
&:hover,
&:focus {
opacity: .6;
text-decoration: none;
}
}
.left {
left: 0;
}
.right {
right: 0;
}
}

67
_sass/tale/_post.scss Normal file
View file

@ -0,0 +1,67 @@
.post {
padding: 3rem 0;
&-info {
color: $default-tint;
font-family: $serif-secondary;
letter-spacing: 0.5px;
text-align: center;
span {
font-style: italic;
}
}
&-title {
color: $default-shade;
font-family: $sans-serif;
font-size: 2rem;
margin: 1rem 0;
text-align: center;
}
&-line {
border-top: 0.4rem solid $default-shade;
display: block;
margin: 0 auto 3rem;
width: 4rem;
}
p {
margin: 0 0 1rem;
text-align: justify;
}
.tags-clouds a:hover {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
img {
margin: 0 auto 0.5rem;
}
img + em {
color: $default-tint;
display: block;
font-family: $sans-serif;
font-size: 0.9rem;
font-style: normal;
text-align: center;
}
// CSS for making emoji inline
img.emoji {
display: inline-block;
left: 0;
transform: none;
width: 1rem;
height: 1rem;
vertical-align: text-top;
padding: 0;
margin: 0;
}
}

34
_sass/tale/_sidenote.scss Normal file
View file

@ -0,0 +1,34 @@
.sidenote {
position: absolute;
text-align: left;
padding-left: 20px;
margin-left: 20px;
margin-bottom: 1.5em;
border-left: 1px solid $default-color;
color: $default-color;
font-style: italic;
font-size: 0.8em;
&-header {
font-weight: 700;
}
&-hover {
color: $highlight-color;
border-color: $highlight-color;
}
p {
display: inline;
}
/* kramdown */
.reversefootnote {
display: none;
}
/* commonmark */
.footnote-backref {
display: none;
}
}

65
_sass/tale/_syntax.scss Normal file
View file

@ -0,0 +1,65 @@
.highlight .hll { background-color: #ffc; }
.highlight .c { color: #999; } /* Comment */
.highlight .err { color: #a00; background-color: #faa } /* Error */
.highlight .k { color: #069; } /* Keyword */
.highlight .o { color: #555 } /* Operator */
.highlight .cm { color: #09f; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #099 } /* Comment.Preproc */
.highlight .c1 { color: #999; } /* Comment.Single */
.highlight .cs { color: #999; } /* Comment.Special */
.highlight .gd { background-color: #fcc; border: 1px solid #c00 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #f00 } /* Generic.Error */
.highlight .gh { color: #030; } /* Generic.Heading */
.highlight .gi { background-color: #cfc; border: 1px solid #0c0 } /* Generic.Inserted */
.highlight .go { color: #aaa } /* Generic.Output */
.highlight .gp { color: #009; } /* Generic.Prompt */
.highlight .gs { } /* Generic.Strong */
.highlight .gu { color: #030; } /* Generic.Subheading */
.highlight .gt { color: #9c6 } /* Generic.Traceback */
.highlight .kc { color: #069; } /* Keyword.Constant */
.highlight .kd { color: #069; } /* Keyword.Declaration */
.highlight .kn { color: #069; } /* Keyword.Namespace */
.highlight .kp { color: #069 } /* Keyword.Pseudo */
.highlight .kr { color: #069; } /* Keyword.Reserved */
.highlight .kt { color: #078; } /* Keyword.Type */
.highlight .m { color: #f60 } /* Literal.Number */
.highlight .s { color: #d44950 } /* Literal.String */
.highlight .na { color: #4f9fcf } /* Name.Attribute */
.highlight .nb { color: #366 } /* Name.Builtin */
.highlight .nc { color: #0a8; } /* Name.Class */
.highlight .no { color: #360 } /* Name.Constant */
.highlight .nd { color: #99f } /* Name.Decorator */
.highlight .ni { color: #999; } /* Name.Entity */
.highlight .ne { color: #c00; } /* Name.Exception */
.highlight .nf { color: #c0f } /* Name.Function */
.highlight .nl { color: #99f } /* Name.Label */
.highlight .nn { color: #0cf; } /* Name.Namespace */
.highlight .nt { color: #2f6f9f; } /* Name.Tag */
.highlight .nv { color: #033 } /* Name.Variable */
.highlight .ow { color: #000; } /* Operator.Word */
.highlight .w { color: #bbb } /* Text.Whitespace */
.highlight .mf { color: #f60 } /* Literal.Number.Float */
.highlight .mh { color: #f60 } /* Literal.Number.Hex */
.highlight .mi { color: #f60 } /* Literal.Number.Integer */
.highlight .mo { color: #f60 } /* Literal.Number.Oct */
.highlight .sb { color: #c30 } /* Literal.String.Backtick */
.highlight .sc { color: #c30 } /* Literal.String.Char */
.highlight .sd { color: #c30; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #c30 } /* Literal.String.Double */
.highlight .se { color: #c30; } /* Literal.String.Escape */
.highlight .sh { color: #c30 } /* Literal.String.Heredoc */
.highlight .si { color: #a00 } /* Literal.String.Interpol */
.highlight .sx { color: #c30 } /* Literal.String.Other */
.highlight .sr { color: #3aa } /* Literal.String.Regex */
.highlight .s1 { color: #c30 } /* Literal.String.Single */
.highlight .ss { color: #fc3 } /* Literal.String.Symbol */
.highlight .bp { color: #366 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #033 } /* Name.Variable.Class */
.highlight .vg { color: #033 } /* Name.Variable.Global */
.highlight .vi { color: #033 } /* Name.Variable.Instance */
.highlight .il { color: #f60 } /* Literal.Number.Integer.Long */
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }

89
_sass/tale/_tags.scss Normal file
View file

@ -0,0 +1,89 @@
.tags {
&-header {
&-title {
color: $default-shade;
font-family: $sans-serif;
font-size: 4rem;
margin: 1rem 0;
text-align: center;
}
&-line {
border-top: 0.4rem solid $default-shade;
display: block;
margin: 0 auto 3rem;
width: 4rem;
}
}
&-clouds {
text-align: center;
font-family: $sans-serif;
a {
display: inline-block;
margin: 0 0.1rem 0.2rem;
padding: 0.2rem 0.5rem;
background: rgba(0, 0, 0, 0.05);
border-radius: 5px;
color: $default-color;
text-decoration: none;
&:hover,
&:active {
background: rgba(0, 0, 0, 0.1);
}
}
}
&-item {
&-icon {
height: 1rem;
}
&-label {
display: inline-block;
margin: 2rem 0 0.5rem;
font-family: $sans-serif;
color: $default-color;
}
}
&-post {
display: flex;
justify-content: space-between;
padding: 5px 0;
&-title {
color: $default-color;
text-decoration: none;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
&-line {
@include transition(all 0.3s ease-out);
border-top: 0.1rem solid $default-shade;
display: block;
width: 0;
}
&-meta {
color: $default-tint;
text-align: right;
white-space: nowrap;
}
&:hover,
&:active {
.tags-post-line {
width: 3rem;
}
.tags-post-meta {
color: $default-shade;
}
}
}
}

View file

@ -0,0 +1,30 @@
// Colors
$default-color: #111 !default;
$default-shade: #333 !default;
$default-tint: #aaa !default;
$grey-1: #979797 !default;
$grey-2: #e5e5e5 !default;
$grey-3: #f9f9f9 !default;
$white: #fff !default;
$blue: #5ae !default;
$shadow-color: rgba(0, 0, 0, .2) !default;
$code-color: #b67 !default;
$highlight-color: #f80 !default;
// Fonts
$serif-primary: 'Merriweather', 'Georgia', 'Times New Roman', Times, serif !default;
$serif-secondary: $serif-primary;
$sans-serif: 'Source Sans Pro', 'Segoe UI', Helvetica, Arial, sans-serif !default;
$monospaced: 'Source Code Pro', Menlo, Monaco, monospace !default;
@mixin box-sizing($type: border-box) {
-webkit-box-sizing: $type;
-moz-box-sizing: $type;
box-sizing: $type;
}
@mixin transition($args...) {
-webkit-transition: $args;
-moz-transition: $args;
transition: $args;
}

6
index.markdown Normal file
View file

@ -0,0 +1,6 @@
---
# Feel free to add content and custom Front Matter to this file.
# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults
layout: home
---