Initial commit

This commit is contained in:
Steven Engler
2019-05-17 18:45:07 -04:00
commit 1522656f46
18 changed files with 952 additions and 0 deletions

379
static/css/styles.css Normal file
View File

@ -0,0 +1,379 @@
h1 { font-size: 1.4em; }
h2 { font-size: 1.22em; }
h3 { font-size: 1.15em; }
h4 { font-size: 1.05em; }
h5 { font-size: .83em; }
h6 { font-size: .75em; }
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
text-decoration: none;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.5em;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
.dont-show {
display: none;
}
/* Improvements to Hugo Chroma syntax highlighting */
.highlight > * {
padding: 0.5em;
border: 2px solid #E0E0E0;
}
.highlight pre {
margin: 0px;
overflow-x: auto;
}
.highlight table td:last-child {
/* needed until this bug is fixed: https://github.com/alecthomas/chroma/issues/225 */
width: 100%;
}
code {
font-size: 98%;
}
:not(pre) > code {
/* inline code elements */
background-color: rgba(25, 25, 25, 0.05);
border-radius: 5px;
font-size: 80%;
padding-top: 0.2em;
padding-bottom: 0.2em;
padding-left: 0.4em;
padding-right: 0.4em;
}
/* ************************ */
blockquote {
color: #404040;
border-left: 0.25em solid #CCC;
padding-left: 0.5em;
margin-left: 1.5em;
}
.title-header {
margin-top: 1.5em;
margin-bottom: 1.5em;
}
.title-header > h1{
margin-top: 0;
margin-bottom: 0.3em;
}
.title-header-date {
color: rgb(90, 90, 90);
font-size: 80%;
}
.title-list > h2, .title-list > h3, .title-list > h4, .title-list > h5, .title-list > h6{
margin-bottom: 0.1em;
}
.body-list p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.title-list-date {
color: rgb(90, 90, 90);
font-size: 80%;
}
.links {
font-size: 120%;
list-style-type: none;
padding: 0;
margin: 0;
margin-top: 9pt;
display: flex;
flex-direction: row;
flex-wrap: wrap;
overflow: hidden;
transition: all 0.2s;
-webkit-overflow-scrolling: touch; /* this needs to go here for some reason */
}
.links li {
margin-right: 1em;
}
.links li > * {
display:inline-block;
}
.links li:last-child {
margin-right: 0;
}
.links a {
text-decoration: none;
color: inherit;
}
.links a:hover {
color: #505050;
}
.overlay {
position: fixed;
visibility: hidden;
opacity: 0;
width: 100%;
height: 100%;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.7);
z-index: 2;
}
.header-right {
position: absolute;
top: 0;
right: 0;
display: flex;
}
.header-right * {
margin-left: 0.8em;
}
.header-right *:first-child {
margin-left: 0;
}
.clickable-header-label {
cursor: pointer;
}
.clickable-header-label * {
height: 1em;
}
#show-hide-menu-label {
display: none;
}
body {
font-size: 13pt;
font-family: Lato, Arial, Helvetica, sans-serif;
line-height: 1.4em;
margin: 0;
}
.title {
font-weight: bold;
font-size: 140%;
line-height: 1em;
}
.title a {
text-decoration: none;
color: inherit;
}
.header {
background-color: lightgray;
background-size: 100%;
background-position: bottom;
display: inline-block;
width: 100%;
}
.header-content {
margin: 15pt;
position: relative; /* so that "position:absolute" works for the menu label */
}
.body {
display: inline-block;
width: 100%;
}
.body-content {
margin: 15pt;
}
/* Image/Figure formatting */
.body-content :not(figure) img {
display: block;
margin-left: auto;
margin-right: auto;
max-width: 70%;
max-height: 40vw; /* if the image is really tall, we don't want the width to be 70% */
}
.body-content figure {
margin-left: auto;
margin-right: auto;
max-width: 70%;
}
.body-content figure img {
display: block;
margin-left: auto;
margin-right: auto;
margin-bottom: 0.5em;
max-width: 100%;
max-height: 40vw; /* if the image is really tall, we don't want the width to be 70% */
}
.body-content figure figcaption {
font-size: 90%;
line-height: 1.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid lightgray;
}
.body-content figure figcaption * {
margin: 0;
}
@media only screen and (orientation: portrait) {
.body-content :not(figure) img {
max-height: 100vw;
}
.body-content figure img {
max-height: 100vw;
}
}
@media only screen and (max-width: 400pt) {
.body-content :not(figure) img {
max-width: 100%;
}
.body-content figure {
max-width: 100%;
}
.body-content figure figcaption {
margin-left: 5%;
margin-right: 5%;
}
}
/* ************************ */
.main {
width: 700pt; /* make sure to also change this in the media query */
margin: 0 auto;
margin-top: 10pt;
margin-bottom: 10pt;
box-sizing: border-box;
box-shadow: 0 0 10px rgba(50, 50, 50, .17);
}
.footer {
text-align: center;
padding-bottom: 10pt;
font-size: 80%;
}
@media only screen and (orientation: portrait) {
.header {
top: 0;
position: sticky;
position: -webkit-sticky; /* needed for iOS */
}
}
@media only screen and (max-width: 700pt) {
.main {
width: 100%;
margin-top: 0;
}
body {
font-size: 12pt;
background-color: white;
}
}
@media only screen and (max-width: 400pt) {
.clickable-header-label * {
vertical-align: middle;
}
#show-hide-menu-label {
display: inline-block;
}
.show-hide-menu-input:checked ~ .main .links {
visibility: visible;
opacity: 1;
right: 0;
transition: all 0.3s;
}
.show-hide-menu-input:checked ~ .main .overlay {
visibility: visible;
opacity: 1;
transition: opacity 0.3s;
}
.links {
display: block;
visibility: hidden;
opacity: 0;
overflow-y: scroll;
position: fixed;
top: 0;
bottom: 0;
right: -100px; /* start to the right for the transition */
min-width: 75%;
z-index: 3;
background-color: rgb(247, 247, 247);
padding: 10pt;
margin: 0;
}
.links li {
margin-right: 0;
border-bottom: solid 1px gray;
}
.links li > * {
box-sizing: border-box;
width: 100%;
padding: 13px;
}
.links li:first-child {
border-top: solid 1px gray;
margin-top: 0px;
}
.header-content {
margin: 10pt;
}
.body-content {
margin: 10pt;
}
.title {
font-size: 120%
}
}

