Compare commits

..

13 Commits

Author SHA1 Message Date
8f5f042794 Trim down lite version even more 2021-07-26 19:22:05 +00:00
600cc9e51f Add lite version of website 2021-07-26 18:42:50 +00:00
65b3ad7fbf Rename Projects category to Creations 2021-07-25 22:40:04 +00:00
a966b59b66 Add prototype 2021-07-25 15:42:17 -06:00
bfc93af28f Optimize me.jpg 2021-07-25 08:54:05 +00:00
7a73eafa85 Add robots.txt 2021-07-25 08:53:52 +00:00
9f90810e0f Remove custom font files 2021-07-23 13:14:56 +00:00
dca5d47578 Remove custom fonts from CSS 2021-07-23 13:11:13 +00:00
495f964297 Add webring 2021-07-23 12:57:02 +00:00
f234121e3f Add corrections to bypassing ports 2021-07-23 12:56:38 +00:00
f76b8e7bf4 Move source code links beside titles 2021-06-16 07:41:26 +00:00
2c5c0750bf Remove unused PHP 2021-06-16 07:40:00 +00:00
bda333c88a Add writing to home page 2021-06-16 07:36:09 +00:00
29 changed files with 328 additions and 219 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 own username, this is temporary. Replace `tanner` with your Linux 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, create only a single extra one: laptop, phone, etc. to protect you from public WiFi (like a normal VPN), 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. above and apply the changes to `ufw`.
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:

2
content/extra/robots.txt Normal file
View File

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

View File

@@ -1,6 +1,6 @@
Title: Hand of Ozymandias Title: Hand of Ozymandias
Date: 2012-03-23 Date: 2012-03-23
Category: Projects Category: Creations
Summary: A withered hand I welded out of scrap metal. Summary: A withered hand I welded out of scrap metal.
I was visiting my cousins in Radium, BC and decided to learn stick welding at I was visiting my cousins in Radium, BC and decided to learn stick welding at

View File

@@ -1,6 +1,6 @@
Title: LED Dress Title: LED Dress
Date: 2016-03-18 Date: 2016-03-18
Category: Projects Category: Creations
Summary: A dress made out of LEDs that twinkle like stars. Summary: A dress made out of LEDs that twinkle like stars.
A friend of mine was attending a stars and constellations themed ball. She A friend of mine was attending a stars and constellations themed ball. She

View File

@@ -1,6 +1,6 @@
Title: Remote Control Light Switch Title: Remote Control Light Switch
Date: 2014-10-09 Date: 2014-10-09
Category: Projects Category: Creations
Summary: A device to toggle my lights remotely. Summary: A device to toggle my lights remotely.
I wanted the ability to toggle my bedroom light remotely for convenience. I I wanted the ability to toggle my bedroom light remotely for convenience. I

View File

@@ -1,6 +1,6 @@
Title: Mans Reach Exceeds His Grasp Title: Mans Reach Exceeds His Grasp
Date: 2012-04-11 Date: 2012-04-11
Category: Projects Category: Creations
Summary: My first attempt at painting with acrylic. Summary: My first attempt at painting with acrylic.
The painting is called “Mans Reach Exceeds His Grasp”. I've always wanted to The painting is called “Mans Reach Exceeds His Grasp”. I've always wanted to

View File

@@ -1,6 +1,6 @@
Title: Automatic Plant Waterer Title: Automatic Plant Waterer
Date: 2014-06-05 Date: 2014-06-05
Category: Projects Category: Creations
Summary: A device that automatically waters plants. Summary: A device that automatically waters plants.
One day I decided watering my one plant was too much work, so I automated it. One day I decided watering my one plant was too much work, so I automated it.

View File

@@ -1,6 +1,6 @@
Title: Solar Car Title: Solar Car
Date: 2013-04-27 Date: 2013-04-27
Category: Projects Category: Creations
Summary: About my time volunteering with the University of Calgary Solar Car Team, where I designed a maximum power point tracker. Summary: About my time volunteering with the University of Calgary Solar Car Team, where I designed a maximum power point tracker.
I joined the University of Calgary Solar Car Team in my first semester for a I joined the University of Calgary Solar Car Team in my first semester for a

