Compare commits

..

1 Commits

Author SHA1 Message Date
42698372ad Split home page into two columns 2021-06-16 07:28:38 +00:00
17 changed files with 211 additions and 122 deletions

View File

@@ -52,7 +52,7 @@ $ sudo make-cadir easy-rsa/
$ sudo chown -R tanner:tanner easy-rsa/ $ sudo chown -R tanner:tanner easy-rsa/
``` ```
Replace `tanner` with your Linux username, this is temporary. Replace `tanner` with your own username, this is temporary.
<span class="aside">The `.rnd` file prevents a warning</span> <span class="aside">The `.rnd` file prevents a warning</span>
@@ -88,7 +88,7 @@ We make a `mediaserver` client because we want to assign a static IP to it. You
need to make a different one for each client you want with a static IP. need to make a different one for each client you want with a static IP.
Also, if you want generic clients that all get dynamic IPs for use on your Also, if you want generic clients that all get dynamic IPs for use on your
laptop, phone, etc. to protect you from public WiFi (like a normal VPN), create only a single extra one: laptop, phone, etc. to protect you from public WiFi, create only a single extra one:
``` ```
$ ./easyrsa build-client-full client nopass # optional $ ./easyrsa build-client-full client nopass # optional
@@ -376,7 +376,7 @@ To add your VPN on Gnome, open VPN settings, import file, and select
You should now be fine to access your home server from over the internet. You should now be fine to access your home server from over the internet.
To forward additional ports, just edit the `/etc/ufw/before.rules` file like To forward additional ports, just edit the `/etc/ufw/before.rules` file like
above and apply the changes to `ufw`. above.
You can now point a domain to your virtual server's IP and use that to connect You can now point a domain to your virtual server's IP and use that to connect
to your home server. Use a CNAME to make it easy to change later: to your home server. Use a CNAME to make it easy to change later:

View File

@@ -1,2 +0,0 @@
User-agent: *
Disallow:

View File

