From 90bbdce08f4321a7f38b40ecd2bc773ede55a7f3 Mon Sep 17 00:00:00 2001 From: Logan Date: Sun, 8 Sep 2024 06:27:49 -0500 Subject: [PATCH] meta content --- src/books/books.json | 142 +++++++++ src/books/index.md | 61 +--- src/css/style.css | 33 +- src/hyperspace/index.md | 16 + src/index.md | 22 +- src/js/components.js | 102 +++++-- src/music/albums.json | 420 +++++++++++++------------- src/music/index.md | 2 +- src/res/AtkinsonHyperlegible-Bold.ttf | Bin 0 -> 54444 bytes src/server-info.md | 14 + src/style-guide.md | 34 +++ 11 files changed, 520 insertions(+), 326 deletions(-) create mode 100644 src/books/books.json create mode 100644 src/hyperspace/index.md create mode 100644 src/res/AtkinsonHyperlegible-Bold.ttf create mode 100644 src/server-info.md create mode 100644 src/style-guide.md diff --git a/src/books/books.json b/src/books/books.json new file mode 100644 index 0000000..946799c --- /dev/null +++ b/src/books/books.json @@ -0,0 +1,142 @@ +{ + "completed": { + "desc": "Individual books, series, and manga I read and enjoyed enough to keep in my collection", + "items": [ + { + "main": "I am a Strange Loop", + "sub": "Douglass R. Hofstadter", + "url": "https://openlibrary.org/works/OL8067922W/I_Am_a_Strange_Loop?edition=key%3A/books/OL24948194M" + }, + { + "main": "2001 a Space Odyssey (series)", + "sub": "Arthur C. Clarke", + "url": "https://openlibrary.org/books/OL18674505M/2001" + }, + { + "main": "Zeros and Ones", + "sub": "Sadie Plant", + "url": "https://openlibrary.org/works/OL937516W/Zeros_and_Ones" + }, + { + "main": "Xenofeminism", + "sub": "Helen Hester", + "url": "https://openlibrary.org/works/OL20586475W/Xenofeminism" + }, + { + "main": "Daodejing (Wang Pi's commentary)", + "sub": "Lao-Tzu", + "url": "https://openlibrary.org/works/OL26585958W/Translation_of_Lao-Tzu%27s_Tao_Te_Ching_and_Wang_Pi%27s_Commentary?edition=key%3A/books/OL37483524M" + }, + { + "main": "Groundwork for the Metaphysics of Morals", + "sub": "Immanuel Kant", + "url": "https://openlibrary.org/works/OL99843W/Grundlegung_zur_Metaphysik_der_Sitten" + }, + { + "main": "The Burn Journals", + "sub": "Brent Runyon", + "url": "https://openlibrary.org/works/OL8043765W/The_Burn_Journals" + }, + { + "main": "The Hitch Hikers Guide to the Galaxy (series)", + "sub": "Douglas Adams", + "url": "https://openlibrary.org/works/OL2163649W/The_Hitch_Hiker%27s_Guide_to_the_Galaxy?edition=key%3A/books/OL32838419M" + }, + { + "main": "Six of Crows (duology)", + "sub": "Leigh Bardugo", + "url": "https://openlibrary.org/works/OL17332479W/Six_of_Crows?edition=key%3A/books/OL32178549M" + }, + { + "main": "Berserk (series)", + "sub": "三浦建太郎", + "url": "https://openlibrary.org/works/OL8988597W/Berserk_Vol._1" + }, + { + "main": "Hunter x Hunter (series)", + "sub": "冨樫 義博", + "url": "https://openlibrary.org/works/OL8215148W/Hunter_x_Hunter_Volume_1" + } + ] + }, + "backlog": { + "desc": "Works sitting on my shelf right now waiting to be read", + "items": [ + { + "main": "Gödel, Escher, Bach", + "sub": "Douglas R. Hofstadter", + "url": "https://openlibrary.org/works/OL716850W/G%C3%B6del_Escher_Bach" + }, + { + "main": "Snow Crash", + "sub": "Neal Stephenson", + "url": "https://openlibrary.org/works/OL38501W/Snow_Crash" + }, + { + "main": "Dune", + "sub": "Frank Herbert", + "url": "https://openlibrary.org/works/OL893415W/Dune?edition=key%3A/books/OL26242482M" + }, + { + "main": "Catch 22", + "sub": "Joseph Heller", + "url": "https://openlibrary.org/works/OL29300587W/Catch_22" + }, + { + "main": "The End of History and the Last Man", + "sub": "Francis Fukuyama", + "url": "https://openlibrary.org/works/OL2670501W/The_End_of_History_and_the_Last_Man" + }, + { + "main": "Spiritual Writings", + "sub": "Søren Kierkegaard", + "url": "https://openlibrary.org/works/OL112700W/Provocations?edition=key%3A/books/OL3319828M" + }, + { + "main": "Gravity's Rainbow", + "sub": "Thomas Pynchon", + "url": "https://openlibrary.org/works/OL24784277W/Beyond_Good_and_Evil" + }, + { + "main": "Beyond Good and Evil", + "sub": "Friedrich Nietzsche", + "url": "https://openlibrary.org/works/OL24784277W/Beyond_Good_and_Evil" + } + ] + }, + "novelties": { + "desc": "Books I will probably never read, but were interesting enough to collect anyway", + "items": [ + { + "main": "Raster Graphics Handbook", + "sub": "Van Nostrand Reinhold", + "url": "https://openlibrary.org/works/OL16444194W/Raster_graphics_handbook?edition=key%3A/books/OL2849584M" + }, + { + "main": "Fanged Noumena", + "sub": "Nick Land", + "url": "https://openlibrary.org/works/OL20705619W/Fanged_Noumena" + }, + { + "main": "Beginning Flash Game Programming for Dummies", + "sub": "Andy Harris", + "url": "https://openlibrary.org/works/OL4110556W/Beginning_Flash_Game_Programming_For_Dummies" + }, + { + "main": "The Infinite and the Final Cause for Creation", + "sub": "Emanuel Swedenborg", + "url": "https://openlibrary.org/works/OL33307W/Outlines_of_a_philosophical_argument_on_the_infinite" + }, + { + "main": "Compilers: Principles, Techniques, and Tools (1st ed)", + "sub": "Alfred V. Aho", + "url": "https://openlibrary.org/works/OL3509433W/Compilers_principles_techniques_and_tools" + }, + { + "main": "Hypermedia Systems", + "sub": "Carson Gross", + "url": "https://openlibrary.org/works/OL38674782W/Hypermedia_Systems?edition=key%3A/books/OL53364657M" + } + ] + } +} diff --git a/src/books/index.md b/src/books/index.md index 0eca95a..f185c3d 100644 --- a/src/books/index.md +++ b/src/books/index.md @@ -1,60 +1,5 @@ # books My favorite book is always the last one I read (unless it sucked) -## completed -Individual books, series, and manga I read and enjoyed enough to keep in my -collection -* [I am a Strange Loop](https://openlibrary.org/works/OL8067922W/I_Am_a_Strange_Loop?edition=key%3A/books/OL24948194M) - -_Douglas R. Hofstadter_ -* [2001 a Space Odyssey (series)](https://openlibrary.org/books/OL18674505M/2001) - -_Arthur C. Clarke_ -* [Zeros and Ones](https://openlibrary.org/works/OL937516W/Zeros_and_Ones) - -_Sadie Plant_ -* [Xenofeminism](https://openlibrary.org/works/OL20586475W/Xenofeminism) - -_Helen Hester_ -* [Daodejing (Wang Pi's commentary)](https://openlibrary.org/works/OL26585958W/Translation_of_Lao-Tzu%27s_Tao_Te_Ching_and_Wang_Pi%27s_Commentary?edition=key%3A/books/OL37483524M) - -_Lao-Tzu_ -* [Groundwork for the Metaphysics of Morals](https://openlibrary.org/works/OL99843W/Grundlegung_zur_Metaphysik_der_Sitten) - -_Immanuel Kant_ -* [The Burn Journals](https://openlibrary.org/works/OL8043765W/The_Burn_Journals) - -_Brent Runyon_ -* [The Hitch Hikers Guide to the Galaxy (series)](https://openlibrary.org/works/OL2163649W/The_Hitch_Hiker%27s_Guide_to_the_Galaxy?edition=key%3A/books/OL32838419M) - -_Douglas Adams_ -* [Six of Crows (duology)](https://openlibrary.org/works/OL17332479W/Six_of_Crows?edition=key%3A/books/OL32178549M) - -_Leigh Bardugo_ -* [Berserk (series)](https://openlibrary.org/works/OL8988597W/Berserk_Vol._1) - -_三浦建太郎_ -* [Hunter x Hunter (series)](https://openlibrary.org/works/OL8215148W/Hunter_x_Hunter_Volume_1) - -_冨樫 義博_ -## backlog -Works sitting on my shelf right now waiting to be read -* [Gödel, Escher, Bach](https://openlibrary.org/works/OL716850W/G%C3%B6del_Escher_Bach) - -_Douglas R. Hofstadter_ -* [Snow Crash](https://openlibrary.org/works/OL38501W/Snow_Crash) - -_Neal Stephenson_ -* [Dune](https://openlibrary.org/works/OL893415W/Dune?edition=key%3A/books/OL26242482M) - -_Frank Herbert_ -* [Catch 22](https://openlibrary.org/works/OL29300587W/Catch_22) - -_Joseph Heller_ -* [The End of History and the Last Man](https://openlibrary.org/works/OL2670501W/The_End_of_History_and_the_Last_Man) - -_Francis Fukuyama_ -* [Spiritual Writings](https://openlibrary.org/works/OL112700W/Provocations?edition=key%3A/books/OL3319828M) - -_Søren Kierkegaard_ -* [Gravity's Rainbow](https://openlibrary.org/works/OL2636675W/Gravity%27s_Rainbow) - -_Thomas Pynchon_ -* [Beyond Good and Evil](https://openlibrary.org/works/OL24784277W/Beyond_Good_and_Evil) - -_Friedrich Nietzsche_ -## novelties -Books I will probably never read, but were interesting -enough to collect anyway -* [Raster Graphics Handbook](https://openlibrary.org/works/OL16444194W/Raster_graphics_handbook?edition=key%3A/books/OL2849584M) - -_Van Nostrand Reinhold_ -* [Fanged Noumena](https://openlibrary.org/works/OL20705619W/Fanged_Noumena) - -_Nick Land_ -* [Beginning Flash Game Programming for Dummies](https://openlibrary.org/works/OL4110556W/Beginning_Flash_Game_Programming_For_Dummies) - -_Andy Harris_ -* [The Infinite and the Final Cause for Creation](https://openlibrary.org/works/OL33307W/Outlines_of_a_philosophical_argument_on_the_infinite) - -_Emanuel Swedenborg_ -* [Compilers: Principles, Techniques, and Tools (1st ed)](https://openlibrary.org/works/OL3509433W/Compilers_principles_techniques_and_tools) - -_Alfred V. Aho_ -* [Hypermedia Systems](https://openlibrary.org/works/OL38674782W/Hypermedia_Systems?edition=key%3A/books/OL53364657M) - -_Carson Gross_ + + + diff --git a/src/css/style.css b/src/css/style.css index 4b1b591..4e9e91b 100644 --- a/src/css/style.css +++ b/src/css/style.css @@ -46,37 +46,12 @@ table, th, td { align-content: center; } -a { +a, a:visited { color: #df3e23; - /* font-style: italic; */ font-weight: bold; text-decoration: none; } -a:visited { - color: #df3e23; - font-style: italic; - text-decoration: none; -} - -a:focus:before,a:active:before,a:hover:before { - content: "["; - font-style: normal; - color: black; - outline: none; - outline-color: transparent; - outline-style: none; -} - -a:focus:after,a:active:after,a:hover:after { - content: "]"; - font-style: normal; - color: black; - outline: none; - outline-color: transparent; - outline-style: none; -} - p,ul { margin-top: 0.3em; } @@ -109,7 +84,11 @@ figcaption { line-height: 110%; } -img { +img[src] { + border-radius: 0.25em; +} + +figure img { display: block; width: 100% } diff --git a/src/hyperspace/index.md b/src/hyperspace/index.md new file mode 100644 index 0000000..c063cde --- /dev/null +++ b/src/hyperspace/index.md @@ -0,0 +1,16 @@ +# hyperspace +## interesting sites +* [dimden](https://dimden.dev/) +* [zenmai studio](https://zenmaistudio.com/) +* [oddity commoddity](https://odditycommoddity.neocities.org/) +* [texture town](https://textures.neocities.org/) +* [cabbage sorter](https://cabbagesorter.neocities.org/) +* [mr bashful](https://mrbashful.com/) +* [sad girls club](https://sadgirlsclub.wtf/) +* [BJ's website](https://beedge.neocities.org/) +* [angels are mathematical](https://angelsaremathematical.neocities.org/) +* [psychocool](https://psychcool.org/links) +* [nenrikido](https://nenrikido.neocities.org/) +* [incessantpain](https://incessantpain.neocities.org/) +## cool webrings +* [neocratives](http://neocreatives.byethost5.com/) diff --git a/src/index.md b/src/index.md index 2e533d7..4b7b4a1 100644 --- a/src/index.md +++ b/src/index.md @@ -6,11 +6,19 @@ am from the United States, where I was born in 2003. In 2025 I will receive my bachellors in Computer Science from the [University of Texas at San Antonio](https://utsa.edu). - ## site map -* [my git server](https://git.lgatlin.dev/logan) - _personal code forge_ -* [software](/software) - _thoughts on programming_ -* [books](/books) - _reading corner_ -* [music](/music) - _sick tunes_ -* [toybox](/toys) - _awesome web apps_ -* [hyperspace](/hyperspace) - _everything world wide web_ +* [my git server](https://git.lgatlin.dev/logan) - _Private forgejo instance_ +* [software](/software) - _Thoughts on programming_ +* [books](/books) - _Reading corner_ +* [music](/music) - _Sick tunes_ +* [toybox](/toys) - _Awesome web apps_ +* [hyperspace](/hyperspace) - _Everything world wide web_ + +## meta +* [server info](/server-info.html) - _Technical information about this server_ +* [style guide](/style-guide.html) - _Formatting rules for this site_ + +
+
+If you're not remembered, then you never existed +
diff --git a/src/js/components.js b/src/js/components.js index 8cc74d5..80b399e 100644 --- a/src/js/components.js +++ b/src/js/components.js @@ -1,39 +1,85 @@ -async function figureGrid(jsonURL) { - const response = await fetch(jsonURL); - const json = await response.json(); - let html = ""; - for (const headerName in json) { - html = html.concat("
") - let entries = json[headerName]; - for (let i = 0; i < entries.length; i++) { - let entry = entries[i]; - html = html.concat( - `
- -
- ${entry.main}
- ${entry.sub} -
-
` - ); - } - html = html.concat("
") - } - return html; -} - -class FigureGrid extends HTMLElement { - static observedAttributes = ["src"]; +class JsonData extends HTMLElement { + static observedAttributes = ["src", "show"]; constructor() { super(); } + static grid(json) { + let html = ""; + for (const headerName in json) { + html = html.concat(` +

${headerName}

+

${json[headerName].desc || ""}

+
+ `); + let entries = json[headerName].items || []; + for (let i = 0; i < entries.length; i++) { + let entry = entries[i]; + html = html.concat( + `
+ +
+ ${entry.main}
+ ${entry.sub} +
+
` + ); + } + html = html.concat("
") + } + return html; + } + + static list(json) { + let html = ""; + for (const headerName in json) { + html = html.concat(` +

${headerName}

+

${json[headerName].desc || ""}

+ `); + let entries = json[headerName].items || []; + html = html.concat("") + } + return html; + } + + async connectedCallback() { + if (this.src == undefined) { + this.innerHTML = "src is undefined"; + return; + } + const response = await fetch(this.src); + const json = await response.json(); + switch(this.show) { + case "grid": + this.innerHTML = JsonData.grid(json); + break; + case "list": + this.innerHTML = JsonData.list(json); + break; + default: + break; + }; + } + async attributeChangedCallback(name, oldValue, newValue) { if (name == "src") { - this.innerHTML = await figureGrid(newValue); + this.src = newValue; + } else if (name == "show") { + this.show = newValue; } } } -customElements.define("figure-grid", FigureGrid); +customElements.define("json-data", JsonData); diff --git a/src/music/albums.json b/src/music/albums.json index 008a51c..819d844 100644 --- a/src/music/albums.json +++ b/src/music/albums.json @@ -1,207 +1,217 @@ { - "chill": [ - { - "main": "Cosmos", - "sub": "Yuji Ohno", - "url": "/res/albums/cosmos.webp" - }, - { - "main": "Deep Breakfast", - "sub": "Ray Lynch", - "url": "/res/albums/deep_breakfast.webp" - }, - { - "main": "Dune", - "sub": "David Matthews", - "url": "/res/albums/dune.webp" - }, - { - "main": "God's Trashmen Sent to Right the Mess", - "sub": "Fievel is Glauque", - "url": "/res/albums/gods_trashmen.webp" - }, - { - "main": "MACROCOSM", - "sub": "BALTHVS", - "url": "/res/albums/macrocosm.webp" - }, - { - "main": "Ciao! Baby", - "sub": "The Marshmallow Kisses", - "url": "/res/albums/ciao_baby.webp" - }, - { - "main": "an anxious object", - "sub": "mouse on the keys", - "url": "/res/albums/mouse_on_the_keys.webp" - }, - { - "main": "Funky Stuff", - "sub": " Jiro Inagaki", - "url": "/res/albums/funky_stuff.webp" - }, - { - "main": "Make Up City", - "sub": "CASIOPEA", - "url": "/res/albums/make_up_city.webp" - }, - { - "main": "Mint Jams", - "sub": "CASIOPEA", - "url": "/res/albums/mint_jams.webp" - } - ], - "experimental": [ - { - "main": "Departing", - "sub": "Jesus Molina", - "url": "/res/albums/departing.webp" - }, - { - "main": "Choose your Weapon", - "sub": "Hiatus Kaiyote", - "url": "/res/albums/choose_your_weapon.webp" - }, - { - "main": "Hold Your Horse Is", - "sub": "Hella", - "url": "/res/albums/hold_your_horse_is.webp" - }, - { - "main": "Mother Earth's Plantasia", - "sub": "Mort Garson", - "url": "/res/albums/plantasia.webp" - }, - { - "main": "The Wozard of Iz - An Electronic Odyssey", - "sub": "Mort Garson", - "url": "/res/albums/wozard_of_iz.webp" - }, - { - "main": "Los Desamores de Dewey Martino", - "sub": "Dewey Martino", - "url": "/res/albums/los_desamores_de_dewey_martino.webp" - }, - { - "main": "New History Warfare Vol. 3: To See More Light", - "sub": "Colin Stetson", - "url": "/res/albums/new_history_warfare_3.webp" - }, - { - "main": "Hylics 2 Original Soundtrack", - "sub": "Chuck Salamone", - "url": "/res/albums/hylics2.webp" - } - ], - "electronic": [ - { - "main": "H.A.Q.Q.", - "sub": "Liturgy", - "url": "/res/albums/haqq.webp" - }, - { - "main": "One Year Madness", - "sub": "Golemm", - "url": "/res/albums/one_year_madness.webp" - }, - { - "main": "Cyberspace", - "sub": "Yameii Online", - "url": "/res/albums/cyberspace.webp" - }, - { - "main": "Wlfgrl", - "sub": "Machine Girl", - "url": "/res/albums/wlfgrl.webp" - }, - { - "main": "...Because I'm Young Arrogant and Hate Everything You Stand For", - "sub": "Machine Girl", - "url": "/res/albums/young_arrogant.webp" - }, - { - "main": "Parousia", - "sub": "XI", - "url": "/res/albums/parousia.webp" - }, - { - "main": "www.", - "sub": "cosmic collective", - "url": "/res/albums/www.webp" - }, - { - "main": "TMP2", - "sub": "Graham Kartna", - "url": "/res/albums/tmp2.webp" - } - ], - "high energy": [ - { - "main": "Each and Every Word Leaves Me Here Alone", - "sub": "Foreground Eclipse", - "url": "/res/albums/fge_1.webp" - }, - { - "main": "Missing, Loving, Suffering", - "sub": "Foreground Eclipse", - "url": "/res/albums/fge_2.webp" - }, - { - "main": "ITEKOMA HITS", - "sub": "Otoboke Beaver", - "url": "/res/albums/itekoma_hits.webp" - }, - { - "main": "World is Yours", - "sub": "MASS OF THE FERMENTING DREGS", - "url": "/res/albums/world_is_yours.webp" - }, - { - "main": "New Levels New Devils", - "sub": "Polyphia", - "url": "/res/albums/new_levels_new_devils.webp" - } - ], - "misc": [ - { - "main": "27 Demos", - "sub": "Margo Guryan ", - "url": "/res/albums/27_demos.webp" - }, - { - "main": "the first glass beach album", - "sub": "Glass Beach", - "url": "/res/albums/glass_beach.webp" - }, - { - "main": "Her Abiding Memory", - "sub": "Pitcher56", - "url": "/res/albums/her_abiding_memory.webp" - }, - { - "main": "High Society", - "sub": "Enon", - "url": "/res/albums/high_society.webp" - }, - { - "main": "Live at Bush Hall", - "sub": "Black Country, New Road", - "url": "/res/albums/live_at_bush_hall.webp" - }, - { - "main": "Mass Teen Fainting", - "sub": "Plumtree", - "url": "/res/albums/mass_teen_fainting.webp" - }, - { - "main": "My Caution Line", - "sub": "Citrobal", - "url": "/res/albums/my_caution_line.webp" - }, - { - "main": "Oncle Jazz", - "sub": "Men I Trust", - "url": "/res/albums/oncle_jazz.webp" - } - ] + "chill": { + "items": [ + { + "main": "Cosmos", + "sub": "Yuji Ohno", + "url": "/res/albums/cosmos.webp" + }, + { + "main": "Deep Breakfast", + "sub": "Ray Lynch", + "url": "/res/albums/deep_breakfast.webp" + }, + { + "main": "Dune", + "sub": "David Matthews", + "url": "/res/albums/dune.webp" + }, + { + "main": "God's Trashmen Sent to Right the Mess", + "sub": "Fievel is Glauque", + "url": "/res/albums/gods_trashmen.webp" + }, + { + "main": "MACROCOSM", + "sub": "BALTHVS", + "url": "/res/albums/macrocosm.webp" + }, + { + "main": "Ciao! Baby", + "sub": "The Marshmallow Kisses", + "url": "/res/albums/ciao_baby.webp" + }, + { + "main": "an anxious object", + "sub": "mouse on the keys", + "url": "/res/albums/mouse_on_the_keys.webp" + }, + { + "main": "Funky Stuff", + "sub": " Jiro Inagaki", + "url": "/res/albums/funky_stuff.webp" + }, + { + "main": "Make Up City", + "sub": "CASIOPEA", + "url": "/res/albums/make_up_city.webp" + }, + { + "main": "Mint Jams", + "sub": "CASIOPEA", + "url": "/res/albums/mint_jams.webp" + } + ] + }, + "experimental": { + "items": [ + { + "main": "Departing", + "sub": "Jesus Molina", + "url": "/res/albums/departing.webp" + }, + { + "main": "Choose your Weapon", + "sub": "Hiatus Kaiyote", + "url": "/res/albums/choose_your_weapon.webp" + }, + { + "main": "Hold Your Horse Is", + "sub": "Hella", + "url": "/res/albums/hold_your_horse_is.webp" + }, + { + "main": "Mother Earth's Plantasia", + "sub": "Mort Garson", + "url": "/res/albums/plantasia.webp" + }, + { + "main": "The Wozard of Iz - An Electronic Odyssey", + "sub": "Mort Garson", + "url": "/res/albums/wozard_of_iz.webp" + }, + { + "main": "Los Desamores de Dewey Martino", + "sub": "Dewey Martino", + "url": "/res/albums/los_desamores_de_dewey_martino.webp" + }, + { + "main": "New History Warfare Vol. 3: To See More Light", + "sub": "Colin Stetson", + "url": "/res/albums/new_history_warfare_3.webp" + }, + { + "main": "Hylics 2 Original Soundtrack", + "sub": "Chuck Salamone", + "url": "/res/albums/hylics2.webp" + } + ] + }, + "electronic": { + "items": [ + { + "main": "H.A.Q.Q.", + "sub": "Liturgy", + "url": "/res/albums/haqq.webp" + }, + { + "main": "One Year Madness", + "sub": "Golemm", + "url": "/res/albums/one_year_madness.webp" + }, + { + "main": "Cyberspace", + "sub": "Yameii Online", + "url": "/res/albums/cyberspace.webp" + }, + { + "main": "Wlfgrl", + "sub": "Machine Girl", + "url": "/res/albums/wlfgrl.webp" + }, + { + "main": "...Because I'm Young Arrogant and Hate Everything You Stand For", + "sub": "Machine Girl", + "url": "/res/albums/young_arrogant.webp" + }, + { + "main": "Parousia", + "sub": "XI", + "url": "/res/albums/parousia.webp" + }, + { + "main": "www.", + "sub": "cosmic collective", + "url": "/res/albums/www.webp" + }, + { + "main": "TMP2", + "sub": "Graham Kartna", + "url": "/res/albums/tmp2.webp" + } + ] + }, + "high energy": { + "items": [ + { + "main": "Each and Every Word Leaves Me Here Alone", + "sub": "Foreground Eclipse", + "url": "/res/albums/fge_1.webp" + }, + { + "main": "Missing, Loving, Suffering", + "sub": "Foreground Eclipse", + "url": "/res/albums/fge_2.webp" + }, + { + "main": "ITEKOMA HITS", + "sub": "Otoboke Beaver", + "url": "/res/albums/itekoma_hits.webp" + }, + { + "main": "World is Yours", + "sub": "MASS OF THE FERMENTING DREGS", + "url": "/res/albums/world_is_yours.webp" + }, + { + "main": "New Levels New Devils", + "sub": "Polyphia", + "url": "/res/albums/new_levels_new_devils.webp" + } + ] + }, + "misc": { + "items": [ + { + "main": "27 Demos", + "sub": "Margo Guryan ", + "url": "/res/albums/27_demos.webp" + }, + { + "main": "the first glass beach album", + "sub": "Glass Beach", + "url": "/res/albums/glass_beach.webp" + }, + { + "main": "Her Abiding Memory", + "sub": "Pitcher56", + "url": "/res/albums/her_abiding_memory.webp" + }, + { + "main": "High Society", + "sub": "Enon", + "url": "/res/albums/high_society.webp" + }, + { + "main": "Live at Bush Hall", + "sub": "Black Country, New Road", + "url": "/res/albums/live_at_bush_hall.webp" + }, + { + "main": "Mass Teen Fainting", + "sub": "Plumtree", + "url": "/res/albums/mass_teen_fainting.webp" + }, + { + "main": "My Caution Line", + "sub": "Citrobal", + "url": "/res/albums/my_caution_line.webp" + }, + { + "main": "Oncle Jazz", + "sub": "Men I Trust", + "url": "/res/albums/oncle_jazz.webp" + } + ] + } } diff --git a/src/music/index.md b/src/music/index.md index 7cc161b..c161cc5 100644 --- a/src/music/index.md +++ b/src/music/index.md @@ -3,4 +3,4 @@ Music is a huge passion of mine. I prefer listening to albums in full from start to finish in order. My favorite albums are usually experimental, unique, or have a particular theme they explore - + diff --git a/src/res/AtkinsonHyperlegible-Bold.ttf b/src/res/AtkinsonHyperlegible-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c72b4889f0439e1d0d1de19b0cc270711e5c9809 GIT binary patch literal 54444 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 TKr#_LfslvfIfvvCp7Z|;vKEK6 literal 0 HcmV?d00001 diff --git a/src/server-info.md b/src/server-info.md new file mode 100644 index 0000000..6f56ba0 --- /dev/null +++ b/src/server-info.md @@ -0,0 +1,14 @@ +# server info +## hardware +I host this website locally on an [Intel +NUC](https://www.intel.com/content/dam/support/us/en/documents/mini-pcs/NUC8i3BE_NUC8i5BE_NUC8i7BE_TechProdSpec.pdf). +It runs an i3-8109U 4 core 3.6 GHz processor, 32 GB of RAM, and 120 GB SSD +storage. +## software +Pages and resources are served using Apache. I write pages using a custom +subset of markup, which gets compiled to static HTML files using my [simple +build system](https://git.lgatlin.dev/logan/mdconvert). Deployments are handled +automatically using git hooks. I host my own [forgejo](https://forgejo.org/) +git instance on the same machine, which makes continuous integration simple and +fast + diff --git a/src/style-guide.md b/src/style-guide.md new file mode 100644 index 0000000..9f7a67d --- /dev/null +++ b/src/style-guide.md @@ -0,0 +1,34 @@ +# style guide +Having a consistent design language is very important to me. This document lays +out specific stylistic rules for pages on this site. Human error is always a +factor, and so these rules are more prescription than description +## headings +One heading should appear at the top of every page. Text should contain only +lowercase ascii alphabetic characters. It should represent the title of the +page, and match the URL tail (substituting spaces for hyphens, and sans +file extension) +## subheadings +Pages may have any number of subheadings under the top level heading. Text +should contain only lowercase ascii alphabetic characters. A subheading must +never be immediately followed by another subheading +## paragraphs +Paragraph text should be written in complete grammatically correct sentences, +and may use any non-emoji unicode characters. The last sentence in a paragraph +should not end in a period if the paragraph is followed by anything other than +another paragraph +## hyperlinks +Hyperlinks may appear inline in any text other than headings and subheadings. +The hyperlink text should be descriptive of the page it is linking to, and +never the same as the link itself (e.g. [logan's site](/) not +[https://lgatlin.dev/](/)). Internal links should have the same text as the +page title they link to. Hyperlinks should be used liberally, and regularly +audited for dead or redirected targets +## lists +List items should begin with a title that is all lowercase, optionally followed +by a hyphen ('-') and a subtitle or attribution. The subtitle or attribution +should start with a capital letter and contain no punctuation +## collage +A collage consists of a set of images, optionally with a title and subtitle +below each image. Collages should not be on a fixed grid, and should rearrange +themselves to best fit the screen dimensions. Image titles may contain +hyperlinks, but images may never be hyperlinks themselves