Skip to content
Commits on Source (28)
......@@ -5,6 +5,7 @@
/_site/
.jekyll-metadata
#Gemfile.lock
/vendor/bundle
# webstorm
.idea/
......@@ -17,6 +18,7 @@
*.rbc
.bundle
.config
.sass-cache
coverage
InstalledFiles
lib/bundler/man
......@@ -27,4 +29,4 @@ test/tmp
test/version_tmp
tmp
vendor
Gemfile.lock
\ No newline at end of file
Gemfile.lock
......@@ -19,7 +19,7 @@ build-master:
- bundle install
script:
- bundle exec jekyll build
- bundle exec htmlproofer ./_site --only-4xx --check-html --assume-extension --allow-hash-href --internal-domains www.shivering-isles.com
- bundle exec htmlproofer ./_site --only-4xx --check-html --assume-extension --allow-hash-href --internal-domains shivering-isles.com
- docker build --pull -f _docker/Dockerfile -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
......@@ -39,7 +39,7 @@ build:
- bundle install
script:
- bundle exec jekyll build
- bundle exec htmlproofer ./_site --only-4xx --check-html --assume-extension --allow-hash-href --internal-domains www.shivering-isles.com
- bundle exec htmlproofer ./_site --only-4xx --check-html --assume-extension --allow-hash-href --internal-domains shivering-isles.com
- docker build --pull -f _docker/Dockerfile -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
......
---
layout: error
title: "404 - Page Not Found"
permalink: 404.html
---
<!doctype html>
<!--[if (IE 8)&!(IEMobile)]><html class="no-js lt-ie9" lang="en"><![endif]-->
<!--[if (gte IE 9)| IEMobile |!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta http-equiv="Content-Type" content="text/html" charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title>404 - Page Not Found</title>
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes" />
<link rel="shortcut icon" href="{{ site.baseurl }}/assets/images/favicon.ico">
<meta http-equiv="cleartype" content="on">
<link rel="stylesheet" type='text/css' href='//fonts.googleapis.com/css?family=Open+Sans:400,300,700'>
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/ghost.min.css" />
</head>
<body>
<main role="main" id="main">
<div class="gh-app">
<div class="gh-viewport">
<div class="gh-view">
<section class="error-content error-404 js-error-container">
<section class="error-details">
<img
class="error-ghost"
alt="404"
src="{{ site.baseurl }}/assets/images/404.png"
srcset="{{ site.baseurl }}/assets/images/404.png"/>
<section class="error-message">
<h1 class="error-code">404</h1>
<h2 class="error-description">Page not found</h2>
<a class="error-link" href="{{ site.baseurl }}/">Go to the front page →</a>
</section>
</section>
</section>
</div>
</div>
</div>
</main>
<!-- Add Google Analytics -->
{% include analytics.html %}
</body>
</html>
Copyright (c) 2013-2017 Ghost Foundation - Released under The MIT License.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
The MIT License (MIT)
Copyright (c) 2015 Fábio Madeira
Copyright (c) 2016 Josh Gerdes
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
......@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## Jasper
[![Build Status](https://travis-ci.org/jekyller/jasper.svg?branch=master)](https://travis-ci.org/jekyller/jasper)
[![Ruby](https://img.shields.io/badge/ruby-2.5.2-blue.svg?style=flat)](http://travis-ci.org/jekyller/jasper)
[![Jekyll](https://img.shields.io/badge/jekyll-3.6.2-blue.svg?style=flat)](http://travis-ci.org/jekyller/jasper)
This is a port of Ghost's default theme [Casper](https://github.com/tryghost/casper) for Jekyll inspired by [Kasper](https://github.com/rosario/kasper).
You might well ask at this point why bother making a new Casper's clone?
Although this is inspired by Kasper, there are several **additional** features which make this port closer
to the original theme. This port is based on the last Casper v1.3.7 (same as v1.4.0 that runs in Ghost 1.0).
**New:** Check out **[Jasper2](https://github.com/jekyller/jasper2)**, a new port of Casper version 2!
## Live demo
[Jasper Live Demo](https://jekyller.github.io/jasper)
[Casper's Original Here](https://demo.ghost.io)
## Screenshots
**Home page**
![home page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen1.png)
**Post page**
![post page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen2.png)
**Author page**
![author page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen3.png)
**Related posts page**
![tag page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen4.png)
**Tags page with opened sidebar**
![sidebar page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen5.png)
**404 page**
![related page](https://raw.githubusercontent.com/jekyller/jasper/master/assets/images/jasper_screen6.png)
## Jasper theme includes
* Pagination
* Google Analytics tracking
* Author's profile with picture
* Disqus comments (not Ghost standard)
* Author page (New 07.02.2015)
* Tag page(s) (New 07.02.2015)
* 404 page (New 07.02.2015)
* Toggleable sliding sidebar (New 07.02.2015)
* Related posts view (New 30.10.2015)
* Tag description(s) (New 30.10.2015)
* Code Syntax Highlight (New 24.11.2015)
* Code Syntax Highlight with [highlight.js](https://highlightjs.org/) (New 06.04.2016)
* Rss updated to Jekyll v3 (New 06.04.2016)
* Updated to Casper v1.3.7 **(New 17.11.2017)**
* 'Out of the box' support for Multiple Authors **(New 17.11.2017)**
## How to use it
### Deployment
**Important:** For security reasons, Github does not allow plugins (under _plugins/) when deploying with Github Pages. This means:
**1)** that we need to generate your site locally (more details below) and push the resulting HTML to a Github repository;
**2)** built the site with [travis-ci](https://travis-ci.org/) (with goodies from [jekyll-travis](https://github.com/mfenner/jekyll-travis)) automatically pushing the generated *_site/* files to your *gh-pages* branch.
This later approach is the one I am currently using to generate the live demo.
For option **1)** simply clone this repository (*master branch*), and then run `bundle exec jekyll serve` inside the directory. Upload the resulting *_site/* contents to your repository (*master branch* if uploading as your personal page (username.github.io) or *gh-pages branch* if uploading as a project page (as for the [demo](https://github.com/jekyller/jasper/tree/gh-pages)).
For option **2)** you will need to set up travis-ci for your personal fork. Briefly all you need then is to change your details in *[\_config.yml](_config.yml)* so that you can push to your github repo. You will also need to generate a secure key to add to your *[.travis.yml](.travis.yml)* (you can find more info on how to do it in that file). Also make sure you read the documentation from [jekyll-travis](https://github.com/mfenner/jekyll-travis). This approach has clear advantages in that you simply push changes to your files and all the html files are generated for you. Also you get to know if everything is still fine with your site builds. Don't hesitate to contact me if you still have any issues (see below about issue tracking).
### Author pages
In order to properly generate author pages you need to rename the field *categories* in the front matter of every post to match that of your each author *username* as defined in the *[\_config.yml](_config.yml)* file.
With the latest update, multiple author blogs are now supported out of the box.
## Issues and contributing
This install builds well with Ruby v2.4.2 and Jekyll v3.6.2. If you run into any problems please log them on the [issue tracker](https://github.com/jekyller/jasper/issues).
Feel free pull-request your patches and fixes.
## Thanks
Many thanks to the Ghost team for all the design work that allows to make this clone possible. Also many thanks to all contributors, that help keeping the project alive and updated :smile:
## Copyright & License
Same licence as the one provided by Ghost's team. See Casper's theme [license](GHOST.txt).
Copyright (C) 2015-2017 - Released under the MIT License.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---
# Jykell configuration
# markdown: redcarpet
# highlighter: pygments
markdown: kramdown
highlighter: rouge
paginate: 5
language: 'en-us'
# Website info
name: "Sheogorath's Blog"
description: Regular setups are so boring... Let's do some magic!
#short_url: 'SISheogorath.github.io/jasper/'
usecdn: false
# disqus: username
# edit baseurl to simply '/' if using as your personal page
# (instead of a project page)
#baseurl: /
url: https://www.shivering-isles.com
# Permalinks
permalink: /:title
# permalink: /author/:username
# permalink: /tag/:tag
# Site settings
title: Sheogorath's Blog
description: Depending on the time of the day, a friend, a colleague, a wise guy. The beauty of the world is its sense of humor to show humans their way by letting them search their own.
url: 'https://shivering-isles.com'
baseurl: ''
# gems and other configs
plugins: [jekyll-paginate]
author:
name: 'Sheogorath'
email: blog@sheogorath.shivering-isles.com
mastodon:
instance: g0v.social
username: sheogorath
twitter_username: SISheogorath
github_username: SISheogorath
gitlab:
instance: octo.sh
username: Sheogorath
# Additional settings available on the front-matter
# Site logo in the index.html (as in demo.ghost.io)
# Author's page cover in _layouts/author.html
# The same for page.html and tag.html layouts
# Post's page cover as a per-post basis _posts/...
# Disqus comments as a per-post basis
# ...
defaults:
-
scope:
path: ''
type: 'posts'
values:
layout: 'post'
# Build settings
destination: _site
paginate: 7
permalink: /:title
markdown: kramdown
highlighter: rouge
# Settings for builing master branch with travis-ci
# with jekyll-travis
sass:
sass_dir: _sass
style: compressed
# Settings for deploy rake task
# Username and repo of Github repo, e.g.
# https://github.com/USERNAME/REPO.git
# username defaults to ENV['GIT_NAME'] used by Travis
# repo defaults to USERNAME.github.io
# Branch defaults to "source" for USERNAME.github.io
# or "master" otherwise
safe: false
lsi: false
username: SISheogorath
repo: jasper
branch: master
relative_source: .
destination: ./_site/
production_url: https://jekyller.github.io/jasper/
source_url: https://github.com/SISheogorath/jasper/
kramdown:
# use Github Flavored Markdown
input: GFM
# do not replace newlines by <br>s
hard_wrap: false
plugins: ['jekyll-paginate']
exclude:
- README.md
- Rakefile
- Gemfile
- Gemfile.lock
- changelog.md
- "*.Rmd"
- vendor
- .travis.yml
- node_modules
- .git
- 'README.md'
- 'Gemfile'
- 'Gemfile.lock'
- 'screenshot.png'
- 'vendor'
FROM nginx:alpine
COPY ./_docker/default.conf /etc/nginx/conf.d/
COPY ./_site/ /usr/share/nginx/html/
COPY ./_docker/default.conf ./_docker/redirect.conf /etc/nginx/conf.d/
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
~font/ max;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
server_name shivering-isles.com;
expires $expires;
add_header X-Frame-Options "DENY";
add_header Referrer-Policy "no-referrer";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; img-src data: 'self'; style-src 'self' 'unsafe-inline'; font-src data: 'self'; object-src data:";
location /rss {
rewrite ^/rss /feed.xml redirect;
......
#!/usr/bin/env bash
docker run --rm -p 127.0.0.1:4000:4000 \
--volume="$PWD:/srv/jekyll:Z" \
--volume="$PWD/vendor/bundle:/usr/local/bundle:Z" \
-it jekyll/builder \
jekyll serve --watch
#!/bin/sh
# Andorid
for i in {144,192,36,48,72,96}; do
convert images/profile.png -resize ${i}x${i} images/favicons/android-chrome-${i}x${i}.png
done
# Apple
for i in {114,120,144,152,180,57,60,72,76}; do
convert images/profile.png -resize ${i}x${i} images/favicons/apple-touch-icon-${i}x${i}.png
done
convert images/profile.png images/favicons/apple-touch-icon.png
convert images/profile.png images/favicons/apple-touch-icon-precomposed.png
convert images/profile.png images/favicons/safari-pinned-tab.svg
# Something else?!
for i in {16,194,32,96}; do
convert images/profile.png -resize ${i}x${i} images/favicons/favicon-${i}x${i}.png
done
convert images/profile.png -resize 48x48 images/favicons/favicon.ico
# Microsoft
for i in {144,150,310,70}; do
convert images/profile.png -resize ${i}x${i} images/favicons/mstile-${i}x${i}.png
done
convert images/profile.png -resize 310x150 images/favicons/mstile-310x150.png
server {
listen 80;
server_name www.shivering-isles.com;
return 301 https://shivering-isles.com$request_uri;
}
<nav class="pagination" role="pagination">
{% if paginator.previous_page %}
{% if paginator.previous_page == 1 %}
<a class="newer-posts" href="{{ site.baseurl }}/author/{{ page.author }}" title="Previous Page">&laquo; Newer Posts</a>
{% else %}
<a class="newer-posts" href="{{ site.baseurl }}/author/{{ page.author }}/page{{ paginator.previous_page }}/" title="Previous Page">&laquo; Newer Posts</a>
{% endif %}
{% endif %}
<span class="page-number"> Page {{ paginator.page }} of {{ paginator.total_pages }} </span>
{% if paginator.next_page %}
<a class="older-posts" href="{{ site.baseurl }}/author/{{ page.author }}/page{{ paginator.next_page }}/" title="Next Page">Older Posts &raquo;</a>
{% endif %}
</nav>
{% if site.disqus_shortname %}
<script type="text/javascript">
var disqus_config = function () {
this.page.url = '{{ site.url }}{{ page.url }}'; // Replace PAGE_URL with your page's canonical URL variable
this.page.identifier = '{{ page.id }}'; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '//{{ 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">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
{% endif %}
<footer class="footer">
<span class="footer__copyright">&copy; {{ site.time | date: '%Y' }} {{ site.author.name }}. All rights reserved.</span>
</footer>
<script type="text/javascript" src="{{ site.baseurl }}/js/jquery3.3.1.min.js"></script>
<script type="text/javascript" src="{{ site.baseurl }}/js/main.js?{{site.time | date: '%s%N'}}"></script>
{% if site.google_analytics and jekyll.environment != "development" %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.google_analytics }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
<link rel="canonical" href="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}/{% endif %}{% if page.url != "/" %}{{ page.url }}{% endif %}" />
<meta name="referrer" content="origin" />
<link rel="next" href="{{ site.baseurl }}/page2/" />
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width initial-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
{% if page.robots %}
<meta name="robots" content="{{ page.robots }}">
{% endif %}
<meta property="og:site_name" content="{{ site.name }}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.name }}{% endif %}" />
<meta property="og:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
<meta property="og:url" content="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}/{% endif %}{{ page.url }}" />
<meta property="og:image" content="{{ site.baseurl }}/{% if page.cover %}{{ page.cover }}{% else %}assets/images/cover1.jpg{% endif %}" />
<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html }}{% else %}{{ site.description }}{% endif %}">
<meta name="author" content="{{ site.author.name }}">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.name }}{% endif %}" />
<meta name="twitter:description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
<meta name="twitter:url" content="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}/{% endif %}{{ page.url }}" />
<meta name="twitter:image:src" content="{{ site.baseurl }}/{% if page.cover %}{{ page.cover }}{% else %}assets/images/cover1.jpg{% endif %}" />
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
<meta name="twitter:description" content="{% if page.excerpt %}{{ page.excerpt | strip_html }}{% else %}{{ site.description }}{% endif %}">
{% if site.author.twitter_username %}
<meta name="twitter:creator" content="{{ site.author.twitter_username }}">
{% endif %}
{% if page.cover %}
<meta name="twitter:image" content="{{ site.baseurl }}/{{ page.cover }}" />
{% else %}
<meta name="twitter:image" content="{{ site.baseurl }}/images/favicons/favicon-194x194.png" />
{% endif %}
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Website",
"publisher": "{{ site.name }}",
"name": "{% if page.title %}{{ page.title }}{% else %}{{ site.name }}{% endif %}",
"url": "{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}/{% endif %}{{ page.url }}",
"image": "{{ site.baseurl }}/{% if page.cover %}{{ page.cover }}{% else %}assets/images/cover1.jpg{% endif %}",
"description": "{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}"
}
</script>
<meta property="og:type" content="article">
<meta property="og:title" content="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}">
<meta property="og:description" content="{% if page.excerpt %}{{ page.excerpt | strip_html }}{% else %}{{ site.description }}{% endif %}">
{% if page.cover %}
<meta property="og:image" content="{{ site.baseurl }}/{{ page.cover }}" />
{% else %}
<meta property="og:image" content="{{ site.baseurl }}/images/favicons/favicon-194x194.png" />
{% endif %}
<meta name="generator" content="Jekyll 3.0.0" />
<link rel="alternate" type="application/rss+xml" title="{{ site.name }}" href="{{ site.baseurl }}/feed.xml" />
<link rel="apple-touch-icon" sizes="57x57" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="{{ site.baseurl }}/images/favicons/apple-touch-icon-180x180.png">
<link rel="icon" type="image/png" href="{{ site.baseurl }}/images/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="{{ site.baseurl }}/images/favicons/favicon-194x194.png" sizes="194x194">
<link rel="icon" type="image/png" href="{{ site.baseurl }}/images/favicons/favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/png" href="{{ site.baseurl }}/images/favicons/android-chrome-192x192.png" sizes="192x192">
<link rel="icon" type="image/png" href="{{ site.baseurl }}/images/favicons/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="{{ site.baseurl }}/images/favicons/manifest.json">
<link rel="shortcut icon" href="{{ site.baseurl }}/images/favicons/favicon.ico">
<meta name="msapplication-TileColor" content="#ffc40d">
<meta name="msapplication-TileImage" content="{{ site.baseurl }}/images/favicons/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
<link rel="stylesheet" href="{{ site.baseurl }}/css/main.css?{{site.time | date: '%s%N'}}">
<link rel="canonical" href="{% if page.canonical %}{{ page.canonical }}{% else %}{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}{% endif %}">
<link rel="alternate" type="application/rss+xml" title="{{ site.title }}" href="{{ site.baseurl }}/feed.xml">
</head>
<span class="mobile btn-mobile-menu">
<i class="fa fa-bars btn-mobile-menu__icon"></i>
<i class="fa fa-times-circle-o btn-mobile-close__icon hidden"></i>
</span>
<header class="panel-cover {% if page.path != 'index.html' %}panel-cover--collapsed{%endif%}" style="background-image: url({{ site.baseurl }}/images/cover.jpg)">
<div class="panel-main">
<div class="panel-main__inner panel-inverted">
<div class="panel-main__content">
<a href="{{ site.baseurl }}/" title="link to home of {{ site.title }}">
<img src="{{ site.baseurl }}/images/profile.jpg" class="user-image" alt="My Profile Photo">
<h1 class="panel-cover__title panel-title">{{ site.title }}</h1>
</a>
<hr class="panel-cover__divider">
<p class="panel-cover__description">{{ site.description }}</p>
<hr class="panel-cover__divider panel-cover__divider--secondary">
<div class="navigation-wrapper">
<nav class="cover-navigation cover-navigation--primary">
<ul class="navigation">
<li class="navigation__item"><a href="{{ site.baseurl }}/#blog" title="link to {{ site.title }} blog" class="blog-button" data-proofer-ignore>Blog</a></li>
</ul>
</nav>
<nav class="cover-navigation navigation--social">
<ul class="navigation">
{% if site.author.mastodon %}
<!-- Mastodon -->
<li class="navigation__item">
<a href="https://{{ site.author.mastodon.instance }}/@{{ site.author.mastodon.username }}" title="@{{ site.author.mastodon.username }} on {{ site.author.mastodon.instance }}" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-mastodon"></i>
<span class="label">Mastodon</span>
</a>
</li>
{% endif %}
{% if site.author.twitter_username %}
<!-- Twitter -->
<li class="navigation__item">
<a href="http://twitter.com/{{ site.author.twitter_username }}" title="@{{ site.author.twitter_username }} on Twitter" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-twitter"></i>
<span class="label">Twitter</span>
</a>
</li>
{% endif %}
{% if site.author.facebook_username %}
<!-- Facebook -->
<li class="navigation__item">
<a href="http://fb.me/{{ site.author.facebook_username }}" title="{{ site.author.facebook_username }} on Facebook" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-facebook"></i>
<span class="label">Facebook</span>
</a>
</li>
{% endif %}
{% if site.author.linkedin_username %}
<!-- LinkedIn -->
<li class="navigation__item">
<a href="https://www.linkedin.com/in/{{ site.author.linkedin_username }}" title="{{ site.author.linkedin_username }} on LinkedIn" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-linkedin"></i>
<span class="label">LinkedIn</span>
</a>
</li>
{% endif %}
{% if site.author.github_username %}
<!-- GitHub -->
<li class="navigation__item">
<a href="https://www.github.com/{{ site.author.github_username }}" title="{{ site.author.github_username }} on GitHub" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-github"></i>
<span class="label">GitHub</span>
</a>
</li>
{% endif %}
{% if site.author.gitlab %}
<!-- GitLab -->
<li class="navigation__item">
<a href="https://{{ site.author.gitlab.instance }}/{{ site.author.gitlab.username }}" title="{{ site.author.gitlab.username }} on {{ site.author.gitlab.instance }}" target="_blank" rel="noopener noreferrer me">
<i class="fa fa-gitlab"></i>
<span class="label">GitLab</span>
</a>
</li>
{% endif %}
{% if site.author.email %}
<!-- Email -->
<li class="navigation__item">
<a href="mailto:{{ site.author.email }}" title="Email {{ site.author.email }}">
<i class="fa fa-envelope"></i>
<span class="label">Email</span>
</a>
</li>
{% endif %}
<!-- RSS -->
<li class="navigation__item">
<a href="{{ site.baseurl }}/feed.xml" title="Subscribe">
<i class="fa fa-rss"></i>
<span class="label">RSS</span>
</a>
</li>
</ul>
<div class="panel-cover__meta">
<a href="/impressum" rel="nofollow">Impressum / Datenschutz </a>
</div>
</nav>
</div>
<hr class="panel-cover__divider panel-cover__divider--third">
<div class="panel-cover__meta">
<a href="/impressum" rel="nofollow">Impressum / Datenschutz </a>
</div>
</div>
</div>
<div class="panel-cover--overlay"></div>
</div>
</header>
<h4>Sorry, no comments anymore :/</h4>
<p>But feel free to reach out to me on <a href="https://twitter.com/SISheogorath">Twitter</a>, <a href="https://g0v.social/@sheogorath">Mastodon</a> or good old <a href="mailto:blog-comments@sheogorath.shivering-isles.com">email</a></p>