version 0
This commit is contained in:
@@ -0,0 +1,7 @@
|
|||||||
|
# repo structure
|
||||||
|
|
||||||
|
```
|
||||||
|
dist/ this gets made into a tarball
|
||||||
|
```
|
||||||
|
|
||||||
|
idea is for now it's just dumb html website, in the future it could be hakyll or some dynamic buildy thing... we'll see
|
||||||
Vendored
Vendored
+33
@@ -0,0 +1,33 @@
|
|||||||
|
/* common definitions, such as colors */
|
||||||
|
* {
|
||||||
|
/* colors, picked randomishly off gajumining.com */
|
||||||
|
--white: #f7f8fb;
|
||||||
|
/* black */
|
||||||
|
--black: #1a2b29;
|
||||||
|
|
||||||
|
/* fonts */
|
||||||
|
--sfdefault: Helvetica, "Liberation Sans", FreeSans, Roboto, sans-serif;
|
||||||
|
--ttdefault: Inconsolata, "Liberation Mono", "Roboto Mono", monospace;
|
||||||
|
--def-line-height: 1.4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
body {
|
||||||
|
background: var(--white);
|
||||||
|
color: var(--black);
|
||||||
|
font-family: var(--sfdefault);
|
||||||
|
font-size: 12pt;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
line-height: var(--def-line-height);
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toc2 { margin-left: 8px; }
|
||||||
|
.toc3 { margin-left: 16px; }
|
||||||
|
.toc4 { margin-left: 24px; }
|
||||||
|
.toc5 { margin-left: 32px; }
|
||||||
Vendored
Vendored
+98
@@ -0,0 +1,98 @@
|
|||||||
|
// makes a table of contents
|
||||||
|
// top level is h2, goes down from there
|
||||||
|
|
||||||
|
let elt_toc = document.getElementById("toc");
|
||||||
|
let elts_enum = document.getElementsByClassName("enum");
|
||||||
|
|
||||||
|
// top level is h2
|
||||||
|
// if we see a bigger level
|
||||||
|
let last_level = 2;
|
||||||
|
|
||||||
|
let h2_idx = 0;
|
||||||
|
let h3_idx = 0;
|
||||||
|
let h4_idx = 0;
|
||||||
|
let h5_idx = 0;
|
||||||
|
|
||||||
|
// if we see an h2, reset the h3/h4/h5 indexes to 0
|
||||||
|
// if we see an h3, reset the h4/h5 indexes to 0
|
||||||
|
// so on
|
||||||
|
function reset_below(level) {
|
||||||
|
switch(level) {
|
||||||
|
case 2: h3_idx = 0;
|
||||||
|
case 3: h4_idx = 0;
|
||||||
|
case 4: h5_idx = 0;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// str index; e.g. "1.3.4"
|
||||||
|
function str_idx(level) {
|
||||||
|
// build up components in reverse
|
||||||
|
// so an h4 shouldn't have any h5 data
|
||||||
|
let components = [];
|
||||||
|
switch(level) {
|
||||||
|
case 5: components.push(h5_idx);
|
||||||
|
case 4: components.push(h4_idx);
|
||||||
|
case 3: components.push(h3_idx);
|
||||||
|
case 2: components.push(h2_idx);
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
components.reverse();
|
||||||
|
return components.join(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
// when we see a new element, increment the index
|
||||||
|
function incr(level) {
|
||||||
|
switch(level) {
|
||||||
|
case 2: h2_idx += 1; break;
|
||||||
|
case 3: h3_idx += 1; break;
|
||||||
|
case 4: h4_idx += 1; break;
|
||||||
|
case 5: h5_idx += 1; break;
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let this_enum_elt of elts_enum)
|
||||||
|
{
|
||||||
|
switch(this_enum_elt.tagName) {
|
||||||
|
case "H2": this_level = 2; break;
|
||||||
|
case "H3": this_level = 3; break;
|
||||||
|
case "H4": this_level = 4; break;
|
||||||
|
case "H5": this_level = 5; break;
|
||||||
|
default: this_level = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//console.log(this_enum_elt);
|
||||||
|
|
||||||
|
// increment index, reset those below
|
||||||
|
// so if we see an h2, bump up the h2 index, reset h3/h4/h5 to 0
|
||||||
|
reset_below(this_level);
|
||||||
|
incr(this_level);
|
||||||
|
|
||||||
|
// "Foo Bar" -> "1.3.4. Foo Bar"
|
||||||
|
let old_section_title = this_enum_elt.innerText;
|
||||||
|
let new_section_title = str_idx(this_level) + ". " + this_enum_elt.innerText;
|
||||||
|
|
||||||
|
this_enum_elt.innerText = new_section_title;
|
||||||
|
|
||||||
|
//console.log(new_section_title);
|
||||||
|
let entry_a = document.createElement('a');
|
||||||
|
|
||||||
|
// make an id for this entry if it doesn't exist
|
||||||
|
if (!this_enum_elt.id) {
|
||||||
|
// "Foo Bar" -> "foo-bar"
|
||||||
|
let words = old_section_title.split(" ");
|
||||||
|
let ident = words.map(function (s) { return s.toLowerCase(); }).join("-");
|
||||||
|
this_enum_elt.id = ident;
|
||||||
|
}
|
||||||
|
|
||||||
|
entry_a.href = "#" + this_enum_elt.id;
|
||||||
|
entry_a.innerText = new_section_title;
|
||||||
|
entry_a.classList += "toc" + this_level;
|
||||||
|
|
||||||
|
//console.log(entry_a);
|
||||||
|
let entry_br = document.createElement('br');
|
||||||
|
|
||||||
|
toc.appendChild(entry_a);
|
||||||
|
toc.appendChild(entry_br);
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
Vendored
+12
-11
@@ -8,20 +8,21 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<h1>harpending.org</h1>
|
<div class="content">
|
||||||
|
<p>Up: <a href="/">Home</a>; Last Updated: 2026-09-07</p>
|
||||||
|
|
||||||
<p>Personal website of Peter Harpending</p>
|
<h1>harpending.org</h1>
|
||||||
|
|
||||||
<h2>Site tree</h2>
|
<p>Personal website of Peter Harpending</p>
|
||||||
|
|
||||||
<ul>
|
<h2>Quick Reference</h2>
|
||||||
<li><a href="/portfolio/">Portfolio</a></li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<h2>External links</h2>
|
<ul>
|
||||||
<ul>
|
<li><a href="/portfolio/">Portfolio</a></li>
|
||||||
<li><a href="https://git.harpending.org">Git</a></li>
|
<li><a href="/assets/misc/PeterHarpendingResume.pdf">Resume (PDF)</a></li>
|
||||||
</ul>
|
<li><a href="https://git.harpending.org/pharpend/">git.harpending.org</a></li>
|
||||||
<li><a href="https://git.harpending.org">X</a></li>
|
<li><a href="https://www.youtube.com/@NoBSCryptoDev">YouTube Channel (No BS Crypto Development)</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Vendored
+107
-2
@@ -9,9 +9,114 @@
|
|||||||
|
|
||||||
<body>
|
<body>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>Portfolio</h1>
|
<p>Up: <a href="/">Home</a>; Last Updated: 2026-09-07</p>
|
||||||
|
|
||||||
|
<h1>Portfolio - harpending.org</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The purpose of this page is roughly to be a more detailed
|
||||||
|
version of <a href="/assets/misc/PeterHarpendingResume.pdf">my
|
||||||
|
resume</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
The projects here are listed roughly in order of how
|
||||||
|
important/impressive <em>I</em> think they are.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="contents">Contents</h2>
|
||||||
|
<div id="toc"></div>
|
||||||
|
|
||||||
|
<h2 class="enum">Flagship Projects</h2>
|
||||||
|
<h3 class="enum">Rubicon</h3>
|
||||||
|
<p>
|
||||||
|
Rubicon is a first-party addressing and authentication scheme
|
||||||
|
for online services that requires no trusted third party. All
|
||||||
|
data can be stored locally on the client machine. Rubicon
|
||||||
|
eliminates the neccesity for DNS and TLS, consequently
|
||||||
|
eliminating both as vectors for abuse.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h5>Links</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://git.harpending.org/pharpend/rbx">Git repo</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3 class="enum">SFP</h3>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h3 class="enum">WFC</h3>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h5>Links</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://wfc.harpending.org/">Demo</a></li>
|
||||||
|
<li><a href="https://git.harpending.org/pharpend/fewd">Demo git repo</a></li>
|
||||||
|
<li>
|
||||||
|
<a href="https://www.youtube.com/watch?v=_efyu4uF9b4">Talk explaining demo</a><br>
|
||||||
|
|
||||||
|
<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/_efyu4uF9b4?si=IRrQOvqtxqgm1ncc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3 class="enum">erlang-sha3</h3>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h5>Links</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://git.harpending.org/pharpend/kek">Pre-optimized implementation</a></li>
|
||||||
|
<li><a href="https://git.harpending.org/pharpend/erlang-sha3">Official product</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h2 class="enum">Miscellany</h2>
|
||||||
|
<h3 class="enum">ansi.hrl</h3>
|
||||||
|
<p>
|
||||||
|
I like making TUIs. This is an Erlang header file that has
|
||||||
|
grown organically across many of my projects. It has macros
|
||||||
|
for the useful ANSI control sequences (e.g. dimming text,
|
||||||
|
underline/bold/color).
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
ansi.hrl has grown organically over time across many
|
||||||
|
different projects. It is <b>NOT</b> comprehensive, nor
|
||||||
|
does it aim to solve every conceivable use case. It only
|
||||||
|
has the macros I <i>actually</i> use, and it only aims to
|
||||||
|
solve the problems I have <em>actually</em> encountered in
|
||||||
|
the wild.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h5>Projects that use ansi.hrl</h5>
|
||||||
|
<ul>
|
||||||
|
<li>SFP</li>
|
||||||
|
<li>Rubicon demo</li>
|
||||||
|
<li>WFC TUI</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h5>Links</h5>
|
||||||
|
<ul>
|
||||||
|
<li><a href="https://git.harpending.org/pharpend/ansi-hrl">Git repo</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2 class="enum">Deprecated Projects</h2>
|
||||||
|
<h3 class="enum">Jex and Sidekick</h3>
|
||||||
|
<p>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h5>Links</h5>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<a href="https://git.harpending.org/pharpend/Vanillae">Git repo</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<p>Up: <a href="/">Home</a></p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script src="/assets/js/enum.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user