ezup.dev

Source Code of Dash Eclipse's Personal Site (ezup.dev)
git clone git://ezup.dev/ezup.dev.git
Log | Files | Refs | README | LICENSE

commit a05ae4e7f6ea90011c5acb0e3e77b2a5e794a87d
parent db06f4dd91c515c38c93766053375595fc28db52
Author: Dash Eclipse <dash@ezup.dev>
Date:   Fri,  3 Jul 2020 02:25:25 +0000

Add Website and Blog

Diffstat:
A.gitignore | 15+++++++++++++++
A.web/blog/index.html | 40++++++++++++++++++++++++++++++++++++++++
A.web/blog/pgp.html | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.web/blog/rss.xml | 38++++++++++++++++++++++++++++++++++++++
A.web/favicon.svg | 6++++++
A.web/fonts/ClearSans-Bold.woff2 | 0
A.web/fonts/ClearSans-Regular.woff2 | 0
A.web/index.html | 169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.web/styles/site.css | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.web/styles/syntax-coloring.css | 323+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A.web/styles/topnav.css | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ALICENSE | 121+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AMakefile | 15+++++++++++++++
AREADME | 26++++++++++++++++++++++++++
Aartwork/avatar/200x200.png | 0
Aartwork/ezup-logo-rounded.svg | 6++++++
Aartwork/ezup-logo-square.svg | 6++++++
Aartwork/favicon/favicon.png | 0
Aartwork/favicon/logo.png | 0
Aartwork/generate-favicon-and-avatar.sh | 15+++++++++++++++
Afavicon.svg | 2++
Afonts/ClearSans-Bold.woff2 | 0
Afonts/ClearSans-Regular.woff2 | 0
Aindex.html | 169+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeys/67965F307B110019691461A12463834FFD2CBDBB.asc | 100+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Akeys/dashezup-pubkey.asc | 2++
Alayouts/preamble.html | 9+++++++++
Aposts/index.org | 5+++++
Aposts/pgp.org | 73+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aposts/rss.org | 8++++++++
Apublish.el | 193+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astyles/site.css | 226+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astyles/syntax-coloring.css | 323+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Astyles/topnav.css | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atext/about.txt | 25+++++++++++++++++++++++++
Atext/cmatrix.txt | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Atext/gpg.txt | 24++++++++++++++++++++++++
Atext/neofetch.txt | 21+++++++++++++++++++++
38 files changed, 2484 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,15 @@ +# Vim swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-rt-v][a-z] +[._]ss[a-gi-z] +[._]sw[a-p] + +# Emacs +*~ +\#*\# +.\#* + +# Org-mode +.org-id-locations +*_archive diff --git a/.web/blog/index.html b/.web/blog/index.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- 2020-07-03 Fri 02:24 --> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>Blog Index</title> +<meta name="generator" content="Org mode"> +<meta name="author" content="Dash Eclipse"> +<link rel='icon' type='image/x-icon' href='/favicon.svg'/> +<meta name='viewport' content='width=device-width, initial-scale=1'> +<link rel='stylesheet' href='/styles/topnav.css' type='text/css'/> +<link rel='stylesheet' href='/styles/site.css' type='text/css'/> +<link rel='stylesheet' href='/styles/syntax-coloring.css' type='text/css'/> +<link rel='alternate' type='application/rss+xml' title='RSS' href='/blog/rss.xml'> +</head> +<body> +<header id="top" class="status"> +<div> +<ul class='topnav'> +<li class='home'><a href='/#dash'>ezup.dev</a></li> +<li><a class='active' href='./'>Blog</a></li> +<li><a href='/#pgp'>PGP</a></li> +<li><a href='/git/' target='_blank'><u>Git</u></a></li> +<li class='right'><a href='/#about'>About</a></li> +</ul> +</div> +</header> +<main id="content"> +<header> +<h1 class="title">Blog Index</h1> +</header><ul class="org-ul"> +<li><p> +<a href="pgp.html">OpenPGP Key Generation and Usage</a> +</p> +<p class='pubdate'>by Dash Eclipse on Jun 30, 2020.</p></li> +</ul> +</main> +</body> +</html> diff --git a/.web/blog/pgp.html b/.web/blog/pgp.html @@ -0,0 +1,121 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<!-- 2020-07-03 Fri 02:24 --> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>OpenPGP Key Generation and Usage</title> +<meta name="generator" content="Org mode"> +<meta name="author" content="Dash Eclipse"> +<meta name="keywords" content="openpgp, pgp, gnupg, gpg, subkey"> +<link rel='icon' type='image/x-icon' href='/favicon.svg'/> +<meta name='viewport' content='width=device-width, initial-scale=1'> +<link rel='stylesheet' href='/styles/topnav.css' type='text/css'/> +<link rel='stylesheet' href='/styles/site.css' type='text/css'/> +<link rel='stylesheet' href='/styles/syntax-coloring.css' type='text/css'/> +<link rel='alternate' type='application/rss+xml' title='RSS' href='/blog/rss.xml'> +</head> +<body> +<header id="top" class="status"> +<div> +<ul class='topnav'> +<li class='home'><a href='/#dash'>ezup.dev</a></li> +<li><a class='active' href='./'>Blog</a></li> +<li><a href='/#pgp'>PGP</a></li> +<li><a href='/git/' target='_blank'><u>Git</u></a></li> +<li class='right'><a href='/#about'>About</a></li> +</ul> +</div> +</header> +<main id="content"> +<header> +<h1 class="title">OpenPGP Key Generation and Usage</h1> +</header><p> +In this article I'm gonna explain how do I generate OpenPGP keys and use PGP. +</p> + +<section id="outline-container-org3e3bb72" class="outline-2"> +<h2 id="org3e3bb72"><span class="section-number-2">1</span> Install GnuPG</h2> +<div class="outline-text-2" id="text-1"> +<p> +On macOS you can use brew to install GnuPG <code>brew install gnupg</code> +</p> +</div> +</section> + +<section id="outline-container-orgba3e6b3" class="outline-2"> +<h2 id="orgba3e6b3"><span class="section-number-2">2</span> OpenPGP key generation</h2> +<div class="outline-text-2" id="text-2"> +<p> +Beside <code>gpg --full-generate-key</code>, you can also create a key with gpg in batch mode<sup><a id="fnr.1" class="footref" href="#fn.1">1</a></sup>. +</p> +<div class="org-src-container"> +<pre class="src src-sh">cat &gt;first-last.txt &lt;&lt;EOF +<span class="org-sh-heredoc">%echo Generating a basic OpenPGP key</span> +<span class="org-sh-heredoc">Key-Type: RSA</span> +<span class="org-sh-heredoc">Key-Length: 4096</span> +<span class="org-sh-heredoc">Key-Usage: cert</span> +<span class="org-sh-heredoc">#Subkey-Type: RSA</span> +<span class="org-sh-heredoc">#Subkey-Length: 4096</span> +<span class="org-sh-heredoc">Name-Real: First Last</span> +<span class="org-sh-heredoc">#Name-Comment:</span> +<span class="org-sh-heredoc">Name-Email: user@domain.tld</span> +<span class="org-sh-heredoc">Expire-Date: 30y</span> +<span class="org-sh-heredoc">Passphrase: password</span> +<span class="org-sh-heredoc">%commit</span> +<span class="org-sh-heredoc">%echo done</span> +<span class="org-sh-heredoc">EOF</span> +</pre> +</div> +<p> +Create a key in an ephemeral home directory +</p> +<div class="org-src-container"> +<pre class="src src-sh">mkdir -m700 .gnupg +<span class="org-comment-delimiter">## </span><span class="org-comment">Set the environment variable</span> +<span class="org-comment-delimiter">## </span><span class="org-comment">or pass --homedir .gnupg as an argument</span> +<span class="org-builtin">export</span> <span class="org-variable-name">GNUPGHOME</span>=<span class="org-string">".gnupg"</span> +gpg --batch --generate-key first-last.txt +</pre> +</div> +</div> +</section> + +<section id="outline-container-orge25b3b0" class="outline-2"> +<h2 id="orge25b3b0"><span class="section-number-2">3</span> Use subkeys</h2> +<div class="outline-text-2" id="text-3"> +<p> +I use encryption and signing subkeys instead of just use one key for everything, because it's safer when you keep your master key elsewhere and use different keys for different purposes. Debian also recommend to use subkeys.<sup><a id="fnr.2" class="footref" href="#fn.2">2</a></sup> +</p> +<div class="org-src-container"> +<pre class="src src-sh"><span class="org-comment-delimiter">## </span><span class="org-comment">adduid, (trust, 5,) save</span> +gpg --edit-key user@domain.tld +<span class="org-comment-delimiter">## </span><span class="org-comment">Get keygrip</span> +gpg --with-keygrip --list-key &lt;key-id&gt; +<span class="org-comment-delimiter">## </span><span class="org-comment">Export and Import the key to the GPG homedir</span> +<span class="org-comment-delimiter">## </span><span class="org-comment">where you are gonna use the key,</span> +<span class="org-comment-delimiter">## </span><span class="org-comment">remove the master key from there</span> +<span class="org-comment-delimiter">## </span><span class="org-comment">and change the password</span> +rm .gnupg/private-keys-v1.d/&lt;keygrip&gt;.key +gpg --edit-key &lt;key-id&gt; passwd +</pre> +</div> +</div> +</section> +<div id="footnotes"> +<h2 class="footnotes">Footnotes: </h2> +<div id="text-footnotes"> + +<div class="footdef"><sup><a id="fn.1" class="footnum" href="#fnr.1">1</a></sup> <div class="footpara"><p class="footpara"> +The GNU Privacy Guard Manual - <a href="https://www.gnupg.org/documentation//manuals/gnupg/Unattended-GPG-key-generation.html">4.5.4 Unattended key generation</a> +</p></div></div> + +<div class="footdef"><sup><a id="fn.2" class="footnum" href="#fnr.2">2</a></sup> <div class="footpara"><p class="footpara"> +Debian Wiki - <a href="https://wiki.debian.org/Subkeys">Subkeys</a> +</p></div></div> + + +</div> +</div></main> +</body> +</html> diff --git a/.web/blog/rss.xml b/.web/blog/rss.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<rss version="2.0" + xmlns:content="http://purl.org/rss/1.0/modules/content/" + xmlns:wfw="http://wellformedweb.org/CommentAPI/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:atom="http://www.w3.org/2005/Atom" + xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" + xmlns:slash="http://purl.org/rss/1.0/modules/slash/" + xmlns:georss="http://www.georss.org/georss" + xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" + xmlns:media="http://search.yahoo.com/mrss/"><channel> + <title>Dash Eclipse's Personal Site | ezup.dev</title> + <atom:link href="https://ezup.dev/blog/rss.xml" rel="self" type="application/rss+xml" /> + <link>https://ezup.dev/blog/</link> + <description><![CDATA[]]></description> + <language>en</language> + <pubDate>Fri, 03 Jul 2020 02:24:44 +0000</pubDate> + <lastBuildDate>Fri, 03 Jul 2020 02:24:44 +0000</lastBuildDate> + <generator>Emacs 26.3 Org-mode 9.3.7</generator> + <webMaster>dash@ezup.dev (Dash Eclipse)</webMaster> + <image> + <url>https://orgmode.org/img/org-mode-unicorn-logo.png</url> + <title>Dash Eclipse's Personal Site | ezup.dev</title> + <link>https://ezup.dev/blog/</link> + </image> + + + <item> + <title>OpenPGP Key Generation and Usage</title> + <link>https://ezup.dev/blog/pgp.html</link> + <author>dash@ezup.dev (Dash Eclipse)</author> + <guid isPermaLink="false">https://ezup.dev/blog/pgp.html</guid> + <pubDate>Tue, 30 Jun 2020 00:00:00 +0000</pubDate> + + <description><![CDATA[]]></description> + </item> +</channel> +</rss> diff --git a/.web/favicon.svg b/.web/favicon.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"> + <path style="fill:#f5f5f5" d="M 1.6153092,0 H 14.384691 C 15.279572,0 16,0.72042792 16,1.6153092 V 14.384691 C 16,15.279572 15.279572,16 14.384691,16 H 1.6153092 C 0.72042792,16 0,15.279572 0,14.384691 V 1.6153092 C 0,0.72042792 0.72042792,0 1.6153092,0 Z"/> + <path style="fill:#212121" d="m 7.8502695,0.9123158 q 0.6445312,0 1.546875,0.796875 0.28125,0.2460938 1.2890625,1.3007813 l 1.851562,1.9921875 q 0.316406,0.3515625 0.316406,0.7148437 0,0.4335938 -0.328125,0.7617188 -0.328125,0.3164062 -0.75,0.3164062 -0.386718,0 -0.738281,-0.3398437 -0.9375,-1.0546875 -2.9414058,-3.046875 -2.9765625,3.6445312 -3.8203125,3.6445312 -0.421875,0 -0.75,-0.328125 -0.3164062,-0.328125 -0.3164062,-0.75 0,-0.4101562 0.3632812,-0.75 Q 4.217457,4.5920033 7.1354257,1.2755971 7.451832,0.9123158 7.8502695,0.9123158 Z"/> + <path style="fill:#212121" d="M 2.1891253,7.8 H 6.6158059 V 9.1866711 H 3.9384642 V 10.61601 h 2.5493413 v 1.386671 H 3.9384642 v 1.514671 H 6.647806 v 1.386671 H 2.1891253 Z"/> + <path style="fill:#212121" d="M 8.7153336,7.8 H 13.686016 V 9.1866711 L 10.57134,13.517351 h 3.221343 v 1.386671 H 8.63 V 13.517351 L 11.744677,9.1866711 H 8.7153336 Z"/> +</svg> diff --git a/.web/fonts/ClearSans-Bold.woff2 b/.web/fonts/ClearSans-Bold.woff2 Binary files differ. diff --git a/.web/fonts/ClearSans-Regular.woff2 b/.web/fonts/ClearSans-Regular.woff2 Binary files differ. diff --git a/.web/index.html b/.web/index.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="UTF-8"> +<title>Dash Eclipse's Personal Site (ezup.dev)</title> +<link rel="stylesheet" type="text/css" href="/styles/topnav.css"> +<meta name="viewport" content= +"width=device-width, initial-scale=1"> +<meta name="description" content="Dash Eclipse's Personal Site"> +<meta name="keywords" content= +"Dash Eclipse, dashezup, EZUP, EasyUP Dev"> +<meta name="author" content="Dash Eclipse"> +<link rel="icon" href="favicon.svg"> +<style> +/* Text Selection Color */ +::selection {background: lightgray;} +/* Page Navigation https://dev.to/paulbrowne/comment/ehhk */ +div:not(:target):not(#dash), +div:target ~ #dash {display: none;} +/* pre */ +pre {margin-left:2em;margin-top:2em;} +pre a:link {color:black;background-color:white;} +pre a:visited {color:black;background-color:white;} +pre a:hover {color:black;background-color:white} +@media screen and (max-width: 600px) { + pre { + margin-left: 0.5em; + margin-top: 1em; + white-space: pre-wrap; + word-wrap: break-word; + text-align: justify; + } +} +</style> +</head> +<body> +<div id="pgp"> +<ul class="topnav"> +<li class="home"><a href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a class="active" href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a href="#about">About</a></li> +</ul> +<pre> +<b>6796 5F30 7B11 0019 6914 61A1 2463 834F FD2C BDBB</b> [<a href="keys/dashezup-pubkey.asc">DL</a>] +-------------------------------------------------- + +I use the encryption subkey and signing subkey to encrypt and sign my emails, +and sign git commits with the signing subkey. + +pub rsa4096 2020-06-21 [C] [expires: 2050-06-14] + 67965F307B110019691461A12463834FFD2CBDBB +uid Dash Eclipse &lt;&#x64;&#x61;&#x73;&#x68;&#x40;&#x65;&#x7A;&#x75;&#x70;&#x2E;&#x64;&#x65;&#x76;&gt; +uid Dash Eclipse &lt;&#x64;&#x61;&#x73;&#x68;&#x65;&#x7A;&#x75;&#x70;&#x40;&#x64;&#x69;&#x73;&#x72;&#x6F;&#x6F;&#x74;&#x2E;&#x6F;&#x72;&#x67;&gt; +sub rsa4096 2020-06-21 [S] [expires: 2020-07-21] + 2D89245E3A1CA0A6C2227A7D1C376E4C5C004BE2 +sub rsa4096 2020-06-21 [E] [expires: 2020-07-21] + 4C565DC92AF11EB5B30D626A98CCFFE81DD5E34E + + +<b>1084 CEB0 AFC0 F003 132F 8F60 4802 C6B3 7F40 927D</b> [<a href="https://api.protonmail.ch/pks/lookup?op=get&amp;search=&#x64;&#x61;&#x73;&#x68;&#x65;&#x7A;&#x75;&#x70;&#x40;&#x70;&#x72;&#x6F;&#x74;&#x6F;&#x6E;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#x6F;&#x6D;">DL</a>] +-------------------------------------------------- + +The key I use on ProtonMail, you may encrypt your emails with this key +when you send emails from non-ProtonMail services to my ProtonMail address. + +pub rsa2048 2020-06-17 [SC] + 1084CEB0AFC0F003132F8F604802C6B37F40927D +uid &#x64;&#x61;&#x73;&#x68;&#x65;&#x7A;&#x75;&#x70;&#x40;&#x70;&#x72;&#x6F;&#x74;&#x6F;&#x6E;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#x6F;&#x6D; &lt;&#x64;&#x61;&#x73;&#x68;&#x65;&#x7A;&#x75;&#x70;&#x40;&#x70;&#x72;&#x6F;&#x74;&#x6F;&#x6E;&#x6D;&#x61;&#x69;&#x6C;&#x2E;&#x63;&#x6F;&#x6D;&gt; +sub rsa2048 2020-06-17 [E] +</pre></div> +<div id="about"> +<ul class="topnav"> +<li class="home"><a href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a class="active" href="#about">About</a></li> +</ul> +<pre> +<b>About Dash Eclipse</b> +------------------ + +Dash Eclipse is an open source enthusiast. + +<a href="https://gitlab.com/dashezup" target= +"_blank">GitLab</a> | <a href="https://github.com/dashezup" target= +"_blank">GitHub</a> | <a href="#pgp">Emails</a> + +<i>Editors</i>: Vim, GNU Emacs +<i>OS</i>: Hackintosh, Void Linux (musl) +<i>Keyboard Layouts</i>: <a href= +"https://www.kaufmann.no/roland/dvorak/" target= +"_blank">Programmer Dvorak</a>, Right-handed Dvorak, <a href= +"http://sangaline.com/post/finding-an-optimal-keyboard-layout-for-swype/" +target="_blank">Sangaline</a> +<i>Browser</i>: Firefox, Chromium +<i>Password manager</i>: <a href="https://www.passwordstore.org/" +target="_blank">pass</a> + + +<b>About the Website</b> +----------------- + +<a href="git/ezup.dev/" target= +"_blank">Source Code of Dash Eclipse's Personal Site</a> by Dash Eclipse + +To the extent possible under law, the person who associated CC0 with +Dash Eclipse has waived all copyright and related or neighboring rights +to Source Code of Dash Eclipse's Personal Site. + +You should have received a copy of the CC0 legalcode along with this +work. If not, see &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;. +</pre></div> +<div id="dash"> +<ul class="topnav"> +<li class="home"><a class="active" href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a href="#about">About</a></li> +</ul> +<pre><b> +Dash Eclipse</b>'s Personal Site (ezup.dev) +--------------------------------------- + +<b>$ neofetch</b> -L + __.;=====;.__ + _.=+==++=++=+=+===;. + -=+++=+===+=+=+++++=_ + . -=:`` `--==+=++==. + _vi, ` --+=++++: + .uvnvi. _._ -==+==+. + .vvnvnI` .;==|==;. :|=||=|. ++QmQQmpvvnv; _yYsyQQWUUQQQm #QmQ#:QQQWUV$QQm. + -QQWQWpvvowZ?.wQQQE==&lt;QWWQ/QWQW.QQWW(: jQWQE + -$QQQQmmU' jQQQ@+=&lt;QWQQ)mQQQ.mQQQC+;jWQQ@' + -$WQ8YnI: QWQQwgQQWV`mWQQ.jQWQQgyyWW@! + -1vvnvv. `~+++` ++|+++ + +vnvnnv, `-|=== + +vnvnvns. . :=- + -Invnvvnsi..___..=sv=. ` + +Invnvnvnnnnnnnnvvnn;. + ~|Invnvnvvnvvvnnv}+` + -~|{*l}*|~ + + +<b>$ neofetch</b> --off --color_blocks off +dash@ezup-c201 +-------------- +OS: Void Linux armv7l +Host: Google Speedy +Kernel: 5.1.0 +Uptime: secs +Packages: 603 (xbps-query) +Shell: zsh 5.8 +Resolution: 1366x768 +WM: dwm +Theme: Raleigh [GTK2/3] +Icons: Paper-Mono-Dark [GTK2/3] +Terminal: st +Terminal Font: Fira Code Medium +CPU: Rockchip (Device Tree) (4) @ 1.800GHz +Memory: 82MiB / 2005MiB + +<b>$ _</b></pre></div> +</body> +</html> diff --git a/.web/styles/site.css b/.web/styles/site.css @@ -0,0 +1,226 @@ +@font-face { + font-family: Clear Sans; + src: url(/fonts/ClearSans-Bold.woff2); + font-weight: bold; +} +body { + font-family: 'Clear Sans', sans-serif; + line-height: 1.4; + font-size: 18px; + background: #fff; + color: #666; + margin: 0; + margin-bottom: 7em; +} +@media (max-width: 799px) { + body { + font-size: .95em; + margin-bottom: 3em; + } + body #content { + padding: 0px 15px 0px 15px; + } + h1.title { + margin-top: 25px; + font-size: 30px; + } + body section.outline-2 h2 { + margin-top: 20px; + font-size: 23px; + } + body h3 { + font-size: 19px; + margin-top: 21px; + font-weight: bold; + } + body div.org-src-container pre { + font-size: 13px; + } + h2.footnotes { + margin-top: 8px; + margin-bottom: 4px; + font-size: 18px; + } +} +h2.footnotes { + font-weight: bold; + font-size: 30px; + margin-bottom: 13px; +} +p.footpara { + line-height: 25px; +} +#text-footnotes { + line-height: 0.6; +} +body h1 { + font-weight: bold; +} +body h2, +body h3, +body h4 { + font-weight: normal; + margin: 0; + padding: 0; + color: #444; +} +body h1 b, +body h2 b, +body h3 b, +body h4 b { + display: block; + line-height: 1; + font-size: 150%; +} +body h1 img, +body h2 img, +body h3 img, +body h4 img { + vertical-align: middle; + border: 0 none; +} +body h1 { + font-size: 42px; + margin-top: 37px; +} +body h2 { + margin-top: 60px; + position: relative; + font-size: 32px; +} +body h3 { + font-size: 22px; + margin-top: 40px; + font-weight: bold; +} +body p { + text-align: justify; +} +body a { + text-decoration: none; + color: #1692cc; +} +body a:hover { + color: #91351c; + text-decoration: underline; +} +body pre { + background: white; +} +body pre.src { + overflow-y: auto !important; + font-size: 16px; +} +body code { + background: #eee; + border: 1px solid #ccc; + padding: 0px 4px; + color: #666; + overflow-x: auto; + font-size: .9em; +} +body li { + margin-bottom: 1em; +} +body img { + border: 1px solid #ccc; + height: auto; +} +@media (max-width: 800px) { + body img { + max-width: 100%; + } +} +body img.no-border { + border: none; +} +body img.rounded-border { + border-radius: 20px; +} +body img.black-border { + border: 2px solid black; +} +body img.spaced-border { + border: 1px solid gray; + padding: 15px; +} +body .tag { + background: transparent; + font-size: 0.6em; +} +body .tag span { + background: #1692cc; + color: white; + padding: 2px 5px; + border-radius: 4px; +} +body .pubdate { + color: #aaa; + font-size: 14px; + margin-bottom: 20px; + margin-top: -16px; + text-align: right; + border-bottom: 1px solid #e2e2e2; +} +body .pubdate p { + display: inline; + margin-right: 10px; +} +@media (max-width: 800px) { + body .pubdate { + margin-top: 0; + text-align: left; + } +} +body .nav-blog { + text-align: right; +} +body .org-info-js_info-navigation { + background: #bbb; +} +@media (min-width: 800px) { + body #content { + margin: 0 auto; + max-width: 700px !important; + width: 700px !important; + } +} +body #content { + margin-top: 10px; +} +body .nav { + text-align: center; + margin-top: 30px; + border-bottom: 1px solid #e2e2e2; + font-size: 12px; + text-transform: uppercase; +} +body .nav ul { + list-style: none; + padding: 0; +} +body .nav ul li { + color: #999; + display: inline-block; + margin: 0; +} +body .nav ul li a { + display: inline-block; + padding-right: 6px; + border-radius: 0; + font-weight: normal; + color: #6a6a6a; +} +body .clearfix { + clear: both; +} +@media (min-width: 800px) { + body .contact { + -moz-column-count: 2; + -webkit-column-count: 2; + -moz-column-gap: 3em; + -webkit-column-gap: 3em; + column-count: 2; + column-gap: 3em; + } +} diff --git a/.web/styles/syntax-coloring.css b/.web/styles/syntax-coloring.css @@ -0,0 +1,323 @@ +/****************************** + * Org defaults + *** + * Source: org-plus-contrib/ox-html.el + ******************************/ +.title { text-align: center; + margin-bottom: .2em; } +.subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } +.todo { font-family: monospace; color: red; } +.done { font-family: monospace; color: green; } +.priority { font-family: monospace; color: orange; } +.tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } +.timestamp { color: #bebebe; } +.timestamp-kwd { color: #5f9ea0; } +.org-right { margin-left: auto; margin-right: 0px; text-align: right; } +.org-left { margin-left: 0px; margin-right: auto; text-align: left; } +.org-center { margin-left: auto; margin-right: auto; text-align: center; } +.underline { text-decoration: underline; } +#postamble p, #preamble p { font-size: 90%; margin: .2em; } +p.verse { margin-left: 3%; } +pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; +} +pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; +} +pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; +} +pre.src:hover:before { display: inline;} +/* Languages per Org manual */ +pre.src-asymptote:before { content: 'Asymptote'; } +pre.src-awk:before { content: 'Awk'; } +pre.src-C:before { content: 'C'; } +/* pre.src-C++ doesn't work in CSS */ +pre.src-clojure:before { content: 'Clojure'; } +pre.src-css:before { content: 'CSS'; } +pre.src-D:before { content: 'D'; } +pre.src-ditaa:before { content: 'ditaa'; } +pre.src-dot:before { content: 'Graphviz'; } +pre.src-calc:before { content: 'Emacs Calc'; } +pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } +pre.src-fortran:before { content: 'Fortran'; } +pre.src-gnuplot:before { content: 'gnuplot'; } +pre.src-haskell:before { content: 'Haskell'; } +pre.src-hledger:before { content: 'hledger'; } +pre.src-java:before { content: 'Java'; } +pre.src-js:before { content: 'Javascript'; } +pre.src-latex:before { content: 'LaTeX'; } +pre.src-ledger:before { content: 'Ledger'; } +pre.src-lisp:before { content: 'Lisp'; } +pre.src-lilypond:before { content: 'Lilypond'; } +pre.src-lua:before { content: 'Lua'; } +pre.src-matlab:before { content: 'MATLAB'; } +pre.src-mscgen:before { content: 'Mscgen'; } +pre.src-ocaml:before { content: 'Objective Caml'; } +pre.src-octave:before { content: 'Octave'; } +pre.src-org:before { content: 'Org mode'; } +pre.src-oz:before { content: 'OZ'; } +pre.src-plantuml:before { content: 'Plantuml'; } +pre.src-processing:before { content: 'Processing.js'; } +pre.src-python:before { content: 'Python'; } +pre.src-R:before { content: 'R'; } +pre.src-ruby:before { content: 'Ruby'; } +pre.src-sass:before { content: 'Sass'; } +pre.src-scheme:before { content: 'Scheme'; } +pre.src-screen:before { content: 'Gnu Screen'; } +pre.src-sed:before { content: 'Sed'; } +pre.src-sh:before { content: 'shell'; } +pre.src-sql:before { content: 'SQL'; } +pre.src-sqlite:before { content: 'SQLite'; } +/* additional languages in org.el's org-babel-load-languages alist */ +pre.src-forth:before { content: 'Forth'; } +pre.src-io:before { content: 'IO'; } +pre.src-J:before { content: 'J'; } +pre.src-makefile:before { content: 'Makefile'; } +pre.src-maxima:before { content: 'Maxima'; } +pre.src-perl:before { content: 'Perl'; } +pre.src-picolisp:before { content: 'Pico Lisp'; } +pre.src-scala:before { content: 'Scala'; } +pre.src-shell:before { content: 'Shell Script'; } +pre.src-ebnf2ps:before { content: 'ebfn2ps'; } +/* additional language identifiers per \"defun org-babel-execute\" + in ob-*.el */ +pre.src-cpp:before { content: 'C++'; } +pre.src-abc:before { content: 'ABC'; } +pre.src-coq:before { content: 'Coq'; } +pre.src-groovy:before { content: 'Groovy'; } +/* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ +pre.src-bash:before { content: 'bash'; } +pre.src-csh:before { content: 'csh'; } +pre.src-ash:before { content: 'ash'; } +pre.src-dash:before { content: 'dash'; } +pre.src-ksh:before { content: 'ksh'; } +pre.src-mksh:before { content: 'mksh'; } +pre.src-posh:before { content: 'posh'; } +/* Additional Emacs modes also supported by the LaTeX listings package */ +pre.src-ada:before { content: 'Ada'; } +pre.src-asm:before { content: 'Assembler'; } +pre.src-caml:before { content: 'Caml'; } +pre.src-delphi:before { content: 'Delphi'; } +pre.src-html:before { content: 'HTML'; } +pre.src-idl:before { content: 'IDL'; } +pre.src-mercury:before { content: 'Mercury'; } +pre.src-metapost:before { content: 'MetaPost'; } +pre.src-modula-2:before { content: 'Modula-2'; } +pre.src-pascal:before { content: 'Pascal'; } +pre.src-ps:before { content: 'PostScript'; } +pre.src-prolog:before { content: 'Prolog'; } +pre.src-simula:before { content: 'Simula'; } +pre.src-tcl:before { content: 'tcl'; } +pre.src-tex:before { content: 'TeX'; } +pre.src-plain-tex:before { content: 'Plain TeX'; } +pre.src-verilog:before { content: 'Verilog'; } +pre.src-vhdl:before { content: 'VHDL'; } +pre.src-xml:before { content: 'XML'; } +pre.src-nxml:before { content: 'XML'; } +/* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf \" \")) in .emacs */ +pre.src-conf:before { content: 'Configuration File'; } + +table { border-collapse:collapse; } +caption.t-above { caption-side: top; } +caption.t-bottom { caption-side: bottom; } +td, th { vertical-align:top; } +th.org-right { text-align: center; } +th.org-left { text-align: center; } +th.org-center { text-align: center; } +td.org-right { text-align: right; } +td.org-left { text-align: left; } +td.org-center { text-align: center; } +dt { font-weight: bold; } +.footpara { display: inline; } +.footdef { margin-bottom: 1em; } +.figure { padding: 1em; } +.figure p { text-align: center; } +.inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; +} +#org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } +textarea { overflow-x: auto; } +.linenr { font-size: smaller } +.code-highlighted { background-color: #ffff00; } +.org-info-js_info-navigation { border-style: none; } +#org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } +.org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } +.org-svg { width: 90%; } + +/****************************** + * Syntax highlighting + *** + * Source: https://github.com/fniessen/org-html-themes/blob/master/styles/bigblow/css/htmlize.css + ******************************/ +.org-bold { /* bold */ font-weight: bold; } +.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; } +.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; } +.org-builtin { /* font-lock-builtin-face */ color: #7a378b; } +.org-button { /* button */ text-decoration: underline; } +.org-calendar-today { /* calendar-today */ text-decoration: underline; } +.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; } +.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; } +.org-change-log-date { /* change-log-date */ color: #8b2252; } +.org-change-log-email { /* change-log-email */ color: #a0522d; } +.org-change-log-file { /* change-log-file */ color: #0000ff; } +.org-change-log-function { /* change-log-function */ color: #a0522d; } +.org-change-log-list { /* change-log-list */ color: #a020f0; } +.org-change-log-name { /* change-log-name */ color: #008b8b; } +.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; } +.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; } +.org-comment { /* font-lock-comment-face */ color: #b22222; } +.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #b22222; } +.org-completions-annotations { /* completions-annotations */ font-style: italic; } +.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; } +.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; } +.org-constant { /* font-lock-constant-face */ color: #008b8b; } +.org-diary { /* diary */ color: #ff0000; } +.org-diff-context { /* diff-context */ color: #7f7f7f; } +.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-function { /* diff-function */ background-color: #cccccc; } +.org-diff-header { /* diff-header */ background-color: #cccccc; } +.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; } +.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; } +.org-dired-directory { /* dired-directory */ color: #0000ff; } +.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; } +.org-dired-header { /* dired-header */ color: #228b22; } +.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; } +.org-dired-mark { /* dired-mark */ color: #008b8b; } +.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; } +.org-dired-perm-write { /* dired-perm-write */ color: #b22222; } +.org-dired-symlink { /* dired-symlink */ color: #a020f0; } +.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; } +.org-doc { /* font-lock-doc-face */ color: #8b2252; } +.org-escape-glyph { /* escape-glyph */ color: #a52a2a; } +.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; } +.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; } +.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; } +.org-fringe { /* fringe */ background-color: #f2f2f2; } +.org-function-name { /* font-lock-function-name-face */ color: #0000ff; } +.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; } +.org-help-argument-name { /* help-argument-name */ font-style: italic; } +.org-highlight { /* highlight */ background-color: #b4eeb4; } +.org-holiday { /* holiday */ background-color: #ffc0cb; } +.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; } +.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; } +.org-italic { /* italic */ font-style: italic; } +.org-keyword { /* font-lock-keyword-face */ color: #a020f0; } +.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; } +.org-link { /* link */ color: #0000ff; text-decoration: underline; } +.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; } +.org-log-edit-header { /* log-edit-header */ color: #a020f0; } +.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; } +.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; } +.org-match { /* match */ background-color: #ffff00; } +.org-next-error { /* next-error */ background-color: #eedc82; } +.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; } +.org-org-archived { /* org-archived */ color: #7f7f7f; } +.org-org-block { /* org-block */ color: #7f7f7f; } +.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; } +.org-org-block-end-line { /* org-block-end-line */ color: #b22222; } +.org-org-checkbox { /* org-checkbox */ font-weight: bold; } +.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; } +.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; } +.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; } +.org-org-code { /* org-code */ color: #7f7f7f; } +.org-org-column { /* org-column */ background-color: #e5e5e5; } +.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; } +.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; } +.org-org-document-info { /* org-document-info */ color: #191970; } +.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; } +.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; } +.org-org-done { /* org-done */ color: #228b22; font-weight: bold; } +.org-org-drawer { /* org-drawer */ color: #0000ff; } +.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; } +.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; } +.org-org-formula { /* org-formula */ color: #b22222; } +.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; } +.org-org-hide { /* org-hide */ color: #ffffff; } +.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; } +.org-org-level-1 { /* org-level-1 */ color: #0000ff; } +.org-org-level-2 { /* org-level-2 */ color: #a0522d; } +.org-org-level-3 { /* org-level-3 */ color: #a020f0; } +.org-org-level-4 { /* org-level-4 */ color: #b22222; } +.org-org-level-5 { /* org-level-5 */ color: #228b22; } +.org-org-level-6 { /* org-level-6 */ color: #008b8b; } +.org-org-level-7 { /* org-level-7 */ color: #7a378b; } +.org-org-level-8 { /* org-level-8 */ color: #8b2252; } +.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; } +.org-org-meta-line { /* org-meta-line */ color: #b22222; } +.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; } +.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; } +.org-org-quote { /* org-quote */ color: #7f7f7f; } +.org-org-scheduled { /* org-scheduled */ color: #006400; } +.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; } +.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; } +.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; } +.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; } +.org-org-table { /* org-table */ color: #0000ff; } +.org-org-tag { /* org-tag */ font-weight: bold; } +.org-org-target { /* org-target */ text-decoration: underline; } +.org-org-time-grid { /* org-time-grid */ color: #b8860b; } +.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; } +.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; } +.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; } +.org-org-verse { /* org-verse */ color: #7f7f7f; } +.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; } +.org-outline-1 { /* outline-1 */ color: #0000ff; } +.org-outline-2 { /* outline-2 */ color: #a0522d; } +.org-outline-3 { /* outline-3 */ color: #a020f0; } +.org-outline-4 { /* outline-4 */ color: #b22222; } +.org-outline-5 { /* outline-5 */ color: #228b22; } +.org-outline-6 { /* outline-6 */ color: #008b8b; } +.org-outline-7 { /* outline-7 */ color: #7a378b; } +.org-outline-8 { /* outline-8 */ color: #8b2252; } +.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; } +.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; } +.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; } +.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; } +.org-region { /* region */ background-color: #eedc82; } +.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; } +.org-shadow { /* shadow */ color: #7f7f7f; } +.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; } +.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; } +.org-string { /* font-lock-string-face */ color: #8b2252; } +.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; } +.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; } +.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; } +.org-type { /* font-lock-type-face */ color: #228b22; } +.org-underline { /* underline */ text-decoration: underline; } +.org-variable-name { /* font-lock-variable-name-face */ color: #a0522d; } +.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; } +.org-widget-button { /* widget-button */ font-weight: bold; } +.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; } +.org-widget-documentation { /* widget-documentation */ color: #006400; } +.org-widget-field { /* widget-field */ background-color: #d9d9d9; } +.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; } +.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; } diff --git a/.web/styles/topnav.css b/.web/styles/topnav.css @@ -0,0 +1,59 @@ +@font-face { + font-family: Clear Sans; + src: url(/fonts/ClearSans-Regular.woff2); +} +body { + margin: 0; +} +/* Responsive Topnav https://www.w3schools.com/css/css_navbar_horizontal.asp */ +ul.topnav { + position: -webkit-sticky; /* Safari */ + position: sticky; + top: 0; + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + border-bottom: 1px solid #e0e0e0; + background-color: #ffffff; + line-height: 0.9em; +} +ul.topnav li { + float: left; + text-align: center; + margin: 0; +} +ul.topnav li a { + font-family: 'Clear Sans', sans-serif; + display: block; + color: gray; + text-align: center; + text-decoration: none; + padding: 0.8em 0.6em 0.6em 0.6em; +} +ul.topnav li a:hover:not(.active) { + color: #757575; + border-bottom: 3px solid #bdbdbd; +} +ul.topnav li a.active { + color: #757575; + border-bottom: 0.2em solid #757575; +} +ul.topnav li.right { + float: right; +} +@media screen and (max-width: 610px) { +/* ul.topnav li.right, */ +/* ul.topnav li {float: none;} */ + ul.topnav {line-height: 1.2em;} + ul.topnav li.home {width: 26.2%;} + ul.topnav li {width: 17.5%;} + ul.topnav li.right {width: 21.3%;} + ul.topnav li a {font-size: 20px;} +} +@media screen and (min-width: 610px) { + ul.topnav li {padding: 0 0.3em; width: 100px;} + ul.topnav li.home {padding: 0 1.8em 0 1.8em;} + ul.topnav li.right {padding: 0 1em 0 0;} + ul.topnav li a {font-size: 21px;} +} diff --git a/LICENSE b/LICENSE @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/Makefile b/Makefile @@ -0,0 +1,15 @@ +all: publish + +publish: publish.el + @tidy --tidy-mark no --quiet yes -m index.html + @echo "Publishing..." + @emacs --batch --load publish.el --funcall org-publish-all + sed -i 's/dash@ezup.dev/\&#x64;\&#x61;\&#x73;\&#x68;\&#x40;\&#x65;\&#x7A;\&#x75;\&#x70;\&#x2E;\&#x64;\&#x65;\&#x76;/g' .web/index.html + @sed -i 's/dashezup@disroot.org/\&#x64;\&#x61;\&#x73;\&#x68;\&#x65;\&#x7A;\&#x75;\&#x70;\&#x40;\&#x64;\&#x69;\&#x73;\&#x72;\&#x6F;\&#x6F;\&#x74;\&#x2E;\&#x6F;\&#x72;\&#x67;/g' .web/index.html + @sed -i 's/dashezup@protonmail.com/\&#x64;\&#x61;\&#x73;\&#x68;\&#x65;\&#x7A;\&#x75;\&#x70;\&#x40;\&#x70;\&#x72;\&#x6F;\&#x74;\&#x6F;\&#x6E;\&#x6D;\&#x61;\&#x69;\&#x6C;\&#x2E;\&#x63;\&#x6F;\&#x6D;/g' .web/index.html + +clean: + @echo "Cleaning up..." + @rm -rvf *.elc + @rm -rvf .web + @rm -rvf ~/.org-timestamps/* diff --git a/README b/README @@ -0,0 +1,26 @@ +Source Code of Dash Eclipse's Personal Site (ezup.dev) +------------------------------------------------------ + +ezup.dev HTTPS server serve files under .web/ + + +Generate the website +-------------------- + +$ make + + +License +------- + +Source Code of Dash Eclipse's Personal Site by Dash Eclipse + +To the extent possible under law, the person who associated CC0 with +Dash Eclipse has waived all copyright and related or neighboring rights +to Source Code of Dash Eclipse's Personal Site. + +You should have received a copy of the CC0 legalcode along with this +work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. + +fonts/ClearSans-{Regular,Bold}.woff2 are Clear Sans font, it's converted +from https://01.org/clear-sans and licensed under Apache 2.0. diff --git a/artwork/avatar/200x200.png b/artwork/avatar/200x200.png Binary files differ. diff --git a/artwork/ezup-logo-rounded.svg b/artwork/ezup-logo-rounded.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"> + <path style="fill:#f5f5f5" d="M 1.6153092,0 H 14.384691 C 15.279572,0 16,0.72042792 16,1.6153092 V 14.384691 C 16,15.279572 15.279572,16 14.384691,16 H 1.6153092 C 0.72042792,16 0,15.279572 0,14.384691 V 1.6153092 C 0,0.72042792 0.72042792,0 1.6153092,0 Z"/> + <path style="fill:#212121" d="m 7.8502695,0.9123158 q 0.6445312,0 1.546875,0.796875 0.28125,0.2460938 1.2890625,1.3007813 l 1.851562,1.9921875 q 0.316406,0.3515625 0.316406,0.7148437 0,0.4335938 -0.328125,0.7617188 -0.328125,0.3164062 -0.75,0.3164062 -0.386718,0 -0.738281,-0.3398437 -0.9375,-1.0546875 -2.9414058,-3.046875 -2.9765625,3.6445312 -3.8203125,3.6445312 -0.421875,0 -0.75,-0.328125 -0.3164062,-0.328125 -0.3164062,-0.75 0,-0.4101562 0.3632812,-0.75 Q 4.217457,4.5920033 7.1354257,1.2755971 7.451832,0.9123158 7.8502695,0.9123158 Z"/> + <path style="fill:#212121" d="M 2.1891253,7.8 H 6.6158059 V 9.1866711 H 3.9384642 V 10.61601 h 2.5493413 v 1.386671 H 3.9384642 v 1.514671 H 6.647806 v 1.386671 H 2.1891253 Z"/> + <path style="fill:#212121" d="M 8.7153336,7.8 H 13.686016 V 9.1866711 L 10.57134,13.517351 h 3.221343 v 1.386671 H 8.63 V 13.517351 L 11.744677,9.1866711 H 8.7153336 Z"/> +</svg> diff --git a/artwork/ezup-logo-square.svg b/artwork/ezup-logo-square.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"> + <path style="fill:#f5f5f5" d="M 0,0 H 16 V 16 H 0 Z"/> + <path style="fill:#212121" d="m 7.8502695,0.9123158 q 0.6445312,0 1.546875,0.796875 0.28125,0.2460938 1.2890625,1.3007813 l 1.851562,1.9921875 q 0.316406,0.3515625 0.316406,0.7148437 0,0.4335938 -0.328125,0.7617188 -0.328125,0.3164062 -0.75,0.3164062 -0.386718,0 -0.738281,-0.3398437 -0.9375,-1.0546875 -2.9414058,-3.046875 -2.9765625,3.6445312 -3.8203125,3.6445312 -0.421875,0 -0.75,-0.328125 -0.3164062,-0.328125 -0.3164062,-0.75 0,-0.4101562 0.3632812,-0.75 Q 4.217457,4.5920033 7.1354257,1.2755971 7.451832,0.9123158 7.8502695,0.9123158 Z"/> + <path style="fill:#212121" d="M 2.1891253,7.8 H 6.6158059 V 9.1866711 H 3.9384642 V 10.61601 h 2.5493413 v 1.386671 H 3.9384642 v 1.514671 H 6.647806 v 1.386671 H 2.1891253 Z"/> + <path style="fill:#212121" d="M 8.7153336,7.8 H 13.686016 V 9.1866711 L 10.57134,13.517351 h 3.221343 v 1.386671 H 8.63 V 13.517351 L 11.744677,9.1866711 H 8.7153336 Z"/> +</svg> diff --git a/artwork/favicon/favicon.png b/artwork/favicon/favicon.png Binary files differ. diff --git a/artwork/favicon/logo.png b/artwork/favicon/logo.png Binary files differ. diff --git a/artwork/generate-favicon-and-avatar.sh b/artwork/generate-favicon-and-avatar.sh @@ -0,0 +1,15 @@ +#!/bin/dash + +## Favicon and Logo +rm -rf favicon +mkdir favicon +convert ezup-logo-rounded.svg favicon/favicon.png # for stagit +rsvg-convert -a -w 32 -f svg ezup-logo-rounded.svg -o favicon/logo.svg && convert favicon/logo.svg favicon/logo.png && rm favicon/logo.svg # for stagit + +## Avatar +rm -rf avatar +mkdir avatar +rsvg-convert -a -w 160 -f svg ezup-logo-square.svg -o avatar/160x160.svg +convert avatar/160x160.svg -background '#f5f5f5' -gravity center -extent 200x200 avatar/200x200.png +rm avatar/160x160.svg + diff --git a/favicon.svg b/favicon.svg @@ -0,0 +1 @@ +artwork/ezup-logo-rounded.svg+ \ No newline at end of file diff --git a/fonts/ClearSans-Bold.woff2 b/fonts/ClearSans-Bold.woff2 Binary files differ. diff --git a/fonts/ClearSans-Regular.woff2 b/fonts/ClearSans-Regular.woff2 Binary files differ. diff --git a/index.html b/index.html @@ -0,0 +1,169 @@ +<!DOCTYPE html> +<html lang="en"> +<head> +<meta charset="UTF-8"> +<title>Dash Eclipse's Personal Site (ezup.dev)</title> +<link rel="stylesheet" type="text/css" href="/styles/topnav.css"> +<meta name="viewport" content= +"width=device-width, initial-scale=1"> +<meta name="description" content="Dash Eclipse's Personal Site"> +<meta name="keywords" content= +"Dash Eclipse, dashezup, EZUP, EasyUP Dev"> +<meta name="author" content="Dash Eclipse"> +<link rel="icon" href="favicon.svg"> +<style> +/* Text Selection Color */ +::selection {background: lightgray;} +/* Page Navigation https://dev.to/paulbrowne/comment/ehhk */ +div:not(:target):not(#dash), +div:target ~ #dash {display: none;} +/* pre */ +pre {margin-left:2em;margin-top:2em;} +pre a:link {color:black;background-color:white;} +pre a:visited {color:black;background-color:white;} +pre a:hover {color:black;background-color:white} +@media screen and (max-width: 600px) { + pre { + margin-left: 0.5em; + margin-top: 1em; + white-space: pre-wrap; + word-wrap: break-word; + text-align: justify; + } +} +</style> +</head> +<body> +<div id="pgp"> +<ul class="topnav"> +<li class="home"><a href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a class="active" href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a href="#about">About</a></li> +</ul> +<pre> +<b>6796 5F30 7B11 0019 6914 61A1 2463 834F FD2C BDBB</b> [<a href="keys/dashezup-pubkey.asc">DL</a>] +-------------------------------------------------- + +I use the encryption subkey and signing subkey to encrypt and sign my emails, +and sign git commits with the signing subkey. + +pub rsa4096 2020-06-21 [C] [expires: 2050-06-14] + 67965F307B110019691461A12463834FFD2CBDBB +uid Dash Eclipse &lt;dash@ezup.dev&gt; +uid Dash Eclipse &lt;dashezup@disroot.org&gt; +sub rsa4096 2020-06-21 [S] [expires: 2020-07-21] + 2D89245E3A1CA0A6C2227A7D1C376E4C5C004BE2 +sub rsa4096 2020-06-21 [E] [expires: 2020-07-21] + 4C565DC92AF11EB5B30D626A98CCFFE81DD5E34E + + +<b>1084 CEB0 AFC0 F003 132F 8F60 4802 C6B3 7F40 927D</b> [<a href="https://api.protonmail.ch/pks/lookup?op=get&amp;search=dashezup@protonmail.com">DL</a>] +-------------------------------------------------- + +The key I use on ProtonMail, you may encrypt your emails with this key +when you send emails from non-ProtonMail services to my ProtonMail address. + +pub rsa2048 2020-06-17 [SC] + 1084CEB0AFC0F003132F8F604802C6B37F40927D +uid dashezup@protonmail.com &lt;dashezup@protonmail.com&gt; +sub rsa2048 2020-06-17 [E] +</pre></div> +<div id="about"> +<ul class="topnav"> +<li class="home"><a href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a class="active" href="#about">About</a></li> +</ul> +<pre> +<b>About Dash Eclipse</b> +------------------ + +Dash Eclipse is an open source enthusiast. + +<a href="https://gitlab.com/dashezup" target= +"_blank">GitLab</a> | <a href="https://github.com/dashezup" target= +"_blank">GitHub</a> | <a href="#pgp">Emails</a> + +<i>Editors</i>: Vim, GNU Emacs +<i>OS</i>: Hackintosh, Void Linux (musl) +<i>Keyboard Layouts</i>: <a href= +"https://www.kaufmann.no/roland/dvorak/" target= +"_blank">Programmer Dvorak</a>, Right-handed Dvorak, <a href= +"http://sangaline.com/post/finding-an-optimal-keyboard-layout-for-swype/" +target="_blank">Sangaline</a> +<i>Browser</i>: Firefox, Chromium +<i>Password manager</i>: <a href="https://www.passwordstore.org/" +target="_blank">pass</a> + + +<b>About the Website</b> +----------------- + +<a href="git/ezup.dev/" target= +"_blank">Source Code of Dash Eclipse's Personal Site</a> by Dash Eclipse + +To the extent possible under law, the person who associated CC0 with +Dash Eclipse has waived all copyright and related or neighboring rights +to Source Code of Dash Eclipse's Personal Site. + +You should have received a copy of the CC0 legalcode along with this +work. If not, see &lt;http://creativecommons.org/publicdomain/zero/1.0/&gt;. +</pre></div> +<div id="dash"> +<ul class="topnav"> +<li class="home"><a class="active" href="#dash">ezup.dev</a></li> +<li><a href="/blog">Blog</a></li> +<li><a href="#pgp">PGP</a></li> +<li><a href="git/" target="_blank"><u>Git</u></a></li> +<li class="right"><a href="#about">About</a></li> +</ul> +<pre><b> +Dash Eclipse</b>'s Personal Site (ezup.dev) +--------------------------------------- + +<b>$ neofetch</b> -L + __.;=====;.__ + _.=+==++=++=+=+===;. + -=+++=+===+=+=+++++=_ + . -=:`` `--==+=++==. + _vi, ` --+=++++: + .uvnvi. _._ -==+==+. + .vvnvnI` .;==|==;. :|=||=|. ++QmQQmpvvnv; _yYsyQQWUUQQQm #QmQ#:QQQWUV$QQm. + -QQWQWpvvowZ?.wQQQE==&lt;QWWQ/QWQW.QQWW(: jQWQE + -$QQQQmmU' jQQQ@+=&lt;QWQQ)mQQQ.mQQQC+;jWQQ@' + -$WQ8YnI: QWQQwgQQWV`mWQQ.jQWQQgyyWW@! + -1vvnvv. `~+++` ++|+++ + +vnvnnv, `-|=== + +vnvnvns. . :=- + -Invnvvnsi..___..=sv=. ` + +Invnvnvnnnnnnnnvvnn;. + ~|Invnvnvvnvvvnnv}+` + -~|{*l}*|~ + + +<b>$ neofetch</b> --off --color_blocks off +dash@ezup-c201 +-------------- +OS: Void Linux armv7l +Host: Google Speedy +Kernel: 5.1.0 +Uptime: secs +Packages: 603 (xbps-query) +Shell: zsh 5.8 +Resolution: 1366x768 +WM: dwm +Theme: Raleigh [GTK2/3] +Icons: Paper-Mono-Dark [GTK2/3] +Terminal: st +Terminal Font: Fira Code Medium +CPU: Rockchip (Device Tree) (4) @ 1.800GHz +Memory: 82MiB / 2005MiB + +<b>$ _</b></pre></div> +</body> +</html> diff --git a/keys/67965F307B110019691461A12463834FFD2CBDBB.asc b/keys/67965F307B110019691461A12463834FFD2CBDBB.asc @@ -0,0 +1,100 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +FddLKLx7dAM= +=LwLS +-----END PGP PUBLIC KEY BLOCK----- diff --git a/keys/dashezup-pubkey.asc b/keys/dashezup-pubkey.asc @@ -0,0 +1 @@ +67965F307B110019691461A12463834FFD2CBDBB.asc+ \ No newline at end of file diff --git a/layouts/preamble.html b/layouts/preamble.html @@ -0,0 +1,9 @@ +<div> +<ul class='topnav'> +<li class='home'><a href='/#dash'>ezup.dev</a></li> +<li><a class='active' href='./'>Blog</a></li> +<li><a href='/#pgp'>PGP</a></li> +<li><a href='/git/' target='_blank'><u>Git</u></a></li> +<li class='right'><a href='/#about'>About</a></li> +</ul> +</div> diff --git a/posts/index.org b/posts/index.org @@ -0,0 +1,4 @@ +#+TITLE: Blog Index + +- [[file:pgp.org][OpenPGP Key Generation and Usage]] + #+html: <p class='pubdate'>by Dash Eclipse on Jun 30, 2020.</p>+ \ No newline at end of file diff --git a/posts/pgp.org b/posts/pgp.org @@ -0,0 +1,73 @@ +#+TITLE: OpenPGP Key Generation and Usage +#+AUTHOR: Dash Eclipse +#+DATE: [2020-06-30 Tue] +#+email: dash@ezup.dev +#+KEYWORDS: openpgp, pgp, gnupg, gpg, subkey + +In this article I'm gonna explain how do I generate OpenPGP keys and use PGP. + +* Install GnuPG + :PROPERTIES: + :ID: 22D75389-43AB-49A4-B998-B48AF2365397 + :PUBDATE: <2020-07-02 Thu 21:30> + :END: + On macOS you can use brew to install GnuPG ~brew install gnupg~ + +* OpenPGP key generation + :PROPERTIES: + :ID: 890C9B02-7790-4FAC-80B7-E36F5B3058D0 + :PUBDATE: <2020-07-02 Thu 21:30> + :END: + Beside ~gpg --full-generate-key~, you can also create a key with gpg in batch mode[fn:1]. + #+BEGIN_SRC sh + cat >first-last.txt <<EOF + %echo Generating a basic OpenPGP key + Key-Type: RSA + Key-Length: 4096 + Key-Usage: cert + #Subkey-Type: RSA + #Subkey-Length: 4096 + Name-Real: First Last + #Name-Comment: + Name-Email: user@domain.tld + Expire-Date: 30y + Passphrase: password + %commit + %echo done + EOF + #+END_SRC + Create a key in an ephemeral home directory + #+BEGIN_SRC sh + mkdir -m700 .gnupg + ## Set the environment variable + ## or pass --homedir .gnupg as an argument + export GNUPGHOME=".gnupg" + gpg --batch --generate-key first-last.txt + #+END_SRC + +* Use subkeys + :PROPERTIES: + :ID: E5DD933D-DF29-4D17-A703-4306E7F28349 + :PUBDATE: <2020-07-02 Thu 21:30> + :END: + I use encryption and signing subkeys instead of just use one key for everything, because it's safer when you keep your master key elsewhere and use different keys for different purposes. Debian also recommend to use subkeys.[fn:2] + #+BEGIN_SRC sh + ## adduid, (trust, 5,) save + gpg --edit-key user@domain.tld + ## Get keygrip + gpg --with-keygrip --list-key <key-id> + ## Export and Import the key to the GPG homedir + ## where you are gonna use the key, + ## remove the master key from there + ## and change the password + rm .gnupg/private-keys-v1.d/<keygrip>.key + gpg --edit-key <key-id> passwd + #+END_SRC + +* Footnotes + :PROPERTIES: + :ID: 46766029-46E7-4ADD-9D10-38C588B2B53A + :PUBDATE: <2020-07-02 Thu 21:30> + :END: +[fn:1] The GNU Privacy Guard Manual - [[https://www.gnupg.org/documentation//manuals/gnupg/Unattended-GPG-key-generation.html][4.5.4 Unattended key generation]] +[fn:2] Debian Wiki - [[https://wiki.debian.org/Subkeys][Subkeys]] diff --git a/posts/rss.org b/posts/rss.org @@ -0,0 +1,8 @@ +#+TITLE: Dash Eclipse's Personal Site | ezup.dev + +* OpenPGP Key Generation and Usage +:PROPERTIES: +:RSS_PERMALINK: pgp.html +:PUBDATE: 2020-06-30 +:ID: 5BB9F81C-3369-40B9-83E2-79FE675A2E1F +:END: diff --git a/publish.el b/publish.el @@ -0,0 +1,193 @@ +;;; publish.el + +(require 'package) +(package-initialize) +(unless package-archive-contents + (add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/") t) + (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) + (package-refresh-contents)) +(dolist (pkg '(org-plus-contrib htmlize)) + (unless (package-installed-p pkg) + (package-install pkg))) + +(require 'org) +(require 'ox-publish) +(require 'ox-rss) + +(defvar ezup-url "https://ezup.dev/blog/" + "The URL where this site will be published") + +(defvar ezup-title "Dash Eclipse's Personal Site | ezup.dev" + "The title of this site.") + + +(setq org-html-postamble nil) + ;;org-export-with-author nil) + ;;org-export-with-toc nil) + +(setq org-html-divs '((preamble "header" "top") + (content "main" "content")) + org-html-container-element "section" + ;;org-html-metadata-timestamp-format psachin-date-format + org-html-checkbox-type 'html + org-html-html5-fancy t + org-html-validation-link t + org-html-doctype "html5" + org-html-htmlize-output-type 'css + org-src-fontify-natively t) + +(defvar ezup-html-head + "<link rel='icon' type='image/x-icon' href='/favicon.svg'/> +<meta name='viewport' content='width=device-width, initial-scale=1'> +<link rel='stylesheet' href='/styles/topnav.css' type='text/css'/> +<link rel='stylesheet' href='/styles/site.css' type='text/css'/> +<link rel='stylesheet' href='/styles/syntax-coloring.css' type='text/css'/> +<link rel='alternate' type='application/rss+xml' title='RSS' href='/blog/rss.xml'>") + +(defun ezup/prepostamble-format (type) + "Return the content for the preamble/postamble of TYPE." + `(("en" ,(with-temp-buffer + (insert-file-contents (expand-file-name (format "%s.html" type) "layouts")) + (buffer-string))))) + +;; org-publish-sitemap-default-entry +;; https://code.orgmode.org/bzg/org-mode/src/release_9.3.7/lisp/ox-publish.el#L898-L909 +(defun ezup/org-publish-sitemap-entry (entry style project) + "Default format for site map ENTRY, as a string. +ENTRY is a file name. STYLE is the style of the sitemap. +PROJECT is the current project." + (cond ((not (directory-name-p entry)) + (format "[[file:%s][%s]] + #+HTML: <p class='pubdate'>by %s on %s.</p>" + entry + (org-publish-find-title entry project) + (car (org-publish-find-property entry :author project)) + (format-time-string "%b %d, %Y" + (org-publish-find-date entry project)))) + ((eq style 'tree) + ;; Return only last subdir. + (file-name-nondirectory (directory-file-name entry))) + (t entry))) + +;; org-publish-sitemap-default +;; https://code.orgmode.org/bzg/org-mode/src/release_9.3.7/lisp/ox-publish.el#L911-L917 +(defun ezup/org-publish-sitemap-rss (title list) + "Default site map, as a string. +TITLE is the the title of the site map. LIST is an internal +representation for the files to include, as returned by +`org-list-to-lisp'. PROJECT is the current project." + (concat "#+TITLE: " title "\n\n" + (org-list-to-subtree list 1 '(:icount "" :istart "")))) + +;; org-rss-publish-to-rss +;; https://code.orgmode.org/bzg/org-mode/src/release_9.3.7/contrib/lisp/ox-rss.el#L204-L223 +(defun ezup/org-rss-publish-to-rss (plist filename pub-dir) + "Publish rss.org to RSS." + (if (equal "rss.org" (file-name-nondirectory filename)) + (org-rss-publish-to-rss plist filename pub-dir))) + +;; org-publish-sitemap-default-entry +;; https://code.orgmode.org/bzg/org-mode/src/release_9.3.7/lisp/ox-publish.el#L898-L909 +(defun ezup/format-rss-feed-entry (entry style project) + "Format ENTRY for the RSS feed. +ENTRY is a file name. STYLE is either 'list' or 'tree'. +PROJECT is the current project." + (cond ((not (directory-name-p entry)) + (let* ((file (org-publish--expand-file-name entry project)) + (title (org-publish-find-title entry project)) + (date (format-time-string "%Y-%m-%d" (org-publish-find-date entry project))) + (link (concat (file-name-sans-extension entry) ".html"))) + (with-temp-buffer + (insert (format "* %s\n" title)) + (org-set-property "RSS_PERMALINK" link) + (org-set-property "PUBDATE" date) + (buffer-string)))) + ((eq style 'tree) + ;; Return only last subdir. + (file-name-nondirectory (directory-file-name entry))) + (t entry))) + +;; https://orgmode.org/manual/Complex-example.html#Complex-example +;; https://orgmode.org/manual/Site-map.html +(setq org-publish-project-alist + `(("posts" + :base-directory "posts" + :recursive t + ;;:section-numbers nil + :with-toc nil + :base-extension "org" + :exclude "rss.org\\|index.org" + :publishing-function org-html-publish-to-html + :publishing-directory ".web/blog" + :auto-sitemap t + :sitemap-filename "index.org" + :sitemap-title "Blog Index" + :sitemap-style list + :sitemap-sort-files anti-chronologically + :sitemap-function org-publish-sitemap-default + :sitemap-format-entry ezup/org-publish-sitemap-entry + :author "Dash Eclipse" + :html-head-include-scripts nil + :html-head-include-default-style nil + :html-head ,ezup-html-head + :html-preamble-format ,(ezup/prepostamble-format "preamble")) + + ("rss" + :base-directory "posts" + :base-extension "org" + :recursive nil + ;;:exclude (regexp-opt ("rss.org" "index.org")) + :exclude "rss.org\\|index.org" + :publishing-directory ".web/blog" + :org-rss-use-entry-url-as-guid t + ;;:publishing-function org-rss-publish-to-rss + :publishing-function ezup/org-rss-publish-to-rss + :rss-extension "xml" + :html-link-home ,ezup-url + :html-link-use-abs-url t + :html-link-org-files-as-html t + :auto-sitemap t + ;;:exclude ".*" + ;;:include ("index.org") + :sitemap-filename "rss.org" + :sitemap-title ,ezup-title + :sitemap-style list + :sitemap-sort-files anti-chronologically + :sitemap-function ezup/org-publish-sitemap-rss + :sitemap-format-entry ezup/format-rss-feed-entry + :with-author t + :author "Dash Eclipse" + :email "dash@ezup.dev") + + ("images" + :base-directory "images" + :base-extension "svg\\|jpg\\|png" + :publishing-directory ".web/images" + :publishing-function org-publish-attachment) + + ("favicon" + :base-directory "." + :base-extension "svg" + :publishing-directory ".web" + :publishing-function org-publish-attachment) + + ("css" + :base-directory "styles" + :base-extension "css" + :publishing-directory ".web/styles" + :publishing-function org-publish-attachment) + + ("fonts" + :base-directory "fonts" + :base-extension "woff2" + :publishing-directory ".web/fonts" + :publishing-function org-publish-attachment) + + ("html" + :base-directory "." + :base-extension "html" + :publishing-directory ".web" + :publishing-function org-publish-attachment) + ("website" :components ("posts" "rss" "images" "css" "fonts" "html")))) + +(provide 'publish) diff --git a/styles/site.css b/styles/site.css @@ -0,0 +1,226 @@ +@font-face { + font-family: Clear Sans; + src: url(/fonts/ClearSans-Bold.woff2); + font-weight: bold; +} +body { + font-family: 'Clear Sans', sans-serif; + line-height: 1.4; + font-size: 18px; + background: #fff; + color: #666; + margin: 0; + margin-bottom: 7em; +} +@media (max-width: 799px) { + body { + font-size: .95em; + margin-bottom: 3em; + } + body #content { + padding: 0px 15px 0px 15px; + } + h1.title { + margin-top: 25px; + font-size: 30px; + } + body section.outline-2 h2 { + margin-top: 20px; + font-size: 23px; + } + body h3 { + font-size: 19px; + margin-top: 21px; + font-weight: bold; + } + body div.org-src-container pre { + font-size: 13px; + } + h2.footnotes { + margin-top: 8px; + margin-bottom: 4px; + font-size: 18px; + } +} +h2.footnotes { + font-weight: bold; + font-size: 30px; + margin-bottom: 13px; +} +p.footpara { + line-height: 25px; +} +#text-footnotes { + line-height: 0.6; +} +body h1 { + font-weight: bold; +} +body h2, +body h3, +body h4 { + font-weight: normal; + margin: 0; + padding: 0; + color: #444; +} +body h1 b, +body h2 b, +body h3 b, +body h4 b { + display: block; + line-height: 1; + font-size: 150%; +} +body h1 img, +body h2 img, +body h3 img, +body h4 img { + vertical-align: middle; + border: 0 none; +} +body h1 { + font-size: 42px; + margin-top: 37px; +} +body h2 { + margin-top: 60px; + position: relative; + font-size: 32px; +} +body h3 { + font-size: 22px; + margin-top: 40px; + font-weight: bold; +} +body p { + text-align: justify; +} +body a { + text-decoration: none; + color: #1692cc; +} +body a:hover { + color: #91351c; + text-decoration: underline; +} +body pre { + background: white; +} +body pre.src { + overflow-y: auto !important; + font-size: 16px; +} +body code { + background: #eee; + border: 1px solid #ccc; + padding: 0px 4px; + color: #666; + overflow-x: auto; + font-size: .9em; +} +body li { + margin-bottom: 1em; +} +body img { + border: 1px solid #ccc; + height: auto; +} +@media (max-width: 800px) { + body img { + max-width: 100%; + } +} +body img.no-border { + border: none; +} +body img.rounded-border { + border-radius: 20px; +} +body img.black-border { + border: 2px solid black; +} +body img.spaced-border { + border: 1px solid gray; + padding: 15px; +} +body .tag { + background: transparent; + font-size: 0.6em; +} +body .tag span { + background: #1692cc; + color: white; + padding: 2px 5px; + border-radius: 4px; +} +body .pubdate { + color: #aaa; + font-size: 14px; + margin-bottom: 20px; + margin-top: -16px; + text-align: right; + border-bottom: 1px solid #e2e2e2; +} +body .pubdate p { + display: inline; + margin-right: 10px; +} +@media (max-width: 800px) { + body .pubdate { + margin-top: 0; + text-align: left; + } +} +body .nav-blog { + text-align: right; +} +body .org-info-js_info-navigation { + background: #bbb; +} +@media (min-width: 800px) { + body #content { + margin: 0 auto; + max-width: 700px !important; + width: 700px !important; + } +} +body #content { + margin-top: 10px; +} +body .nav { + text-align: center; + margin-top: 30px; + border-bottom: 1px solid #e2e2e2; + font-size: 12px; + text-transform: uppercase; +} +body .nav ul { + list-style: none; + padding: 0; +} +body .nav ul li { + color: #999; + display: inline-block; + margin: 0; +} +body .nav ul li a { + display: inline-block; + padding-right: 6px; + border-radius: 0; + font-weight: normal; + color: #6a6a6a; +} +body .clearfix { + clear: both; +} +@media (min-width: 800px) { + body .contact { + -moz-column-count: 2; + -webkit-column-count: 2; + -moz-column-gap: 3em; + -webkit-column-gap: 3em; + column-count: 2; + column-gap: 3em; + } +} diff --git a/styles/syntax-coloring.css b/styles/syntax-coloring.css @@ -0,0 +1,323 @@ +/****************************** + * Org defaults + *** + * Source: org-plus-contrib/ox-html.el + ******************************/ +.title { text-align: center; + margin-bottom: .2em; } +.subtitle { text-align: center; + font-size: medium; + font-weight: bold; + margin-top:0; } +.todo { font-family: monospace; color: red; } +.done { font-family: monospace; color: green; } +.priority { font-family: monospace; color: orange; } +.tag { background-color: #eee; font-family: monospace; + padding: 2px; font-size: 80%; font-weight: normal; } +.timestamp { color: #bebebe; } +.timestamp-kwd { color: #5f9ea0; } +.org-right { margin-left: auto; margin-right: 0px; text-align: right; } +.org-left { margin-left: 0px; margin-right: auto; text-align: left; } +.org-center { margin-left: auto; margin-right: auto; text-align: center; } +.underline { text-decoration: underline; } +#postamble p, #preamble p { font-size: 90%; margin: .2em; } +p.verse { margin-left: 3%; } +pre { + border: 1px solid #ccc; + box-shadow: 3px 3px 3px #eee; + padding: 8pt; + font-family: monospace; + overflow: auto; + margin: 1.2em; +} +pre.src { + position: relative; + overflow: visible; + padding-top: 1.2em; +} +pre.src:before { + display: none; + position: absolute; + background-color: white; + top: -10px; + right: 10px; + padding: 3px; + border: 1px solid black; +} +pre.src:hover:before { display: inline;} +/* Languages per Org manual */ +pre.src-asymptote:before { content: 'Asymptote'; } +pre.src-awk:before { content: 'Awk'; } +pre.src-C:before { content: 'C'; } +/* pre.src-C++ doesn't work in CSS */ +pre.src-clojure:before { content: 'Clojure'; } +pre.src-css:before { content: 'CSS'; } +pre.src-D:before { content: 'D'; } +pre.src-ditaa:before { content: 'ditaa'; } +pre.src-dot:before { content: 'Graphviz'; } +pre.src-calc:before { content: 'Emacs Calc'; } +pre.src-emacs-lisp:before { content: 'Emacs Lisp'; } +pre.src-fortran:before { content: 'Fortran'; } +pre.src-gnuplot:before { content: 'gnuplot'; } +pre.src-haskell:before { content: 'Haskell'; } +pre.src-hledger:before { content: 'hledger'; } +pre.src-java:before { content: 'Java'; } +pre.src-js:before { content: 'Javascript'; } +pre.src-latex:before { content: 'LaTeX'; } +pre.src-ledger:before { content: 'Ledger'; } +pre.src-lisp:before { content: 'Lisp'; } +pre.src-lilypond:before { content: 'Lilypond'; } +pre.src-lua:before { content: 'Lua'; } +pre.src-matlab:before { content: 'MATLAB'; } +pre.src-mscgen:before { content: 'Mscgen'; } +pre.src-ocaml:before { content: 'Objective Caml'; } +pre.src-octave:before { content: 'Octave'; } +pre.src-org:before { content: 'Org mode'; } +pre.src-oz:before { content: 'OZ'; } +pre.src-plantuml:before { content: 'Plantuml'; } +pre.src-processing:before { content: 'Processing.js'; } +pre.src-python:before { content: 'Python'; } +pre.src-R:before { content: 'R'; } +pre.src-ruby:before { content: 'Ruby'; } +pre.src-sass:before { content: 'Sass'; } +pre.src-scheme:before { content: 'Scheme'; } +pre.src-screen:before { content: 'Gnu Screen'; } +pre.src-sed:before { content: 'Sed'; } +pre.src-sh:before { content: 'shell'; } +pre.src-sql:before { content: 'SQL'; } +pre.src-sqlite:before { content: 'SQLite'; } +/* additional languages in org.el's org-babel-load-languages alist */ +pre.src-forth:before { content: 'Forth'; } +pre.src-io:before { content: 'IO'; } +pre.src-J:before { content: 'J'; } +pre.src-makefile:before { content: 'Makefile'; } +pre.src-maxima:before { content: 'Maxima'; } +pre.src-perl:before { content: 'Perl'; } +pre.src-picolisp:before { content: 'Pico Lisp'; } +pre.src-scala:before { content: 'Scala'; } +pre.src-shell:before { content: 'Shell Script'; } +pre.src-ebnf2ps:before { content: 'ebfn2ps'; } +/* additional language identifiers per \"defun org-babel-execute\" + in ob-*.el */ +pre.src-cpp:before { content: 'C++'; } +pre.src-abc:before { content: 'ABC'; } +pre.src-coq:before { content: 'Coq'; } +pre.src-groovy:before { content: 'Groovy'; } +/* additional language identifiers from org-babel-shell-names in + ob-shell.el: ob-shell is the only babel language using a lambda to put + the execution function name together. */ +pre.src-bash:before { content: 'bash'; } +pre.src-csh:before { content: 'csh'; } +pre.src-ash:before { content: 'ash'; } +pre.src-dash:before { content: 'dash'; } +pre.src-ksh:before { content: 'ksh'; } +pre.src-mksh:before { content: 'mksh'; } +pre.src-posh:before { content: 'posh'; } +/* Additional Emacs modes also supported by the LaTeX listings package */ +pre.src-ada:before { content: 'Ada'; } +pre.src-asm:before { content: 'Assembler'; } +pre.src-caml:before { content: 'Caml'; } +pre.src-delphi:before { content: 'Delphi'; } +pre.src-html:before { content: 'HTML'; } +pre.src-idl:before { content: 'IDL'; } +pre.src-mercury:before { content: 'Mercury'; } +pre.src-metapost:before { content: 'MetaPost'; } +pre.src-modula-2:before { content: 'Modula-2'; } +pre.src-pascal:before { content: 'Pascal'; } +pre.src-ps:before { content: 'PostScript'; } +pre.src-prolog:before { content: 'Prolog'; } +pre.src-simula:before { content: 'Simula'; } +pre.src-tcl:before { content: 'tcl'; } +pre.src-tex:before { content: 'TeX'; } +pre.src-plain-tex:before { content: 'Plain TeX'; } +pre.src-verilog:before { content: 'Verilog'; } +pre.src-vhdl:before { content: 'VHDL'; } +pre.src-xml:before { content: 'XML'; } +pre.src-nxml:before { content: 'XML'; } +/* add a generic configuration mode; LaTeX export needs an additional + (add-to-list 'org-latex-listings-langs '(conf \" \")) in .emacs */ +pre.src-conf:before { content: 'Configuration File'; } + +table { border-collapse:collapse; } +caption.t-above { caption-side: top; } +caption.t-bottom { caption-side: bottom; } +td, th { vertical-align:top; } +th.org-right { text-align: center; } +th.org-left { text-align: center; } +th.org-center { text-align: center; } +td.org-right { text-align: right; } +td.org-left { text-align: left; } +td.org-center { text-align: center; } +dt { font-weight: bold; } +.footpara { display: inline; } +.footdef { margin-bottom: 1em; } +.figure { padding: 1em; } +.figure p { text-align: center; } +.inlinetask { + padding: 10px; + border: 2px solid gray; + margin: 10px; + background: #ffffcc; +} +#org-div-home-and-up + { text-align: right; font-size: 70%; white-space: nowrap; } +textarea { overflow-x: auto; } +.linenr { font-size: smaller } +.code-highlighted { background-color: #ffff00; } +.org-info-js_info-navigation { border-style: none; } +#org-info-js_console-label + { font-size: 10px; font-weight: bold; white-space: nowrap; } +.org-info-js_search-highlight + { background-color: #ffff00; color: #000000; font-weight: bold; } +.org-svg { width: 90%; } + +/****************************** + * Syntax highlighting + *** + * Source: https://github.com/fniessen/org-html-themes/blob/master/styles/bigblow/css/htmlize.css + ******************************/ +.org-bold { /* bold */ font-weight: bold; } +.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; } +.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; } +.org-builtin { /* font-lock-builtin-face */ color: #7a378b; } +.org-button { /* button */ text-decoration: underline; } +.org-calendar-today { /* calendar-today */ text-decoration: underline; } +.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; } +.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; } +.org-change-log-date { /* change-log-date */ color: #8b2252; } +.org-change-log-email { /* change-log-email */ color: #a0522d; } +.org-change-log-file { /* change-log-file */ color: #0000ff; } +.org-change-log-function { /* change-log-function */ color: #a0522d; } +.org-change-log-list { /* change-log-list */ color: #a020f0; } +.org-change-log-name { /* change-log-name */ color: #008b8b; } +.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; } +.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; } +.org-comment { /* font-lock-comment-face */ color: #b22222; } +.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #b22222; } +.org-completions-annotations { /* completions-annotations */ font-style: italic; } +.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; } +.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; } +.org-constant { /* font-lock-constant-face */ color: #008b8b; } +.org-diary { /* diary */ color: #ff0000; } +.org-diff-context { /* diff-context */ color: #7f7f7f; } +.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-function { /* diff-function */ background-color: #cccccc; } +.org-diff-header { /* diff-header */ background-color: #cccccc; } +.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; } +.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; } +.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; } +.org-dired-directory { /* dired-directory */ color: #0000ff; } +.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; } +.org-dired-header { /* dired-header */ color: #228b22; } +.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; } +.org-dired-mark { /* dired-mark */ color: #008b8b; } +.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; } +.org-dired-perm-write { /* dired-perm-write */ color: #b22222; } +.org-dired-symlink { /* dired-symlink */ color: #a020f0; } +.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; } +.org-doc { /* font-lock-doc-face */ color: #8b2252; } +.org-escape-glyph { /* escape-glyph */ color: #a52a2a; } +.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; } +.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; } +.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; } +.org-fringe { /* fringe */ background-color: #f2f2f2; } +.org-function-name { /* font-lock-function-name-face */ color: #0000ff; } +.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; } +.org-help-argument-name { /* help-argument-name */ font-style: italic; } +.org-highlight { /* highlight */ background-color: #b4eeb4; } +.org-holiday { /* holiday */ background-color: #ffc0cb; } +.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; } +.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; } +.org-italic { /* italic */ font-style: italic; } +.org-keyword { /* font-lock-keyword-face */ color: #a020f0; } +.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; } +.org-link { /* link */ color: #0000ff; text-decoration: underline; } +.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; } +.org-log-edit-header { /* log-edit-header */ color: #a020f0; } +.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; } +.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; } +.org-match { /* match */ background-color: #ffff00; } +.org-next-error { /* next-error */ background-color: #eedc82; } +.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; } +.org-org-archived { /* org-archived */ color: #7f7f7f; } +.org-org-block { /* org-block */ color: #7f7f7f; } +.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; } +.org-org-block-end-line { /* org-block-end-line */ color: #b22222; } +.org-org-checkbox { /* org-checkbox */ font-weight: bold; } +.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; } +.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; } +.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; } +.org-org-code { /* org-code */ color: #7f7f7f; } +.org-org-column { /* org-column */ background-color: #e5e5e5; } +.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; } +.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; } +.org-org-document-info { /* org-document-info */ color: #191970; } +.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; } +.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; } +.org-org-done { /* org-done */ color: #228b22; font-weight: bold; } +.org-org-drawer { /* org-drawer */ color: #0000ff; } +.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; } +.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; } +.org-org-formula { /* org-formula */ color: #b22222; } +.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; } +.org-org-hide { /* org-hide */ color: #ffffff; } +.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; } +.org-org-level-1 { /* org-level-1 */ color: #0000ff; } +.org-org-level-2 { /* org-level-2 */ color: #a0522d; } +.org-org-level-3 { /* org-level-3 */ color: #a020f0; } +.org-org-level-4 { /* org-level-4 */ color: #b22222; } +.org-org-level-5 { /* org-level-5 */ color: #228b22; } +.org-org-level-6 { /* org-level-6 */ color: #008b8b; } +.org-org-level-7 { /* org-level-7 */ color: #7a378b; } +.org-org-level-8 { /* org-level-8 */ color: #8b2252; } +.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; } +.org-org-meta-line { /* org-meta-line */ color: #b22222; } +.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; } +.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; } +.org-org-quote { /* org-quote */ color: #7f7f7f; } +.org-org-scheduled { /* org-scheduled */ color: #006400; } +.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; } +.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; } +.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; } +.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; } +.org-org-table { /* org-table */ color: #0000ff; } +.org-org-tag { /* org-tag */ font-weight: bold; } +.org-org-target { /* org-target */ text-decoration: underline; } +.org-org-time-grid { /* org-time-grid */ color: #b8860b; } +.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; } +.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; } +.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; } +.org-org-verse { /* org-verse */ color: #7f7f7f; } +.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; } +.org-outline-1 { /* outline-1 */ color: #0000ff; } +.org-outline-2 { /* outline-2 */ color: #a0522d; } +.org-outline-3 { /* outline-3 */ color: #a020f0; } +.org-outline-4 { /* outline-4 */ color: #b22222; } +.org-outline-5 { /* outline-5 */ color: #228b22; } +.org-outline-6 { /* outline-6 */ color: #008b8b; } +.org-outline-7 { /* outline-7 */ color: #7a378b; } +.org-outline-8 { /* outline-8 */ color: #8b2252; } +.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; } +.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; } +.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; } +.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; } +.org-region { /* region */ background-color: #eedc82; } +.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; } +.org-shadow { /* shadow */ color: #7f7f7f; } +.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; } +.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; } +.org-string { /* font-lock-string-face */ color: #8b2252; } +.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; } +.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; } +.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; } +.org-type { /* font-lock-type-face */ color: #228b22; } +.org-underline { /* underline */ text-decoration: underline; } +.org-variable-name { /* font-lock-variable-name-face */ color: #a0522d; } +.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; } +.org-widget-button { /* widget-button */ font-weight: bold; } +.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; } +.org-widget-documentation { /* widget-documentation */ color: #006400; } +.org-widget-field { /* widget-field */ background-color: #d9d9d9; } +.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; } +.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; } diff --git a/styles/topnav.css b/styles/topnav.css @@ -0,0 +1,59 @@ +@font-face { + font-family: Clear Sans; + src: url(/fonts/ClearSans-Regular.woff2); +} +body { + margin: 0; +} +/* Responsive Topnav https://www.w3schools.com/css/css_navbar_horizontal.asp */ +ul.topnav { + position: -webkit-sticky; /* Safari */ + position: sticky; + top: 0; + list-style-type: none; + margin: 0; + padding: 0; + overflow: hidden; + border-bottom: 1px solid #e0e0e0; + background-color: #ffffff; + line-height: 0.9em; +} +ul.topnav li { + float: left; + text-align: center; + margin: 0; +} +ul.topnav li a { + font-family: 'Clear Sans', sans-serif; + display: block; + color: gray; + text-align: center; + text-decoration: none; + padding: 0.8em 0.6em 0.6em 0.6em; +} +ul.topnav li a:hover:not(.active) { + color: #757575; + border-bottom: 3px solid #bdbdbd; +} +ul.topnav li a.active { + color: #757575; + border-bottom: 0.2em solid #757575; +} +ul.topnav li.right { + float: right; +} +@media screen and (max-width: 610px) { +/* ul.topnav li.right, */ +/* ul.topnav li {float: none;} */ + ul.topnav {line-height: 1.2em;} + ul.topnav li.home {width: 26.2%;} + ul.topnav li {width: 17.5%;} + ul.topnav li.right {width: 21.3%;} + ul.topnav li a {font-size: 20px;} +} +@media screen and (min-width: 610px) { + ul.topnav li {padding: 0 0.3em; width: 100px;} + ul.topnav li.home {padding: 0 1.8em 0 1.8em;} + ul.topnav li.right {padding: 0 1em 0 0;} + ul.topnav li a {font-size: 21px;} +} diff --git a/text/about.txt b/text/about.txt @@ -0,0 +1,25 @@ +About Dash Eclipse +------------------ + +Dash Eclipse is an open source enthusiast. + +GitLab | GitHub | Emails + +Editors: Vim, GNU Emacs +OS: Hackintosh, Void Linux (musl) +Keyboard Layouts: Programmer Dvorak, Right-handed Dvorak, Sangaline +Browser: Firefox, Chromium +Password manager: pass + + +About the Website +----------------- + +Source Code of Dash Eclipse's Personal Site by Dash Eclipse + +To the extent possible under law, the person who associated CC0 with +Dash Eclipse has waived all copyright and related or neighboring rights +to Source Code of Dash Eclipse's Personal Site. + +You should have received a copy of the CC0 legalcode along with this +work. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. diff --git a/text/cmatrix.txt b/text/cmatrix.txt @@ -0,0 +1,59 @@ +$ cmatrix -s +G @ b , : a c $ h i S F ( I 6 a m C +w P B x F L ? K f _ 9 + I * ! , A ^ +a P 5 1 V S c A G s a k K w C ] H 4 +\ ' h t 1 Q & q ' h T ) O F p a H J +R M X 7 p 8 R H 0 ; j G ] e 8 m c = +1 q a h t X ) Z - p O u j r R # l R +q n < x p w P t _ + ' / 8 D Y R i D +U [ c M ; l V r f : E [ t K l n x ] +^ Q w F g g ! c ] S ^ 3 n R \ ] ` +d a I T J C ; 7 ` ' N h P / 5 5 / +. 8 i ` f Q Z b R S 4 - s X 6 M j +9 H & T @ ) b w a C H G [ 6 F ' * x B +) 3 d W . N : W e $ ; x 5 K H ' ; k @ +$ F r $ f ` v ! P b p b r = ] \ f R ' +` z k K i N n i : Q G 0 2 g t w ( s # a +] + @ # \ F J $ a . < [ A V p 0 I < Y 9 +b p M 4 n 9 4 / _ V / 6 ` 2 y > % b p y +6 z K ? 3 O A ] U y : ) s B S m T O ? N +? M [ m ] m v _ * m ; 6 X ^ ' H * A 5 r o +^ x z S k E H k / F Q v ] 2 j e B h ) 4 > +d O a > T W S z t A h d ] ] 2 e B h = I +U q 5 N x o % w E ^ Z W 8 R H F ' X $ c , +D Y R $ j z # 2 g B M ] ] . S T P > D t K ^ g +N & M Q + C ) ! ( z M - z I ` $ V > X ] J ( 4 +X % # ( = = - + \ M ` Q [ ! # ` Y S F $ j v Q a " +& m q j B x \ K l * 3 i K s k ^ e A l i " _ ` u +0 > > m G 2 w U g V 5 a - ' . j ` q r * r 1 N V ) +A \ G L / . / & " l . y c z _ K ] < j c 1 + V ( S & +x h c p & - w ( t u Y q O i ^ < " m t F Q " $ , ! G +p Z C r Q N " W i > F 3 J f ( 9 ' Q @ d Q T * / S +B n j + ? K 0 I U ^ ! e 1 E O L x k G q 6 @ D b +\ 7 + C - f m t ? d Y m 5 1 K t g y = P ( T 0 O +u ^ $ U - A ] , 5 F i A # [ ; T R ( 6 J Q # 5 +E # q " # i f y t M 7 R 4 D ! Z : I k A S = j a +U D B : x . H b ; j & o K = A X : f + F 8 i & ++ z o 6 \ ( 2 b @ A ( g b [ , H < I U i 1 P +$ T k M v b u Z - N Q R < ; L R 8 H J b & 8 += [ S ! K 7 u * l y h H : S T : ? U w t o S +G " * h \ 3 H _ Z 7 0 s Q ! w ( B 6 . T $ * +# w N R L 8 \ k T 2 [ : , V v x ( i 9 * J d p +4 < Y R 5 u V t i d = w 4 . k M % . u $ 7 ^ - p Q +, y w m v G C _ T a ) < ] 5 . Z @ b . K 9 s ` 4 5 ^ +i g q R L u [ z r , X e d ` I [ : h e + ] ! ^ 5 , M +q h D = J y g t , Q : Z u . Y q d 3 - v . v 2 g w O +. E Z Y x L Q S k R $ _ h r % 4 & R r " g " @ , @ Z +l E $ d C r 1 Q f q 4 U [ E = 3 1 \ e ] @ t Q B # +A x * z I H N = V N P N H r G > C O f Q H f 4 +` : l j , < k t # L , T [ U i ? C 2 P w \ 4 +_ 9 c k W z ? n B k s z 3 l i L E / C G @ < +d A = ? U @ t v : R ' Y S I s W ` h e ] m + % 0 2 [ 7 % P K 4 K E y b q B V ; F n + C T X A x & / # 6 " i & 4 1 7 Z 7 , r + > x \ x L @ Q v ; ! 4 \ z 7 . $ . . S +L c ( & G z U S v 8 0 w ; O f n y 8 w +% * $ 4 ( " C ` ) L w t O 6 @ Y +Q [ l G / - . K m ' B 5 4 % 4 +S v / ' x & m " < G E M 7 h N +$ _ diff --git a/text/gpg.txt b/text/gpg.txt @@ -0,0 +1,24 @@ +$ gpg --import keys/dashezup-pubkey.asc +gpg: key 2463834FFD2CBDBB: public key "Dash Eclipse <dash@ezup.dev>" imported +gpg: Total number processed: 1 +gpg: imported: 1 +$ gpg --list-keys --with-subkey-fingerprint \ +\`> --keyid-format none | sed 's/\[ unknown\]/ /' +/home/dashezup/.gnupg/pubring.kbx +--------------------------------- +pub rsa4096 2020-06-21 [C] [expires: 2050-06-14] + 67965F307B110019691461A12463834FFD2CBDBB +uid Dash Eclipse <dash@ezup.dev> +uid Dash Eclipse <dashezup@disroot.org> +sub rsa4096 2020-06-21 [S] [expires: 2020-07-21] + 2D89245E3A1CA0A6C2227A7D1C376E4C5C004BE2 +sub rsa4096 2020-06-21 [E] [expires: 2020-07-21] + 4C565DC92AF11EB5B30D626A98CCFFE81DD5E34E + +$ curl -s 'https://api.protonmail.ch/pks/lookup?op=get&search=dashezup@protonmail.com' | gpg +gpg: WARNING: no command supplied. Trying to guess what you mean ... +pub rsa2048 2020-06-17 [SC] + 1084CEB0AFC0F003132F8F604802C6B37F40927D +uid dashezup@protonmail.com <dashezup@protonmail.com> +sub rsa2048 2020-06-17 [E] +$ _ diff --git a/text/neofetch.txt b/text/neofetch.txt @@ -0,0 +1,21 @@ +$ neofetch --color_blocks off + __.;=====;.__ dash@ezup-c201 + _.=+==++=++=+=+===;. -------------- + -=+++=+===+=+=+++++=_ OS: Void Linux armv7l + . -=:`` `--==+=++==. Host: Google Speedy + _vi, ` --+=++++: Kernel: 5.1.0 + .uvnvi. _._ -==+==+. Uptime: secs + .vvnvnI` .;==|==;. :|=||=|. Packages: 603 (xbps-query) ++QmQQmpvvnv; _yYsyQQWUUQQQm #QmQ#:QQQWUV$QQm. Shell: zsh 5.8 + -QQWQWpvvowZ?.wQQQE==<QWWQ/QWQW.QQWW(: jQWQE Resolution: 1366x768 + -$QQQQmmU' jQQQ@+=<QWQQ)mQQQ.mQQQC+;jWQQ@' WM: dwm + -$WQ8YnI: QWQQwgQQWV`mWQQ.jQWQQgyyWW@! Theme: Raleigh [GTK2/3] + -1vvnvv. `~+++` ++|+++ Icons: Paper-Mono-Dark [GTK2/3] + +vnvnnv, `-|=== Terminal: st + +vnvnvns. . :=- Terminal Font: Fira Code Medium + -Invnvvnsi..___..=sv=. ` CPU: Rockchip (Device Tree) (4) @ 1.800GHz + +Invnvnvnnnnnnnnvvnn;. Memory: 82MiB / 2005MiB + ~|Invnvnvvnvvvnnv}+` + -~|{*l}*|~ + +$ _