View File

@ -0,0 +1,54 @@
a {
color: #A1A1EA;
}
:not(pre) > code {
/* inline code elements */
background-color: rgba(90, 90, 90, 0.25);
}
a > code {
background-color: rgba(65, 65, 170, 0.3);
}
body {
color: rgb(210, 210, 210);
background-color: rgb(25, 25, 25);
}
blockquote {
color: rgb(170, 170, 170);
border-left: 0.25em solid #444;
}
.color-adapting-image {
filter: invert(80%);
}
.header {
background-color: rgb(40, 40, 40); /* still want a background color before the image loads */
background-image: url(../../images/header-bg-dark.jpg);
}
.main {
background-color: rgb(12, 12, 12);
box-shadow: none;
}
.footer {
color: rgb(160, 160, 160);
}
.title-header-date {
color: rgb(150, 150, 150);
}
.title-list-date {
color: rgb(150, 150, 150);
}
@media only screen and (max-width: 400pt) {
.links {
background-color: rgb(30, 30, 30);
}
}

View File

@ -0,0 +1,33 @@
a {
color: #0000A0;
}
:not(pre) > code {
/* inline code elements */
background-color: rgba(25, 25, 25, 0.05);
}
a > code {
background-color: rgba(15, 15, 150, 0.05);
}
body {
background-color: rgb(247, 247, 247);
}
blockquote {
color: #404040;
border-left: 0.25em solid #CCC;
}
.header {
background-image: url(../../images/header-bg-light.jpg);
}
.main {
background-color: white;
}
.footer {
color: #383838;
}