65
pelicanconf_lite.py Normal file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Tanner Collin'
SITENAME = 'Tanner Collin'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Canada/Mountain'
DEFAULT_LANG = 'en'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
DEFAULT_PAGINATION = False
MARKDOWN = {
'extension_configs': {
'markdown.extensions.codehilite': {'css_class': 'highlight'},
'markdown.extensions.extra': {},
'markdown.extensions.meta': {},
'markdown.extensions.toc': {
'toc_depth': '2-3',
'anchorlink': True,
},
},
'output_format': 'html5',
}
STATIC_PATHS = ['images', 'extra']
EXTRA_PATH_METADATA = {
#'extra/favicon.svg': {'path': 'favicon.svg'},
}
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
THEME = 'themes/lite'
# turn off useless outputs
TAG_SAVE_AS = ''
CATEGORY_SAVE_AS = ''
AUTHOR_SAVE_AS = ''
ARCHIVES_SAVE_AS = ''
AUTHORS_SAVE_AS = ''
CATEGORIES_SAVE_AS = ''
TAGS_SAVE_AS = ''
INDEX_SAVE_AS = 'index.html'
ARTICLE_URL = '{slug}/'
ARTICLE_SAVE_AS = '{slug}/index.html'
PAGE_URL = '{slug}/'
PAGE_SAVE_AS = '{slug}/index.html'
CATEGORY_URL = '{slug}/'
CATEGORY_SAVE_AS = '{slug}/index.html'
PROD = False

17
prototype.html Normal file
View File

@@ -0,0 +1,17 @@
<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>

65
publishconf_lite.py Normal file
View File

@@ -0,0 +1,65 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- #
from __future__ import unicode_literals
AUTHOR = 'Tanner Collin'
SITENAME = 'Tanner Collin'
SITEURL = ''
PATH = 'content'
TIMEZONE = 'Canada/Mountain'
DEFAULT_LANG = 'en'
# Feed generation is usually not desired when developing
FEED_ALL_ATOM = None
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None
DEFAULT_PAGINATION = False
MARKDOWN = {
'extension_configs': {
'markdown.extensions.codehilite': {'css_class': 'highlight'},
'markdown.extensions.extra': {},
'markdown.extensions.meta': {},
'markdown.extensions.toc': {
'toc_depth': '2-3',
'anchorlink': True,
},
},
'output_format': 'html5',
}
STATIC_PATHS = ['images', 'extra']
EXTRA_PATH_METADATA = {
#'extra/favicon.svg': {'path': 'favicon.svg'},
}
# Uncomment following line if you want document-relative URLs when developing
#RELATIVE_URLS = True
THEME = 'themes/lite'
# turn off useless outputs
TAG_SAVE_AS = ''
CATEGORY_SAVE_AS = ''
AUTHOR_SAVE_AS = ''
ARCHIVES_SAVE_AS = ''
AUTHORS_SAVE_AS = ''
CATEGORIES_SAVE_AS = ''
TAGS_SAVE_AS = ''
INDEX_SAVE_AS = 'index.html'
ARTICLE_URL = '{slug}/'
ARTICLE_SAVE_AS = '{slug}/index.html'
PAGE_URL = '{slug}/'
PAGE_SAVE_AS = '{slug}/index.html'
CATEGORY_URL = '{slug}/'
CATEGORY_SAVE_AS = '{slug}/index.html'
PROD = True

View File

@@ -0,0 +1,8 @@
{% extends "base.html" %}
{% block content %}
<h1>{{ article.title }}</h1>
{{ article.summary }}
{{ article.locale_date }}
<hr />
{{ article.content }}
{% endblock %}

View File

@@ -0,0 +1,8 @@
<meta charset="UTF-8"/>
<link rel="icon" href="data:;base64,=">
<pre>
Tanner Collin
{% block content %}
{% endblock %}
</pre>

View File

