mirror of
https://github.com/ParkerTenBroeck/ParkerTenBroeck.github.io.git
synced 2026-06-07 05:18:40 -04:00
First
This commit is contained in:
commit
6449151d7a
38 changed files with 779 additions and 0 deletions
38
config.toml
Normal file
38
config.toml
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# The URL the site will be built for
|
||||
base_url = "https://parkertenbroeck.com/"
|
||||
|
||||
# The site title and description; used in feeds by default.
|
||||
title = "Parker TenBroeck"
|
||||
description = "Personal website"
|
||||
|
||||
# Whether to automatically compile all Sass files in the sass directory
|
||||
compile_sass = true
|
||||
|
||||
# The default language; used in feeds.
|
||||
default_language = "en"
|
||||
|
||||
# When set to "true", a feed is automatically generated.
|
||||
generate_feeds = true
|
||||
|
||||
# The default author for pages
|
||||
author = "Parker TenBroeck"
|
||||
|
||||
# The filename to use for the feed. Used as the template filename, too.
|
||||
# Defaults to "atom.xml", which has a built-in template that renders an Atom 1.0 feed.
|
||||
# There is also a built-in template "rss.xml" that renders an RSS 2.0 feed.
|
||||
feed_filenames = ["rss.xml", "atom.xml"]
|
||||
|
||||
# Whether to build a search index to be used later on by a JavaScript library
|
||||
build_search_index = true
|
||||
|
||||
taxonomies = [
|
||||
{name = "tags", feed=true}
|
||||
]
|
||||
|
||||
[markdown]
|
||||
# Whether to do syntax highlighting
|
||||
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
|
||||
highlight_code = true
|
||||
render_emoji = true
|
||||
bottom_footnotes = true
|
||||
github_alerts = true
|
||||
6
content/blog/_index.md
Normal file
6
content/blog/_index.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "Blogs"
|
||||
sort_by = "date"
|
||||
template = "blog.html"
|
||||
page_template = "blog-page.html"
|
||||
+++
|
||||
10
content/blog/first.md
Normal file
10
content/blog/first.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "My first post"
|
||||
description = "moving from an abandond react website which hasn't been updated in over 4 years to Zola"
|
||||
date = 2026-01-16
|
||||
|
||||
[taxonomies]
|
||||
tags = ["web", "zola"]
|
||||
+++
|
||||
|
||||
|
||||
6
content/crafts/_index.md
Normal file
6
content/crafts/_index.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "Crafts"
|
||||
sort_by = "date"
|
||||
template = "blog.html"
|
||||
page_template = "blog-page.html"
|
||||
+++
|
||||
10
content/crafts/qtip-cube.md
Normal file
10
content/crafts/qtip-cube.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "QTip-Cube"
|
||||
description = "Boredom can lead to wonderful discoveries. One such discovery is the fact that Qtips can be carefully arranged in such a way that they form a strong(ish) cube held together by nothing but pure Qtip"
|
||||
date = 2025-05-12
|
||||
|
||||
[taxonomies]
|
||||
tags = ["6-sided", "crafty"]
|
||||
+++
|
||||
|
||||
I'm so sorry for whoever opened this page expecting to see such a object. Unfortunately I have not yet uploaded the image. Please yell at me if needed
|
||||
9
content/crafts/spoon.md
Normal file
9
content/crafts/spoon.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "Spoon"
|
||||
description = "I went from a tree all the way to a spoon in a few weeks"
|
||||
date = 2026-01-16
|
||||
|
||||
[taxonomies]
|
||||
tags = ["wooden", "crafty"]
|
||||
+++
|
||||
|
||||
6
content/pictures/_index.md
Normal file
6
content/pictures/_index.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "Pictures"
|
||||
sort_by = "date"
|
||||
template = "blog.html"
|
||||
page_template = "blog-page.html"
|
||||
+++
|
||||
6
content/projects/_index.md
Normal file
6
content/projects/_index.md
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
+++
|
||||
title = "Projects"
|
||||
sort_by = "date"
|
||||
template = "blog.html"
|
||||
page_template = "blog-page.html"
|
||||
+++
|
||||
10
content/projects/ansi.md
Normal file
10
content/projects/ansi.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "Ansi"
|
||||
description = "A `no_std` incremental, panic free, allocationless ansi parser"
|
||||
date = 2025-09-23
|
||||
|
||||
[taxonomies]
|
||||
tags = ["embedded", "rust"]
|
||||
+++
|
||||
|
||||
https://github.com/ParkerTenBroeck/ansi
|
||||
12
content/projects/automata.md
Normal file
12
content/projects/automata.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
+++
|
||||
title = "Automata"
|
||||
description = "A compiler, visualizer, and simulator for different classes of automata"
|
||||
date = 2026-01-14
|
||||
|
||||
[taxonomies]
|
||||
tags = ["web", "deno", "rust"]
|
||||
+++
|
||||
|
||||
https://github.com/ParkerTenBroeck/automata
|
||||
|
||||
parkertenbroeck.com/automata/
|
||||
9
content/projects/brainfuck.md
Normal file
9
content/projects/brainfuck.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "Brainfuck"
|
||||
description = "A brainfuck parser, interpreter, compiler, and optimizer"
|
||||
date = 2024-05-09
|
||||
|
||||
[taxonomies]
|
||||
tags = ["rust", "x86"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/brainfuck_compiler
|
||||
9
content/projects/fastexpr.md
Normal file
9
content/projects/fastexpr.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "FastExpr"
|
||||
description = "A java 24 library that runtime compiled math expressions into native JVM bytecode. Also supporting expression simplification and operations such as derivatives"
|
||||
date = 2025-04-03
|
||||
|
||||
[taxonomies]
|
||||
tags = ["java", "bytecode"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/fastexpr
|
||||
9
content/projects/generators.md
Normal file
9
content/projects/generators.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "Generators"
|
||||
description = "A java 24 library that adds stackless coroutines to standard java code by transforming method bytecode into state machines at load time"
|
||||
date = 2025-05-07
|
||||
|
||||
[taxonomies]
|
||||
tags = ["java", "bytecode"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/generators
|
||||
10
content/projects/highschool.md
Normal file
10
content/projects/highschool.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "Highschool Programs"
|
||||
description = "A collection of programs I made while in highschool. Don't look too hard at the code ;)"
|
||||
date = 2020-01-01
|
||||
|
||||
[taxonomies]
|
||||
tags = ["java", "fun", "highschool"]
|
||||
+++
|
||||
|
||||
https://github.com/ParkerTenBroeck/HighSchoolPrograms
|
||||
9
content/projects/kernel.md
Normal file
9
content/projects/kernel.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "Kernel"
|
||||
description = "A from scratch bootloader, and kernel for the milkv-duos development board. Featuring VGA output, virtual memory support, rudimentary scheduling, UART, and kernel image loading through UART"
|
||||
date = 2024-08-08
|
||||
|
||||
[taxonomies]
|
||||
tags = ["rust", "embedded", "risc-v"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/milkv-duos-rs
|
||||
10
content/projects/legend-of-xor.md
Normal file
10
content/projects/legend-of-xor.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "Legend Of XOR"
|
||||
description = "A 'game' but mostly game engine I wrote in a group that is surprisingly 'ok' for what it is"
|
||||
date = 2020-01-16
|
||||
|
||||
[taxonomies]
|
||||
tags = ["java", "fun", "game", "highschool"]
|
||||
+++
|
||||
|
||||
https://github.com/ParkerTenBroeck/Legend-of-Xor
|
||||
10
content/projects/my_cpu.md
Normal file
10
content/projects/my_cpu.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
+++
|
||||
title = "My CPU"
|
||||
description = "A CPU I designed based off a SAP-1 CPU but expanded to be a much more 'capable' 16 bit CPU. THE ISA is about as good as you'd expect"
|
||||
date = 2018-01-16
|
||||
|
||||
[taxonomies]
|
||||
tags = ["hardware", "logic gates", "highschool"]
|
||||
+++
|
||||
|
||||
https://github.com/ParkerTenBroeck/MyCPU_16bit
|
||||
9
content/projects/qc-backend.md
Normal file
9
content/projects/qc-backend.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "QC Backend"
|
||||
description = "A quality control tool for RCT - Niagara I developed while working for them. Despite the name it is also the frontend"
|
||||
date = 2024-04-21
|
||||
|
||||
[taxonomies]
|
||||
tags = ["rust", "sql", "web"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/qc-backend
|
||||
9
content/projects/software-renderer.md
Normal file
9
content/projects/software-renderer.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
+++
|
||||
title = "Software Rasterizer"
|
||||
description = "A software rasterizer written in C++ for a parallel computing class. Using OpenMP and OpenMPI together to support multi threaded rendering of single frames and distributed rendering of multiple frames across networks. With dynamic coloured lighting, normal, diffuse, ambient, specular, roughness, and shininess maps supported using Blinn-Phong shading."
|
||||
date = 2025-12-12
|
||||
|
||||
[taxonomies]
|
||||
tags = ["C++", "graphics"]
|
||||
+++
|
||||
https://github.com/ParkerTenBroeck/3P93
|
||||
5
default.nix
Normal file
5
default.nix
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{ pkgs ? import <nixpkgs> {} }:
|
||||
|
||||
pkgs.mkShell {
|
||||
buildInputs = [ pkgs.zola ];
|
||||
}
|
||||
8
sass/blog.scss
Normal file
8
sass/blog.scss
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
.blog-page {
|
||||
.title {
|
||||
h1 {
|
||||
font-size: 2.2em;
|
||||
}
|
||||
padding-bottom: 2em;
|
||||
}
|
||||
}
|
||||
9
sass/footer.scss
Normal file
9
sass/footer.scss
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
footer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
margin: 1em 0;
|
||||
|
||||
border-top-style: solid;
|
||||
border-top-width: 4px;
|
||||
border-top-color: var(--grey);
|
||||
}
|
||||
28
sass/header.scss
Normal file
28
sass/header.scss
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
margin: 1em 0;
|
||||
font-size: large;
|
||||
|
||||
.title * {
|
||||
font-size: xx-large;
|
||||
|
||||
|
||||
text-decoration-color: var(--primary)!important;
|
||||
&:hover {
|
||||
text-decoration-color: var(--grey)!important;
|
||||
}
|
||||
}
|
||||
|
||||
nav {
|
||||
a {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
87
sass/style.scss
Normal file
87
sass/style.scss
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
@use "theme.scss";
|
||||
@use "header.scss";
|
||||
@use "footer.scss";
|
||||
@use "blog.scss";
|
||||
|
||||
body {
|
||||
background: var(--bg-0);
|
||||
color: var(--fg-1);
|
||||
|
||||
font-size: 16px;
|
||||
line-height: 1.6em;
|
||||
letter-spacing: .5px;
|
||||
}
|
||||
|
||||
.content {
|
||||
margin-bottom: 4em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
max-width: 800px;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 978px) {
|
||||
.content {
|
||||
margin-left: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--fg-0);
|
||||
font-weight: bold;
|
||||
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 0.30ex;
|
||||
text-decoration-color: var(--grey);
|
||||
|
||||
&:hover {
|
||||
text-decoration-color: var(--primary);
|
||||
}
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: var(--fg-0);
|
||||
font-weight: bold;
|
||||
margin-top: 2em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
code {
|
||||
background: var(--bg-1);
|
||||
border-radius: 3px;
|
||||
font-family: 'Berkeley Mono';
|
||||
padding: .15rem .3rem;
|
||||
}
|
||||
|
||||
time {
|
||||
padding-bottom: 1em;
|
||||
color: var(--fg-2);
|
||||
}
|
||||
14
sass/theme.scss
Normal file
14
sass/theme.scss
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
|
||||
|
||||
:root {
|
||||
--bg-0: #1d1d1d;
|
||||
--bg-1: #131313;
|
||||
|
||||
--grey: #777;
|
||||
|
||||
--fg-0: #eee;
|
||||
--fg-1: #ccc;
|
||||
--fg-2: #999;
|
||||
|
||||
--primary: #daa520
|
||||
}
|
||||
BIN
static/resume.pdf
Normal file
BIN
static/resume.pdf
Normal file
Binary file not shown.
17
templates/404.html
Normal file
17
templates/404.html
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
|
||||
{%- block title -%}Page not found{%- endblock -%}
|
||||
|
||||
{%- block robots -%}
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{%- endblock -%}
|
||||
|
||||
{%- block main -%}
|
||||
{%- filter indent -%}{%- filter indent -%}
|
||||
<section class="framed">
|
||||
<h2>Page not found...</h2>
|
||||
<p>Sorry, this page doesn't exist. Go back <a href="{{ config.base_url | safe }}">home</a>?</p>
|
||||
</section>
|
||||
{%- endfilter -%}{%- endfilter -%}
|
||||
{%- endblock -%}
|
||||
137
templates/base.html
Normal file
137
templates/base.html
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
<title>
|
||||
{%- block title -%}
|
||||
{% if page.title %}{{ page.title }}
|
||||
{% elif section.title %}{{ section.title }}
|
||||
{% elif config.title %}{{ config.title }}
|
||||
{% endif %}
|
||||
{%- endblock -%}
|
||||
</title>
|
||||
|
||||
{% block feeds %}
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path='rss.xml', trailing_slash=false) }}">
|
||||
<link rel="alternate" type="application/atom+xml" title="Atom" href="{{ get_url(path='atom.xml', trailing_slash=false) }}">
|
||||
{% endblock %}
|
||||
|
||||
<link rel="stylesheet" href="{{ get_url(path='style.css', cachebust=true) }}">
|
||||
|
||||
{%- if page.extra.stylesheets or section.extra.stylesheets %}
|
||||
{%- for stylesheet in page.extra.stylesheets | default(value=section.extra.stylesheets) %}
|
||||
<link rel="stylesheet" href="{{ get_url(path=stylesheet, cachebust=true) }}">
|
||||
{% endfor -%}
|
||||
{%- endif %}
|
||||
|
||||
{%- if config.extra.favicon %}
|
||||
{% set image_meta = get_image_metadata(path=config.extra.favicon) -%}
|
||||
<link rel="icon" type="{{ image_meta.mime | safe }}" href="{{ get_url(path=config.extra.favicon) }}">
|
||||
{%- if image_meta.mime is ending_with("png") %}
|
||||
{% set resized_image = resize_image(path=config.extra.favicon, width=180, height=180, op="fit") -%}
|
||||
<link rel="apple-touch-icon" href="{{ resized_image.url | safe }}">
|
||||
{%- endif -%}
|
||||
{%- elif config.extra.favicon_emoji %}
|
||||
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>{{ config.extra.favicon_emoji }}</text></svg>">
|
||||
{%- endif %}
|
||||
|
||||
{% if current_url %}
|
||||
<meta property="og:url" content="{{ current_url | safe }}">
|
||||
<link rel="canonical" href="{{ current_url | safe }}">
|
||||
{% endif %}
|
||||
|
||||
{% if page -%}
|
||||
<meta property="og:type" content="article">
|
||||
{% else -%}
|
||||
<meta property="og:type" content="website">
|
||||
{% endif -%}
|
||||
|
||||
{% if page.title %}
|
||||
<meta property="og:title" content="{{ page.title }}">
|
||||
<meta property="twitter:title" content="{{ page.title }}">
|
||||
{% endif %}
|
||||
<meta property="twitter:card" content="summary_large_image">
|
||||
|
||||
{% if page.extra.preview_img %}
|
||||
<meta property="og:image" content="{{ get_url(path=page.extra.preview_img) }}" >
|
||||
<meta property="twitter:image" content="{{ get_url(path=page.extra.preview_img) }}" >
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
{%- if page.authors -%}
|
||||
{%- for author in page.authors %}
|
||||
<meta name="author" content="{{ author }}">
|
||||
{%- endfor -%}
|
||||
{%- elif page and config.author %}
|
||||
<meta name="author" content="{{ config.author }}">
|
||||
{%- endif %}
|
||||
|
||||
{%- block description -%}
|
||||
{%- if config.description %}
|
||||
<meta name="description" content="{{ config.description }}">
|
||||
{%- endif %}
|
||||
{%- endblock %}
|
||||
|
||||
<meta name="color-scheme" content="dark">
|
||||
|
||||
|
||||
{%- if page.description -%}
|
||||
<meta property="og:description" content="{{ page.description | markdown(inline=true) | striptags }}">
|
||||
{% elif page.summary -%}
|
||||
{%- set inline_summary = page.summary | linebreaksbr | replace(from="<br>", to=" ") | striptags -%}
|
||||
<meta property="og:description" content="{{ inline_summary | trim_end_matches(pat=".") | safe }}…">
|
||||
{%- elif section.description -%}
|
||||
<meta property="og:description" content="{{ section.description | markdown(inline=true) | striptags }}">
|
||||
{% elif config.description -%}
|
||||
<meta property="og:description" content="{{ config.description }}">
|
||||
{% endif -%}
|
||||
|
||||
<meta property="og:site_name" content="{{ config.title }}">
|
||||
<meta property="og:updated_time" content="{{ now() }}">
|
||||
|
||||
{%- if page.date %}
|
||||
<meta property="article:published_time" content="{{ page.date | date(format="%+") }}">
|
||||
{%- endif -%}
|
||||
|
||||
{%- if page.updated %}
|
||||
<meta property="article:modified_time" content="{{ page.updated | date(format="%+") }}">
|
||||
{%- endif -%}
|
||||
|
||||
{%- if page.taxonomies and page.taxonomies.categories %}
|
||||
<meta property="article:section" content="{{ page.taxonomies.categories[0] }}">
|
||||
{%- endif -%}
|
||||
|
||||
{%- if page.taxonomies and page.taxonomies.tags -%}
|
||||
{%- for tag in page.taxonomies.tags %}
|
||||
<meta property="article:tag" content="{{ tag }}">
|
||||
{%- endfor -%}
|
||||
{%- endif -%}
|
||||
</head>
|
||||
|
||||
<body data-theme="dark">
|
||||
<div class="content">
|
||||
<header class="header">
|
||||
{% filter indent -%}{%- filter indent -%}
|
||||
{%- block header -%}
|
||||
{% include "partials/header.html" %}
|
||||
{%- endblock -%}
|
||||
{%- endfilter -%}{%- endfilter %}
|
||||
</header>
|
||||
<main id="main">
|
||||
{% block main %}{% endblock %}
|
||||
</main>
|
||||
<footer class="footer">
|
||||
{% filter indent -%}{%- filter indent -%}
|
||||
{%- block footer -%}
|
||||
{% include "partials/footer.html" %}
|
||||
{%- endblock -%}
|
||||
{%- endfilter -%}{%- endfilter %}
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
19
templates/blog-page.html
Normal file
19
templates/blog-page.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
<div class="blog-page">
|
||||
<div class="title">
|
||||
<h1>{{ page.title }}</h1>
|
||||
<p><time>{{page.date}}</time>
|
||||
{% if page.taxonomies %}{% if page.taxonomies.tags %}
|
||||
{% for tag in page.taxonomies.tags %} • #{{tag}} {% endfor %}
|
||||
{% endif %}{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
{{ page.content | safe }}
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{% endblock main %}
|
||||
15
templates/blog.html
Normal file
15
templates/blog.html
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% import "macros/post.html" as posts %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
|
||||
<div class="blog">
|
||||
{% for page in section.pages %}
|
||||
{{ posts::excerpt(page=page) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
{% endblock main %}
|
||||
36
templates/index.html
Normal file
36
templates/index.html
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% import "macros/post.html" as posts %}
|
||||
|
||||
{% block main %}
|
||||
<p>
|
||||
Hi, I'm Parker. I like to talk about silly computer things and whatever else comes to mind.
|
||||
</p>
|
||||
<p>
|
||||
You can find <a href="{{ get_url(path='@/blog/_index.md') }}">Posts</a>,
|
||||
<a href="{{ get_url(path='@/projects/_index.md') }}">Projects</a>,
|
||||
<a href="{{ get_url(path='@/crafts/_index.md') }}">Crafts</a>,
|
||||
<a href="{{ get_url(path='@/pictures/_index.md') }}">Pictures</a>, and
|
||||
<a href="{{ get_url(path='tags') }}">Tags</a> up above on any page.
|
||||
</p>
|
||||
|
||||
<p>Please note that this page is currently under construction; not all content is finished.</p>
|
||||
|
||||
<p>If you'd like to employ me please take a look at my <a href="{{get_url(path='resume.pdf')}}">resume</a>.</p>
|
||||
|
||||
<br>
|
||||
|
||||
|
||||
|
||||
<p>Heres a list of stuff I'd like you to checkout:</p>
|
||||
<ul>
|
||||
<li>{{ posts::page_link(path="projects/automata.md") }}</li>
|
||||
<li>{{ posts::page_link(path="projects/software-renderer.md") }}</li>
|
||||
<li>{{ posts::page_link(path="projects/ansi.md") }}</li>
|
||||
<li>{{ posts::page_link(path="projects/generators.md") }}</li>
|
||||
<li>{{ posts::page_link(path="projects/fastexpr.md") }}</li>
|
||||
<li>{{ posts::page_link(path="projects/kernel.md") }}</li>
|
||||
<li>{{ posts::page_link(path="blog/first.md") }}</li>
|
||||
</ul>
|
||||
|
||||
{% endblock main %}
|
||||
28
templates/macros/post.html
Normal file
28
templates/macros/post.html
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{%- macro excerpt(page) -%}
|
||||
<article class="excerpt">
|
||||
<h1><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
|
||||
<p><time>{{page.date | date(format="%b %d, %Y")}}</time>
|
||||
{% if page.taxonomies %}{% if page.taxonomies.tags %}
|
||||
|
||||
{% for tag in page.taxonomies.tags %}
|
||||
{% set url = get_taxonomy_url(kind="tags", name=tag, lang=page.lang) %}
|
||||
• <a href = "{{url}}">#{{tag}}</a>
|
||||
{% endfor %}
|
||||
{% endif %}{% endif %}
|
||||
</p>
|
||||
<div class="description">
|
||||
{{page.description | markdown | safe}}
|
||||
</div>
|
||||
</article>
|
||||
{%- endmacro -%}
|
||||
|
||||
|
||||
{% macro page_link(path) %}
|
||||
{% set p = get_page(path=path) %}
|
||||
<a href="{{ p.permalink }}">{{ p.title }}</a>
|
||||
{% if p.date %}
|
||||
<time datetime="{{ p.date }}">
|
||||
{{ p.date | date(format="%b %d, %Y") }}
|
||||
</time>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
||||
9
templates/macros/taxonomy.html
Normal file
9
templates/macros/taxonomy.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
{%- macro prettify(term) -%}
|
||||
{%- if taxonomy.name == "categories" -%}
|
||||
{{- "{" ~ term ~ "}" | safe -}}
|
||||
{%- elif taxonomy.name == "tags" -%}
|
||||
{{- "#" ~ term | safe -}}
|
||||
{%- else -%}
|
||||
{{- term | safe -}}
|
||||
{%- endif -%}
|
||||
{%- endmacro -%}
|
||||
8
templates/partials/footer.html
Normal file
8
templates/partials/footer.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
<p><a href="https://github.com/ParkerTenBroeck">ParkerTenBroeck</a> on GitHub
|
||||
|
|
||||
<a href="mailto:parker@parkertenbroeck.ca">parker@parkertenbroeck.ca</a>
|
||||
|
|
||||
<a href="{{ get_url(path='rss.xml', trailing_slash=false) }}">RSS</a>
|
||||
|
|
||||
<a href="{{ get_url(path='atom.xml', trailing_slash=false) }}">Atom</a>
|
||||
10
templates/partials/header.html
Normal file
10
templates/partials/header.html
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<div class="title">
|
||||
<a href="{{config.base_url}}">Hey! it's Grey</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="{{ get_url(path='@/blog/_index.md') }}">Posts</a>
|
||||
<a href="{{ get_url(path='@/projects/_index.md') }}">Projects</a>
|
||||
<a href="{{ get_url(path='@/crafts/_index.md') }}">Crafts</a>
|
||||
<a href="{{ get_url(path='@/pictures/_index.md') }}">Pictures</a>
|
||||
<a href="{{ get_url(path='tags') }}">Tags</a>
|
||||
</nav>
|
||||
95
templates/robots.txt
Normal file
95
templates/robots.txt
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
User-agent: TurnitinBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Google-Extended
|
||||
Disallow: /
|
||||
|
||||
User-agent: GPTBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: CCBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Omgilibot
|
||||
Disallow: /
|
||||
|
||||
User-agent: 008
|
||||
Disallow: /
|
||||
|
||||
User-agent: voltron
|
||||
Disallow: /
|
||||
|
||||
User-agent: Bytespider
|
||||
Disallow: /
|
||||
|
||||
User-agent: AdsBot-Google
|
||||
Disallow: /
|
||||
|
||||
User-agent: Amazonbot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Anthropic-ai
|
||||
Disallow: /
|
||||
|
||||
User-agent: AwarioRssBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: AwarioSmartBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Bytespider
|
||||
Disallow: /
|
||||
|
||||
User-agent: CCBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: ChatGPT-User
|
||||
Disallow: /
|
||||
|
||||
User-agent: ClaudeBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Claude-Web
|
||||
Disallow: /
|
||||
|
||||
User-agent: Cohere-ai
|
||||
Disallow: /
|
||||
|
||||
User-agent: DataForSeoBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: FacebookBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Google-Extended
|
||||
Disallow: /
|
||||
|
||||
User-agent: GPTBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: ImagesiftBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Magpie-crawler
|
||||
Disallow: /
|
||||
|
||||
User-agent: Omgili
|
||||
Disallow: /
|
||||
|
||||
User-agent: Omgilibot
|
||||
Disallow: /
|
||||
|
||||
User-agent: Peer39_crawler
|
||||
Disallow: /
|
||||
|
||||
User-agent: Peer39_crawler/1.0
|
||||
Disallow: /
|
||||
|
||||
User-agent: PerplexityBot
|
||||
Disallow: /
|
||||
|
||||
User-agent: YouBot
|
||||
Disallow: /
|
||||
|
||||
|
||||
Sitemap: {{ get_url(path="sitemap.xml") }}
|
||||
18
templates/taxonomy_list.html
Normal file
18
templates/taxonomy_list.html
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
{% extends "base.html" %}
|
||||
{% import "macros/taxonomy.html" as macros %}
|
||||
|
||||
{% block main %}
|
||||
|
||||
|
||||
<h1>{{ taxonomy.name | title }}</h1>
|
||||
|
||||
{%- set num_terms = terms | length %}
|
||||
<ul class="taxonomy-list{%- if num_terms > 16 %} three-column{%- elif num_terms > 8 %} two-column{%- endif -%}">
|
||||
{%- for term in terms %}
|
||||
{%- set page_count = [term.page_count ~ " post", term.page_count | pluralize] | join %}
|
||||
<li><a href="{{ term.permalink | safe }}">{{ macros::prettify(term=term.name) }}</a> ({{ page_count }})</li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
|
||||
|
||||
{% endblock main %}
|
||||
39
templates/taxonomy_single.html
Normal file
39
templates/taxonomy_single.html
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
{% extends "base.html" %}
|
||||
{% import "macros/taxonomy.html" as macros %}
|
||||
{% import "macros/post.html" as posts %}
|
||||
|
||||
{%- block title -%}
|
||||
{{ term.name | title }} | {{ config.title }}
|
||||
{%- endblock -%}
|
||||
|
||||
{# {%- block feeds -%}
|
||||
{%- if taxonomy.feed -%}
|
||||
{%- for filename in config.feed_filenames -%}
|
||||
|
||||
{%- if taxonomy.name is ending_with("ies") -%}
|
||||
{%- set singular_name = taxonomy.name | replace(from="ies", to="y") -%}
|
||||
{%- else -%}
|
||||
{%- set singular_name = taxonomy.name | trim_end_matches(pat="s") -%}
|
||||
{%- endif -%}
|
||||
{%- set feed_title = config.title ~ " | Posts in the '" ~ term.name ~ "' " ~ singular_name -%}
|
||||
{%- set feed_filename = taxonomy.name ~ "/" ~ term.name ~ "/" ~ filename -%}
|
||||
{{ feed_macros::link_alternate(filename=feed_filename, title=feed_title) }}
|
||||
{% endfor -%}
|
||||
{%- endif -%}
|
||||
{%- endblock -%} #}
|
||||
|
||||
{% block rss %}
|
||||
{% set rss_path = "tags/" ~ term.name ~ "/rss.xml" %}
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path=rss_path, trailing_slash=false) }}">
|
||||
{% endblock rss %}
|
||||
|
||||
{%- block main -%}
|
||||
|
||||
<h1>{{ macros::prettify(term=term.name) }}</h1>
|
||||
<div>
|
||||
{%- for page in paginator.pages | default(value=term.pages) %}
|
||||
{{ posts::excerpt(page=page) }}
|
||||
{%- endfor %}
|
||||
</div>
|
||||
|
||||
{%- endblock -%}
|
||||
Loading…
Add table
Add a link
Reference in a new issue