Merge branch 'rebuild_nov_2022'
This commit is contained in:
commit
f9b564d317
12
config.toml
12
config.toml
@ -14,11 +14,13 @@ render_emoji = true
|
|||||||
external_links_target_blank = true
|
external_links_target_blank = true
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
|
# Website
|
||||||
|
domain_name = "ewpratten.com"
|
||||||
|
# Me
|
||||||
name = "Evan Pratten"
|
name = "Evan Pratten"
|
||||||
profession = "Software Developer"
|
profession = "Software Developer"
|
||||||
email = "contact@ewpratten.com"
|
|
||||||
twitter = "ewpratten"
|
|
||||||
github = "ewpratten"
|
|
||||||
qrz = "va3zza"
|
|
||||||
linkedin = "ewpratten"
|
|
||||||
profile_photo = "https://avatars.githubusercontent.com/u/21065412"
|
profile_photo = "https://avatars.githubusercontent.com/u/21065412"
|
||||||
|
# Accounts
|
||||||
|
email = "evan@ewpratten.com"
|
||||||
|
github = "ewpratten"
|
||||||
|
linkedin = "ewpratten"
|
||||||
|
@ -5,6 +5,7 @@ description: "I3wm makes everything 10x harder than it should be"
|
|||||||
date: 2019-08-12
|
date: 2019-08-12
|
||||||
tags: notes languages
|
tags: notes languages
|
||||||
aliases: [/blog/2019/08/12/setting-up-ja]
|
aliases: [/blog/2019/08/12/setting-up-ja]
|
||||||
|
draft: true
|
||||||
---
|
---
|
||||||
|
|
||||||
I am currently working with [Hiragana](https://en.wikipedia.org/wiki/Hiragana), [Katakana](https://en.wikipedia.org/wiki/Katakana), and, [Kanji](https://en.wikipedia.org/wiki/Kanji) in some projects, and needed a more reliable way to write than running some [romaji](https://en.wikipedia.org/wiki/Romanization_of_Japanese) through an online translator. So, this post will detail what I did to enable native inputs on my laptop. This guide is specifically for [i3wm](https://i3wm.org/), because it does not obey system settings for languages and inputs.
|
I am currently working with [Hiragana](https://en.wikipedia.org/wiki/Hiragana), [Katakana](https://en.wikipedia.org/wiki/Katakana), and, [Kanji](https://en.wikipedia.org/wiki/Kanji) in some projects, and needed a more reliable way to write than running some [romaji](https://en.wikipedia.org/wiki/Romanization_of_Japanese) through an online translator. So, this post will detail what I did to enable native inputs on my laptop. This guide is specifically for [i3wm](https://i3wm.org/), because it does not obey system settings for languages and inputs.
|
||||||
|
@ -9,7 +9,7 @@ redirect_from:
|
|||||||
- /ef7b3166/
|
- /ef7b3166/
|
||||||
aliases: [/blog/2019/09/11/buildingimgfrombin]
|
aliases: [/blog/2019/09/11/buildingimgfrombin]
|
||||||
extra:
|
extra:
|
||||||
uses_twitter: true
|
uses: [twitter]
|
||||||
---
|
---
|
||||||
|
|
||||||
During a computer science class today, we were talking about embedding code and metadata in *jpg* and *bmp* files. @exvacuum was showing off a program he wrote that watched a directory for new image files, and would display them on a canvas. He then showed us a special image. In this image, he had injected some metadata into the last few pixels, which were not rendered, but told his program where to position the image on the canvas, and it's size.
|
During a computer science class today, we were talking about embedding code and metadata in *jpg* and *bmp* files. @exvacuum was showing off a program he wrote that watched a directory for new image files, and would display them on a canvas. He then showed us a special image. In this image, he had injected some metadata into the last few pixels, which were not rendered, but told his program where to position the image on the canvas, and it's size.
|
||||||
|
@ -9,7 +9,7 @@ redirect_from:
|
|||||||
- /ebsdjtd9/
|
- /ebsdjtd9/
|
||||||
aliases: [/blog/2020/04/20/ludumdare46]
|
aliases: [/blog/2020/04/20/ludumdare46]
|
||||||
extra:
|
extra:
|
||||||
uses_twitter: true
|
uses: [twitter]
|
||||||
---
|
---
|
||||||
|
|
||||||
Over the past weekend I teamed up with @rsninja722, @wm-c, @exvacuum, @marshmarlow, and our friends Sally and Matt to participate in the [LudumDare46](https://ldjam.com/events/ludum-dare/46) game jam. This post will outline the game development process.
|
Over the past weekend I teamed up with @rsninja722, @wm-c, @exvacuum, @marshmarlow, and our friends Sally and Matt to participate in the [LudumDare46](https://ldjam.com/events/ludum-dare/46) game jam. This post will outline the game development process.
|
||||||
|
@ -6,7 +6,7 @@ tags = ["frc"]
|
|||||||
aliases = ["/blog/2020/08/03/joystick-to-voltage"]
|
aliases = ["/blog/2020/08/03/joystick-to-voltage"]
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
uses_katex = true
|
uses = ["katex"]
|
||||||
+++
|
+++
|
||||||
|
|
||||||
I am starting a new little series here called "Notes from FRC". The idea is that I am going to write about what I have learned over the past three years of working (almost daily) with robots, and hopefully someone in the future will find them useful. The production source code I based this post around is available [here](https://github.com/frc5024/lib5k/blob/cd8ad407146b514cf857c1d8ac82ac8f3067812b/common_drive/src/main/java/io/github/frc5024/common_drive/calculation/DifferentialDriveCalculation.java).
|
I am starting a new little series here called "Notes from FRC". The idea is that I am going to write about what I have learned over the past three years of working (almost daily) with robots, and hopefully someone in the future will find them useful. The production source code I based this post around is available [here](https://github.com/frc5024/lib5k/blob/cd8ad407146b514cf857c1d8ac82ac8f3067812b/common_drive/src/main/java/io/github/frc5024/common_drive/calculation/DifferentialDriveCalculation.java).
|
||||||
|
@ -9,7 +9,7 @@ extra:
|
|||||||
This post is a continuation on my "Notes from FRC" series. This time,
|
This post is a continuation on my "Notes from FRC" series. This time,
|
||||||
I cover an extremely simple, yet very effective way to get a
|
I cover an extremely simple, yet very effective way to get a
|
||||||
tank-drive robot from A to B autonomously.
|
tank-drive robot from A to B autonomously.
|
||||||
uses_katex: true
|
uses: [katex]
|
||||||
aliases: [/blog/2020/08/13/drivetrain-navigation]
|
aliases: [/blog/2020/08/13/drivetrain-navigation]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2021-12-03
|
|||||||
tags: reference
|
tags: reference
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: true
|
uses: [katex]
|
||||||
excerpt: This post is an overview of Quaternions for Rust programmers, and anyone willing to learn.
|
excerpt: This post is an overview of Quaternions for Rust programmers, and anyone willing to learn.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-01-06
|
|||||||
tags: random
|
tags: random
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
excerpt: My GitHub profile is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. This post covers the hidden failed projects.
|
excerpt: My GitHub profile is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. This post covers the hidden failed projects.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-01-19
|
|||||||
tags: random 3d-pipeline
|
tags: random 3d-pipeline
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
excerpt: This post covers the process I went through to write a Neural-Network-assisted Blender plugin for converting monocular images into 3D textured meshes.
|
excerpt: This post covers the process I went through to write a Neural-Network-assisted Blender plugin for converting monocular images into 3D textured meshes.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-02-14
|
|||||||
tags: project pbx
|
tags: project pbx
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-02-26
|
|||||||
tags: project keyboard
|
tags: project keyboard
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ tags: reference
|
|||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
excerpt: This document is written for my PROG10082 classmates as a quick reference for some Java concepts that were skipped over in the course.
|
excerpt: This document is written for my PROG10082 classmates as a quick reference for some Java concepts that were skipped over in the course.
|
||||||
uses_katex: false
|
|
||||||
hidden: true
|
hidden: true
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-04-06
|
|||||||
tags: random
|
tags: random
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
excerpt: A project review post covering my work on remote-control for the UDM-Pro cooling system
|
excerpt: A project review post covering my work on remote-control for the UDM-Pro cooling system
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-04-11
|
|||||||
tags: robotics
|
tags: robotics
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: true
|
uses: [katex]
|
||||||
excerpt: In this post, I take a look at a mathematical problem commonly encountered with relative rotation offset calculation in robotics.
|
excerpt: In this post, I take a look at a mathematical problem commonly encountered with relative rotation offset calculation in robotics.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-05-10
|
|||||||
tags: music
|
tags: music
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: Release notification for Space & Time Vol. 1
|
excerpt: Release notification for Space & Time Vol. 1
|
||||||
---
|
---
|
@ -6,7 +6,7 @@ date: 2022-05-18
|
|||||||
tags: random
|
tags: random
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: This post covers how to keep your commit graph alive across multiple GIT instances by syncing your commit history to magic repos.
|
excerpt: This post covers how to keep your commit graph alive across multiple GIT instances by syncing your commit history to magic repos.
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-05-21
|
|||||||
tags: radio random nanovna
|
tags: radio random nanovna
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: I went out in the field and tried out my brand new NanoVNA.
|
excerpt: I went out in the field and tried out my brand new NanoVNA.
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-06-08
|
|||||||
tags: networking
|
tags: networking
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: I used multiple layers of IP encapsulation to evade an upstream firewall in the name of IPv6.
|
excerpt: I used multiple layers of IP encapsulation to evade an upstream firewall in the name of IPv6.
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-06-13
|
|||||||
tags: random
|
tags: random
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: A quick guide on launching Visual Paradigm on Fedora 36
|
excerpt: A quick guide on launching Visual Paradigm on Fedora 36
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-06-23
|
|||||||
tags: random
|
tags: random
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: How to flash custom firmware to the Steam Controller, allowing it to connect to the Nintendo Switch
|
excerpt: How to flash custom firmware to the Steam Controller, allowing it to connect to the Nintendo Switch
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-06-26
|
|||||||
tags: random as398057
|
tags: random as398057
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: This post covers some of the logistics behind rickrolling the internet with some clever routing tricks.
|
excerpt: This post covers some of the logistics behind rickrolling the internet with some clever routing tricks.
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-07-02
|
|||||||
tags: story
|
tags: story
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: From 2016 to 2021, I dedicated most of my time to robotics and control systems programming. This is my journey
|
excerpt: From 2016 to 2021, I dedicated most of my time to robotics and control systems programming. This is my journey
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-08-17
|
|||||||
tags: networking
|
tags: networking
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: I recently started AS398057, a low cost Autonomous System. This post talks about how its going
|
excerpt: I recently started AS398057, a low cost Autonomous System. This post talks about how its going
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-09-09
|
|||||||
tags: website
|
tags: website
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: A small update post about some website changes
|
excerpt: A small update post about some website changes
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-10-02
|
|||||||
tags: website network
|
tags: website network
|
||||||
draft: false
|
draft: false
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: A look at the usage of personal ASNs based on freely available data
|
excerpt: A look at the usage of personal ASNs based on freely available data
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-10-17
|
|||||||
tags: amprnet network
|
tags: amprnet network
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
||||||
---
|
---
|
||||||
|
@ -6,7 +6,7 @@ date: 2022-10-17
|
|||||||
tags: amprnet network
|
tags: amprnet network
|
||||||
draft: true
|
draft: true
|
||||||
extra:
|
extra:
|
||||||
uses_katex: false
|
|
||||||
auto_center_images: true
|
auto_center_images: true
|
||||||
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
excerpt: A tutorial for AMPRNet operators who are BGP announcing their first prefix to Vultr
|
||||||
---
|
---
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: Blog
|
title: Blog
|
||||||
sort_by: date
|
sort_by: date
|
||||||
extra:
|
extra:
|
||||||
inject_blog_posts: true
|
section_embed_mode: blog_posts
|
||||||
---
|
---
|
||||||
|
|
||||||
## Blog posts
|
## Blog posts
|
||||||
|
@ -3,7 +3,7 @@ title: Meme Appreciation Month
|
|||||||
description: "Come chat with young hams, and join the meme madness!"
|
description: "Come chat with young hams, and join the meme madness!"
|
||||||
aliases: [/yeet]
|
aliases: [/yeet]
|
||||||
extra:
|
extra:
|
||||||
uses_flags: true
|
uses: [flags]
|
||||||
---
|
---
|
||||||
|
|
||||||
***This event has passed. Page preserved for nostalgia.***
|
***This event has passed. Page preserved for nostalgia.***
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: IP Addressing Plan
|
title: IP Addressing Plan
|
||||||
extra:
|
extra:
|
||||||
uses_graphviz: true
|
uses: [graphviz]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
title: "A10U8R: Signal Attenuator"
|
title: "A10U8R: Signal Attenuator"
|
||||||
description: "A small, but helpful module for VCV Rack 2"
|
description: "A small, but helpful module for VCV Rack 2"
|
||||||
extra:
|
extra:
|
||||||
uses_katex: true
|
uses: [katex]
|
||||||
---
|
---
|
||||||
|
|
||||||
[](https://github.com/Ewpratten/A10U8R/releases/latest)
|
[](https://github.com/Ewpratten/A10U8R/releases/latest)
|
||||||
|
57
sass/styles/components/about-card.scss
Normal file
57
sass/styles/components/about-card.scss
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
.about-card {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-around;
|
||||||
|
|
||||||
|
width: max-content;
|
||||||
|
max-width: 95vw;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
|
||||||
|
.profile-photo-container {
|
||||||
|
max-width: 150px;
|
||||||
|
height: max-content;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
& > img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-container {
|
||||||
|
margin-left: 1em;
|
||||||
|
height: max-content;
|
||||||
|
|
||||||
|
.intro-text {
|
||||||
|
margin-bottom: 1em;
|
||||||
|
|
||||||
|
h1,
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.quick-links {
|
||||||
|
height: max-content;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
list-style-type: none;
|
||||||
|
|
||||||
|
line-height: 1.25em;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
sass/styles/components/footer.scss
Normal file
3
sass/styles/components/footer.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.footer {
|
||||||
|
text-align: center;
|
||||||
|
}
|
11
sass/styles/components/github-card.scss
Normal file
11
sass/styles/components/github-card.scss
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
.zola-github-card {
|
||||||
|
border-radius: 5px;
|
||||||
|
padding-top: 5px;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||||
|
transition: all 0.1s ease 0s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.5) 0px 3px 15px;
|
||||||
|
}
|
||||||
|
}
|
32
sass/styles/components/heading-card.scss
Normal file
32
sass/styles/components/heading-card.scss
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
.heading-card {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-around;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
width: max-content;
|
||||||
|
max-width: 95vw;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
|
||||||
|
.profile-photo-container {
|
||||||
|
width: 50px;
|
||||||
|
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-container {
|
||||||
|
margin-left: 1em;
|
||||||
|
height: max-content;
|
||||||
|
|
||||||
|
h1,
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
line-height: 1em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
30
sass/styles/components/navbar.scss
Normal file
30
sass/styles/components/navbar.scss
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
.ewp-navbar {
|
||||||
|
margin-top: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin: 0;
|
||||||
|
border-top: 2px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-items {
|
||||||
|
width: max-content;
|
||||||
|
padding: 0;
|
||||||
|
margin-top: 0.5em;
|
||||||
|
margin-bottom: 0.5em;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
|
||||||
|
& > li {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
|
.dropdown-menu {
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.separator {
|
||||||
|
content: "|";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
3
sass/styles/fixes/instagram.scss
Normal file
3
sass/styles/fixes/instagram.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#instagram-embed-0 {
|
||||||
|
margin: auto !important;
|
||||||
|
}
|
4
sass/styles/fixes/markdown.scss
Normal file
4
sass/styles/fixes/markdown.scss
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.markdown-body table {
|
||||||
|
margin: auto !important;
|
||||||
|
width: fit-content !important;
|
||||||
|
}
|
4
sass/styles/fixes/mermaid.scss
Normal file
4
sass/styles/fixes/mermaid.scss
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.mermaid {
|
||||||
|
width: fit-content;
|
||||||
|
margin: auto;
|
||||||
|
}
|
4
sass/styles/fixes/tiktok.scss
Normal file
4
sass/styles/fixes/tiktok.scss
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.tiktok-embed {
|
||||||
|
border: none !important;
|
||||||
|
margin: auto !important;
|
||||||
|
}
|
9
sass/styles/fixes/youtube.scss
Normal file
9
sass/styles/fixes/youtube.scss
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.yt-embed {
|
||||||
|
width: 100%;
|
||||||
|
height: 400px;
|
||||||
|
|
||||||
|
iframe {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
@ -1,142 +1,6 @@
|
|||||||
h1,
|
.page {
|
||||||
h2,
|
& > .container {
|
||||||
h3,
|
max-width: 800px;
|
||||||
h4,
|
|
||||||
h5,
|
|
||||||
h6 {
|
|
||||||
font-family: "Urbanist", sans-serif;
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
p,
|
|
||||||
li,
|
|
||||||
span {
|
|
||||||
font-family: "Rubik", sans-serif;
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
&:visited {
|
|
||||||
color: blue;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: blueviolet;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
// margin-bottom: 30px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-hidden {
|
|
||||||
@media only screen and (max-width: 650px) {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.yt-embed {
|
|
||||||
width: 100%;
|
|
||||||
height: 400px;
|
|
||||||
|
|
||||||
iframe {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
max-width: 700px;
|
|
||||||
margin: auto;
|
|
||||||
padding-left: 10px;
|
|
||||||
padding-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-card {
|
|
||||||
margin-top: 30px;
|
|
||||||
margin-bottom: 30px;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
|
|
||||||
.row {
|
|
||||||
width: max-content;
|
|
||||||
max-width: 95vw;
|
|
||||||
margin: auto;
|
|
||||||
overflow-wrap: normal;
|
|
||||||
|
|
||||||
.headshot-container {
|
|
||||||
display: inline-block;
|
|
||||||
max-width: 150px;
|
|
||||||
@media only screen and (max-width: 399px) {
|
|
||||||
display: block;
|
|
||||||
margin: auto;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
img {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.text-container {
|
|
||||||
display: inline-block;
|
|
||||||
margin-left: 20px;
|
|
||||||
h1,
|
|
||||||
p {
|
|
||||||
margin: 0px;
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.navigation-bar {
|
|
||||||
text-align: center;
|
|
||||||
p {
|
|
||||||
margin: 0px;
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-post-li {
|
|
||||||
margin: 0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gray {
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.events-list {
|
|
||||||
& > li {
|
|
||||||
color: gray;
|
|
||||||
}
|
|
||||||
& > ul {
|
|
||||||
& > li {
|
|
||||||
& > div {
|
|
||||||
display: table-row;
|
|
||||||
& > span {
|
|
||||||
display: table-cell;
|
|
||||||
|
|
||||||
&:first-of-type {
|
|
||||||
color: gray;
|
|
||||||
width: 30px;
|
|
||||||
text-align: center;
|
|
||||||
padding-right: 8px;
|
|
||||||
|
|
||||||
// Only Firefox supports this
|
|
||||||
// letter-spacing: -0.35em;
|
|
||||||
// text-transform: full-width;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,178 +8,3 @@ ul {
|
|||||||
width: fit-content;
|
width: fit-content;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.zola-github-card {
|
|
||||||
border-radius: 5px;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 1px;
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
|
||||||
transition: all 0.1s ease 0s;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.5) 0px 3px 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#instagram-embed-0 {
|
|
||||||
margin: auto !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tiktok-embed {
|
|
||||||
border: none !important;
|
|
||||||
margin: auto !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.markdown-body table {
|
|
||||||
margin: auto !important;
|
|
||||||
width: fit-content !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.blog-post-listing-item {
|
|
||||||
color: black !important;
|
|
||||||
& > div {
|
|
||||||
border-left: solid rgb(201, 201, 201) 5px;
|
|
||||||
&:hover {
|
|
||||||
border-left: solid black 5px;
|
|
||||||
}
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4,
|
|
||||||
h1,
|
|
||||||
p {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: rgb(85, 85, 85) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.pn-previous,
|
|
||||||
.pn-next {
|
|
||||||
border: 1px solid black;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 5px;
|
|
||||||
color: black !important;
|
|
||||||
&:hover {
|
|
||||||
color: rgb(85, 85, 85) !important;
|
|
||||||
border: 1px solid rgb(85, 85, 85) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
margin-top: 2em;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.carded-section {
|
|
||||||
border: 1px solid black;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
& > .header {
|
|
||||||
background-color: aliceblue;
|
|
||||||
padding-left: 30px;
|
|
||||||
padding-right: 30px;
|
|
||||||
padding-top: 15px;
|
|
||||||
padding-bottom: 15px;
|
|
||||||
|
|
||||||
border-bottom: 1px solid rgb(201, 201, 201);
|
|
||||||
& > span {
|
|
||||||
font-size: 1.5em;
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
& > .content {
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-right: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.portfolio-sellout {
|
|
||||||
margin-top: 15px;
|
|
||||||
background-color: #afa79e;
|
|
||||||
border-radius: 5px;
|
|
||||||
text-align: center;
|
|
||||||
// color: white;
|
|
||||||
padding-top: 5px;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
|
||||||
// & > p > a {
|
|
||||||
// color: aqua;
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-help {
|
|
||||||
&:hover {
|
|
||||||
cursor: help;
|
|
||||||
}
|
|
||||||
border-bottom: 1px double rgb(171, 167, 167);
|
|
||||||
}
|
|
||||||
|
|
||||||
.small {
|
|
||||||
font-size: 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hover-shadow {
|
|
||||||
&:hover {
|
|
||||||
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-skills {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
width: 100%;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
@media screen and (max-width: 455px) {
|
|
||||||
justify-content: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
margin:0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.project {
|
|
||||||
border: 1px solid gray;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 1em;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top:0.25em;
|
|
||||||
margin-bottom:0.25em;
|
|
||||||
}
|
|
||||||
h3 {
|
|
||||||
border-bottom: 1px solid lightgrey;
|
|
||||||
margin-top:0.25em;
|
|
||||||
margin-bottom:0.5em;
|
|
||||||
padding-bottom: 0.5em;
|
|
||||||
}
|
|
||||||
ul{
|
|
||||||
margin-bottom:0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.homepage-showoff {
|
|
||||||
padding-left: 1em;
|
|
||||||
padding-right: 1em;
|
|
||||||
padding-top: 0.25em;
|
|
||||||
padding-bottom: 0.25em;
|
|
||||||
|
|
||||||
background-color: #e3e3e3;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
|
|
||||||
.home-list {
|
|
||||||
&>ul>li {
|
|
||||||
padding-top:0.5em;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
.project-mosaic {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
@media (min-width: 437px) {
|
|
||||||
.project-small {
|
|
||||||
max-width: 175px !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.conform-height {
|
|
||||||
height: unset !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project {
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
border-radius: 5px;
|
|
||||||
padding: 1rem;
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
max-width: 300px;
|
|
||||||
height: max-content;
|
|
||||||
|
|
||||||
img {
|
|
||||||
margin-bottom: 0.5em;
|
|
||||||
border-bottom: 1px solid #ccc;
|
|
||||||
padding-bottom: 0.75em;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin: 0;
|
|
||||||
margin-bottom: 0.25em;
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
|
||||||
margin-top: 0;
|
|
||||||
color: rgb(84, 84, 84);
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
border-top: 1px solid #ccc;
|
|
||||||
font-size: 2em;
|
|
||||||
width: 100%;
|
|
||||||
padding-top: 0.25em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
53
sass/styles/typography.scss
Normal file
53
sass/styles/typography.scss
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
@import url("https://fonts.googleapis.com/css2?family=Roboto&family=Urbanist:wght@700&display=swap");
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,700;1,400;1,700&display=swap");
|
||||||
|
|
||||||
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4,
|
||||||
|
h5,
|
||||||
|
h6 {
|
||||||
|
font-family: "Urbanist", sans-serif;
|
||||||
|
font-weight: bolder;
|
||||||
|
}
|
||||||
|
p,
|
||||||
|
li,
|
||||||
|
span {
|
||||||
|
font-family: "Rubik", sans-serif;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: blue;
|
||||||
|
|
||||||
|
&:visited {
|
||||||
|
color: blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: blueviolet;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gray {
|
||||||
|
color: gray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hover-help {
|
||||||
|
&:hover {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
|
border-bottom: 1px double rgb(171, 167, 167);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page #content {
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
}
|
15
sass/styles/utils.scss
Normal file
15
sass/styles/utils.scss
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.mobile-hidden {
|
||||||
|
@media only screen and (max-width: 650px) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.small {
|
||||||
|
font-size: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hover-shadow {
|
||||||
|
&:hover {
|
||||||
|
box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;
|
||||||
|
}
|
||||||
|
}
|
@ -1,165 +1,96 @@
|
|||||||
|
{# Allow extenders to pass through variables #}
|
||||||
|
{% block variable_wormhole %}
|
||||||
|
{% set title = "NO TITLE SET" %}
|
||||||
|
{% set description = "" %}
|
||||||
|
{% set is_article = false %}
|
||||||
|
{% set feature_flags = [] %}
|
||||||
|
{% set redirect_target = "" %}
|
||||||
|
{% endblock variable_wormhole %}
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
{% block head %}
|
{# Page metadata #}
|
||||||
<!-- Google Tag Manager -->
|
|
||||||
<script>(function (w, d, s, l, i) {
|
|
||||||
w[l] = w[l] || []; w[l].push({
|
|
||||||
'gtm.start':
|
|
||||||
new Date().getTime(), event: 'gtm.js'
|
|
||||||
}); var f = d.getElementsByTagName(s)[0],
|
|
||||||
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =
|
|
||||||
'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);
|
|
||||||
})(window, document, 'script', 'dataLayer', 'GTM-KFJ95RP');</script>
|
|
||||||
<!-- End Google Tag Manager -->
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="shortcut icon" type="image/jpg" href="{{config.extra.profile_photo}}" />
|
<link rel="shortcut icon" type="image/jpg" href="{{config.extra.profile_photo}}" />
|
||||||
{% if current_url %}
|
{% include "components/metadata/advertise-rss.html" %}
|
||||||
<link rel="canonical" href="{{current_url}}" />
|
{% include "components/metadata/opengraph.html" %}
|
||||||
|
|
||||||
|
{# Redirect support #}
|
||||||
|
{% if redirect_target != "" %}
|
||||||
|
<meta http-equiv="refresh" content="0; url={{redirect_target}}" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{get_url(path=" rss.xml",
|
{# Page title #}
|
||||||
trailing_slash=false)}}">
|
<title>{{title}} | {{config.title}}</title>
|
||||||
<link rel="webmention" href="https://webmention.io/ewpratten.com/webmention" />
|
|
||||||
<link rel="pingback" href="https://webmention.io/ewpratten.com/xmlrpc" />
|
|
||||||
|
|
||||||
<title>{% block title %}{% endblock title %} | {{config.extra.name}}</title>
|
|
||||||
|
|
||||||
|
{# Preconnects for external resources #}
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Roboto&family=Urbanist:wght@700&display=swap" rel="stylesheet">
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,400;0,700;1,400;1,700&display=swap"
|
|
||||||
rel="stylesheet">
|
|
||||||
<link rel="preconnect" href="https://maxst.icons8.com">
|
<link rel="preconnect" href="https://maxst.icons8.com">
|
||||||
|
|
||||||
|
{# External styles #}
|
||||||
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet"
|
||||||
|
integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css">
|
href="https://maxst.icons8.com/vue-static/landings/line-awesome/line-awesome/1.3.0/css/line-awesome.min.css">
|
||||||
<link rel="stylesheet" href="/styles/layout.css">
|
|
||||||
<link rel="stylesheet" href="/styles/project_mosaic.css">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet"
|
<link rel="stylesheet"
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/4.0.0/github-markdown.min.css"
|
href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/4.0.0/github-markdown.min.css"
|
||||||
integrity="sha512-Oy18vBnbSJkXTndr2n6lDMO5NN31UljR8e/ICzVPrGpSud4Gkckb8yUpqhKuUNoE+o9gAb4O/rAxxw1ojyUVzg=="
|
integrity="sha512-Oy18vBnbSJkXTndr2n6lDMO5NN31UljR8e/ICzVPrGpSud4Gkckb8yUpqhKuUNoE+o9gAb4O/rAxxw1ojyUVzg=="
|
||||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
|
{# Site-wide styles #}
|
||||||
|
<link rel="stylesheet" href="/styles/fixes/instagram.css">
|
||||||
|
<link rel="stylesheet" href="/styles/fixes/markdown.css">
|
||||||
|
<link rel="stylesheet" href="/styles/fixes/mermaid.css">
|
||||||
|
<link rel="stylesheet" href="/styles/fixes/tiktok.css">
|
||||||
|
<link rel="stylesheet" href="/styles/fixes/youtube.css">
|
||||||
|
<link rel="stylesheet" href="/styles/typography.css">
|
||||||
|
<link rel="stylesheet" href="/styles/utils.css">
|
||||||
|
<link rel="stylesheet" href="/styles/layout.css">
|
||||||
|
<link rel="stylesheet" href="/styles/components/github-card.css">
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary" />
|
{# Component styles #}
|
||||||
<meta name="og:site" content="ewpratten.com" />
|
{% block component_styles %}
|
||||||
<meta name="og:image" content="{{config.extra.profile_photo}}" />
|
{% endblock component_styles %}
|
||||||
<meta name="twitter:creator" content="@ewpratten">
|
|
||||||
<meta name="og:site_name" content="Evan Pratten (VA3ZZA)" />
|
|
||||||
|
|
||||||
{% endblock head %}
|
{# Enable features #}
|
||||||
|
{% include "components/metadata/page-features.html" %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="container">
|
|
||||||
<div class="profile-card">
|
{# The whole page #}
|
||||||
{% block profile %}
|
<div class="page">
|
||||||
<div class="row">
|
|
||||||
<div class="headshot-container">
|
{# Allow pages to override the content before the navbar #}
|
||||||
<img src="{{config.extra.profile_photo}}" alt="Headshot">
|
{% block page_start %}{% endblock page_start %}
|
||||||
</div>
|
|
||||||
<div class="text-container">
|
{# Navbar #}
|
||||||
<h1>{{config.extra.name}}</h1>
|
<div class="container">
|
||||||
<p>
|
{% include "components/navbar.html" %}
|
||||||
{{config.extra.profession}}
|
|
||||||
<br><br>
|
|
||||||
<a href="mailto:{{config.extra.email}}" rel="me"><i class="las la-envelope"></i>
|
|
||||||
{{config.extra.email}}</a><br>
|
|
||||||
<a href="https://github.com/{{config.extra.github}}" rel="me"><i class="lab la-github"></i>
|
|
||||||
{{config.extra.github}}</a><br>
|
|
||||||
<a href="https://www.linkedin.com/in/{{config.extra.linkedin}}" rel="me"><i
|
|
||||||
class="lab la-linkedin"></i>
|
|
||||||
{{config.extra.linkedin}}</a><br>
|
|
||||||
<a href="https://qrz.com/db/{{config.extra.qrz}}" rel="me"><i
|
|
||||||
class="las la-broadcast-tower"></i>
|
|
||||||
{{config.extra.qrz}}</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% endblock profile %}
|
|
||||||
</div>
|
|
||||||
<div class="navigation-bar">
|
|
||||||
<hr>
|
|
||||||
<p>
|
|
||||||
<a href="/">Home</a> |
|
|
||||||
<a href="/blog">Blog</a> |
|
|
||||||
{# <a href="/blog">Rabbit Hole</a> | #}
|
|
||||||
{# <a href="/work">My Work</a> | #}
|
|
||||||
{# <a href="/network">Network</a> | #}
|
|
||||||
<a href="/contact">Contact</a>
|
|
||||||
{# <a href="/hobbies">Hobbies</a> #}
|
|
||||||
{# <a href="/whois">WHOIS</a> #}
|
|
||||||
{# <a href="/rfc">RFC</a> #}
|
|
||||||
</p>
|
|
||||||
<hr>
|
|
||||||
</div>
|
|
||||||
<div class="page-content">
|
|
||||||
{% block content %}
|
|
||||||
{% endblock content %}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="footer">
|
{# Actual content #}
|
||||||
<p class="gray">-- EOF --</p>
|
<div id="content" class="container">
|
||||||
<p>
|
<article class="markdown-body">
|
||||||
<em>
|
{% block content %}{% endblock content %}
|
||||||
<a href="https://github.com/ewpratten/va3zza.com"><i class="lab la-github"></i></a>
|
</article>
|
||||||
<a href="https://status.ewpratten.com"><i class="las la-info-circle"></i></a>
|
|
||||||
<a href="/rss.xml"><i class="las la-rss"></i></a><br>
|
|
||||||
|
|
||||||
Thanks for reading :)<br>
|
|
||||||
Site design & content by: <a href="/info">Evan Pratten</a><br>
|
|
||||||
Consider <a href="/donate" target="_blank">supporting my work</a> if you like what you see<br>
|
|
||||||
|
|
||||||
</em>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{# Footer #}
|
||||||
|
{% include "components/footer.html" %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
{# External scripts #}
|
||||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5912H4H03P"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"
|
||||||
<script>
|
integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3"
|
||||||
window.dataLayer = window.dataLayer || [];
|
crossorigin="anonymous"></script>
|
||||||
function gtag() { dataLayer.push(arguments); }
|
|
||||||
gtag('js', new Date());
|
|
||||||
|
|
||||||
gtag('config', 'G-5912H4H03P');
|
{% include "components/metadata/analytics.html" %}
|
||||||
</script>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
if (window.performance && performance.getEntriesByType) { // avoid error in Safari 10, IE9- and other old browsers
|
|
||||||
let navTiming = performance.getEntriesByType('navigation')
|
|
||||||
if (navTiming.length > 0) { // still not supported as of Safari 14...
|
|
||||||
let serverTiming = navTiming[0].serverTiming
|
|
||||||
if (serverTiming && serverTiming.length > 0) {
|
|
||||||
for (let i = 0; i < serverTiming.length; i++) {
|
|
||||||
if (serverTiming[i].name == 'source') {
|
|
||||||
if (serverTiming[i].description == 'net44') {
|
|
||||||
document.getElementById('ampr-notice').style.display = 'block';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{# URL Rewriter for retrylife.ca #}
|
|
||||||
<script>
|
|
||||||
if (window.location.hostname == 'retrylife.ca') {
|
|
||||||
window.location.href = window.location.href.replace('retrylife.ca', 'ewpratten.com');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{# Meta magic for mastodon verification #}
|
|
||||||
<a rel="me" href="https://social.ewpratten.com/@evan" style="display:none;"></a>
|
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
46
templates/components/about-card.html
Normal file
46
templates/components/about-card.html
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{% block component_styles %}
|
||||||
|
{{ super() }}
|
||||||
|
<link rel="stylesheet" href="/styles/components/about-card.css">
|
||||||
|
{% endblock component_styles %}
|
||||||
|
|
||||||
|
<div class="about-card">
|
||||||
|
<div class="profile-photo-container">
|
||||||
|
<img src="{{config.extra.profile_photo}}" alt="Profile Photo">
|
||||||
|
</div>
|
||||||
|
<div class="text-container">
|
||||||
|
<div class="intro-text">
|
||||||
|
<h1>{{config.extra.name}}</h1>
|
||||||
|
<p>{{config.extra.profession}}</p>
|
||||||
|
</div>
|
||||||
|
<div class="quick-links">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="mailto:{{config.extra.email}}" rel="me">
|
||||||
|
<i class="las la-envelope"></i>
|
||||||
|
{{config.extra.email}}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/{{config.extra.github}}" rel="me">
|
||||||
|
<i class="lab la-github"></i>
|
||||||
|
{{config.extra.github}}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://linkedin.com/in/{{config.extra.linkedin}}" rel="me">
|
||||||
|
<i class="lab la-linkedin"></i>
|
||||||
|
{{config.extra.linkedin}}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/contact">
|
||||||
|
... more
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{# Mastodon requires this to exist somewhere, so why not here #}
|
||||||
|
<a rel="me" href="https://social.ewpratten.com/@evan" style="display:none;"></a>
|
13
templates/components/footer.html
Normal file
13
templates/components/footer.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{% block component_styles %}
|
||||||
|
{{ super() }}
|
||||||
|
<link rel="stylesheet" href="/styles/components/footer.css">
|
||||||
|
{% endblock component_styles %}
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
<br>
|
||||||
|
<span class="gray">-- EOF --</span>
|
||||||
|
<p>
|
||||||
|
Site design & content by: <a href="/contact">Evan Pratten</a><br>
|
||||||
|
Consider <a href="/donate" target="_blank">supporting my work</a> if you like what you see<br>
|
||||||
|
</p>
|
||||||
|
</div>
|
14
templates/components/heading-card.html
Normal file
14
templates/components/heading-card.html
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{% block component_styles %}
|
||||||
|
{{ super() }}
|
||||||
|
<link rel="stylesheet" href="/styles/components/heading-card.css">
|
||||||
|
{% endblock component_styles %}
|
||||||
|
|
||||||
|
<div class="heading-card">
|
||||||
|
<div class="profile-photo-container">
|
||||||
|
<img src="{{config.extra.profile_photo}}" alt="Profile Photo">
|
||||||
|
</div>
|
||||||
|
<div class="text-container">
|
||||||
|
<h1>{{config.extra.name}}</h1>
|
||||||
|
<p>{{config.extra.profession}}</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
5
templates/components/metadata/advertise-rss.html
Normal file
5
templates/components/metadata/advertise-rss.html
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{% if current_url %}
|
||||||
|
<link rel="canonical" href="{{current_url}}" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{get_url(path=config.feed_filename, trailing_slash=false)}}">
|
9
templates/components/metadata/analytics.html
Normal file
9
templates/components/metadata/analytics.html
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5912H4H03P"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag() { dataLayer.push(arguments); }
|
||||||
|
gtag('js', new Date());
|
||||||
|
|
||||||
|
gtag('config', 'G-5912H4H03P');
|
||||||
|
</script>
|
21
templates/components/metadata/opengraph.html
Normal file
21
templates/components/metadata/opengraph.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{# Site info #}
|
||||||
|
<meta name="twitter:card" content="summary" />
|
||||||
|
<meta name="og:site" content="{{config.extra.domain_name}}" />
|
||||||
|
<meta name="og:site_name" content="{{config.title}}" />
|
||||||
|
|
||||||
|
{# Page image #}
|
||||||
|
<meta name="og:image"
|
||||||
|
content="{% block opengraph_image_url %}{{config.extra.profile_photo}}{% endblock opengraph_image_url %}" />
|
||||||
|
|
||||||
|
{# Page description #}
|
||||||
|
<meta property="og:description" content="{{description}}" />
|
||||||
|
<meta property="description" content="{{description}}" />
|
||||||
|
<meta name="description" content="{{description}}">
|
||||||
|
|
||||||
|
{# Page title #}
|
||||||
|
<meta property="og:title" content="{{title}} - {{config.title}}" />
|
||||||
|
|
||||||
|
{# Article-specifics #}
|
||||||
|
{% if is_article %}
|
||||||
|
<meta property="og:type" content="article" />
|
||||||
|
{% endif %}
|
28
templates/components/metadata/page-features.html
Normal file
28
templates/components/metadata/page-features.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{% for feature in feature_flags %}
|
||||||
|
|
||||||
|
{# KATEX #}
|
||||||
|
{% if feature == "katex" %}
|
||||||
|
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-MML-AM_CHTML' async></script>
|
||||||
|
<script type="text/x-mathjax-config">
|
||||||
|
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ['\[','\]'] ]}});
|
||||||
|
</script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Flags #}
|
||||||
|
{% if feature == "flags" %}
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.4.3/css/flag-icons.min.css"
|
||||||
|
integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg=="
|
||||||
|
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Twitter embed #}
|
||||||
|
{% if feature == "twitter" %}
|
||||||
|
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{# Mermaid #}
|
||||||
|
{% if feature == "mermaid" or feature == "graphviz" %}
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endfor %}
|
27
templates/components/navbar.html
Normal file
27
templates/components/navbar.html
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{% block component_styles %}
|
||||||
|
{{ super() }}
|
||||||
|
<link rel="stylesheet" href="/styles/components/navbar.css">
|
||||||
|
{% endblock component_styles %}
|
||||||
|
|
||||||
|
<div class="ewp-navbar">
|
||||||
|
<hr>
|
||||||
|
<ul class="navbar-items">
|
||||||
|
<li><a href="/">Home</a></li>
|
||||||
|
<li class="separator">|</li>
|
||||||
|
<li><a href="/blog">Blog</a></li>
|
||||||
|
<li class="separator">|</li>
|
||||||
|
{# <li class="dropdown-center">
|
||||||
|
<a href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||||
|
More
|
||||||
|
</a>
|
||||||
|
<ul class="dropdown-menu">
|
||||||
|
<li><a class="dropdown-item" href="#">Action</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Another action</a></li>
|
||||||
|
<li><a class="dropdown-item" href="#">Something else here</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li class="separator">|</li> #}
|
||||||
|
<li><a href="/contact">Contact</a></li>
|
||||||
|
</ul>
|
||||||
|
<hr>
|
||||||
|
</div>
|
@ -1,44 +1,41 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block title %}
|
|
||||||
{{section.title}}
|
|
||||||
{% endblock title %}
|
|
||||||
|
|
||||||
|
{# Additional metadata for Google #}
|
||||||
{% block head %}
|
{% block head %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
<meta property="og:description" content="{{config.description}}" />
|
|
||||||
<meta property="description" content="{{config.description}}" />
|
|
||||||
<meta name="description" content="{{config.description}}">
|
|
||||||
<meta name="og:title" content="Evan Pratten (VA3ZZA)" />
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{% set person_ld = load_data(path="static/person.jsonld")%}
|
{% set person_ld = load_data(path="static/person.jsonld")%}
|
||||||
{% if person_ld %}{{person_ld | safe}}{% endif %}
|
{% if person_ld %}{{person_ld | safe}}{% endif %}
|
||||||
</script>
|
</script>
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{# Import our template file #}
|
{# Import our template file #}
|
||||||
{% set template = load_data(path="jsonld_templates/website.jsonld") %}
|
{% set template = load_data(path="jsonld_templates/website.jsonld") %}
|
||||||
{# Now we can fill in any additional data #}
|
{# Now we can fill in any additional data #}
|
||||||
{{ template |
|
{{ template |
|
||||||
replace(from="{{url}}", to=config.base_url) |
|
replace(from="{{url}}", to=config.base_url) |
|
||||||
replace(from="{{title}}", to=section.title) |
|
replace(from="{{title}}", to=section.title) |
|
||||||
replace(from="{{description}}", to=config.description) |
|
replace(from="{{description}}", to=config.description) |
|
||||||
replace(from="{{avatar}}", to=config.extra.profile_photo) |
|
replace(from="{{avatar}}", to=config.extra.profile_photo) |
|
||||||
safe
|
safe
|
||||||
}}
|
}}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{# Handle flags #}
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.4.3/css/flag-icons.min.css"
|
|
||||||
integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg=="
|
|
||||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
||||||
{% endblock head %}
|
{% endblock head %}
|
||||||
|
|
||||||
|
{# Pass data through to the base template #}
|
||||||
|
{% block variable_wormhole %}
|
||||||
|
{{ super() }}
|
||||||
|
{% set title = section.title %}
|
||||||
|
{% set description = config.description %}
|
||||||
|
{% if section.extra.uses %}
|
||||||
|
{% set feature_flags = section.extra.uses %}
|
||||||
|
{% endif %}
|
||||||
|
{% endblock variable_wormhole %}
|
||||||
|
|
||||||
|
{# Page content #}
|
||||||
|
{% block page_start %}
|
||||||
|
{% include "components/about-card.html" %}
|
||||||
|
{% endblock page_start %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{# <br>
|
{{ section.content | safe }}
|
||||||
<article class="markdown-body"> #}
|
|
||||||
{{section.content | safe}}
|
|
||||||
{# </article> #}
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
@ -1,58 +1,10 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block title %}
|
|
||||||
{{page.title}}
|
|
||||||
{% endblock title %}
|
|
||||||
|
|
||||||
|
{# Additional metadata for Google #}
|
||||||
{% block head %}
|
{% block head %}
|
||||||
{# <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/4.0.0/github-markdown.min.css"
|
|
||||||
integrity="sha512-Oy18vBnbSJkXTndr2n6lDMO5NN31UljR8e/ICzVPrGpSud4Gkckb8yUpqhKuUNoE+o9gAb4O/rAxxw1ojyUVzg=="
|
|
||||||
crossorigin="anonymous" referrerpolicy="no-referrer" /> #}
|
|
||||||
|
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
|
|
||||||
{# Disable crawling if requested #}
|
{% if page.description and page.date %}
|
||||||
{% if page.extra.no_crawl %}
|
|
||||||
<meta name="robots" content="noindex, nofollow">
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if page.extra.uses_katex %}
|
|
||||||
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-MML-AM_CHTML' async></script>
|
|
||||||
<script type="text/x-mathjax-config">
|
|
||||||
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [ ['$$','$$'], ['\[','\]'] ]}});
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<meta property="og:title" content="{{page.title}} - Evan Pratten" />
|
|
||||||
<meta property="og:type" content="article" />
|
|
||||||
{% if page.description %}
|
|
||||||
<meta property="og:description" content="{{page.description}}" />
|
|
||||||
<meta property="description" content="{{page.description}}" />
|
|
||||||
{% else %}
|
|
||||||
<meta property="og:description" content="{{config.description}}" />
|
|
||||||
<meta property="description" content="{{config.description}}" />
|
|
||||||
{% endif %}
|
|
||||||
<meta property="article:published_time" content="{{page.date}}T00:00:00" />
|
|
||||||
|
|
||||||
{# Handle auto-centering request #}
|
|
||||||
{% if page.extra.auto_center_images %}
|
|
||||||
<style>
|
|
||||||
img {
|
|
||||||
display: block;
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Handle flags #}
|
|
||||||
{% if page.extra.uses_flags %}
|
|
||||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/6.4.3/css/flag-icons.min.css"
|
|
||||||
integrity="sha512-uvXdJud8WaOlQFjlz9B15Yy2Au/bMAvz79F7Xa6OakCl2jvQPdHD0hb3dEqZRdSwG4/sknePXlE7GiarwA/9Wg=="
|
|
||||||
crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Handle loading JSONLD #}
|
|
||||||
{% if page.extra.is_rfc or page.description and page.date %}
|
|
||||||
<script type="application/ld+json">
|
<script type="application/ld+json">
|
||||||
{# Import our template file #}
|
{# Import our template file #}
|
||||||
{% set template = load_data(path="jsonld_templates/blog_post.jsonld") %}
|
{% set template = load_data(path="jsonld_templates/blog_post.jsonld") %}
|
||||||
@ -66,53 +18,30 @@ MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']], displayMat
|
|||||||
}}
|
}}
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# Handle redirects if needed #}
|
|
||||||
{% if page.extra.redir_to %}
|
|
||||||
<meta http-equiv="refresh" content="0; url={{page.extra.redir_to}}" />
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% endblock head %}
|
{% endblock head %}
|
||||||
|
|
||||||
{% block profile %}
|
{# Pass data through to the base template #}
|
||||||
<div class="row">
|
{% block variable_wormhole %}
|
||||||
<div class="headshot-container">
|
{{ super() }}
|
||||||
<img src="{{config.extra.profile_photo}}" alt="Headshot" style="height:50px;width:auto;">
|
{% set title = page.title %}
|
||||||
</div>
|
{% set description = page.description %}
|
||||||
<div class="text-container">
|
{% set is_article = true %}
|
||||||
<h1>{{config.extra.name}}</h1>
|
{% if page.extra.uses %}
|
||||||
<p>
|
{% set feature_flags = page.extra.uses %}
|
||||||
{{config.extra.profession}}
|
{% endif %}
|
||||||
</p>
|
{% if page.extra.redir_to %}
|
||||||
</div>
|
{% set redirect_target = page.extra.redir_to %}
|
||||||
</div>
|
{% endif %}
|
||||||
{% endblock profile %}
|
{% endblock variable_wormhole %}
|
||||||
|
|
||||||
|
{# Page content #}
|
||||||
|
{% block page_start %}
|
||||||
|
{% include "components/heading-card.html" %}
|
||||||
|
{% endblock page_start %}
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
<h1 style="margin-bottom:0;padding-bottom:0;">{{page.title}}</h1>
|
||||||
|
<em>{{page.description}}</em>
|
||||||
<br><br>
|
<br><br>
|
||||||
<article class="markdown-body">
|
|
||||||
{% if page.description %}
|
|
||||||
<h1 style="border:none;margin-bottom:0;padding-bottom:0">{{page.title}}</h1>
|
|
||||||
<h3 style="margin-top:0;color:gray;padding-bottom:.3em;border-bottom:1px solid #eaecef;">
|
|
||||||
<em>
|
|
||||||
<span style="color:rgb(186, 186, 186)">/*</span>
|
|
||||||
{{page.description}}
|
|
||||||
<span style="color:rgb(186, 186, 186)">*/</span>
|
|
||||||
</em>
|
|
||||||
</h3>
|
|
||||||
{% else %}
|
|
||||||
<h1>{{page.title}}</h1>
|
|
||||||
{% endif %}
|
|
||||||
<div style="text-align: justify;">
|
|
||||||
{{page.content | safe}}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</article>
|
{{ page.content | safe }}
|
||||||
|
|
||||||
{% if page.extra.uses_twitter %}
|
|
||||||
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
|
|
||||||
{% endif %}
|
|
||||||
{% if page.extra.uses_graphviz %}
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
|
|
||||||
{% endif %}
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
@ -1,113 +1,49 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% block title %}
|
|
||||||
{{section.title}}
|
|
||||||
{% endblock title %}
|
|
||||||
|
|
||||||
{% block head %}
|
{# Pass data through to the base template #}
|
||||||
|
{% block variable_wormhole %}
|
||||||
{{ super() }}
|
{{ super() }}
|
||||||
|
{% set title = section.title %}
|
||||||
{# Disable crawling if requested #}
|
{% set description = section.description %}
|
||||||
{% if section.extra.no_crawl %}
|
{% if section.extra.uses %}
|
||||||
<meta name="robots" content="noindex, nofollow">
|
{% set feature_flags = section.extra.uses %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% endblock variable_wormhole %}
|
||||||
|
|
||||||
<meta property="og:title" content="{{section.title}} - Evan Pratten" />
|
{# Page content #}
|
||||||
{% if section.description %}
|
{% block page_start %}
|
||||||
<meta property="og:description" content="{{section.description}}" />
|
{% include "components/heading-card.html" %}
|
||||||
<meta property="description" content="{{section.description}}" />
|
{% endblock page_start %}
|
||||||
{% else %}
|
|
||||||
<meta property="og:description" content="{{config.description}}" />
|
|
||||||
<meta property="description" content="{{config.description}}" />
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Handle listing blog posts nicely in search #}
|
|
||||||
{% if section.extra.inject_blog_posts %}
|
|
||||||
<script type="application/ld+json">
|
|
||||||
{
|
|
||||||
"@context":"https://schema.org",
|
|
||||||
"@type":"ItemList",
|
|
||||||
"itemListElement":[
|
|
||||||
{% for page in section.pages %}
|
|
||||||
{% if not page.extra.hidden %}
|
|
||||||
{
|
|
||||||
"@type":"ListItem",
|
|
||||||
"position": "{{loop.index}}",
|
|
||||||
"item": {
|
|
||||||
"@type": "Article",
|
|
||||||
"headline": "{{page.title}}",
|
|
||||||
"url":"https://ewpratten.com{{page.path | safe}}",
|
|
||||||
"author": [{
|
|
||||||
"@type": "Person",
|
|
||||||
"name": "Evan Pratten",
|
|
||||||
"url": "https://ewpratten.com"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
} {% if not loop.last %},{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
]
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endif %}
|
|
||||||
{% endblock head %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% if section.extra.enable_gh_markdown %}
|
{{ section.content | safe }}
|
||||||
<article class="markdown-body">
|
|
||||||
{% endif %}
|
|
||||||
{{section.content | safe}}
|
|
||||||
{% if section.extra.enable_gh_markdown %}
|
|
||||||
</article>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# Blog posts #}
|
{# Handle various embed modes #}
|
||||||
{% if section.extra.inject_blog_posts %}
|
{% if section.extra.section_embed_mode %}
|
||||||
<ul style="margin:0">
|
|
||||||
<div>
|
|
||||||
{# Posts shall be broken down by year #}
|
|
||||||
{% set title_year = "3000" %}
|
|
||||||
{% for page in section.pages %}
|
|
||||||
{% if not page.extra.hidden %}
|
|
||||||
{% set page_year = page.date | date(format="%Y")%}
|
|
||||||
{% if page_year != title_year %}
|
|
||||||
{% set_global title_year = page_year %}
|
|
||||||
</ul>
|
|
||||||
<h2>{{title_year}}</h2>
|
|
||||||
<ul>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<li class="blog-post-li"><span style="color:{% if page.draft %}red{% else %}gray{% endif %};">{{page.date}}:</span> <a
|
|
||||||
href="{{page.path}}">{{page.title}}</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
<br><br>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{# RFCs #}
|
{% if section.extra.section_embed_mode == "blog_posts" %}
|
||||||
{% if section.extra.inject_rfcs %}
|
{# <ul style="margin:0"> #}
|
||||||
|
<div>
|
||||||
|
{# Posts shall be broken down by year #}
|
||||||
|
{% set title_year = "3000" %}
|
||||||
|
{% for page in section.pages %}
|
||||||
|
{% if not page.extra.hidden %}
|
||||||
|
{% set page_year = page.date | date(format="%Y")%}
|
||||||
|
{% if page_year != title_year %}
|
||||||
|
{% set_global title_year = page_year %}
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<h2>{{title_year}}</h2>
|
||||||
<ul>
|
<ul>
|
||||||
{% for page in section.pages %}
|
{% endif %}
|
||||||
{% if not page.extra.hidden %}
|
|
||||||
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a> <span style="color:gray;">({{page.date}})</span>
|
<li class="blog-post-li"><span style="color:{% if page.draft %}red{% else %}gray{% endif %};">{{page.date}}:</span>
|
||||||
|
<a href="{{page.path}}">{{page.title}}</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# Notes #}
|
|
||||||
{% if section.extra.inject_notes %}
|
|
||||||
<ul>
|
|
||||||
{% for page in section.pages %}
|
|
||||||
{% if not page.extra.hidden %}
|
|
||||||
<li class="blog-post-li"><a href="{{page.path}}">{{page.title}}</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
@ -1,8 +0,0 @@
|
|||||||
<div class="carded-section">
|
|
||||||
<div class="header">
|
|
||||||
<span>{{title}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
{{body | safe}}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
Loading…
x
Reference in New Issue
Block a user