@@ -1,17 +0,0 @@
<style>
body {background: #eee; font: 1.1rem/1.5 serif;}
h1, h2 {margin-left: -24; font-family: sans-serif;}
a {text-decoration: none; color: #000; border-bottom: 1px solid #000;}
</style>
<div style="max-width: 600; margin: auto">
<h1>Tanner Collin</h1>
<p> Hi, I'm Tanner! I do firmware and web development in Calgary.</p>
<a href="/">Contact</a> |
<a href="/r">Resume</a> |
<a href="/p">Projects</a> |
<a href="/c">Creations</a> |
<a href="/w">Writing</a>
<h2>Contact Info</h2>
<p>Email: <a href="mailto:site2@tannercollin.com">site2@tannercollin.com</a></p>
<p>Telegram: <a href="https://t.me/tannercollin">@tannercollin</a></p>
</div>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -1,3 +1,12 @@
{% if PROD %}
<?php
$themeClass = '';
if (!empty($_COOKIE['theme'])) {
$themeClass = $_COOKIE['theme'];
}
?>
{% endif %}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -9,10 +18,21 @@
<meta name="author" content="{{ AUTHOR }}" /> <meta name="author" content="{{ AUTHOR }}" />
{% endblock head %} {% endblock head %}
<link rel="preload" href="/theme/fonts/AppSILB.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/AppSILBI.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/AppSILI.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/AppSILR.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/Lato-Bold.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/Lato-BoldItalic.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/Lato-Italic.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="preload" href="/theme/fonts/Lato-Regular.ttf" as="font" type="font/ttf" crossorigin="anonymous">
<link rel="icon" href="favicon.svg"> <link rel="icon" href="favicon.svg">
<style> <style>
{% include 'style.css' %} {% include 'style.css' %}
{% include 'fonts.css' %}
</style> </style>
<script defer src="/theme/instant-page.js"></script> <script defer src="/theme/instant-page.js"></script>
@@ -29,10 +49,7 @@
{% endblock %} {% endblock %}
</div> </div>
<p class="footer"> <p class="copyright">
<span class="wname">Webring:</span> <a href="https://jason.schwarzenberger.co.nz/" class="wprev">&lt; Previous</a> | <a href="https://webring.t0.vc" class="windex">Index</a> | <a href="https://udia.ca" class="wnext">Next &gt;</a>
</p>
<p class="footer">
© 20122021 Tanner Collin © 20122021 Tanner Collin
</p> </p>
</body> </body>

View File

@@ -0,0 +1,59 @@
@font-face {
font-family: 'Apparatus SIL';
src: url('/theme/fonts/AppSILR.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Apparatus SIL';
font-style: italic;
src: url('/theme/fonts/AppSILI.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Apparatus SIL';
font-weight: bold;
src: url('/theme/fonts/AppSILB.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Apparatus SIL';
font-weight: bold;
font-style: italic;
src: url('/theme/fonts/AppSILBI.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Lato';
font-style: italic;
font-weight: 400;
src: local('Lato Italic'), local('Lato-Italic'), url('/theme/fonts/Lato-Italic.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Lato';
font-style: italic;
font-weight: 700;
src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url('/theme/fonts/Lato-BoldItalic.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 400;
src: local('Lato Regular'), local('Lato-Regular'), url('/theme/fonts/Lato-Regular.ttf') format('truetype');
font-display: swap;
}
@font-face {
font-family: 'Lato';
font-style: normal;
font-weight: 700;
src: local('Lato Bold'), local('Lato-Bold'), url('/theme/fonts/Lato-Bold.ttf') format('truetype');
font-display: swap;
}

View File

@@ -8,12 +8,7 @@
{% endblock %} {% endblock %}
{% block info %} {% block info %}
<picture> <img src="/theme/me.jpg" width="128" class="me" alt="me smiling wide and looking into the camera lit up brightly" />
<source type="image/webp" srcset="/theme/me.webp">
<source type="image/jpeg" srcset="/theme/me.jpg">
<img src="/theme/me.jpg" width="128" height="164" class="me" alt="me smiling wide and looking into the camera lit up brightly">
</picture>
<div class="info"> <div class="info">
<h1>Tanner Collin</h1> <h1>Tanner Collin</h1>
<p class="contact-icons"> <p class="contact-icons">
@@ -25,94 +20,103 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="content index"> <div class="content content-index">
<p> <p>
Hi, I'm Tanner! I do firmware and web development in Calgary. Hi, I'm Tanner! I do firmware and web development in Calgary.
</p> </p>
<h2>Contact Info</h2> <div class="leftcol">
<div class="inside">
<p> <h2>Contact Info</h2>
Email: <a href="mailto:site2@tannercollin.com">site2@tannercollin.com</a> <br />
Telegram: <a href="https://t.me/tannercollin" target="_blank" rel="noreferrer noopener">@tannercollin</a>
</p>
<h2>Resume</h2> <p>
Email: <a href="mailto:site2@tannercollin.com">site2@tannercollin.com</a> <br />
Telegram: <a href="https://t.me/tannercollin" target="_blank" rel="noreferrer noopener">@tannercollin</a>
</p>
<ul> <h2>Resume</h2>
<li>Firmware Engineer at <a href="https://cabanablockchain.com" target="_blank" rel="noreferrer noopener">Cabana Blockchain</a>, 2018</li>
<li>Lead Hardware Engineer at <a href="https://criticalcontrol.com/" target="_blank" rel="noreferrer noopener">Critical Control</a>, 20162018</li>
<li>Electrical Engineer at <a href="https://www.opener.aero/" target="_blank" rel="noreferrer noopener">Opener Aero</a>, 20162016</li>
<li>Electrical Engineer Intern at <a href="https://www.pason.com/" target="_blank" rel="noreferrer noopener">Pason Systems</a>, 20142015</li>
<li>BSc. Electrical Engineering from University of Calgary</li>
</ul>
<h2>Projects</h2> <ul>
<li>Firmware Engineer at <a href="https://cabanablockchain.com" target="_blank" rel="noreferrer noopener">Cabana Blockchain</a>, 2018</li>
<li>Lead Hardware Engineer at <a href="https://criticalcontrol.com/" target="_blank" rel="noreferrer noopener">Critical Control</a>, 20162018</li>
<li>Electrical Engineer at <a href="https://www.opener.aero/" target="_blank" rel="noreferrer noopener">Opener Aero</a>, 20162016</li>
<li>Electrical Engineer Intern at <a href="https://www.pason.com/" target="_blank" rel="noreferrer noopener">Pason Systems</a>, 20142015</li>
<li>BSc. Electrical Engineering from University of Calgary</li>
</ul>
<p> <h2>Projects</h2>
My main hobby is working on software projects. I typically design websites or
build tools that make my life easier.
</p>
<h3> <p>
<a href="https://news.t0.vc/" target="_blank" rel="noreferrer noopener">QotNews</a> My main hobby is working on software projects. I typically design websites or
<a class="source" href="https://git.tannercollin.com/tanner/qotnews" target="_blank" rel="noreferrer noopener">source code</a> build tools that make my life easier.
</h3> </p>
<div class="summary">
<p>Hacker News, Reddit, Lobsters, and Tildes articles pre-rendered in reader mode. Optimized for speed and distraction-free reading.</p>
</div>
<h3> <h3>
<a href="https://notica.us" target="_blank" rel="noreferrer noopener">Notica</a> <a href="https://news.t0.vc/" target="_blank" rel="noreferrer noopener">QotNews</a>
<a class="source" href="https://github.com/tannercollin/Notica" target="_blank" rel="noreferrer noopener">source code</a> <a class="source" href="https://git.tannercollin.com/tanner/qotnews" target="_blank" rel="noreferrer noopener">source code</a>
</h3> </h3>
<div class="summary">
<p>Send browser notifications from your terminal. No installation. No registration.</p>
</div>
<h3>
<a href="https://my.protospace.ca" target="_blank" rel="noreferrer noopener">Spaceport</a>
<a class="source" href="https://github.com/Protospace/spaceport" target="_blank" rel="noreferrer noopener">source code</a>
</h3>
<div class="summary">
<p>Makerspace members' portal for Calgary Protospace. It tracks membership, courses, training, access cards, and more.</p>
</div>
<h3>
<a href="https://txt.t0.vc" target="_blank" rel="noreferrer noopener">t0txt</a>
<a class="source" href="https://github.com/tannercollin/t0txt" target="_blank" rel="noreferrer noopener">source code</a>
</h3>
<div class="summary">
<p>Minimal command line pastebin. Allows you to upload text notes from a bash pipe or web browser.</p>
</div>
<h3>
<a href="https://github.com/tannercollin/standardnotes-fs" target="_blank" rel="noreferrer noopener">standardnotes-fs</a>
</h3>
<div class="summary">
<p>A filesystem that mounts your Standard Notes account as a directory of text files that you can edit.</p>
</div>
<h2>Creations</h2>
<p>Sometimes I create art or interactive tech.</p>
{% for article in articles_page.object_list if article.category.name == 'Projects' %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
<div class="summary"> <div class="summary">
{{ article.summary }} <p>Hacker News, Reddit, Lobsters, and Tildes articles pre-rendered in reader mode. Optimized for speed and distraction-free reading.</p>
</div> </div>
{% endfor %}
<h2>Writing</h2> <h3>
<a href="https://notica.us" target="_blank" rel="noreferrer noopener">Notica</a>
<p>Various articles, mostly about computers.</p> <a class="source" href="https://github.com/tannercollin/Notica" target="_blank" rel="noreferrer noopener">source code</a>
</h3>
{% for article in articles_page.object_list if article.category.name == 'Writing' %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
<div class="summary"> <div class="summary">
{{ article.summary }} <p>Send browser notifications from your terminal. No installation. No registration.</p>
</div> </div>
{% endfor %}
<h3>
<a href="https://my.protospace.ca" target="_blank" rel="noreferrer noopener">Spaceport</a>
<a class="source" href="https://github.com/Protospace/spaceport" target="_blank" rel="noreferrer noopener">source code</a>
</h3>
<div class="summary">
<p>Makerspace members' portal for Calgary Protospace. It tracks membership, courses, training, access cards, and more.</p>
</div>
<h3>
<a href="https://txt.t0.vc" target="_blank" rel="noreferrer noopener">t0txt</a>
<a class="source" href="https://github.com/tannercollin/t0txt" target="_blank" rel="noreferrer noopener">source code</a>
</h3>
<div class="summary">
<p>Minimal command line pastebin. Allows you to upload text notes from a bash pipe or web browser.</p>
</div>
<h3>
<a href="https://github.com/tannercollin/standardnotes-fs" target="_blank" rel="noreferrer noopener">standardnotes-fs</a>
</h3>
<div class="summary">
<p>A filesystem that mounts your Standard Notes account as a directory of text files that you can edit.</p>
</div>
</div>
</div>
<div class="rightcol">
<div class="inside">
<h2>Creations</h2>
<p>Sometimes I create art or interactive tech.</p>
{% for article in articles_page.object_list if article.category.name == 'Projects' %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
<div class="summary">
{{ article.summary }}
</div>
{% endfor %}
<h2>Writing</h2>
<p>Various articles, mostly about computers.</p>
{% for article in articles_page.object_list if article.category.name == 'Writing' %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
<div class="summary">
{{ article.summary }}
</div>
{% endfor %}
</div>
</div>
</div> </div>
{% endblock %} {% endblock %}

View File

@@ -4,7 +4,7 @@ html {
body { body {
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font: 1.1rem/1.0 sans-serif; font: 1.2rem/1.0 Lato,sans-serif;
} }
a { a {
@@ -13,27 +13,22 @@ a {
} }
.info h1 { .info h1 {
font: 1.1rem/1.0 sans-serif; font: 1.2rem/1.0 Lato,sans-serif;
}
.index h3 {
font: 1.1rem/1.5 serif;
} }
.source { .source {
font: 0.9rem/1.5 serif; font: 1rem/1.5 Apparatus SIL,serif;
} }
pre { pre {
font-size: 0.9rem; font-size: 1rem;
line-height: 1.2;
padding: 1rem; padding: 1rem;
overflow-x: auto; overflow-x: auto;
} }
:not(pre)>code { :not(pre)>code {
padding: 0 2px; padding: 0 2px;
font-size: 0.8rem; font-size: 0.9rem;
} }
.container { .container {
@@ -41,8 +36,8 @@ pre {
margin: 2rem auto 12rem auto; margin: 2rem auto 12rem auto;
} }
.footer { .copyright {
font: 0.9rem/1.5 serif; font: 1rem/1.5 Apparatus SIL,serif;
text-align: center; text-align: center;
} }
@@ -63,13 +58,14 @@ pre {
} }
.content p.metadata { .content p.metadata {
font: 0.9rem/1.0 serif; font: 1rem/1.0 Apparatus SIL,serif;
font-style: italic; font-style: italic;
} }
.content div.summary p { .content div.summary p {
margin-top: -0.5rem; margin-top: -0.5rem;
margin-left: 1.5rem; margin-left: 1rem;
font-style: italic;
} }
.content { .content {
@@ -77,11 +73,19 @@ pre {
} }
.content-wide { .content-wide {
max-width: 46rem;;
}
.content-index {
max-width: none; max-width: none;
} }
.content-index h3 {
font: 1.2rem/1.5 Apparatus SIL,serif;
}
.content p { .content p {
font: 1.1rem/1.5 serif; font: 1.2rem/1.5 Apparatus SIL,serif;
} }
.content ul { .content ul {
@@ -89,7 +93,7 @@ pre {
} }
.content li { .content li {
font: 1.1rem/1.5 serif; font: 1.2rem/1.5 Apparatus SIL,serif;
} }
.content img { .content img {
@@ -103,7 +107,7 @@ pre {
position: relative; position: relative;
width: 8rem; width: 8rem;
margin-left: -9rem; margin-left: -9rem;
font-size: 0.9rem; font-size: 1rem;
} }
.toclink:not(:hover) { .toclink:not(:hover) {
@@ -179,6 +183,30 @@ pre {
} }
} }
@media screen and (min-width:58rem) {
.container {
max-width: 75rem;
}
.leftcol {
float: left;
width: 50%;
margin-top: -1rem;
}
.leftcol > .inside {
padding-right: 1rem;
}
.rightcol {
overflow: hidden;
margin-top: -1rem;
}
.rightcol > .inside {
padding-left: 1rem;
}
}
body { body {
background-color: #eee; background-color: #eee;