aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBradley Taunt <bt@btxx.org>2024-05-26 08:33:15 -0400
committerBradley Taunt <bt@btxx.org>2024-05-26 08:33:15 -0400
commit7bc33e9815001f96ef6b22c507cf9bf2194ec684 (patch)
tree222dd13a36f6ec18e766ba98744fc01cdea5eea7
parente417a818e207a6cca6e2f3c471611673ab836a62 (diff)
Static placement of minima theme, minor customizations
-rw-r--r--404.html2
-rw-r--r--_config.yml27
-rw-r--r--_includes/custom-head.html6
-rw-r--r--_includes/disqus_comments.html20
-rw-r--r--_includes/footer.html30
-rw-r--r--_includes/google-analytics.html9
-rw-r--r--_includes/head.html10
-rw-r--r--_includes/header.html31
-rw-r--r--_includes/social-icons/codeberg.svg11
-rw-r--r--_includes/social-icons/devto.svg1
-rw-r--r--_includes/social-icons/dribbble.svg1
-rw-r--r--_includes/social-icons/facebook.svg1
-rw-r--r--_includes/social-icons/flickr.svg1
-rw-r--r--_includes/social-icons/github.svg1
-rw-r--r--_includes/social-icons/gitlab.svg1
-rw-r--r--_includes/social-icons/google_scholar.svg1
-rw-r--r--_includes/social-icons/instagram.svg1
-rw-r--r--_includes/social-icons/keybase.svg4
-rw-r--r--_includes/social-icons/linkedin.svg1
-rw-r--r--_includes/social-icons/mastodon.svg1
-rw-r--r--_includes/social-icons/microdotblog.svg1
-rw-r--r--_includes/social-icons/pinterest.svg1
-rw-r--r--_includes/social-icons/rss.svg1
-rw-r--r--_includes/social-icons/stackoverflow.svg1
-rw-r--r--_includes/social-icons/telegram.svg1
-rw-r--r--_includes/social-icons/twitter.svg1
-rw-r--r--_includes/social-icons/whatsapp.svg4
-rw-r--r--_includes/social-icons/x.svg3
-rw-r--r--_includes/social-icons/youtube.svg1
-rw-r--r--_includes/social-item.html7
-rw-r--r--_includes/social.html5
-rw-r--r--_includes/svg_symbol.html3
-rw-r--r--_layouts/all_posts.html61
-rw-r--r--_layouts/base.html20
-rw-r--r--_layouts/home.html63
-rw-r--r--_layouts/page.html14
-rw-r--r--_layouts/post.html38
-rw-r--r--_sass/minima/_base.scss281
-rw-r--r--_sass/minima/_layout.scss341
-rw-r--r--_sass/minima/custom-styles.scss2
-rw-r--r--_sass/minima/custom-variables.scss1
-rw-r--r--_sass/minima/initialize.scss50
-rw-r--r--_sass/minima/skins/auto.scss361
-rw-r--r--_sass/minima/skins/classic.scss5
-rw-r--r--_sass/minima/skins/dark.scss5
-rw-r--r--_sass/minima/skins/solarized-dark.scss5
-rw-r--r--_sass/minima/skins/solarized-light.scss4
-rw-r--r--_sass/minima/skins/solarized.scss201
-rw-r--r--about.md2
-rw-r--r--assets/css/style.scss7
-rw-r--r--assets/minima-social-icons.liquid18
-rw-r--r--colophon.md2
-rw-r--r--index.md31
-rw-r--r--posts.md5
-rw-r--r--uses.md4
-rw-r--r--wiki.md63
56 files changed, 1712 insertions, 61 deletions
diff --git a/404.html b/404.html
index 086a5c9..7f3c00f 100644
--- a/404.html
+++ b/404.html
@@ -1,6 +1,6 @@
---
permalink: /404.html
-layout: default
+layout: base
---
<style type="text/css" media="screen">
diff --git a/_config.yml b/_config.yml
index 1b3824c..539f7d3 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,25 +1,9 @@
-# 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: btxx
+meta_title: btxx.org
email: bt@btxx.org
+author:
+ name: Bradley Taunt
+ email: bt@btxx.org
description: >- # this means to ignore newlines until "baseurl:"
Designer, developer, hardware tinkerer, open source advocate, consumer of dark roast coffee, and writer of very long sentences.
baseurl: "" # the subpath of your site, e.g. /blog
@@ -28,7 +12,6 @@ twitter_username: jekyllrb
github_username: jekyll
# Build settings
-theme: minima
plugins:
- jekyll-feed
@@ -40,7 +23,7 @@ defaults:
permalink: /posts/:title/
sass:
- quiet_deps: true
+ sass_dir: _sass
# Exclude from processing.
# The following items will not be processed, by default.
diff --git a/_includes/custom-head.html b/_includes/custom-head.html
new file mode 100644
index 0000000..8559a67
--- /dev/null
+++ b/_includes/custom-head.html
@@ -0,0 +1,6 @@
+{% comment %}
+ Placeholder to allow defining custom head, in principle, you can add anything here, e.g. favicons:
+
+ 1. Head over to https://realfavicongenerator.net/ to add your own favicons.
+ 2. Customize default _includes/custom-head.html in your source directory and insert the given code snippet.
+{% endcomment %}
diff --git a/_includes/disqus_comments.html b/_includes/disqus_comments.html
new file mode 100644
index 0000000..87e255b
--- /dev/null
+++ b/_includes/disqus_comments.html
@@ -0,0 +1,20 @@
+{%- if page.comments != false and jekyll.environment == "production" -%}
+
+ <div id="disqus_thread"></div>
+ <script>
+ var disqus_config = function () {
+ this.page.url = '{{ absolute_url }}';
+ this.page.identifier = '{{ page.url | absolute_url }}';
+ };
+
+ (function() {
+ var d = document, s = d.createElement('script');
+
+ s.src = 'https://{{ site.disqus.shortname }}.disqus.com/embed.js';
+
+ s.setAttribute('data-timestamp', +new Date());
+ (d.head || d.body).appendChild(s);
+ })();
+ </script>
+ <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
+{%- endif -%}
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100644
index 0000000..f4a8002
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,30 @@
+<footer class="site-footer h-card">
+ <data class="u-url" href="{{ "/" | relative_url }}"></data>
+
+ <div class="wrapper">
+
+ <div class="footer-col-wrapper">
+ <div class="footer-col">
+ {%- if site.author %}
+ <ul class="contact-list">
+ {% if site.author.name -%}
+ <li class="p-name">{{ site.author.name | escape }}</li>
+ {% endif -%}
+ {% if site.author.email -%}
+ <li><a class="u-email" href="mailto:{{ site.author.email }}">{{ site.author.email }}</a></li>
+ {%- endif %}
+ </ul>
+ {%- endif %}
+ </div>
+ <div class="footer-col">
+ <p>{{ site.description | escape }}</p>
+ </div>
+ </div>
+
+ <div class="social-links">
+ {%- include social.html -%}
+ </div>
+
+ </div>
+
+</footer>
diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html
new file mode 100644
index 0000000..b8b4d38
--- /dev/null
+++ b/_includes/google-analytics.html
@@ -0,0 +1,9 @@
+<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
+<script>
+ window['ga-disable-{{ site.google_analytics }}'] = window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1";
+ window.dataLayer = window.dataLayer || [];
+ function gtag(){window.dataLayer.push(arguments);}
+ gtag('js', new Date());
+
+ gtag('config', '{{ site.google_analytics }}');
+</script>
diff --git a/_includes/head.html b/_includes/head.html
new file mode 100644
index 0000000..82078b0
--- /dev/null
+++ b/_includes/head.html
@@ -0,0 +1,10 @@
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <link rel="stylesheet" href="{{ '/assets/css/style.css' | relative_url }}">
+ <link rel="icon" href="data:,">
+ {%- feed_meta -%}
+ <title>{% if page.title %}{{ page.title }} &middot;{% endif %} {{ site.meta_title | escape }}</title>
+
+</head>
diff --git a/_includes/header.html b/_includes/header.html
new file mode 100644
index 0000000..ed5a382
--- /dev/null
+++ b/_includes/header.html
@@ -0,0 +1,31 @@
+<header class="site-header">
+
+ <div class="wrapper">
+ {%- assign default_paths = site.pages | map: "path" -%}
+ {%- assign page_paths = site.header_pages | default: default_paths -%}
+ {%- assign titles_size = site.pages | map: 'title' | join: '' | size -%}
+ <a class="site-title" rel="author" href="{{ "/" | relative_url }}">{{ site.title | escape }}</a>
+
+ {%- if titles_size > 0 -%}
+ <nav class="site-nav">
+ <input type="checkbox" id="nav-trigger" class="nav-trigger" />
+ <label for="nav-trigger">
+ <span class="menu-icon">
+ <svg viewBox="0 0 18 15" width="18px" height="15px">
+ <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
+ </svg>
+ </span>
+ </label>
+
+ <div class="trigger">
+ {%- for path in page_paths -%}
+ {%- assign my_page = site.pages | where: "path", path | first -%}
+ {%- if my_page.title -%}
+ <a class="page-link" href="{{ my_page.url | relative_url }}">{{ my_page.title | escape }}</a>
+ {%- endif -%}
+ {%- endfor -%}
+ </div>
+ </nav>
+ {%- endif -%}
+ </div>
+</header>
diff --git a/_includes/social-icons/codeberg.svg b/_includes/social-icons/codeberg.svg
new file mode 100644
index 0000000..d41b003
--- /dev/null
+++ b/_includes/social-icons/codeberg.svg
@@ -0,0 +1,11 @@
+<g
+ style="opacity:1"
+ transform="translate(-44.867463,-75.990641)">
+ <g
+ style="opacity:1"
+ transform="matrix(0.62731857,0,0,0.30231784,25.415003,63.342477)" />
+ <path
+ style="fill-opacity:1;stroke:none;stroke-width:0.247828;paint-order:markers fill stroke;stop-color:#000000"
+ d="m 52.866549,76.247505 c -4.39704,0 -7.936587,3.541376 -7.936587,7.938416 -2.1e-4,1.490827 0.420008,2.953458 1.212473,4.21737 l 6.616999,-8.555396 c 0.04781,-0.0612 0.166275,-0.0612 0.21405,0 l 2.763577,3.573179 h -1.979265 l 0.04286,0.157651 h 2.059061 l 0.583856,0.753172 h -2.430784 l 0.06818,0.247163 h 2.553387 l 0.513795,0.663645 h -2.882295 l 0.08948,0.319162 h 3.037983 l 0.459304,0.591634 h -3.331852 l 0.108975,0.389239 h 3.522585 l 0.402862,0.519626 h -3.781429 l 0.120675,0.430106 h 3.993552 l 0.3717,0.480709 h -4.230994 l 0.120675,0.430102 h 4.44312 c 0.792461,-1.263911 1.212724,-2.726542 1.212472,-4.217362 4e-6,-4.39704 -3.541365,-7.938416 -7.938408,-7.938416 z m 2.41707,12.636494 0.120675,0.430106 h 3.522521 c 0.114862,-0.1356 0.2337,-0.286688 0.339562,-0.430106 z m 0.254962,0.910808 0.118725,0.430105 h 2.356826 c 0.154163,-0.1314 0.321225,-0.283237 0.471203,-0.430102 z m 0.253013,0.91081 0.120675,0.428161 h 0.795843 c 0.235163,-0.134962 0.45306,-0.272325 0.688797,-0.428161 z" />
+</g>
+
diff --git a/_includes/social-icons/devto.svg b/_includes/social-icons/devto.svg
new file mode 100644
index 0000000..f595e0e
--- /dev/null
+++ b/_includes/social-icons/devto.svg
@@ -0,0 +1 @@
+<path d="M4.548,6.415C4.419,6.318,4.29,6.271,4.161,6.271h-0.58v3.471h0.58c0.129,0,0.258-0.049,0.387-0.145 C4.677,9.5,4.742,9.355,4.742,9.163V6.85C4.741,6.656,4.676,6.511,4.548,6.415z M13.981,0.559H2.016 c-0.804,0-1.457,0.65-1.458,1.455v11.973c0.002,0.805,0.655,1.455,1.458,1.455h11.968c0.805,0,1.457-0.65,1.459-1.455V2.014 C15.438,1.209,14.786,0.559,13.981,0.559z M5.68,9.169c0,0.625-0.386,1.572-1.605,1.569H2.532V5.242h1.573 c1.179,0,1.573,0.945,1.574,1.57V9.169z M9.024,6.225h-1.77V7.5h1.082v0.982H7.255v1.275h1.771v0.982H6.959 c-0.371,0.009-0.679-0.283-0.688-0.654V5.931c-0.008-0.37,0.285-0.679,0.655-0.688h2.099V6.225z M12.47,10.055 c-0.438,1.021-1.226,0.817-1.576,0l-1.28-4.812h1.081l0.988,3.778l0.981-3.778h1.082L12.47,10.055z"/>
diff --git a/_includes/social-icons/dribbble.svg b/_includes/social-icons/dribbble.svg
new file mode 100644
index 0000000..1d95de0
--- /dev/null
+++ b/_includes/social-icons/dribbble.svg
@@ -0,0 +1 @@
+<path d="M8 16c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm6.747-6.905c-.234-.074-2.115-.635-4.257-.292.894 2.456 1.258 4.456 1.328 4.872 1.533-1.037 2.624-2.68 2.93-4.58zM10.67 14.3c-.102-.6-.5-2.688-1.46-5.18l-.044.014C5.312 10.477 3.93 13.15 3.806 13.4c1.158.905 2.614 1.444 4.194 1.444.947 0 1.85-.194 2.67-.543zm-7.747-1.72c.155-.266 2.03-3.37 5.555-4.51.09-.03.18-.056.27-.08-.173-.39-.36-.778-.555-1.16-3.413 1.02-6.723.977-7.023.97l-.003.208c0 1.755.665 3.358 1.756 4.57zM1.31 6.61c.307.005 3.122.017 6.318-.832-1.132-2.012-2.353-3.705-2.533-3.952-1.912.902-3.34 2.664-3.784 4.785zM6.4 1.368c.188.253 1.43 1.943 2.548 4 2.43-.91 3.46-2.293 3.582-2.468C11.323 1.827 9.736 1.176 8 1.176c-.55 0-1.087.066-1.6.19zm6.89 2.322c-.145.194-1.29 1.662-3.816 2.694.16.325.31.656.453.99.05.117.1.235.147.352 2.274-.286 4.533.172 4.758.22-.015-1.613-.59-3.094-1.543-4.257z"/>
diff --git a/_includes/social-icons/facebook.svg b/_includes/social-icons/facebook.svg
new file mode 100644
index 0000000..c022403
--- /dev/null
+++ b/_includes/social-icons/facebook.svg
@@ -0,0 +1 @@
+<path d="M15.117 0H.883C.395 0 0 .395 0 .883v14.234c0 .488.395.883.883.883h7.663V9.804H6.46V7.39h2.086V5.607c0-2.066 1.262-3.19 3.106-3.19.883 0 1.642.064 1.863.094v2.16h-1.28c-1 0-1.195.48-1.195 1.18v1.54h2.39l-.31 2.42h-2.08V16h4.077c.488 0 .883-.395.883-.883V.883C16 .395 15.605 0 15.117 0"/>
diff --git a/_includes/social-icons/flickr.svg b/_includes/social-icons/flickr.svg
new file mode 100644
index 0000000..3b38772
--- /dev/null
+++ b/_includes/social-icons/flickr.svg
@@ -0,0 +1 @@
+<path d="M0 8c0 2.05 1.662 3.71 3.71 3.71 2.05 0 3.713-1.66 3.713-3.71S5.76 4.29 3.71 4.29C1.663 4.29 0 5.95 0 8zm8.577 0c0 2.05 1.662 3.71 3.712 3.71C14.33 11.71 16 10.05 16 8s-1.662-3.71-3.71-3.71c-2.05 0-3.713 1.66-3.713 3.71z"/>
diff --git a/_includes/social-icons/github.svg b/_includes/social-icons/github.svg
new file mode 100644
index 0000000..9301f84
--- /dev/null
+++ b/_includes/social-icons/github.svg
@@ -0,0 +1 @@
+<path d="M8 0C3.58 0 0 3.582 0 8c0 3.535 2.292 6.533 5.47 7.59.4.075.547-.172.547-.385 0-.19-.007-.693-.01-1.36-2.226.483-2.695-1.073-2.695-1.073-.364-.924-.89-1.17-.89-1.17-.725-.496.056-.486.056-.486.803.056 1.225.824 1.225.824.714 1.223 1.873.87 2.33.665.072-.517.278-.87.507-1.07-1.777-.2-3.644-.888-3.644-3.953 0-.873.31-1.587.823-2.147-.09-.202-.36-1.015.07-2.117 0 0 .67-.215 2.2.82.64-.178 1.32-.266 2-.27.68.004 1.36.092 2 .27 1.52-1.035 2.19-.82 2.19-.82.43 1.102.16 1.915.08 2.117.51.56.82 1.274.82 2.147 0 3.073-1.87 3.75-3.65 3.947.28.24.54.73.54 1.48 0 1.07-.01 1.93-.01 2.19 0 .21.14.46.55.38C13.71 14.53 16 11.53 16 8c0-4.418-3.582-8-8-8"/>
diff --git a/_includes/social-icons/gitlab.svg b/_includes/social-icons/gitlab.svg
new file mode 100644
index 0000000..6744b55
--- /dev/null
+++ b/_includes/social-icons/gitlab.svg
@@ -0,0 +1 @@
+<path d="m15.73 6.39-.023-.058L13.535.656a.587.587 0 0 0-.566-.36.61.61 0 0 0-.332.126.593.593 0 0 0-.192.293l-1.468 4.5h-5.95L3.555.715A.568.568 0 0 0 3.03.297a.558.558 0 0 0-.34.09.557.557 0 0 0-.222.27L.289 6.34l-.023.055a4.07 4.07 0 0 0-.11 2.558c.242.844.75 1.586 1.45 2.113l.007.004.02.016 3.32 2.484 1.637 1.242 1 .754a.67.67 0 0 0 .812 0l.996-.753 1.641-1.243 3.336-2.5.012-.004a4.049 4.049 0 0 0 1.343-4.675Zm0 0"/> \ No newline at end of file
diff --git a/_includes/social-icons/google_scholar.svg b/_includes/social-icons/google_scholar.svg
new file mode 100644
index 0000000..37aab26
--- /dev/null
+++ b/_includes/social-icons/google_scholar.svg
@@ -0,0 +1 @@
+<circle opacity="0.7" cx="8.036" cy="11.08" r="4.3"/><path opacity="0.75" d="M0.585,6.505l7.42-5.885L8.03,6.582 C5.305,6.632,4.139,8.729,3.913,9.13L0.585,6.505z"/><path d="M15.415,6.509l-7.42-5.886L7.97,6.585c2.725,0.05,3.891,2.147,4.117,2.548L15.415,6.509z"/>
diff --git a/_includes/social-icons/instagram.svg b/_includes/social-icons/instagram.svg
new file mode 100644
index 0000000..d483d14
--- /dev/null
+++ b/_includes/social-icons/instagram.svg
@@ -0,0 +1 @@
+<path d="M8 0C5.827 0 5.555.01 4.702.048 3.85.088 3.27.222 2.76.42c-.526.204-.973.478-1.417.923-.445.444-.72.89-.923 1.417-.198.51-.333 1.09-.372 1.942C.008 5.555 0 5.827 0 8s.01 2.445.048 3.298c.04.852.174 1.433.372 1.942.204.526.478.973.923 1.417.444.445.89.72 1.417.923.51.198 1.09.333 1.942.372.853.04 1.125.048 3.298.048s2.445-.01 3.298-.048c.852-.04 1.433-.174 1.942-.372.526-.204.973-.478 1.417-.923.445-.444.72-.89.923-1.417.198-.51.333-1.09.372-1.942.04-.853.048-1.125.048-3.298s-.01-2.445-.048-3.298c-.04-.852-.174-1.433-.372-1.942-.204-.526-.478-.973-.923-1.417-.444-.445-.89-.72-1.417-.923-.51-.198-1.09-.333-1.942-.372C10.445.008 10.173 0 8 0zm0 1.44c2.136 0 2.39.01 3.233.048.78.036 1.203.166 1.485.276.374.145.64.318.92.598.28.28.453.546.598.92.11.282.24.705.276 1.485.038.844.047 1.097.047 3.233s-.01 2.39-.05 3.233c-.04.78-.17 1.203-.28 1.485-.15.374-.32.64-.6.92-.28.28-.55.453-.92.598-.28.11-.71.24-1.49.276-.85.038-1.1.047-3.24.047s-2.39-.01-3.24-.05c-.78-.04-1.21-.17-1.49-.28-.38-.15-.64-.32-.92-.6-.28-.28-.46-.55-.6-.92-.11-.28-.24-.71-.28-1.49-.03-.84-.04-1.1-.04-3.23s.01-2.39.04-3.24c.04-.78.17-1.21.28-1.49.14-.38.32-.64.6-.92.28-.28.54-.46.92-.6.28-.11.7-.24 1.48-.28.85-.03 1.1-.04 3.24-.04zm0 2.452c-2.27 0-4.108 1.84-4.108 4.108 0 2.27 1.84 4.108 4.108 4.108 2.27 0 4.108-1.84 4.108-4.108 0-2.27-1.84-4.108-4.108-4.108zm0 6.775c-1.473 0-2.667-1.194-2.667-2.667 0-1.473 1.194-2.667 2.667-2.667 1.473 0 2.667 1.194 2.667 2.667 0 1.473-1.194 2.667-2.667 2.667zm5.23-6.937c0 .53-.43.96-.96.96s-.96-.43-.96-.96.43-.96.96-.96.96.43.96.96z"/>
diff --git a/_includes/social-icons/keybase.svg b/_includes/social-icons/keybase.svg
new file mode 100644
index 0000000..0770447
--- /dev/null
+++ b/_includes/social-icons/keybase.svg
@@ -0,0 +1,4 @@
+<path d="M10.34,13.58c-0.298,0-0.54,0.242-0.54,0.54s0.242,0.54,0.54,0.54c0.298,0,0.54-0.242,0.54-0.54S10.638,13.58,10.34,13.58 L10.34,13.58z M6.38,13.58c-0.298,0-0.54,0.242-0.54,0.54s0.242,0.54,0.54,0.54c0.298,0,0.54-0.242,0.54-0.54 S6.678,13.58,6.38,13.58z"/>
+<path fill="none" stroke="#000000" stroke-width="0.72" stroke-linecap="round" stroke-miterlimit="10" d="M1.58,13.22 c0.104,0.771,0.344,1.497,0.688,2.16 M5.93,3.86H4.31c-0.149,0-0.27-0.121-0.27-0.27V1.97c0-0.149,0.121-0.27,0.27-0.27h1.62 c0.149,0,0.27,0.121,0.27,0.27v1.08"/>
+<path d="M8.18,7.46c-1.489,0-2.7-1.211-2.7-2.7c0-2.471,2.012-4.329,2.098-4.407c0.125-0.113,0.309-0.125,0.447-0.029 s0.191,0.273,0.129,0.429C8,1.142,7.861,1.791,8.002,1.999C8.015,2.018,8.044,2.06,8.18,2.06c1.489,0,2.7,1.211,2.7,2.7 C10.88,6.249,9.669,7.46,8.18,7.46z"/>
+<path d="M15.178,11.759c-0.174-2.216-1.372-4.173-3.196-5.341c-0.015-0.009-0.029-0.02-0.044-0.029 c-0.121-0.076-0.245-0.147-0.371-0.217c-0.044-0.024-0.088-0.049-0.133-0.073c-0.029-0.016-0.061-0.029-0.09-0.043 c-0.228,0.551-0.594,1.03-1.056,1.394l1.206,1.207c0.141,0.141,0.141,0.368,0,0.509c-0.07,0.07-0.162,0.105-0.254,0.105 s-0.185-0.035-0.255-0.105l-0.301-0.301l-0.65,0.651C9.963,9.585,9.871,9.62,9.779,9.62c-0.092,0-0.184-0.035-0.254-0.105 c-0.141-0.141-0.141-0.369,0-0.509l0.651-0.651L9.8,7.979L9.334,8.445c-0.07,0.07-0.162,0.105-0.254,0.105S8.896,8.516,8.826,8.445 C8.74,8.36,8.714,8.245,8.73,8.135C8.552,8.164,8.368,8.18,8.18,8.18c-1.452,0-2.692-0.911-3.188-2.19 C2.318,7.245,0.8,10.089,0.8,13.94v1.08l0.648-0.864c0.669-0.893,1.483-1.789,2.256-2.502c-0.19,0.508-0.318,1.016-0.381,1.521 l-0.113,0.905l0.701-0.585c0.021-0.017,2.087-1.716,4.449-1.716c1.159,0,1.792,0.107,2.352,0.202 c0.479,0.081,0.931,0.157,1.609,0.157c1.115,0,1.727-0.57,1.993-1.254c0.071,0.304,0.121,0.614,0.146,0.931 c0.013,0.167,0.021,0.334,0.021,0.504c0,1.015-0.238,1.987-0.709,2.895c-0.092,0.176-0.022,0.394,0.154,0.485 c0.053,0.027,0.109,0.04,0.165,0.04c0.13,0,0.256-0.07,0.32-0.194c0.523-1.01,0.789-2.095,0.789-3.226 C15.2,12.132,15.192,11.944,15.178,11.759z"/>
diff --git a/_includes/social-icons/linkedin.svg b/_includes/social-icons/linkedin.svg
new file mode 100644
index 0000000..8a61bf1
--- /dev/null
+++ b/_includes/social-icons/linkedin.svg
@@ -0,0 +1 @@
+<path d="M13.632 13.635h-2.37V9.922c0-.886-.018-2.025-1.234-2.025-1.235 0-1.424.964-1.424 1.96v3.778h-2.37V6H8.51v1.04h.03c.318-.6 1.092-1.233 2.247-1.233 2.4 0 2.845 1.58 2.845 3.637v4.188zM3.558 4.955c-.762 0-1.376-.617-1.376-1.377 0-.758.614-1.375 1.376-1.375.76 0 1.376.617 1.376 1.375 0 .76-.617 1.377-1.376 1.377zm1.188 8.68H2.37V6h2.376v7.635zM14.816 0H1.18C.528 0 0 .516 0 1.153v13.694C0 15.484.528 16 1.18 16h13.635c.652 0 1.185-.516 1.185-1.153V1.153C16 .516 15.467 0 14.815 0z"/>
diff --git a/_includes/social-icons/mastodon.svg b/_includes/social-icons/mastodon.svg
new file mode 100644
index 0000000..77d35f4
--- /dev/null
+++ b/_includes/social-icons/mastodon.svg
@@ -0,0 +1 @@
+<path d="M15.195,5.352c0-3.347-2.193-4.328-2.193-4.328c-1.104-0.508-3.004-0.721-4.977-0.737H7.977 c-1.973,0.016-3.87,0.229-4.976,0.737c0,0-2.193,0.981-2.193,4.328c0,0.766-0.015,1.683,0.009,2.654c0.08,3.272,0.6,6.499,3.626,7.3 c1.396,0.369,2.594,0.446,3.559,0.394c1.75-0.097,2.732-0.624,2.732-0.624l-0.058-1.27c0,0-1.25,0.395-2.655,0.346 c-1.391-0.047-2.86-0.149-3.085-1.857c-0.021-0.15-0.031-0.312-0.031-0.479c0,0,1.365,0.334,3.096,0.413 c1.059,0.049,2.051-0.062,3.059-0.182c1.934-0.231,3.616-1.422,3.828-2.51C15.224,7.821,15.195,5.352,15.195,5.352z M12.609,9.664 h-1.606V5.73c0-0.83-0.349-1.25-1.047-1.25c-0.772,0-1.158,0.5-1.158,1.486V8.12H7.202V5.966c0-0.987-0.387-1.486-1.158-1.486 c-0.698,0-1.046,0.421-1.046,1.25v3.933H3.391V5.611c0-0.829,0.211-1.487,0.634-1.974c0.437-0.487,1.009-0.736,1.719-0.736 c0.822,0,1.444,0.315,1.855,0.947L8,4.519l0.4-0.67c0.412-0.632,1.033-0.947,1.855-0.947c0.71,0,1.282,0.25,1.72,0.736 c0.423,0.487,0.635,1.145,0.635,1.974V9.664z"/>
diff --git a/_includes/social-icons/microdotblog.svg b/_includes/social-icons/microdotblog.svg
new file mode 100644
index 0000000..285a719
--- /dev/null
+++ b/_includes/social-icons/microdotblog.svg
@@ -0,0 +1 @@
+<path d="M13.778,12.215c-0.102,0.218-0.171,0.385-0.212,0.498c-0.143,0.399-0.188,0.719-0.202,0.922 c-0.068,1.015,0.388,1.615,0.496,1.776c0.16,0.239,0.227,0.373,0.195,0.404c-0.059,0.104-0.241,0.104-0.546,0 c-0.457-0.157-1.72-0.647-2.196-1.338c-0.191-0.28-0.313-0.398-0.389-0.44C10.021,14.372,9.034,14.556,8,14.556 c-4.33,0-7.84-3.234-7.84-7.224c0-3.99,3.51-7.225,7.84-7.225s7.84,3.234,7.84,7.225C15.84,9.214,15.059,10.929,13.778,12.215z M7.944,9.692c1.542,0.999,2.38,1.439,2.513,1.322c0.133-0.117-0.027-1.051-0.479-2.799c1.436-1.092,2.114-1.753,2.033-1.981 c-0.082-0.229-1.018-0.365-2.81-0.408C8.607,4.13,8.188,3.28,7.944,3.28c-0.244,0-0.663,0.85-1.256,2.546 c-1.795,0.053-2.731,0.188-2.81,0.408c-0.078,0.219,0.6,0.88,2.033,1.981c-0.491,1.689-0.65,2.622-0.48,2.799 C5.602,11.19,6.44,10.75,7.944,9.692z"/>
diff --git a/_includes/social-icons/pinterest.svg b/_includes/social-icons/pinterest.svg
new file mode 100644
index 0000000..d3963c6
--- /dev/null
+++ b/_includes/social-icons/pinterest.svg
@@ -0,0 +1 @@
+<path d="M8 0C3.582 0 0 3.582 0 8c0 3.39 2.108 6.285 5.084 7.45-.07-.633-.133-1.604.028-2.295.146-.625.938-3.977.938-3.977s-.24-.48-.24-1.188c0-1.11.646-1.943 1.448-1.943.683 0 1.012.513 1.012 1.127 0 .687-.436 1.713-.662 2.664-.19.797.4 1.445 1.185 1.445 1.42 0 2.514-1.498 2.514-3.662 0-1.91-1.376-3.25-3.342-3.25-2.276 0-3.61 1.71-3.61 3.47 0 .69.263 1.43.593 1.83.066.08.075.15.057.23-.06.25-.196.8-.223.91-.035.15-.115.18-.268.11C3.516 10.46 2.89 9 2.89 7.82c0-2.52 1.834-4.84 5.287-4.84 2.774 0 4.932 1.98 4.932 4.62 0 2.76-1.74 4.98-4.16 4.98-.81 0-1.57-.42-1.84-.92l-.5 1.9c-.18.698-.67 1.57-1 2.1.75.23 1.54.357 2.37.357 4.41 0 8-3.58 8-8s-3.59-8-8-8z"/> \ No newline at end of file
diff --git a/_includes/social-icons/rss.svg b/_includes/social-icons/rss.svg
new file mode 100644
index 0000000..e531f94
--- /dev/null
+++ b/_includes/social-icons/rss.svg
@@ -0,0 +1 @@
+<path d="M12.8 16C12.8 8.978 7.022 3.2 0 3.2V0c8.777 0 16 7.223 16 16h-3.2zM2.194 11.61c1.21 0 2.195.985 2.195 2.196 0 1.21-.99 2.194-2.2 2.194C.98 16 0 15.017 0 13.806c0-1.21.983-2.195 2.194-2.195zM10.606 16h-3.11c0-4.113-3.383-7.497-7.496-7.497v-3.11c5.818 0 10.606 4.79 10.606 10.607z"/>
diff --git a/_includes/social-icons/stackoverflow.svg b/_includes/social-icons/stackoverflow.svg
new file mode 100644
index 0000000..c2c78c4
--- /dev/null
+++ b/_includes/social-icons/stackoverflow.svg
@@ -0,0 +1 @@
+<path d="M12.566,14.12v-4.08h1.359v5.44H1.686v-5.44h1.36v4.08H12.566z M10.336,0.52L9.269,1.315l3.978,5.358l1.068-0.803 L10.336,0.52z M4.406,12.76h6.8V11.4h-6.8V12.76z M12.158,7.945L7.03,3.675l0.851-1.02l5.128,4.271L12.158,7.945z M5.357,6.646 l6.053,2.815l0.558-1.21L5.916,5.437L5.357,6.64V6.646z M11.227,10.91L4.494,9.774l0.272-1.306l6.549,1.306L11.227,10.91z"/>
diff --git a/_includes/social-icons/telegram.svg b/_includes/social-icons/telegram.svg
new file mode 100644
index 0000000..40bc43b
--- /dev/null
+++ b/_includes/social-icons/telegram.svg
@@ -0,0 +1 @@
+<path d="M10.563,11.596l1.286-6.063c0.053-0.256,0.022-0.44-0.092-0.551c-0.113-0.111-0.264-0.131-0.45-0.061l-7.56,2.914 C3.579,7.897,3.463,7.971,3.402,8.052C3.34,8.134,3.333,8.211,3.38,8.284s0.14,0.13,0.28,0.171l1.934,0.604l4.489-2.826 c0.123-0.082,0.216-0.099,0.28-0.053c0.041,0.029,0.029,0.073-0.035,0.131L6.696,9.592l-0.14,1.996c0.134,0,0.265-0.064,0.394-0.193 l0.945-0.91l1.96,1.444C10.229,12.139,10.465,12.027,10.563,11.596z M15.84,8c0,1.062-0.207,2.077-0.621,3.045 c-0.414,0.969-0.972,1.803-1.671,2.503c-0.7,0.699-1.534,1.257-2.503,1.671C10.077,15.633,9.062,15.84,8,15.84 s-2.077-0.207-3.045-0.621c-0.969-0.414-1.803-0.972-2.502-1.671c-0.7-0.7-1.257-1.534-1.671-2.503C0.367,10.077,0.16,9.062,0.16,8 s0.207-2.077,0.621-3.045c0.414-0.969,0.971-1.803,1.671-2.502c0.7-0.7,1.534-1.257,2.502-1.671C5.923,0.367,6.938,0.16,8,0.16 s2.077,0.207,3.045,0.621c0.969,0.414,1.803,0.971,2.503,1.671c0.699,0.7,1.257,1.534,1.671,2.502C15.633,5.923,15.84,6.938,15.84,8 z"/>
diff --git a/_includes/social-icons/twitter.svg b/_includes/social-icons/twitter.svg
new file mode 100644
index 0000000..0f5322f
--- /dev/null
+++ b/_includes/social-icons/twitter.svg
@@ -0,0 +1 @@
+<path d="M16 3.038c-.59.26-1.22.437-1.885.517.677-.407 1.198-1.05 1.443-1.816-.634.37-1.337.64-2.085.79-.598-.64-1.45-1.04-2.396-1.04-1.812 0-3.282 1.47-3.282 3.28 0 .26.03.51.085.75-2.728-.13-5.147-1.44-6.766-3.42C.83 2.58.67 3.14.67 3.75c0 1.14.58 2.143 1.46 2.732-.538-.017-1.045-.165-1.487-.41v.04c0 1.59 1.13 2.918 2.633 3.22-.276.074-.566.114-.865.114-.21 0-.41-.02-.61-.058.42 1.304 1.63 2.253 3.07 2.28-1.12.88-2.54 1.404-4.07 1.404-.26 0-.52-.015-.78-.045 1.46.93 3.18 1.474 5.04 1.474 6.04 0 9.34-5 9.34-9.33 0-.14 0-.28-.01-.42.64-.46 1.2-1.04 1.64-1.7z"/>
diff --git a/_includes/social-icons/whatsapp.svg b/_includes/social-icons/whatsapp.svg
new file mode 100644
index 0000000..579f08c
--- /dev/null
+++ b/_includes/social-icons/whatsapp.svg
@@ -0,0 +1,4 @@
+<path
+ d="m13.64,2.33C12.14.83,10.15,0,8.03,0,3.66,0,.11,3.56.1,7.93c0,1.4.36,2.76,1.06,3.96L.04,16l4.2-1.1c1.16.63,2.46.96,3.79.97h0s0,0,0,0c4.37,0,7.93-3.56,7.93-7.93,0-2.12-.82-4.11-2.32-5.61Zm-5.61,12.2h0c-1.18,0-2.34-.32-3.35-.92l-.24-.14-2.49.65.67-2.43-.16-.25c-.66-1.05-1.01-2.26-1.01-3.51,0-3.63,2.96-6.59,6.59-6.59,1.76,0,3.41.69,4.66,1.93,1.24,1.25,1.93,2.9,1.93,4.66,0,3.63-2.96,6.59-6.59,6.59Z" />
+<path
+ d="m11.65,9.59c-.2-.1-1.17-.58-1.35-.64-.18-.07-.31-.1-.45.1-.13.2-.51.64-.63.78-.12.13-.23.15-.43.05-.2-.1-.84-.31-1.59-.98-.59-.53-.99-1.17-1.1-1.37-.12-.2-.01-.31.09-.4.09-.09.2-.23.3-.35.1-.12.13-.2.2-.33.07-.13.03-.25-.02-.35-.05-.1-.45-1.07-.61-1.47-.16-.39-.32-.33-.45-.34-.12,0-.25,0-.38,0s-.35.05-.53.25c-.18.2-.69.68-.69,1.65s.71,1.92.81,2.05c.1.13,1.4,2.13,3.38,2.99.47.2.84.33,1.13.42.47.15.91.13,1.25.08.38-.06,1.17-.48,1.34-.94.17-.46.17-.86.12-.94-.05-.08-.18-.13-.38-.23Z" />
diff --git a/_includes/social-icons/x.svg b/_includes/social-icons/x.svg
new file mode 100644
index 0000000..1c8360c
--- /dev/null
+++ b/_includes/social-icons/x.svg
@@ -0,0 +1,3 @@
+<path
+d="M 9.5237333,6.7756869 15.481067,0 h -1.4112 L 8.8949333,5.8820316 4.7648,0 H 0 L 6.2469333,8.8955204 0,16 H 1.4112 L 6.8725333,9.7870441 11.2352,16 H 16 M 1.9205333,1.0412656 h 2.168 L 14.0688,15.009892 h -2.168533"
+style="stroke-width:0.0533111" />
diff --git a/_includes/social-icons/youtube.svg b/_includes/social-icons/youtube.svg
new file mode 100644
index 0000000..dfd5661
--- /dev/null
+++ b/_includes/social-icons/youtube.svg
@@ -0,0 +1 @@
+<path d="M0 7.345c0-1.294.16-2.59.16-2.59s.156-1.1.636-1.587c.608-.637 1.408-.617 1.764-.684C3.84 2.36 8 2.324 8 2.324s3.362.004 5.6.166c.314.038.996.04 1.604.678.48.486.636 1.588.636 1.588S16 6.05 16 7.346v1.258c0 1.296-.16 2.59-.16 2.59s-.156 1.102-.636 1.588c-.608.638-1.29.64-1.604.678-2.238.162-5.6.166-5.6.166s-4.16-.037-5.44-.16c-.356-.067-1.156-.047-1.764-.684-.48-.487-.636-1.587-.636-1.587S0 9.9 0 8.605v-1.26zm6.348 2.73V5.58l4.323 2.255-4.32 2.24z"/>
diff --git a/_includes/social-item.html b/_includes/social-item.html
new file mode 100644
index 0000000..7f2e101
--- /dev/null
+++ b/_includes/social-item.html
@@ -0,0 +1,7 @@
+<li>{% assign entry = include.item %}
+ <a {% unless entry.platform == 'rss' %}rel="me" {% endunless %}href="{{ entry.user_url }}" target="_blank" title="{{ entry.title | default: entry.platform }}">
+ <svg class="svg-icon grey">
+ <use xlink:href="{{ '/assets/minima-social-icons.svg#' | append: entry.platform | relative_url }}"></use>
+ </svg>
+ </a>
+</li>
diff --git a/_includes/social.html b/_includes/social.html
new file mode 100644
index 0000000..8a4af8b
--- /dev/null
+++ b/_includes/social.html
@@ -0,0 +1,5 @@
+<ul class="social-media-list">
+{%- for entry in site.minima.social_links -%}
+ {%- include social-item.html item = entry -%}
+{%- endfor -%}
+</ul>
diff --git a/_includes/svg_symbol.html b/_includes/svg_symbol.html
new file mode 100644
index 0000000..5c9127c
--- /dev/null
+++ b/_includes/svg_symbol.html
@@ -0,0 +1,3 @@
+<symbol id="{{ include.key }}" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" viewBox="0 0 16 16">
+ {%- include social-icons/{{ include.key }}.svg -%}
+</symbol>
diff --git a/_layouts/all_posts.html b/_layouts/all_posts.html
new file mode 100644
index 0000000..c81df2f
--- /dev/null
+++ b/_layouts/all_posts.html
@@ -0,0 +1,61 @@
+---
+layout: base
+---
+
+<div class="home">
+ {%- if page.title -%}
+ <h1 class="page-heading">{{ page.title }}</h1>
+ {%- endif -%}
+
+ {{ content }}
+
+
+ {% if site.paginate %}
+ {% assign posts = paginator.posts %}
+ {% else %}
+ {% assign posts = site.posts %}
+ {% endif %}
+
+
+ {%- if posts.size > 0 -%}
+ {%- if page.list_title -%}
+ <h2 class="post-list-heading">{{ page.list_title }}</h2>
+ {%- endif -%}
+ <ul class="post-list">
+ {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
+ {%- for post in posts -%}
+ <li>
+ <span class="post-meta">{{ post.date | date: date_format }}</span>
+ <h3>
+ <a class="post-link" href="{{ post.url | relative_url }}">
+ {{ post.title | escape }}
+ </a>
+ </h3>
+ {%- if site.show_excerpts -%}
+ {{ post.excerpt }}
+ {%- endif -%}
+ </li>
+ {%- endfor -%}
+ </ul>
+
+ {% if site.paginate %}
+ <div class="pager">
+ <ul class="pagination">
+ {%- if paginator.previous_page %}
+ <li><a href="{{ paginator.previous_page_path | relative_url }}" class="previous-page">{{ paginator.previous_page }}</a></li>
+ {%- else %}
+ <li><div class="pager-edge">•</div></li>
+ {%- endif %}
+ <li><div class="current-page">{{ paginator.page }}</div></li>
+ {%- if paginator.next_page %}
+ <li><a href="{{ paginator.next_page_path | relative_url }}" class="next-page">{{ paginator.next_page }}</a></li>
+ {%- else %}
+ <li><div class="pager-edge">•</div></li>
+ {%- endif %}
+ </ul>
+ </div>
+ {%- endif %}
+
+ {%- endif -%}
+
+</div>
diff --git a/_layouts/base.html b/_layouts/base.html
new file mode 100644
index 0000000..58e141b
--- /dev/null
+++ b/_layouts/base.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="{{ page.lang | default: site.lang | default: "en" }}">
+
+ {%- include head.html -%}
+
+ <body>
+
+ {%- include header.html -%}
+
+ <main class="page-content" aria-label="Content">
+ <div class="wrapper">
+ {{ content }}
+ </div>
+ </main>
+
+ {%- include footer.html -%}
+
+ </body>
+
+</html>
diff --git a/_layouts/home.html b/_layouts/home.html
new file mode 100644
index 0000000..34dc79b
--- /dev/null
+++ b/_layouts/home.html
@@ -0,0 +1,63 @@
+---
+layout: base
+---
+
+<div class="home">
+ {%- if page.title -%}
+ <h1 class="page-heading">{{ page.title }}</h1>
+ {%- endif -%}
+
+ {{ content }}
+
+
+ {% if site.paginate %}
+ {% assign posts = paginator.posts %}
+ {% else %}
+ {% assign posts = site.posts %}
+ {% endif %}
+
+
+ {%- if posts.size > 0 -%}
+ {%- if page.list_title -%}
+ <h2 class="post-list-heading">{{ page.list_title }}</h2>
+ {%- endif -%}
+ <ul class="post-list">
+ {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
+ {%- for post in site.posts | limit: 5 -%}
+ <li>
+ <span class="post-meta">{{ post.date | date: date_format }}</span>
+ <h3>
+ <a class="post-link" href="{{ post.url | relative_url }}">
+ {{ post.title | escape }}
+ </a>
+ </h3>
+ {%- if site.show_excerpts -%}
+ {{ post.excerpt }}
+ {%- endif -%}
+ </li>
+ {%- endfor -%}
+ </ul>
+
+ {% if site.paginate %}
+ <div class="pager">
+ <ul class="pagination">
+ {%- if paginator.previous_page %}
+ <li><a href="{{ paginator.previous_page_path | relative_url }}" class="previous-page">{{ paginator.previous_page }}</a></li>
+ {%- else %}
+ <li><div class="pager-edge">•</div></li>
+ {%- endif %}
+ <li><div class="current-page">{{ paginator.page }}</div></li>
+ {%- if paginator.next_page %}
+ <li><a href="{{ paginator.next_page_path | relative_url }}" class="next-page">{{ paginator.next_page }}</a></li>
+ {%- else %}
+ <li><div class="pager-edge">•</div></li>
+ {%- endif %}
+ </ul>
+ </div>
+ {%- endif %}
+
+ <a href="/posts">See All Posts &rarr;</a>
+
+ {%- endif -%}
+
+</div>
diff --git a/_layouts/page.html b/_layouts/page.html
new file mode 100644
index 0000000..18544b4
--- /dev/null
+++ b/_layouts/page.html
@@ -0,0 +1,14 @@
+---
+layout: base
+---
+<article class="post">
+
+ <header class="post-header">
+ <h1 class="post-title">{{ page.title | escape }}</h1>
+ </header>
+
+ <div class="post-content">
+ {{ content }}
+ </div>
+
+</article>
diff --git a/_layouts/post.html b/_layouts/post.html
new file mode 100644
index 0000000..dc71866
--- /dev/null
+++ b/_layouts/post.html
@@ -0,0 +1,38 @@
+---
+layout: base
+---
+<article class="post h-entry" itemscope itemtype="http://schema.org/BlogPosting">
+
+ <header class="post-header">
+ <h1 class="post-title p-name" itemprop="name headline">{{ page.title | escape }}</h1>
+ <p class="post-meta">
+ {%- assign date_format = site.minima.date_format | default: "%b %-d, %Y" -%}
+ <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
+ {{ page.date | date: date_format }}
+ </time>
+ {%- if page.modified_date -%}
+ ~
+ {%- assign mdate = page.modified_date | date_to_xmlschema -%}
+ <time class="dt-modified" datetime="{{ mdate }}" itemprop="dateModified">
+ {{ mdate | date: date_format }}
+ </time>
+ {%- endif -%}
+ {%- if page.author -%}
+ • {% for author in page.author %}
+ <span itemprop="author" itemscope itemtype="http://schema.org/Person">
+ <span class="p-author h-card" itemprop="name">{{ author }}</span></span>
+ {%- if forloop.last == false %}, {% endif -%}
+ {% endfor %}
+ {%- endif -%}</p>
+ </header>
+
+ <div class="post-content e-content" itemprop="articleBody">
+ {{ content }}
+ </div>
+
+ {%- if site.disqus.shortname -%}
+ {%- include disqus_comments.html -%}
+ {%- endif -%}
+
+ <a class="u-url" href="{{ page.url | relative_url }}" hidden></a>
+</article>
diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss
new file mode 100644
index 0000000..ea8d8f2
--- /dev/null
+++ b/_sass/minima/_base.scss
@@ -0,0 +1,281 @@
+html {
+ font-size: $base-font-size;
+}
+
+/**
+ * Reset some basic elements
+ */
+body, h1, h2, h3, h4, h5, h6,
+p, blockquote, pre, hr,
+dl, dd, ol, ul, figure {
+ margin: 0;
+ padding: 0;
+
+}
+
+
+
+/**
+ * Basic styling
+ */
+body {
+ font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;
+ color: $text-color;
+ background-color: $background-color;
+ -webkit-text-size-adjust: 100%;
+ -webkit-font-feature-settings: "kern" 1;
+ -moz-font-feature-settings: "kern" 1;
+ -o-font-feature-settings: "kern" 1;
+ font-feature-settings: "kern" 1;
+ font-kerning: normal;
+ display: flex;
+ min-height: 100vh;
+ flex-direction: column;
+ overflow-wrap: break-word;
+}
+
+
+
+/**
+ * Set `margin-bottom` to maintain vertical rhythm
+ */
+h1, h2, h3, h4, h5, h6,
+p, blockquote, pre,
+ul, ol, dl, figure,
+%vertical-rhythm {
+ margin-bottom: $spacing-unit * .5;
+}
+
+hr {
+ margin-top: $spacing-unit;
+ margin-bottom: $spacing-unit;
+}
+
+/**
+ * `main` element
+ */
+main {
+ display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */
+}
+
+
+
+/**
+ * Images
+ */
+img {
+ max-width: 100%;
+ vertical-align: middle;
+}
+
+
+
+/**
+ * Figures
+ */
+figure > img {
+ display: block;
+}
+
+figcaption {
+ font-size: $small-font-size;
+}
+
+
+
+/**
+ * Lists
+ */
+ul, ol {
+ margin-left: $spacing-unit;
+}
+
+li {
+ > ul,
+ > ol {
+ margin-bottom: 0;
+ }
+}
+
+
+
+/**
+ * Headings
+ */
+h1, h2, h3, h4, h5, h6 {
+ font-weight: $base-font-weight;
+}
+
+
+
+/**
+ * Links
+ */
+a {
+ color: $link-base-color;
+ text-decoration: none;
+
+ &:visited {
+ color: $link-visited-color;
+ }
+
+ &:hover {
+ color: $link-hover-color;
+ text-decoration: underline;
+ }
+
+ .social-media-list &:hover {
+ text-decoration: none;
+
+ .username {
+ text-decoration: underline;
+ }
+ }
+}
+
+
+/**
+ * Blockquotes
+ */
+blockquote {
+ color: $brand-color;
+ border-left: 4px solid $border-color-01;
+ padding-left: $spacing-unit * .5;
+ @include relative-font-size(1.125);
+ font-style: italic;
+
+ > :last-child {
+ margin-bottom: 0;
+ }
+
+ i, em {
+ font-style: normal;
+ }
+}
+
+
+
+/**
+ * Code formatting
+ */
+pre,
+code {
+ font-family: $code-font-family;
+ font-size: 0.9375em;
+ border: 1px solid $border-color-01;
+ border-radius: 3px;
+ background-color: $code-background-color;
+}
+
+code {
+ padding: 1px 5px;
+}
+
+pre {
+ padding: 8px 12px;
+ overflow-x: auto;
+
+ > code {
+ border: 0;
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+
+.highlight {
+ border-radius: 3px;
+ background: $code-background-color;
+ @extend %vertical-rhythm;
+
+ .highlighter-rouge & {
+ background: $code-background-color;
+ }
+}
+
+
+
+/**
+ * Wrapper
+ */
+.wrapper {
+ max-width: calc(#{$content-width} - (#{$spacing-unit}));
+ margin-right: auto;
+ margin-left: auto;
+ padding-right: $spacing-unit * .5;
+ padding-left: $spacing-unit * .5;
+ @extend %clearfix;
+
+ @media screen and (min-width: $on-large) {
+ max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));
+ padding-right: $spacing-unit;
+ padding-left: $spacing-unit;
+ }
+}
+
+
+
+/**
+ * Clearfix
+ */
+%clearfix:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+
+
+
+/**
+ * Icons
+ */
+
+.orange {
+ color: #f66a0a;
+}
+
+.grey {
+ color: #828282;
+}
+
+.svg-icon {
+ width: 1.25em;
+ height: 1.25em;
+ display: inline-block;
+ fill: currentColor;
+ vertical-align: text-bottom;
+}
+
+
+/**
+ * Tables
+ */
+table {
+ margin-bottom: $spacing-unit;
+ width: 100%;
+ text-align: $table-text-align;
+ color: $table-text-color;
+ border-collapse: collapse;
+ border: 1px solid $table-border-color;
+ tr {
+ &:nth-child(even) {
+ background-color: $table-zebra-color;
+ }
+ }
+ th, td {
+ padding: ($spacing-unit * 33.3333333333 * .01) ($spacing-unit * .5);
+ }
+ th {
+ background-color: $table-header-bg-color;
+ border: 1px solid $table-header-border;
+ }
+ td {
+ border: 1px solid $table-border-color;
+ }
+
+ @include media-query($on-laptop) {
+ display: block;
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ }
+}
diff --git a/_sass/minima/_layout.scss b/_sass/minima/_layout.scss
new file mode 100644
index 0000000..426f390
--- /dev/null
+++ b/_sass/minima/_layout.scss
@@ -0,0 +1,341 @@
+/**
+ * Site header
+ */
+.site-header {
+ border-top: 5px solid $border-color-03;
+ border-bottom: 1px solid $border-color-01;
+ min-height: $spacing-unit * 1.865;
+ line-height: $base-line-height * $base-font-size * 2.25;
+
+ // Positioning context for the mobile navigation icon
+ position: relative;
+}
+
+.site-title {
+ @include relative-font-size(1.625);
+ font-weight: 300;
+ letter-spacing: -1px;
+ margin-bottom: 0;
+ float: left;
+
+ @include media-query($on-palm) {
+ padding-right: 45px;
+ }
+
+ &,
+ &:visited {
+ color: $site-title-color;
+ }
+}
+
+.site-nav {
+ position: absolute;
+ top: 9px;
+ right: $spacing-unit * .5;
+ background-color: $background-color;
+ border: 1px solid $border-color-01;
+ border-radius: 5px;
+ text-align: right;
+
+ .nav-trigger {
+ display: none;
+ }
+
+ .menu-icon {
+ float: right;
+ width: 36px;
+ height: 26px;
+ line-height: 0;
+ padding-top: 10px;
+ text-align: center;
+
+ > svg path {
+ fill: $border-color-03;
+ }
+ }
+
+ label[for="nav-trigger"] {
+ display: block;
+ float: right;
+ width: 36px;
+ height: 36px;
+ z-index: 2;
+ cursor: pointer;
+ }
+
+ input ~ .trigger {
+ clear: both;
+ display: none;
+ }
+
+ input:checked ~ .trigger {
+ display: block;
+ padding-bottom: 5px;
+ }
+
+ .page-link {
+ color: $text-color;
+ line-height: $base-line-height;
+ display: block;
+ padding: 5px 10px;
+
+ // Gaps between nav items, but not on the last one
+ &:not(:last-child) {
+ margin-right: 0;
+ }
+ margin-left: 20px;
+ }
+
+ @media screen and (min-width: $on-medium) {
+ position: static;
+ float: right;
+ border: none;
+ background-color: inherit;
+
+ label[for="nav-trigger"] {
+ display: none;
+ }
+
+ .menu-icon {
+ display: none;
+ }
+
+ input ~ .trigger {
+ display: block;
+ }
+
+ .page-link {
+ display: inline;
+ padding: 0;
+
+ &:not(:last-child) {
+ margin-right: 20px;
+ }
+ margin-left: auto;
+ }
+ }
+}
+
+
+
+/**
+ * Site footer
+ */
+.site-footer {
+ border-top: 1px solid $border-color-01;
+ padding: $spacing-unit 0;
+}
+
+.footer-heading {
+ @include relative-font-size(1.125);
+ margin-bottom: $spacing-unit * .5;
+}
+
+.feed-subscribe .svg-icon {
+ padding: 5px 5px 2px 0
+}
+
+.contact-list,
+.social-media-list {
+ list-style: none;
+ margin-left: 0;
+}
+
+.footer-col-wrapper,
+.social-links {
+ @include relative-font-size(0.9375);
+ color: $brand-color;
+}
+
+.footer-col {
+ margin-bottom: $spacing-unit * .5;
+}
+
+.footer-col-1,
+.footer-col-2 {
+ width: calc(50% - (#{$spacing-unit} / 2));
+}
+
+.footer-col-3 {
+ width: calc(100% - (#{$spacing-unit} / 2));
+}
+
+@media screen and (min-width: $on-large) {
+ .footer-col-1 {
+ width: calc(35% - (#{$spacing-unit} / 2));
+ }
+
+ .footer-col-2 {
+ width: calc(20% - (#{$spacing-unit} / 2));
+ }
+
+ .footer-col-3 {
+ width: calc(45% - (#{$spacing-unit} / 2));
+ }
+}
+
+@media screen and (min-width: $on-medium) {
+ .footer-col-wrapper {
+ display: flex
+ }
+
+ .footer-col {
+ width: calc(100% - (#{$spacing-unit} / 2));
+ padding: 0 ($spacing-unit * .5);
+
+ &:first-child {
+ padding-right: $spacing-unit * .5;
+ padding-left: 0;
+ }
+
+ &:last-child {
+ padding-right: 0;
+ padding-left: $spacing-unit * .5;
+ }
+ }
+}
+
+
+
+/**
+ * Page content
+ */
+.page-content {
+ padding: $spacing-unit 0;
+ flex: 1 0 auto;
+}
+
+.page-heading {
+ @include relative-font-size(2);
+}
+
+.post-list-heading {
+ @include relative-font-size(1.75);
+}
+
+.post-list {
+ margin-left: 0;
+ list-style: none;
+
+ > li {
+ margin-bottom: $spacing-unit;
+ }
+}
+
+.post-meta {
+ font-size: $small-font-size;
+ color: $brand-color;
+}
+
+.post-link {
+ display: block;
+ @include relative-font-size(1.2);
+}
+
+
+
+/**
+ * Posts
+ */
+.post-header {
+ margin-bottom: $spacing-unit;
+}
+
+.post-title,
+.post-content h1 {
+ @include relative-font-size(2.625);
+ letter-spacing: -1px;
+ line-height: 1.15;
+
+ @media screen and (min-width: $on-large) {
+ @include relative-font-size(2.625);
+ }
+}
+
+.post-content {
+ margin-bottom: $spacing-unit;
+
+ h1, h2, h3, h4, h5, h6 { margin-top: $spacing-unit }
+
+ h2 {
+ @include relative-font-size(1.75);
+
+ @media screen and (min-width: $on-large) {
+ @include relative-font-size(2);
+ }
+ }
+
+ h3 {
+ @include relative-font-size(1.375);
+
+ @media screen and (min-width: $on-large) {
+ @include relative-font-size(1.625);
+ }
+ }
+
+ h4 {
+ @include relative-font-size(1.25);
+ }
+
+ h5 {
+ @include relative-font-size(1.125);
+ }
+ h6 {
+ @include relative-font-size(1.0625);
+ }
+}
+
+
+.social-media-list {
+ display: table;
+ margin: 0 auto;
+ li {
+ float: left;
+ margin: 5px 10px 5px 0;
+ &:last-of-type { margin-right: 0 }
+ a {
+ display: block;
+ padding: 10px 12px;
+ border: 1px solid $border-color-01;
+ &:hover { border-color: $border-color-02 }
+ }
+ }
+}
+
+
+
+/**
+ * Pagination navbar
+ */
+.pagination {
+ margin-bottom: $spacing-unit;
+ @extend .social-media-list;
+ li {
+ a, div {
+ min-width: 41px;
+ text-align: center;
+ box-sizing: border-box;
+ }
+ div {
+ display: block;
+ padding: $spacing-unit * .25;
+ border: 1px solid transparent;
+
+ &.pager-edge {
+ color: $border-color-01;
+ border: 1px dashed;
+ }
+ }
+ }
+}
+
+
+
+/**
+ * Grid helpers
+ */
+@media screen and (min-width: $on-large) {
+ .one-half {
+ width: calc(50% - (#{$spacing-unit} / 2));
+ }
+}
diff --git a/_sass/minima/custom-styles.scss b/_sass/minima/custom-styles.scss
new file mode 100644
index 0000000..7c1417f
--- /dev/null
+++ b/_sass/minima/custom-styles.scss
@@ -0,0 +1,2 @@
+// Placeholder to allow defining custom styles that override everything else.
+// (Use `_sass/minima/custom-variables.scss` to override variable defaults)
diff --git a/_sass/minima/custom-variables.scss b/_sass/minima/custom-variables.scss
new file mode 100644
index 0000000..2a2d0fa
--- /dev/null
+++ b/_sass/minima/custom-variables.scss
@@ -0,0 +1 @@
+// Placeholder to allow overriding predefined variables smoothly.
diff --git a/_sass/minima/initialize.scss b/_sass/minima/initialize.scss
new file mode 100644
index 0000000..76efd77
--- /dev/null
+++ b/_sass/minima/initialize.scss
@@ -0,0 +1,50 @@
+@charset "utf-8";
+
+// Define defaults for each variable.
+
+$base-font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Segoe UI Emoji", "Segoe UI Symbol", "Apple Color Emoji", Roboto, Helvetica, Arial, sans-serif !default;
+$code-font-family: "Menlo", "Inconsolata", "Consolas", "Roboto Mono", "Ubuntu Mono", "Liberation Mono", "Courier New", monospace;
+$base-font-size: 16px !default;
+$base-font-weight: 400 !default;
+$small-font-size: $base-font-size * 0.875 !default;
+$base-line-height: 1.5 !default;
+
+$spacing-unit: 30px !default;
+
+$table-text-align: left !default;
+
+// Width of the content area
+$content-width: 800px !default;
+
+$on-palm: 600px !default;
+$on-laptop: 800px !default;
+
+$on-medium: $on-palm !default;
+$on-large: $on-laptop !default;
+
+// Use media queries like this:
+// @include media-query($on-palm) {
+// .wrapper {
+// padding-right: $spacing-unit / 2;
+// padding-left: $spacing-unit / 2;
+// }
+// }
+// Notice the following mixin uses max-width, in a deprecated, desktop-first
+// approach, whereas media queries used elsewhere now use min-width.
+@mixin media-query($device) {
+ @media screen and (max-width: $device) {
+ @content;
+ }
+}
+
+@mixin relative-font-size($ratio) {
+ font-size: #{$ratio}rem;
+}
+
+// Import pre-styling-overrides hook and style-partials.
+@import
+ "minima/custom-variables", // Hook to override predefined variables.
+ "minima/base", // Defines element resets.
+ "minima/layout", // Defines structure and style based on CSS selectors.
+ "minima/custom-styles" // Hook to override existing styles.
+;
diff --git a/_sass/minima/skins/auto.scss b/_sass/minima/skins/auto.scss
new file mode 100644
index 0000000..8902e8c
--- /dev/null
+++ b/_sass/minima/skins/auto.scss
@@ -0,0 +1,361 @@
+@charset "utf-8";
+
+// Default color scheme settings
+// These are overridden in classic.css and dark.scss
+
+$color-scheme-auto: true !default;
+$color-scheme-dark: false !default;
+
+
+// Light mode
+// ----------
+
+$lm-brand-color: #828282 !default;
+$lm-brand-color-light: lighten($lm-brand-color, 40%) !default;
+$lm-brand-color-dark: darken($lm-brand-color, 25%) !default;
+
+$lm-site-title-color: $lm-brand-color-dark !default;
+
+$lm-text-color: #111111 !default;
+$lm-background-color: #fdfdfd !default;
+$lm-code-background-color: #eeeeff !default;
+
+$lm-link-base-color: #2a7ae2 !default;
+$lm-link-visited-color: darken($lm-link-base-color, 15%) !default;
+$lm-link-hover-color: $lm-text-color !default;
+
+$lm-border-color-01: $lm-brand-color-light !default;
+$lm-border-color-02: lighten($lm-brand-color, 35%) !default;
+$lm-border-color-03: $lm-brand-color-dark !default;
+
+$lm-table-text-color: lighten($lm-text-color, 18%) !default;
+$lm-table-zebra-color: lighten($lm-brand-color, 46%) !default;
+$lm-table-header-bg-color: lighten($lm-brand-color, 43%) !default;
+$lm-table-header-border: lighten($lm-brand-color, 37%) !default;
+$lm-table-border-color: $lm-border-color-01 !default;
+
+
+// Syntax highlighting styles should be adjusted appropriately for every "skin"
+// ----------------------------------------------------------------------------
+
+@mixin lm-highlight {
+ .highlight {
+ .c { color: #998; font-style: italic } // Comment
+ .err { color: #a61717; background-color: #e3d2d2 } // Error
+ .k { font-weight: bold } // Keyword
+ .o { font-weight: bold } // Operator
+ .cm { color: #998; font-style: italic } // Comment.Multiline
+ .cp { color: #999; font-weight: bold } // Comment.Preproc
+ .c1 { color: #998; font-style: italic } // Comment.Single
+ .cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
+ .gd { color: #000; background-color: #fdd } // Generic.Deleted
+ .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
+ .ge { font-style: italic } // Generic.Emph
+ .gr { color: #a00 } // Generic.Error
+ .gh { color: #999 } // Generic.Heading
+ .gi { color: #000; background-color: #dfd } // Generic.Inserted
+ .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
+ .go { color: #888 } // Generic.Output
+ .gp { color: #555 } // Generic.Prompt
+ .gs { font-weight: bold } // Generic.Strong
+ .gu { color: #aaa } // Generic.Subheading
+ .gt { color: #a00 } // Generic.Traceback
+ .kc { font-weight: bold } // Keyword.Constant
+ .kd { font-weight: bold } // Keyword.Declaration
+ .kp { font-weight: bold } // Keyword.Pseudo
+ .kr { font-weight: bold } // Keyword.Reserved
+ .kt { color: #458; font-weight: bold } // Keyword.Type
+ .m { color: #099 } // Literal.Number
+ .s { color: #d14 } // Literal.String
+ .na { color: #008080 } // Name.Attribute
+ .nb { color: #0086B3 } // Name.Builtin
+ .nc { color: #458; font-weight: bold } // Name.Class
+ .no { color: #008080 } // Name.Constant
+ .ni { color: #800080 } // Name.Entity
+ .ne { color: #900; font-weight: bold } // Name.Exception
+ .nf { color: #900; font-weight: bold } // Name.Function
+ .nn { color: #555 } // Name.Namespace
+ .nt { color: #000080 } // Name.Tag
+ .nv { color: #008080 } // Name.Variable
+ .ow { font-weight: bold } // Operator.Word
+ .w { color: #bbb } // Text.Whitespace
+ .mf { color: #099 } // Literal.Number.Float
+ .mh { color: #099 } // Literal.Number.Hex
+ .mi { color: #099 } // Literal.Number.Integer
+ .mo { color: #099 } // Literal.Number.Oct
+ .sb { color: #d14 } // Literal.String.Backtick
+ .sc { color: #d14 } // Literal.String.Char
+ .sd { color: #d14 } // Literal.String.Doc
+ .s2 { color: #d14 } // Literal.String.Double
+ .se { color: #d14 } // Literal.String.Escape
+ .sh { color: #d14 } // Literal.String.Heredoc
+ .si { color: #d14 } // Literal.String.Interpol
+ .sx { color: #d14 } // Literal.String.Other
+ .sr { color: #009926 } // Literal.String.Regex
+ .s1 { color: #d14 } // Literal.String.Single
+ .ss { color: #990073 } // Literal.String.Symbol
+ .bp { color: #999 } // Name.Builtin.Pseudo
+ .vc { color: #008080 } // Name.Variable.Class
+ .vg { color: #008080 } // Name.Variable.Global
+ .vi { color: #008080 } // Name.Variable.Instance
+ .il { color: #099 } // Literal.Number.Integer.Long
+ }
+}
+
+
+// Dark mode
+// ---------
+
+$dm-brand-color: #999999 !default;
+$dm-brand-color-light: lighten($dm-brand-color, 5%) !default;
+$dm-brand-color-dark: darken($dm-brand-color, 35%) !default;
+
+$dm-site-title-color: $dm-brand-color-light !default;
+
+$dm-text-color: #bbbbbb !default;
+$dm-background-color: #181818 !default;
+$dm-code-background-color: #212121 !default;
+
+$dm-link-base-color: #79b8ff !default;
+$dm-link-visited-color: $dm-link-base-color !default;
+$dm-link-hover-color: $dm-text-color !default;
+
+$dm-border-color-01: $dm-brand-color-dark !default;
+$dm-border-color-02: $dm-brand-color-light !default;
+$dm-border-color-03: $dm-brand-color !default;
+
+$dm-table-text-color: $dm-text-color !default;
+$dm-table-zebra-color: lighten($dm-background-color, 4%) !default;
+$dm-table-header-bg-color: lighten($dm-background-color, 10%) !default;
+$dm-table-header-border: lighten($dm-background-color, 21%) !default;
+$dm-table-border-color: $dm-border-color-01 !default;
+
+
+// Syntax highlighting styles should be adjusted appropriately for every "skin"
+// List of tokens: https://github.com/rouge-ruby/rouge/wiki/List-of-tokens
+// Some colors come from Material Theme Darker:
+// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/settings/specific/darker-hc.ts
+// https://github.com/material-theme/vsc-material-theme/blob/master/scripts/generator/color-set.ts
+// ----------------------------------------------------------------------------
+
+@mixin dm-highlight {
+ .highlight {
+ .c { color: #545454; font-style: italic } // Comment
+ .err { color: #f07178; background-color: #e3d2d2 } // Error
+ .k { color: #89DDFF; font-weight: bold } // Keyword
+ .o { font-weight: bold } // Operator
+ .cm { color: #545454; font-style: italic } // Comment.Multiline
+ .cp { color: #545454; font-weight: bold } // Comment.Preproc
+ .c1 { color: #545454; font-style: italic } // Comment.Single
+ .cs { color: #545454; font-weight: bold; font-style: italic } // Comment.Special
+ .gd { color: #000; background-color: #fdd } // Generic.Deleted
+ .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
+ .ge { font-style: italic } // Generic.Emph
+ .gr { color: #f07178 } // Generic.Error
+ .gh { color: #999 } // Generic.Heading
+ .gi { color: #000; background-color: #dfd } // Generic.Inserted
+ .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
+ .go { color: #888 } // Generic.Output
+ .gp { color: #555 } // Generic.Prompt
+ .gs { font-weight: bold } // Generic.Strong
+ .gu { color: #aaa } // Generic.Subheading
+ .gt { color: #f07178 } // Generic.Traceback
+ .kc { font-weight: bold } // Keyword.Constant
+ .kd { font-weight: bold } // Keyword.Declaration
+ .kp { font-weight: bold } // Keyword.Pseudo
+ .kr { font-weight: bold } // Keyword.Reserved
+ .kt { color: #FFCB6B; font-weight: bold } // Keyword.Type
+ .m { color: #F78C6C } // Literal.Number
+ .s { color: #C3E88D } // Literal.String
+ .na { color: #008080 } // Name.Attribute
+ .nb { color: #EEFFFF } // Name.Builtin
+ .nc { color: #FFCB6B; font-weight: bold } // Name.Class
+ .no { color: #008080 } // Name.Constant
+ .ni { color: #800080 } // Name.Entity
+ .ne { color: #900; font-weight: bold } // Name.Exception
+ .nf { color: #82AAFF; font-weight: bold } // Name.Function
+ .nn { color: #555 } // Name.Namespace
+ .nt { color: #FFCB6B } // Name.Tag
+ .nv { color: #EEFFFF } // Name.Variable
+ .ow { font-weight: bold } // Operator.Word
+ .w { color: #EEFFFF } // Text.Whitespace
+ .mf { color: #F78C6C } // Literal.Number.Float
+ .mh { color: #F78C6C } // Literal.Number.Hex
+ .mi { color: #F78C6C } // Literal.Number.Integer
+ .mo { color: #F78C6C } // Literal.Number.Oct
+ .sb { color: #C3E88D } // Literal.String.Backtick
+ .sc { color: #C3E88D } // Literal.String.Char
+ .sd { color: #C3E88D } // Literal.String.Doc
+ .s2 { color: #C3E88D } // Literal.String.Double
+ .se { color: #EEFFFF } // Literal.String.Escape
+ .sh { color: #C3E88D } // Literal.String.Heredoc
+ .si { color: #C3E88D } // Literal.String.Interpol
+ .sx { color: #C3E88D } // Literal.String.Other
+ .sr { color: #C3E88D } // Literal.String.Regex
+ .s1 { color: #C3E88D } // Literal.String.Single
+ .ss { color: #C3E88D } // Literal.String.Symbol
+ .bp { color: #999 } // Name.Builtin.Pseudo
+ .vc { color: #FFCB6B } // Name.Variable.Class
+ .vg { color: #EEFFFF } // Name.Variable.Global
+ .vi { color: #EEFFFF } // Name.Variable.Instance
+ .il { color: #F78C6C } // Literal.Number.Integer.Long
+ }
+}
+
+
+// Mode selection
+// --------------
+
+
+// Classic skin (always light mode)
+// Assign outside of the if construct to establish global variable scope
+
+$brand-color: $lm-brand-color;
+$brand-color-light: $lm-brand-color-light;
+$brand-color-dark: $lm-brand-color-dark;
+
+$site-title-color: $lm-site-title-color;
+
+$text-color: $lm-text-color;
+$background-color: $lm-background-color;
+$code-background-color: $lm-code-background-color;
+
+$link-base-color: $lm-link-base-color;
+$link-visited-color: $lm-link-visited-color;
+$link-hover-color: $lm-link-hover-color;
+
+$border-color-01: $lm-border-color-01;
+$border-color-02: $lm-border-color-02;
+$border-color-03: $lm-border-color-03;
+
+$table-text-color: $lm-table-text-color;
+$table-zebra-color: $lm-table-zebra-color;
+$table-header-bg-color: $lm-table-header-bg-color;
+$table-header-border: $lm-table-header-border;
+$table-border-color: $lm-table-border-color;
+
+
+@if $color-scheme-auto {
+
+ // Auto mode
+
+ :root {
+ --minima-brand-color: #{$lm-brand-color};
+ --minima-brand-color-light: #{$lm-brand-color-light};
+ --minima-brand-color-dark: #{$lm-brand-color-dark};
+
+ --minima-site-title-color: #{$lm-site-title-color};
+
+ --minima-text-color: #{$lm-text-color};
+ --minima-background-color: #{$lm-background-color};
+ --minima-code-background-color: #{$lm-code-background-color};
+
+ --minima-link-base-color: #{$lm-link-base-color};
+ --minima-link-visited-color: #{$lm-link-visited-color};
+ --minima-link-hover-color: #{$lm-link-hover-color};
+
+ --minima-border-color-01: #{$lm-border-color-01};
+ --minima-border-color-02: #{$lm-border-color-02};
+ --minima-border-color-03: #{$lm-border-color-03};
+
+ --minima-table-text-color: #{$lm-table-text-color};
+ --minima-table-zebra-color: #{$lm-table-zebra-color};
+ --minima-table-header-bg-color: #{$lm-table-header-bg-color};
+ --minima-table-header-border: #{$lm-table-header-border};
+ --minima-table-border-color: #{$lm-table-border-color};
+ }
+
+ @include lm-highlight;
+
+ @media (prefers-color-scheme: dark) {
+ :root {
+ --minima-brand-color: #{$dm-brand-color};
+ --minima-brand-color-light: #{$dm-brand-color-light};
+ --minima-brand-color-dark: #{$dm-brand-color-dark};
+
+ --minima-site-title-color: #{$dm-site-title-color};
+
+ --minima-text-color: #{$dm-text-color};
+ --minima-background-color: #{$dm-background-color};
+ --minima-code-background-color: #{$dm-code-background-color};
+
+ --minima-link-base-color: #{$dm-link-base-color};
+ --minima-link-visited-color: #{$dm-link-visited-color};
+ --minima-link-hover-color: #{$dm-link-hover-color};
+
+ --minima-border-color-01: #{$dm-border-color-01};
+ --minima-border-color-02: #{$dm-border-color-02};
+ --minima-border-color-03: #{$dm-border-color-03};
+
+ --minima-table-text-color: #{$dm-table-text-color};
+ --minima-table-zebra-color: #{$dm-table-zebra-color};
+ --minima-table-header-bg-color: #{$dm-table-header-bg-color};
+ --minima-table-header-border: #{$dm-table-header-border};
+ --minima-table-border-color: #{$dm-table-border-color};
+ }
+
+ @include dm-highlight;
+ }
+
+ $brand-color: var(--minima-brand-color);
+ $brand-color-light: var(--minima-brand-color-light);
+ $brand-color-dark: var(--minima-brand-color-dark);
+
+ $site-title-color: var(--minima-site-title-color);
+
+ $text-color: var(--minima-text-color);
+ $background-color: var(--minima-background-color);
+ $code-background-color: var(--minima-code-background-color);
+
+ $link-base-color: var(--minima-link-base-color);
+ $link-visited-color: var(--minima-link-visited-color);
+ $link-hover-color: var(--minima-link-hover-color);
+
+ $border-color-01: var(--minima-border-color-01);
+ $border-color-02: var(--minima-border-color-02);
+ $border-color-03: var(--minima-border-color-03);
+
+ $table-text-color: var(--minima-table-text-color);
+ $table-zebra-color: var(--minima-table-zebra-color);
+ $table-header-bg-color: var(--minima-table-header-bg-color);
+ $table-header-border: var(--minima-table-header-border);
+ $table-border-color: var(--minima-table-border-color);
+
+
+} @else if $color-scheme-dark {
+
+ // Dark skin (always dark mode)
+
+ $brand-color: $dm-brand-color;
+ $brand-color-light: $dm-brand-color-light;
+ $brand-color-dark: $dm-brand-color-dark;
+
+ $site-title-color: $dm-site-title-color;
+
+ $text-color: $dm-text-color;
+ $background-color: $dm-background-color;
+ $code-background-color: $dm-code-background-color;
+
+ $link-base-color: $dm-link-base-color;
+ $link-visited-color: $dm-link-visited-color;
+ $link-hover-color: $dm-link-hover-color;
+
+ $border-color-01: $dm-border-color-01;
+ $border-color-02: $dm-border-color-02;
+ $border-color-03: $dm-border-color-03;
+
+ $table-text-color: $dm-table-text-color;
+ $table-zebra-color: $dm-table-zebra-color;
+ $table-header-bg-color: $dm-table-header-bg-color;
+ $table-header-border: $dm-table-header-border;
+ $table-border-color: $dm-table-border-color;
+
+ @include dm-highlight;
+
+
+} @else {
+
+ // Classic skin syntax highlighting
+ @include lm-highlight;
+
+}
diff --git a/_sass/minima/skins/classic.scss b/_sass/minima/skins/classic.scss
new file mode 100644
index 0000000..e61b078
--- /dev/null
+++ b/_sass/minima/skins/classic.scss
@@ -0,0 +1,5 @@
+@charset "utf-8";
+
+$color-scheme-auto: false;
+$color-scheme-dark: false;
+@import "minima/skins/auto";
diff --git a/_sass/minima/skins/dark.scss b/_sass/minima/skins/dark.scss
new file mode 100644
index 0000000..159226e
--- /dev/null
+++ b/_sass/minima/skins/dark.scss
@@ -0,0 +1,5 @@
+@charset "utf-8";
+
+$color-scheme-auto: false;
+$color-scheme-dark: true;
+@import "minima/skins/auto";
diff --git a/_sass/minima/skins/solarized-dark.scss b/_sass/minima/skins/solarized-dark.scss
new file mode 100644
index 0000000..500dceb
--- /dev/null
+++ b/_sass/minima/skins/solarized-dark.scss
@@ -0,0 +1,5 @@
+@charset "utf-8";
+
+$sol-is-auto: false;
+$sol-is-dark: true;
+@import "minima/skins/solarized";
diff --git a/_sass/minima/skins/solarized-light.scss b/_sass/minima/skins/solarized-light.scss
new file mode 100644
index 0000000..d2fc065
--- /dev/null
+++ b/_sass/minima/skins/solarized-light.scss
@@ -0,0 +1,4 @@
+@charset "utf-8";
+
+$sol-is-auto: false;
+@import "minima/skins/solarized";
diff --git a/_sass/minima/skins/solarized.scss b/_sass/minima/skins/solarized.scss
new file mode 100644
index 0000000..7ac1f5a
--- /dev/null
+++ b/_sass/minima/skins/solarized.scss
@@ -0,0 +1,201 @@
+@charset "utf-8";
+
+// Solarized skin
+// ==============
+// Created by Sander Voerman <mailto:sander@savoerman.nl> using the Solarized
+// color scheme by Ethan Schoonover <https://ethanschoonover.com/solarized>.
+
+// This style sheet implements three options for the minima.skin setting:
+// "solarized-light" for light mode, "solarized-dark" for dark mode, and
+// "solarized" for light or dark mode depending on user preference.
+$sol-is-auto: true !default;
+$sol-is-dark: false !default;
+
+
+// Color scheme
+// ------------
+// The inline comments show the canonical L*a*b values for each color.
+
+$sol-base03: #002b36; // 15 -12 -12
+$sol-base02: #073642; // 20 -12 -12
+$sol-base01: #586e75; // 45 -07 -07
+$sol-base00: #657b83; // 50 -07 -07
+$sol-base0: #839496; // 60 -06 -03
+$sol-base1: #93a1a1; // 65 -05 -02
+$sol-base2: #eee8d5; // 92 -00 10
+$sol-base3: #fdf6e3; // 97 00 10
+$sol-yellow: #b58900; // 60 10 65
+$sol-orange: #cb4b16; // 50 50 55
+$sol-red: #dc322f; // 50 65 45
+$sol-magenta: #d33682; // 50 65 -05
+$sol-violet: #6c71c4; // 50 15 -45
+$sol-blue: #268bd2; // 55 -10 -45
+$sol-cyan: #2aa198; // 60 -35 -05
+$sol-green: #859900; // 60 -20 65
+
+
+// Mixed colors
+// ------------
+// While not part of the original Solarized base tones, these derived tones
+// are meant to replicate the visual style of the classic skin. They should
+// not be used in cases where sufficiently contrasting colors are needed.
+
+$sol-light-mix1: mix($sol-base1, $sol-base3);
+$sol-light-mix2: mix($sol-blue, $sol-base00);
+$sol-light-mix3: mix($sol-base2, $sol-base3);
+$sol-dark-mix1: mix($sol-base01, $sol-base03);
+$sol-dark-mix2: mix($sol-blue, $sol-base0);
+$sol-dark-mix3: mix($sol-base02, $sol-base03);
+
+
+// Mode selection
+// --------------
+
+$sol-mono3: $sol-base3;
+$sol-mono2: $sol-base2;
+$sol-mono1: $sol-base1;
+$sol-mono00: $sol-base00;
+$sol-mono01: $sol-base01;
+$sol-mix1: $sol-light-mix1;
+$sol-mix2: $sol-light-mix2;
+$sol-mix3: $sol-light-mix3;
+
+@if $sol-is-dark {
+ $sol-mono3: $sol-base03;
+ $sol-mono2: $sol-base02;
+ $sol-mono1: $sol-base01;
+ $sol-mono00: $sol-base0;
+ $sol-mono01: $sol-base1;
+ $sol-mix1: $sol-dark-mix1;
+ $sol-mix2: $sol-dark-mix2;
+ $sol-mix3: $sol-dark-mix3;
+}
+
+@if $sol-is-auto {
+ :root {
+ --solarized-mono3: #{$sol-base3};
+ --solarized-mono2: #{$sol-base2};
+ --solarized-mono1: #{$sol-base1};
+ --solarized-mono00: #{$sol-base00};
+ --solarized-mono01: #{$sol-base01};
+ --solarized-mix1: #{$sol-light-mix1};
+ --solarized-mix2: #{$sol-light-mix2};
+ --solarized-mix3: #{$sol-light-mix3};
+ }
+
+ @media (prefers-color-scheme: dark) {
+ :root {
+ --solarized-mono3: #{$sol-base03};
+ --solarized-mono2: #{$sol-base02};
+ --solarized-mono1: #{$sol-base01};
+ --solarized-mono00: #{$sol-base0};
+ --solarized-mono01: #{$sol-base1};
+ --solarized-mix1: #{$sol-dark-mix1};
+ --solarized-mix2: #{$sol-dark-mix2};
+ --solarized-mix3: #{$sol-dark-mix3};
+ }
+ }
+
+ $sol-mono3: var(--solarized-mono3);
+ $sol-mono2: var(--solarized-mono2);
+ $sol-mono1: var(--solarized-mono1);
+ $sol-mono00: var(--solarized-mono00);
+ $sol-mono01: var(--solarized-mono01);
+ $sol-mix1: var(--solarized-mix1);
+ $sol-mix2: var(--solarized-mix2);
+ $sol-mix3: var(--solarized-mix3);
+}
+
+
+// Minima color variables
+// ----------------------
+
+$brand-color: $sol-mono1 !default;
+$brand-color-light: $sol-mix1 !default;
+$brand-color-dark: $sol-mono00 !default;
+
+$site-title-color: $sol-mono00 !default;
+
+$text-color: $sol-mono01 !default;
+$background-color: $sol-mono3 !default;
+$code-background-color: $sol-mono2 !default;
+
+$link-base-color: $sol-blue !default;
+$link-visited-color: $sol-mix2 !default;
+$link-hover-color: $sol-mono00 !default;
+
+$border-color-01: $brand-color-light !default;
+$border-color-02: $sol-mono1 !default;
+$border-color-03: $sol-mono00 !default;
+
+$table-text-color: $sol-mono00 !default;
+$table-zebra-color: $sol-mix3 !default;
+$table-header-bg-color: $sol-mono2 !default;
+$table-header-border: $sol-mono1 !default;
+$table-border-color: $sol-mono1 !default;
+
+
+// Syntax highlighting styles
+// --------------------------
+
+.highlight {
+ .c { color: $sol-mono1; font-style: italic } // Comment
+ .err { color: $sol-red } // Error
+ .k { color: $sol-mono01; font-weight: bold } // Keyword
+ .o { color: $sol-mono01; font-weight: bold } // Operator
+ .cm { color: $sol-mono1; font-style: italic } // Comment.Multiline
+ .cp { color: $sol-mono1; font-weight: bold } // Comment.Preproc
+ .c1 { color: $sol-mono1; font-style: italic } // Comment.Single
+ .cs { color: $sol-mono1; font-weight: bold; font-style: italic } // Comment.Special
+ .gd { color: $sol-red } // Generic.Deleted
+ .gd .x { color: $sol-red } // Generic.Deleted.Specific
+ .ge { color: $sol-mono00; font-style: italic } // Generic.Emph
+ .gr { color: $sol-red } // Generic.Error
+ .gh { color: $sol-mono1 } // Generic.Heading
+ .gi { color: $sol-green } // Generic.Inserted
+ .gi .x { color: $sol-green } // Generic.Inserted.Specific
+ .go { color: $sol-mono00 } // Generic.Output
+ .gp { color: $sol-mono00 } // Generic.Prompt
+ .gs { color: $sol-mono01; font-weight: bold } // Generic.Strong
+ .gu { color: $sol-mono1 } // Generic.Subheading
+ .gt { color: $sol-red } // Generic.Traceback
+ .kc { color: $sol-mono01; font-weight: bold } // Keyword.Constant
+ .kd { color: $sol-mono01; font-weight: bold } // Keyword.Declaration
+ .kp { color: $sol-mono01; font-weight: bold } // Keyword.Pseudo
+ .kr { color: $sol-mono01; font-weight: bold } // Keyword.Reserved
+ .kt { color: $sol-violet; font-weight: bold } // Keyword.Type
+ .m { color: $sol-cyan } // Literal.Number
+ .s { color: $sol-magenta } // Literal.String
+ .na { color: $sol-cyan } // Name.Attribute
+ .nb { color: $sol-blue } // Name.Builtin
+ .nc { color: $sol-violet; font-weight: bold } // Name.Class
+ .no { color: $sol-cyan } // Name.Constant
+ .ni { color: $sol-violet } // Name.Entity
+ .ne { color: $sol-violet; font-weight: bold } // Name.Exception
+ .nf { color: $sol-blue; font-weight: bold } // Name.Function
+ .nn { color: $sol-mono00 } // Name.Namespace
+ .nt { color: $sol-blue } // Name.Tag
+ .nv { color: $sol-cyan } // Name.Variable
+ .ow { color: $sol-mono01; font-weight: bold } // Operator.Word
+ .w { color: $sol-mono1 } // Text.Whitespace
+ .mf { color: $sol-cyan } // Literal.Number.Float
+ .mh { color: $sol-cyan } // Literal.Number.Hex
+ .mi { color: $sol-cyan } // Literal.Number.Integer
+ .mo { color: $sol-cyan } // Literal.Number.Oct
+ .sb { color: $sol-magenta } // Literal.String.Backtick
+ .sc { color: $sol-magenta } // Literal.String.Char
+ .sd { color: $sol-magenta } // Literal.String.Doc
+ .s2 { color: $sol-magenta } // Literal.String.Double
+ .se { color: $sol-magenta } // Literal.String.Escape
+ .sh { color: $sol-magenta } // Literal.String.Heredoc
+ .si { color: $sol-magenta } // Literal.String.Interpol
+ .sx { color: $sol-magenta } // Literal.String.Other
+ .sr { color: $sol-green } // Literal.String.Regex
+ .s1 { color: $sol-magenta } // Literal.String.Single
+ .ss { color: $sol-magenta } // Literal.String.Symbol
+ .bp { color: $sol-mono1 } // Name.Builtin.Pseudo
+ .vc { color: $sol-cyan } // Name.Variable.Class
+ .vg { color: $sol-cyan } // Name.Variable.Global
+ .vi { color: $sol-cyan } // Name.Variable.Instance
+ .il { color: $sol-cyan } // Literal.Number.Integer.Long
+}
diff --git a/about.md b/about.md
index aa9f1b1..0abdb96 100644
--- a/about.md
+++ b/about.md
@@ -4,7 +4,7 @@ title: About
permalink: /about/
---
-Hi, my name is Bradley Taunt. I'm a designer/developer hybrid helping software companies improve their user experience and ship more performant products.
+Hi, my name is Bradley Taunt. I'm a designer/developer hybrid helping software companies improve their user experience and ship more performant products. Currently making search engine results data more accessible at [SerpApi](https://serpapi.com).
I also actively maintain several [open source projects](/projects).
diff --git a/assets/css/style.scss b/assets/css/style.scss
new file mode 100644
index 0000000..0d1fce9
--- /dev/null
+++ b/assets/css/style.scss
@@ -0,0 +1,7 @@
+---
+# Only the main Sass file needs front matter (the dashes are enough)
+---
+
+@import
+ "minima/skins/{{ site.minima.skin | default: 'classic' }}",
+ "minima/initialize";
diff --git a/assets/minima-social-icons.liquid b/assets/minima-social-icons.liquid
new file mode 100644
index 0000000..d2951fa
--- /dev/null
+++ b/assets/minima-social-icons.liquid
@@ -0,0 +1,18 @@
+---
+permalink: /assets/minima-social-icons.svg
+---
+
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+{% comment %}
+ Iterate through {{ site.minima.social_links }} and render platform related SVG-symbol
+ unless the platform is "rss" because we need the "rss" symbol for the `Subscribe` link
+ in the footer and therefore inject the "rss" icon outside the iteration loop.
+{% endcomment %}
+{% for entry in site.minima.social_links %}
+ {%- assign symbol_id = entry.platform -%}
+ {%- unless symbol_id == "rss" -%}
+ {%- include svg_symbol.html key = symbol_id -%}
+ {% endunless %}
+{%- endfor -%}
+ {%- include svg_symbol.html key = "rss" -%}
+</svg>
diff --git a/colophon.md b/colophon.md
index b3c50e2..fce9d5d 100644
--- a/colophon.md
+++ b/colophon.md
@@ -4,7 +4,7 @@ title: Colophon
permalink: /colophon/
---
-This website is a collection of living, breathing documents. As I mention on the homepage, this place is better referred to as an online [brain dump](/dump). It might change over time. Styles might come and go. I can't help that, since tinkering with my personal blog is something I am very fond of. It's almost therapeutic.
+This website is a collection of living, breathing documents. As I mention on the homepage, this place is better referred to as an online [brain dump](/posts/dump). It might change over time. Styles might come and go. I can't help that, since tinkering with my personal blog is something I am very fond of. It's almost therapeutic.
For those interested I try to keep the details of the blog up-to-date with the information below:
diff --git a/index.md b/index.md
index 0671507..1409f1c 100644
--- a/index.md
+++ b/index.md
@@ -1,6 +1,31 @@
---
-# 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
---
+
+# Designer, developer, hardware tinkerer, open source advocate, consumer of dark roast coffee, and writer of very long sentences.
+
+Hi, my name is Bradley Taunt. I'm a designer/developer hybrid helping software companies improve their user experience and ship more performant products. Currently making search engine results data more accessible at [SerpApi](https://serpapi.com).
+
+I also actively maintain several [open source projects](/projects).
+
+I'm passionate about open source software, usability, performance, privacy, and minimal design. This small piece of the internet stores a growing collection of my personal [brain dumps](/posts/dump).
+
+### Skills & Languages
+
+Core programming languages are HTML, CSS, JavaScript, and Ruby. For design work, my preferred tools are Sketch, GIMP, and Figma. I also enjoy tinkering with basic shell scripts and [Unix systems](/public/images/unix.gif).
+
+---
+
+## Design Thought Experiments
+
+[Stop Using Hamburger Menus (Sometimes)](/posts/hamburgers)<br> Common performance and accessibility issues caused by using hamburger menus.
+
+[Better Search Results](https://search.bt.ht)<br> Rethinking the UX flow of modern search engines.
+
+[My Coffee Maker Just Makes Coffee](/posts/one-thing)<br> How products should focus on doing *one thing* very well.
+
+[Blog Anonymously](https://anon.btxx.org)<br>A basic starting point for those wishing to blog privately.
+
+---
+
+## Latest Posts
diff --git a/posts.md b/posts.md
new file mode 100644
index 0000000..fbd68e5
--- /dev/null
+++ b/posts.md
@@ -0,0 +1,5 @@
+---
+layout: all_posts
+title: Posts
+permalink: /posts/
+---
diff --git a/uses.md b/uses.md
index ad54d88..f5b96ba 100644
--- a/uses.md
+++ b/uses.md
@@ -12,10 +12,10 @@ I'm proud to support open source products and privacy-respecting communities. Th
|Service|Cost/year|
|-------|--------------|
-|[NearlyFreeSpeech](https://nearlyfreespeech.net)<br>Domains (5 total)|~$75|
+|[NearlyFreeSpeech](https://nearlyfreespeech.net)<br>Domains (5), web hosting & personal code forge|~$125|
|[Migadu](https://migadu.com)<br>Email service|$19|
|[Mullvad](https://mullvad.net)<br>Privacy focused VPN|$60|
-|[NearlyFreeSpeech](https://nearlyfreespeech.net)<br>Web hosting|~$50|
+|[Sourcehut](https://sourcehut.org)<br>Open source code forge|~$30|
## Work Laptop
diff --git a/wiki.md b/wiki.md
index 906218b..662cfb7 100644
--- a/wiki.md
+++ b/wiki.md
@@ -6,55 +6,56 @@ permalink: /wiki/
This is the homepage for my personal wiki. All sub-directories are listed below. This wiki is a growing set of documents, so things may change often.
-## Software
+### Software
-* [[wiki/alpine-linux]]
-* [[wiki/dotfiles]]
-* [[wiki/openbsd]]
-* [[wiki/qutebrowser]]
-* [[wiki/safari]]
-* [[wiki/scripts]]
-* [[wiki/sublime-text]]
-* [[wiki/ubuntu]]
+- [Alpine Linux](/wiki/alpine-linux)
+- [Dotfiles](/wiki/dotfiles)
+- [OpenBSD](/wiki/openbsd)
+- [Qutebrowser](/wiki/qutebrowser)
+- [Safari](/wiki/safari)
+- [Scripts](/wiki/scripts)
+- [Sublime Text](/wiki/sublime-text)
+- [Ubuntu](/wiki/ubuntu)
---
-## Hardware
+### Hardware
-* [[wiki/xbox]]
-* [[wiki/ps2]]
+- [Xbox](/wiki/xbox)
+- [PS2](/wiki/ps2)
---
-## Version Control Systems
+### Version Control Systems
-* [[wiki/cgit]]
+- [cgit](/wiki/cgit)
---
-## ikiwiki
+### ikiwiki
The default documentation on using ikiwiki:
-* [[ikiwiki/formatting]]
-* [[ikiwiki/wikilink]]
-* [[ikiwiki/subpage]]
-* [[ikiwiki/pagespec]]
-* [[ikiwiki/directive]]
-* [[ikiwiki/markdown]]
-* [[ikiwiki/openid]]
-* [[ikiwiki/searching]]
-* [[templates]]
+- [Formatting](/ikiwiki/formatting)
+- [Wikilink](/ikiwiki/wikilink)
+- [Subpage](/ikiwiki/subpage)
+- [Pagespec](/ikiwiki/pagespec)
+- [Directive](/ikiwiki/directive)
+- [Markdown](/ikiwiki/markdown)
+- [OpenID](/ikiwiki/openid)
+- [Searching](/ikiwiki/searching)
+- [Templates](/templates)
My own custom documentation for ikiwiki:
-* [[ikiwiki/NearlyFreeSpeech]]
-* [[ikiwiki/git]]
-* [[ikiwiki/comments]]
-* [[ikiwiki/search]]
+- [NearlyFreeSpeech](/ikiwiki/NearlyFreeSpeech)
+- [Git](/ikiwiki/git)
+- [Comments](/ikiwiki/comments)
+- [Search](/ikiwiki/search)
-## WordPress
+### WordPress
+
+- [Database Update](/wordpress/database_update)
+- [NearlyFreeSpeech Setup](/wordpress/NearlyFreeSpeech_Setup)
-* [[wordpress/database_update]]
-* [[wordpress/NearlyFreeSpeech_Setup]]