View File

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid meet" viewBox="119.0113345192303 189.00247805341664 83.99999999999997 65.28000000000006" width="80" height="61.28"><defs><path d="M194.37 190C197.48 190 200.01 192.53 200.01 195.65C200.01 196.77 200.01 194.52 200.01 195.65C200.01 198.76 197.48 201.29 194.37 201.29C179.5 201.29 140.53 201.29 125.65 201.29C122.54 201.29 120.01 198.76 120.01 195.65C120.01 194.52 120.01 196.77 120.01 195.65C120.01 192.53 122.54 190 125.65 190C140.53 190 179.5 190 194.37 190Z" id="eNJsZ8Kg3"></path><path d="M194.37 215C197.48 215 200.01 217.53 200.01 220.64C200.01 221.77 200.01 219.51 200.01 220.64C200.01 223.76 197.48 226.29 194.37 226.29C179.5 226.29 140.53 226.29 125.65 226.29C122.54 226.29 120.01 223.76 120.01 220.64C120.01 219.51 120.01 221.77 120.01 220.64C120.01 217.53 122.54 215 125.65 215C140.53 215 179.5 215 194.37 215Z" id="a2DqdC3JRN"></path><path d="M194.37 240C197.48 240 200.01 242.52 200.01 245.64C200.01 246.77 200.01 244.51 200.01 245.64C200.01 248.76 197.48 251.28 194.37 251.28C179.5 251.28 140.53 251.28 125.65 251.28C122.54 251.28 120.01 248.76 120.01 245.64C120.01 244.51 120.01 246.77 120.01 245.64C120.01 242.52 122.54 240 125.65 240C140.53 240 179.5 240 194.37 240Z" id="aVsnnO02n"></path></defs><g><g><use xlink:href="#eNJsZ8Kg3" opacity="1" fill="#000000" fill-opacity="1"></use></g><g><use xlink:href="#a2DqdC3JRN" opacity="1" fill="#000000" fill-opacity="1"></use></g><g><use xlink:href="#aVsnnO02n" opacity="1" fill="#000000" fill-opacity="1"></use></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="13.509594mm"
height="14.165941mm"
viewBox="0 0 13.509594 14.165941"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="theme-switcher-moon.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refX="1"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true"
refY="-0.1">
<path
id="path4819"
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,0.3,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refX="1"
id="Arrow2Lstart-7"
style="overflow:visible"
inkscape:isstock="true"
refY="-0.1">
<path
id="path4819-9"
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,0.3,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="-122.68578"
inkscape:cy="-34.841124"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1015"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-133.69591,-59.597941)">
<path
style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#00000f;stroke-width:1.05833328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="m 140.12254,60.12711 a 6.5537713,6.5537713 0 0 0 -0.13087,0.0046 5.6606021,5.6606021 0 0 1 1.69862,4.035792 5.6606021,5.6606021 0 0 1 -5.66076,5.660761 5.6606021,5.6606021 0 0 1 -1.8045,-0.301188 6.5537713,6.5537713 0 0 0 5.89751,3.707641 6.5537713,6.5537713 0 0 0 6.5538,-6.553803 6.5537713,6.5537713 0 0 0 -6.5538,-6.553805 z"
id="path817-2-9-2"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -0,0 +1,139 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="20.008001mm"
height="20.292175mm"
viewBox="0 0 20.008001 20.292174"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="theme-switcher-sun.svg">
<defs
id="defs2">
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refX="1"
id="Arrow2Lstart"
style="overflow:visible"
inkscape:isstock="true"
refY="-0.1">
<path
id="path4819"
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,0.3,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refX="1"
id="Arrow2Lstart-7"
style="overflow:visible"
inkscape:isstock="true"
refY="-0.1">
<path
id="path4819-9"
style="fill:#00000f;fill-opacity:1;fill-rule:evenodd;stroke:#00000f;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,0.3,0)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="-81.16043"
inkscape:cy="-22.76665"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1015"
inkscape:window-x="0"
inkscape:window-y="30"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-96.115683,-56.666412)">
<circle
style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#00000f;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="path817"
cx="105.83332"
cy="66.8125"
r="5.1500478" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 113.09949,72.909536 110.72812,70.91972"
id="path823"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 107.48045,76.153702 106.9429,73.105129"
id="path823-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 101.09069,75.027017 1.5478,-2.680871"
id="path823-3-6"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.92007,70.056669 2.908914,-1.058761"
id="path823-3-7"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 96.920061,63.568331 2.908915,1.058759"
id="path823-3-5"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 101.09068,58.597987 1.5478,2.680871"
id="path823-3-3"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 107.48043,57.471296 -0.53754,3.048574"
id="path823-3-56"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 113.09949,60.715466 -2.37136,1.989816"
id="path823-3-5-2"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1.58749998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 115.31863,66.812497 h -3.0956"
id="path823-3-3-9"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,39 @@
// in Firefox we need to add a new css style with document.write rather than modifying the href
// of the existing one, otherwise the screen will flash white while loading on dark themes
var theme_css_elem = document.getElementById('theme_css');
if(localStorage.getItem('theme') === 'dark'){
var clone = theme_css_elem.cloneNode(false);
clone.href = "css/themes/dark.css";
theme_css_elem.remove();
document.write(clone.outerHTML);
}else if(localStorage.getItem('theme') === 'light'){
var clone = theme_css_elem.cloneNode(false);
clone.href = "css/themes/light.css";
theme_css_elem.remove();
document.write(clone.outerHTML);
}
window.addEventListener("load", function(event){update_toggle_button();}, false);
function update_toggle_button(){
var elem = document.getElementById('theme_css');
var button = document.getElementById('change-theme-button');
button.style.display = "";
if(elem.href.endsWith('light.css')){
button.getElementsByTagName('img')[0].src = 'images/theme-switcher-moon.svg';
}else if(elem.href.endsWith('dark.css')){
button.getElementsByTagName('img')[0].src = 'images/theme-switcher-sun.svg';
}
}
function toggle_theme(){
var elem = document.getElementById('theme_css');
if(elem.href.endsWith('light.css')){
elem.href = "css/themes/dark.css";
localStorage.setItem('theme', 'dark');
}else if(elem.href.endsWith('dark.css')){
elem.href = "css/themes/light.css";
localStorage.setItem('theme', 'light');
}
update_toggle_button();
}