diff --git a/README.md b/README.md new file mode 100644 index 0000000..8780f8e --- /dev/null +++ b/README.md @@ -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 diff --git a/dist/assets/css/.gitkeep b/dist/assets/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dist/assets/css/default.css b/dist/assets/css/default.css new file mode 100644 index 0000000..52713f8 --- /dev/null +++ b/dist/assets/css/default.css @@ -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; } diff --git a/dist/assets/js/.gitkeep b/dist/assets/js/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/dist/assets/js/enum.js b/dist/assets/js/enum.js new file mode 100644 index 0000000..7d1bdf5 --- /dev/null +++ b/dist/assets/js/enum.js @@ -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); +} diff --git a/dist/assets/misc/PeterHarpendingResume.pdf b/dist/assets/misc/PeterHarpendingResume.pdf new file mode 100644 index 0000000..60c488d Binary files /dev/null and b/dist/assets/misc/PeterHarpendingResume.pdf differ diff --git a/dist/index.html b/dist/index.html index b120998..6429cb4 100644 --- a/dist/index.html +++ b/dist/index.html @@ -8,20 +8,21 @@ -

harpending.org

+
+

Up: Home; Last Updated: 2026-09-07

-

Personal website of Peter Harpending

+

harpending.org

-

Site tree

+

Personal website of Peter Harpending

- +

Quick Reference

-

External links

- -
  • X
  • + +
    diff --git a/dist/portfolio/index.html b/dist/portfolio/index.html index 6986f56..d17703f 100644 --- a/dist/portfolio/index.html +++ b/dist/portfolio/index.html @@ -9,9 +9,114 @@
    -

    Portfolio

    +

    Up: Home; Last Updated: 2026-09-07

    + +

    Portfolio - harpending.org

    + +

    + The purpose of this page is roughly to be a more detailed + version of my + resume. +

    + +

    + The projects here are listed roughly in order of how + important/impressive I think they are. +

    + +

    Contents

    +
    + +

    Flagship Projects

    +

    Rubicon

    +

    + 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. +

    + +
    Links
    + + +

    SFP

    +

    +

    + +

    WFC

    +

    +

    + +
    Links
    + + +

    erlang-sha3

    +

    +

    + +
    Links
    + + + +

    Miscellany

    +

    ansi.hrl

    +

    + 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). +

    +

    + ansi.hrl has grown organically over time across many + different projects. It is NOT comprehensive, nor + does it aim to solve every conceivable use case. It only + has the macros I actually use, and it only aims to + solve the problems I have actually encountered in + the wild. +

    + +
    Projects that use ansi.hrl
    + + +
    Links
    + + + + +

    Deprecated Projects

    +

    Jex and Sidekick

    +

    +

    + +
    Links
    + -

    Up: Home

    + +