@@ -0,0 +1,10 @@
{% extends "base.html" %}
{% block content %}
<h2>{{ category }}</h2>
{% for article in articles_page.object_list if article.category == category %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
{{ article.summary }}
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1,42 @@
{% extends "base.html" %}
{% block content %}
Hi, I'm Tanner! I do firmware and web development in Calgary.
Contact Info
============
Email: <a href="mailto:site2@tannercollin.com">site2@tannercollin.com</a>
Telegram: <a href="https://t.me/tannercollin">@tannercollin</a>
Resume
======
- Firmware Engineer at Cabana Blockchain, 2018
- Lead Hardware Engineer at Critical Control, 20162018
- Electrical Engineer at Opener Aero, 20162016
- Electrical Engineer Intern at Pason Systems, 20142015
- BSc. Electrical Engineering from University of Calgary
Projects
========
<a href="https://news.t0.vc/">QotNews</a>
<a href="https://notica.us">Notica</a>
<a href="https://my.protospace.ca">Spaceport</a>
<a href="https://txt.t0.vc">t0txt</a>
<a href="https://github.com/tannercollin/standardnotes-fs">standardnotes-fs</a>
Creations
=========
{% for article in articles_page.object_list if article.category.name == 'Creations' %}
<a href="{{ article.url }}">{{ article.title }}</a>
{% endfor %}
Writing
=======
{% for article in articles_page.object_list if article.category.name == 'Writing' %}
<a href="{{ article.url }}">{{ article.title }}</a>
{% endfor %}
{% endblock %}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 34 KiB

BIN
themes/theme/static/me.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -1,12 +1,3 @@
{% if PROD %}
<?php
$themeClass = '';
if (!empty($_COOKIE['theme'])) {
$themeClass = $_COOKIE['theme'];
}
?>
{% endif %}
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@@ -18,21 +9,10 @@
<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>
@@ -49,7 +29,10 @@
{% endblock %} {% endblock %}
</div> </div>
<p class="copyright"> <p class="footer">
<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

@@ -1,59 +0,0 @@
@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,7 +8,12 @@
{% endblock %} {% endblock %}
{% block info %} {% block info %}
<img src="/theme/me.jpg" width="128" class="me" alt="me smiling wide and looking into the camera lit up brightly" /> <picture>
<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">
@@ -20,14 +25,11 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<div class="content content-index"> <div class="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>
<div class="leftcol">
<div class="inside">
<h2>Contact Info</h2> <h2>Contact Info</h2>
<p> <p>
@@ -90,16 +92,12 @@
<div class="summary"> <div class="summary">
<p>A filesystem that mounts your Standard Notes account as a directory of text files that you can edit.</p> <p>A filesystem that mounts your Standard Notes account as a directory of text files that you can edit.</p>
</div> </div>
</div>
</div>
<div class="rightcol">
<div class="inside">
<h2>Creations</h2> <h2>Creations</h2>
<p>Sometimes I create art or interactive tech.</p> <p>Sometimes I create art or interactive tech.</p>
{% for article in articles_page.object_list if article.category.name == 'Projects' %} {% for article in articles_page.object_list if article.category.name == 'Creations' %}
<h3><a href="{{ article.url }}">{{ article.title }}</a></h3> <h3><a href="{{ article.url }}">{{ article.title }}</a></h3>
<div class="summary"> <div class="summary">
{{ article.summary }} {{ article.summary }}
@@ -117,6 +115,4 @@
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@@ -4,7 +4,7 @@ html {
body { body {
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font: 1.2rem/1.0 Lato,sans-serif; font: 1.1rem/1.0 sans-serif;
} }
a { a {
@@ -13,22 +13,27 @@ a {
} }
.info h1 { .info h1 {
font: 1.2rem/1.0 Lato,sans-serif; font: 1.1rem/1.0 sans-serif;
}
.index h3 {
font: 1.1rem/1.5 serif;
} }
.source { .source {
font: 1rem/1.5 Apparatus SIL,serif; font: 0.9rem/1.5 serif;
} }
pre { pre {
font-size: 1rem; font-size: 0.9rem;
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.9rem; font-size: 0.8rem;
} }
.container { .container {
@@ -36,8 +41,8 @@ pre {
margin: 2rem auto 12rem auto; margin: 2rem auto 12rem auto;
} }
.copyright { .footer {
font: 1rem/1.5 Apparatus SIL,serif; font: 0.9rem/1.5 serif;
text-align: center; text-align: center;
} }
@@ -58,14 +63,13 @@ pre {
} }
.content p.metadata { .content p.metadata {
font: 1rem/1.0 Apparatus SIL,serif; font: 0.9rem/1.0 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: 1rem; margin-left: 1.5rem;
font-style: italic;
} }
.content { .content {
@@ -73,19 +77,11 @@ 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.2rem/1.5 Apparatus SIL,serif; font: 1.1rem/1.5 serif;
} }
.content ul { .content ul {
@@ -93,7 +89,7 @@ pre {
} }
.content li { .content li {
font: 1.2rem/1.5 Apparatus SIL,serif; font: 1.1rem/1.5 serif;
} }
.content img { .content img {
@@ -107,7 +103,7 @@ pre {
position: relative; position: relative;
width: 8rem; width: 8rem;
margin-left: -9rem; margin-left: -9rem;
font-size: 1rem; font-size: 0.9rem;
} }
.toclink:not(:hover) { .toclink:not(:hover) {
@@ -183,30 +179,6 @@ 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;