summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagdalena Szweda <hi@roughlynamed.net>2026-10-04 10:45:22 +0200
committerMagdalena Szweda <hi@roughlynamed.net>2026-10-06 14:09:45 +0200
commit44f4bb35b0057eca28ea7d7d93d765b9608d607d (patch)
tree41fffdec2e895d22e609f371ac9d171cba3f17c5
parent9a0b9ef98d47951b00b84da7ed62820c0d00de89 (diff)
lotta fucking stuff
-rw-r--r--.htmlhintrc46
-rw-r--r--.oxlintrc.json8
-rw-r--r--404.html55
-rw-r--r--about.html471
-rw-r--r--ai.html84
-rw-r--r--assets/gentoo.gifbin0 -> 2337 bytes
-rw-r--r--atproto/index.html2
-rw-r--r--blank.html1
-rw-r--r--contact.html16
-rw-r--r--fakeindex.html22
-rw-r--r--fonts/aachen-bold/Aachen Bold/readme.html277
-rw-r--r--girl.html85
-rw-r--r--height.js10
-rw-r--r--hello.html76
-rw-r--r--humans.txt8
-rw-r--r--index.html53
-rw-r--r--now.html65
-rw-r--r--publications.js28
-rw-r--r--scrobbles.js26
-rw-r--r--slashes.html307
-rw-r--r--style.css40
-rw-r--r--style.css-pre-sansserif-everything404
-rw-r--r--tarantino/index.html46
-rw-r--r--tarantino/tarantino-style.css11
-rw-r--r--uses.html11
-rw-r--r--webring.js212
-rw-r--r--webrings.html182
27 files changed, 1335 insertions, 1211 deletions
diff --git a/.htmlhintrc b/.htmlhintrc
index 2a29258..f83c519 100644
--- a/.htmlhintrc
+++ b/.htmlhintrc
@@ -1,25 +1,25 @@
{
- "alt-require": true,
- "attr-lowercase": true,
- "attr-no-duplication": true,
- "attr-value-double-quotes": true,
- "attr-value-no-duplication": true,
- "button-type-require": true,
- "doctype-first": true,
- "doctype-html5": true,
- "frame-title-require": true,
- "h1-require": true,
- "html-lang-require": true,
- "id-unique": true,
- "input-requires-label": true,
- "main-require": true,
- "meta-charset-require": true,
- "meta-description-require": true,
- "meta-viewport-require": true,
- "spec-char-escape": true,
- "src-not-empty": true,
- "tag-no-obsolete": true,
- "tag-pair": true,
- "tagname-lowercase": true,
- "title-require": true
+ "alt-require": true,
+ "attr-lowercase": true,
+ "attr-no-duplication": true,
+ "attr-value-double-quotes": true,
+ "attr-value-no-duplication": true,
+ "button-type-require": true,
+ "doctype-first": true,
+ "doctype-html5": true,
+ "frame-title-require": true,
+ "h1-require": true,
+ "html-lang-require": true,
+ "id-unique": true,
+ "input-requires-label": true,
+ "main-require": true,
+ "meta-charset-require": true,
+ "meta-description-require": true,
+ "meta-viewport-require": true,
+ "spec-char-escape": true,
+ "src-not-empty": true,
+ "tag-no-obsolete": true,
+ "tag-pair": true,
+ "tagname-lowercase": true,
+ "title-require": true
}
diff --git a/.oxlintrc.json b/.oxlintrc.json
index 75868c2..31e054f 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -1,10 +1,6 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
- "plugins": [
- "typescript",
- "unicorn",
- "oxc"
- ],
+ "plugins": ["typescript", "unicorn", "oxc"],
"categories": {
"correctness": "error"
},
@@ -12,4 +8,4 @@
"env": {
"builtin": true
}
-} \ No newline at end of file
+}
diff --git a/404.html b/404.html
index 03d8578..e4dd920 100644
--- a/404.html
+++ b/404.html
@@ -18,35 +18,30 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
- <head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="description" content="404 :(" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>
- 404 :: roughlynamed
- </title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="preconnect" href="https://libre.fm" />
- <link rel="stylesheet" href="/style.css" />
- </head>
- <body>
- <br />
- <main>
- <h1>
- 404
- </h1>
- <p>
- uh-oh! looks like you tried to open a file that isn't there!
- </p>
- <p>
- what can you do? uhh, i dont know DIPSHIT maybe dont try to open files that dont exist?!
- </p>
- <p>
- this might be my fault though so heres a link to the <a href="/fakeindex.html">home page</a>, WHICH WILL ALWAYS WORK!!
- </p>
- </main>
- </body>
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="description" content="404 :(" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>404 :: roughlynamed</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="preconnect" href="https://libre.fm" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+ <body>
+ <br />
+ <main>
+ <h1>404</h1>
+ <p>uh-oh! looks like you tried to open a file that isn't there!</p>
+ <p>
+ what can you do? uhh, i dont know DIPSHIT maybe dont try to open files that dont exist?!
+ </p>
+ <p>
+ this might be my fault though so heres a link to the
+ <a href="/fakeindex.html">home page</a>, WHICH WILL ALWAYS WORK!!
+ </p>
+ </main>
+ </body>
</html>
diff --git a/about.html b/about.html
index 59fa272..8892e41 100644
--- a/about.html
+++ b/about.html
@@ -18,288 +18,213 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
- <head>
- <meta charset="UTF-8" />
- <meta name="description" content="about me!" />
- <meta name="theme-color" content="#f8efdf" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>
- /about :: roughlynamed
- </title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="stylesheet" href="/style.css" />
- </head>
- <body>
- <nav>
- <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a> <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a> <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
- </nav>
- <h1>
-
- /about
- </h1>
- <main>
- <p>
- Hi, I'm Madeline (<a href="/assets/madeline.wav" onclick="event.preventDefault(); new Audio(this.href).play();">/ˈmæd.ə.lɪn/</a>) , I am a transfemme furry programmer
- </p>
- <p>
- I somehow ended up running this website on my Raspberry Pi Zero W. A tiny Pi.
- </p>
- <p>
- Fursona: Cottonball (deer)
- </p>
- <section class="terminology">
- <h2>
- Terminology
- </h2>
- <p class="terminology-intro">
- These aren't requirements, just the terms and pronouns I generally prefer. Don't worry if you get something wrong!
- </p>
- <div class="terminology-grid">
- <div>
- <h3>
- Names
- </h3>
- <ul>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Madeline
- </li>
- <li class="rating-like">Madilyn
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />puss puss
- </li>
- <li class="rating-like">Cottonball
- </li>
- <li class="rating-like">Sophie
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />(Deadname)
- </li>
- </ul>
- </div>
- <div>
- <h3>
- Pronouns
- </h3>
- <ul>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />she/her
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />they/them
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />he/him
- </li>
- <li class="rating-maybe">neopronouns
- </li>
- <li class="rating-maybe">it/its
- </li>
- </ul>
- </div>
- <div>
- <h3>
- Honorifics
- </h3>
- <ul>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />(None)
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Ms
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Ma'am
- </li>
- <li class="rating-like">Mrs
- </li>
- <li class="rating-like">Madam
- </li>
- <li class="rating-okay">Mx
- </li>
- <li class="rating-okay">Master
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />Mr
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />Sir
- </li>
- </ul>
- </div>
- <div>
- <h3>
- Terms
- </h3>
- <ul>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Girl
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Girlie
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Cutie
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Deer
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Deergirl
- </li>
- <li class="rating-like">Person
- </li>
- <li class="rating-like">Sister
- </li>
- <li class="rating-okay">Daughter
- </li>
- <li class="rating-okay">Sibling
- </li>
- <li class="rating-maybe">Bro
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />Boy
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />Man
- </li>
- </ul>
- </div>
- <div>
- <h3>
- Compliments
- </h3>
- <ul>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Pretty
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Cute
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />Good girl
- </li>
- <li class="rating-love">
- <img class="icon" src="/assets/images/icons/heart.png" />X11 Slut
- </li>
- <li class="rating-okay">Handsome
- </li>
- <li class="rating-okay">Fine
- </li>
- <li class="rating-never">
- <img class="icon" src="/assets/images/icons/cross.png" />Wayland Enjoyer
- </li>
- </ul>
- </div>
- </div>
- </section>
- <h2>
- My interests
- </h2>
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="description" content="about me!" />
+ <meta name="theme-color" content="#f8efdf" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>/about :: roughlynamed</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+ <body>
+ <nav>
+ <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> d
+ <a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <h1>/about</h1>
+ <main>
+ <p>
+ Hi, I'm Madeline (<a
+ href="/assets/madeline.wav"
+ onclick="
+ event.preventDefault();
+ new Audio(this.href).play();
+ "
+ >/ˈmæd.ə.lɪn/</a
+ >) , I am a transfemme furry programmer
+ </p>
+ <p>I somehow ended up running this website on my Raspberry Pi Zero W. A tiny Pi.</p>
+ <p>Fursona: Cottonball (deer)</p>
+ <section class="terminology">
+ <h2>Terminology</h2>
+ <p class="terminology-intro">
+ These aren't requirements, just the terms and pronouns I generally prefer. Don't worry if
+ you get something wrong!
+ </p>
+ <div class="terminology-grid">
+ <div>
+ <h3>Names</h3>
<ul>
- <li>NixOS
- </li>
- <li>Computers
- </li>
- <li>Space
- </li>
- <li>Coding
- </li>
- <li>Reading
- </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Madeline
+ </li>
+ <li class="rating-like">Madilyn</li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />puss puss
+ </li>
+ <li class="rating-like">Cottonball</li>
+ <li class="rating-like">Sophie</li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />(Deadname)
+ </li>
</ul>
- <h2>
- Likes:
- </h2>
+ </div>
+ <div>
+ <h3>Pronouns</h3>
<ul>
- <li>space
- </li>
- <li>furries
- </li>
- <li>learning new things.
- </li>
- <li>Books! Books! Books!
- </li>
- <li>*nix
- </li>
- <li>*BSD
- </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />she/her
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />they/them
+ </li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />he/him
+ </li>
+ <li class="rating-maybe">neopronouns</li>
+ <li class="rating-maybe">it/its</li>
</ul>
- <h2>
- Dislikes/DNI:
- </h2>
+ </div>
+ <div>
+ <h3>Honorifics</h3>
<ul>
- <li>lolicons
- </li>
- <li>noncons (non consensual :/ )
- </li>
- <li>proshippers
- </li>
- <li>people that use AI for basic tasks (coding, looking things up, etc.)
- </li>
- <li>Russians
- </li>
- <li>Norwegians(except Emy)
- </li>
- <li>MAGA
- </li>
- <li>t-phobes
- </li>
- <li>femboys
- </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />(None)
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Ms
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Ma'am
+ </li>
+ <li class="rating-like">Mrs</li>
+ <li class="rating-like">Madam</li>
+ <li class="rating-okay">Mx</li>
+ <li class="rating-okay">Master</li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />Mr
+ </li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />Sir
+ </li>
</ul>
- <p>
- I also like music, don't ask me what genre i like,
- </p>
- <p>
- it ranges from indie to pop to death metal to incelcore
- </p>
- <h2>
- as an example:
- </h2>
+ </div>
+ <div>
+ <h3>Terms</h3>
<ul>
- <li>Tally Hall (by far my fav)
- </li>
- <li>Jack Stauber
- </li>
- <li>Elio Mei
- </li>
- <li>Queen
- </li>
- <li>Fried By Fluoride
- </li>
- <li>TV Girl
- </li>
- <li>many more...
- </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Girl
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Girlie
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Cutie
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Deer
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Deergirl
+ </li>
+ <li class="rating-like">Person</li>
+ <li class="rating-like">Sister</li>
+ <li class="rating-okay">Daughter</li>
+ <li class="rating-okay">Sibling</li>
+ <li class="rating-maybe">Bro</li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />Boy
+ </li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />Man
+ </li>
</ul>
- <p>
- I am currently learning Haskell, but i have a background of languages, e.g:
- </p>
+ </div>
+ <div>
+ <h3>Compliments</h3>
<ul>
- <li>Golang
- </li>
- <li>Guile Scheme
- </li>
- <li>Nix
- </li>
- <li>Python
- </li>
- <li>Bash
- </li>
- <li>C
- </li>
- <li>Java
- </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Pretty
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Cute
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />Good girl
+ </li>
+ <li class="rating-love">
+ <img class="icon" src="/assets/images/icons/heart.png" />X11 Slut
+ </li>
+ <li class="rating-okay">Handsome</li>
+ <li class="rating-okay">Fine</li>
+ <li class="rating-never">
+ <img class="icon" src="/assets/images/icons/cross.png" />Wayland Enjoyer
+ </li>
</ul>
- <p>
- all of these gave up on except nixos.
- </p>
- <p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a> — <a href="COPYING">GNU AGPLv3</a>
- </p>
- </main>
- </body>
+ </div>
+ </div>
+ </section>
+ <h2>My interests</h2>
+ <ul>
+ <li>NixOS</li>
+ <li>Computers</li>
+ <li>Space</li>
+ <li>Coding</li>
+ <li>Reading</li>
+ </ul>
+ <h2>Likes:</h2>
+ <ul>
+ <li>space</li>
+ <li>furries</li>
+ <li>learning new things.</li>
+ <li>Books! Books! Books!</li>
+ <li>*nix</li>
+ <li>*BSD</li>
+ </ul>
+ <h2>Dislikes/DNI:</h2>
+ <ul>
+ <li>lolicons</li>
+ <li>noncons (non consensual :/ )</li>
+ <li>proshippers</li>
+ <li>people that use AI for basic tasks (coding, looking things up, etc.)</li>
+ <li>Russians</li>
+ <li>Norwegians(except Emy)</li>
+ <li>MAGA</li>
+ <li>t-phobes</li>
+ <li>femboys</li>
+ </ul>
+ <p>I also like music, don't ask me what genre i like,</p>
+ <p>it ranges from indie to pop to death metal to incelcore</p>
+ <h2>as an example:</h2>
+ <ul>
+ <li>Tally Hall (by far my fav)</li>
+ <li>Jack Stauber</li>
+ <li>Elio Mei</li>
+ <li>Queen</li>
+ <li>Fried By Fluoride</li>
+ <li>TV Girl</li>
+ <li>many more...</li>
+ </ul>
+ <p>I am currently learning Haskell, but i have a background of languages, e.g:</p>
+ <ul>
+ <li>Golang</li>
+ <li>Guile Scheme</li>
+ <li>Nix</li>
+ <li>Python</li>
+ <li>Bash</li>
+ <li>C</li>
+ <li>Java</li>
+ </ul>
+ <p>all of these gave up on except nixos.</p>
+ <p class="license">
+ <a href="https://git.roughlynamed.net/website.git/">Source code</a> —
+ <a href="COPYING">GNU AGPLv3</a>
+ </p>
+ </main>
+ </body>
</html>
diff --git a/ai.html b/ai.html
index 124fdd9..ebe9a50 100644
--- a/ai.html
+++ b/ai.html
@@ -18,47 +18,47 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
- <head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="description" content="a page describing what my take on AI is" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>
- /ai :: roughlynamed
- </title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="preconnect" href="https://libre.fm" />
- <link rel="stylesheet" href="/style.css" />
- </head>
- <body>
- <p>
- under construction
- </p><br />
- <nav>
- <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a> <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a> <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
- </nav>
- <h1>
- /ai
- </h1>
- <p>
- this is a page dedicated to what i think about Artificial Inteligence and Large Language Models
- </p>
- <p>
- TLDR; I don't like AI and i think LLM's should be gone
- </p>
- <p>
- LLM's are ruining the planet.
- </p>
- <p>
- Each data center being placed is slowly destroying the earths ecology and making the residents living near the data center live horrible lives without clean water, and no, 1 GPT prompt doesnt waste 8 mililiters of water or whatever-the-fuck that one statistic is, it's a lie.
- </p>
- <p>
- AI is making us stupider, a prime example of this is the main feed of Bluesky after Claude goes down.
- </p>
- <p>
- So many people on Bluesky are LLM-Pilled beyong recognition, when you dare to bring up "AI is bad" you get called a luddite and blocked (atleast from my experience) I sum this point up in "Your ability to output code shouldn't hinder when an LLM service goes down
- </p>
- </body>
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="description" content="a page describing what my take on AI is" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>/ai :: roughlynamed</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="preconnect" href="https://libre.fm" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+ <body>
+ <p>under construction</p>
+ <br />
+ <nav>
+ <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> d
+ <a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <h1>/ai</h1>
+ <p>
+ this is a page dedicated to what i think about Artificial Inteligence and Large Language
+ Models
+ </p>
+ <p>TLDR; I don't like AI and i think LLM's should be gone</p>
+ <p>LLM's are ruining the planet.</p>
+ <p>
+ Each data center being placed is slowly destroying the earths ecology and making the residents
+ living near the data center live horrible lives without clean water, and no, 1 GPT prompt
+oesnt waste 8 mililiters of water or whatever-the-fuck that one statistic is, it's a lie.
+ </p>
+ <p>
+ AI is making us stupider, a prime example of this is the main feed of Bluesky after Claude
+ goes down.
+ </p>
+ <p>
+ So many people on Bluesky are LLM-Pilled beyong recognition, when you dare to bring up "AI is
+ bad" you get called a luddite and blocked (atleast from my experience) I sum this point up in
+ "Your ability to output code shouldn't hinder when an LLM service goes down
+ </p>
+ </body>
</html>
diff --git a/assets/gentoo.gif b/assets/gentoo.gif
new file mode 100644
index 0000000..4967c40
--- /dev/null
+++ b/assets/gentoo.gif
Binary files differ
diff --git a/atproto/index.html b/atproto/index.html
index 513fcca..cc80e4f 100644
--- a/atproto/index.html
+++ b/atproto/index.html
@@ -19,7 +19,7 @@
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="theme-color" content="#f8efdf" />
diff --git a/blank.html b/blank.html
index 1533080..e2dab50 100644
--- a/blank.html
+++ b/blank.html
@@ -18,4 +18,3 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-
diff --git a/contact.html b/contact.html
index bd17c0f..75c0437 100644
--- a/contact.html
+++ b/contact.html
@@ -33,7 +33,7 @@
<nav>
<a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
<a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a>
+<a href="https://git.roughlynamed.net">/blog</a>
<a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
</nav>
<h1>/contact</h1>
@@ -41,15 +41,11 @@
<p>Where can you find me?</p>
<p>my handle in the ATmosphere is roughlynamed.net, but heres a full list of links.</p>
<ul>
+ <li>Bluesky: <a href="https://bsky.app/profile/roughlynamed.net">@roughlynamed.net</a></li>
+ <li>XMPP: <a href="xmpp:wildebeest@yax.im">wildebeest@yax.im</a></li>
+ <li>Lobsters: <a href="https://lobste.rs/~zelda">~zelda</a></li>
<li>
- <a href="https://bsky.app/profile/roughlynamed.net">bluesky</a>
- </li>
- <li><a href="xmpp:wildebeest@yax.im">wildebeest@yax.im</a> (xmpp)</li>
- <li>
- <a href="https://lobste.rs/~zelda">lobste.rs</a>
- </li>
- <li>
- <a href="https://savannah.nongnu.org/users/wildebeest">savannah.nongnu.org</a>
+ savannah(nongnu)<a href="https://savannah.nongnu.org/users/wildebeest">wildebeest</a>
</li>
<li>Twitch: sophiesdotrocks</li>
</ul>
@@ -68,7 +64,7 @@ F4AACgkQF8qAl3D4VRGvUgEAr0iedbKKNq9AWOSzU8I20M/tEIlz3W0JVVPMIcst
D+4BAKb2gYZEoLI1N7WmcCQzj2R076uaV/3ok86Z2TFY+PwIuDgEarpq5RIKKwYB
BAGXVQEFAQEHQHCCYwHtxAXga+0Q5B+M3E+y7a9Sxsl3oA6W3g4zFldaAwEIB4iU
BBgWCgA8FiEEuc9Z/leDX4nssz/UF8qAl3D4VREFAmq6auUbFIAAAAAABAAObWFu
-dTIsMi41KzEuMTIsMiwyAhsMAAoJEBfKgJdw+FURPuEA/iY1bD/y8QQzqiW+ACRR
+TIsMi41KzEuMTIsMiwyAhsMAAoJEBfKgJdw+FURPuEA/iY1bD/y8QQzqiW+ACRR
LV2HAr7dfy5QyFHGJm2U3HOTAP9F/QlJitGoEG7n29/aPIVAY5jipSKMDrytTgP7
rIFPCA==
=D4zt
diff --git a/fakeindex.html b/fakeindex.html
index bd8c9ab..9ff4f71 100644
--- a/fakeindex.html
+++ b/fakeindex.html
@@ -19,10 +19,10 @@
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta name="theme-color" content="#f8efdf" />
+ <meta name="theme-color" content="#f8efdf" />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>sophies website or something</title>
@@ -39,22 +39,20 @@
<div id="page">
<h1>404, again</h1>
<p>
- did you actually think that that link would lead you to the actual home
- page after you just tried to open a non-existent file?
+id you actually think that that link would lead you to the actual home page after you just
+ tried to open a non-existent file?
</p>
<p>
- are you so entitled to a link back to the home page that you can't type
- the url yourself?
+ are you so entitled to a link back to the home page that you can't type the url yourself?
</p>
<p>
- you realize that you just thought a 404 page with THAT wording would
- bring you back home?
+ you realize that you just thought a 404 page with THAT wording would bring you back home?
</p>
<p>
- well guess what, fucko, it won't, now move your fat fucking fingers on
- your stupid dumb moron idiot body and type the sweet url of
- "https://roughlynamed.net" in the url bar of your shitty little browser
+ well guess what, fucko, it won't, now move your fat fucking fingers on your stupid dumb
+ moron idiot body and type the sweet url of "https://roughlynamed.net" in the url bar of your
+ shitty little browser
</p>
<p>fuck you fag</p>
</div>
@@ -62,7 +60,7 @@
<script>
//<![CDATA[
setTimeout(() => {
- document.getElementById("page").style.visibility = "visible";
+ocument.getElementById("page").style.visibility = "visible";
}, 2000);
//]]>
</script>
diff --git a/fonts/aachen-bold/Aachen Bold/readme.html b/fonts/aachen-bold/Aachen Bold/readme.html
index 7e0e3c2..4674cda 100644
--- a/fonts/aachen-bold/Aachen Bold/readme.html
+++ b/fonts/aachen-bold/Aachen Bold/readme.html
@@ -1,190 +1,193 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta name="theme-color" content="#f8efdf" />
+ <meta name="theme-color" content="#f8efdf" />
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-
- <meta http-equiv="refresh" content="5;url=?ref=readme">
+
+ <meta http-equiv="refresh" content="5;url=?ref=readme" />
<title></title>
<style>
-/* -------------------------------------
+ /* -------------------------------------
GLOBAL
------------------------------------- */
- * {
- margin:0;
- padding:0;
- font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
- font-size: 100%;
- line-height: 1.6;
- }
-
- img {
- max-width: 100%;
- }
-
- body {
- -webkit-font-smoothing:antialiased;
- -webkit-text-size-adjust:none;
- width: 100%!important;
- height: 100%;
- background:#DDD;
- }
-
-
- /* -------------------------------------
+ * {
+ margin: 0;
+ padding: 0;
+ font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
+ font-size: 100%;
+ line-height: 1.6;
+ }
+
+ img {
+ max-width: 100%;
+ }
+
+ body {
+ -webkit-font-smoothing: antialiased;
+ -webkit-text-size-adjust: none;
+ width: 100% !important;
+ height: 100%;
+ background: #ddd;
+ }
+
+ /* -------------------------------------
ELEMENTS
------------------------------------- */
- a {
- color: #348eda;
- }
-
- .btn-primary, .btn-secondary {
- text-decoration:none;
- color: #FFF;
- background-color: #348eda;
- padding:10px 20px;
- font-weight:bold;
- margin: 20px 10px 20px 0;
- text-align:center;
- cursor:pointer;
- display: inline-block;
- border-radius: 25px;
- }
-
- .btn-secondary{
- background: #aaa;
- }
-
- .last {
- margin-bottom: 0;
- }
-
- .first{
- margin-top: 0;
- }
-
-
- /* -------------------------------------
+ a {
+ color: #348eda;
+ }
+
+ .btn-primary,
+ .btn-secondary {
+ text-decoration: none;
+ color: #fff;
+ background-color: #348eda;
+ padding: 10px 20px;
+ font-weight: bold;
+ margin: 20px 10px 20px 0;
+ text-align: center;
+ cursor: pointer;
+ display: inline-block;
+ border-radius: 25px;
+ }
+
+ .btn-secondary {
+ background: #aaa;
+ }
+
+ .last {
+ margin-bottom: 0;
+ }
+
+ .first {
+ margin-top: 0;
+ }
+
+ /* -------------------------------------
BODY
------------------------------------- */
- table.body-wrap {
- width: 100%;
- padding: 20px;
- }
-
- table.body-wrap .container{
- border: 1px solid #f0f0f0;
- }
+ table.body-wrap {
+ width: 100%;
+ padding: 20px;
+ }
+ table.body-wrap .container {
+ border: 1px solid #f0f0f0;
+ }
- /* -------------------------------------
+ /* -------------------------------------
FOOTER
------------------------------------- */
- table.footer-wrap {
- width: 100%;
- clear:both!important;
- }
-
- .footer-wrap .container p {
- font-size:12px;
- color:#666;
+ table.footer-wrap {
+ width: 100%;
+ clear: both !important;
+ }
- }
+ .footer-wrap .container p {
+ font-size: 12px;
+ color: #666;
+ }
- table.footer-wrap a{
- color: #999;
- }
+ table.footer-wrap a {
+ color: #999;
+ }
-
- /* -------------------------------------
+ /* -------------------------------------
TYPOGRAPHY
------------------------------------- */
- h1,h2,h3{
- font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; line-height: 1.1; margin-bottom:15px; color:#000;
- margin: 40px 0 10px;
- line-height: 1.2;
- font-weight:200;
- }
-
- h1 {
- font-size: 36px;
- }
- h2 {
- font-size: 28px;
- }
- h3 {
- font-size: 22px;
- }
-
- p, ul {
- margin-bottom: 10px;
- font-weight: normal;
- font-size:14px;
- }
-
- ul li {
- margin-left:5px;
- list-style-position: inside;
- }
-
- /* ---------------------------------------------------
+ h1,
+ h2,
+ h3 {
+ font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+ line-height: 1.1;
+ margin-bottom: 15px;
+ color: #000;
+ margin: 40px 0 10px;
+ line-height: 1.2;
+ font-weight: 200;
+ }
+
+ h1 {
+ font-size: 36px;
+ }
+ h2 {
+ font-size: 28px;
+ }
+ h3 {
+ font-size: 22px;
+ }
+
+ p,
+ ul {
+ margin-bottom: 10px;
+ font-weight: normal;
+ font-size: 14px;
+ }
+
+ ul li {
+ margin-left: 5px;
+ list-style-position: inside;
+ }
+
+ /* ---------------------------------------------------
RESPONSIVENESS
Nuke it from orbit. It's the only way to be sure.
------------------------------------------------------ */
- /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
- .container {
- display:block!important;
- max-width:600px!important;
- margin:0 auto!important; /* makes it centered */
- clear:both!important;
- }
-
- /* This should also be a block element, so that it will fill 100% of the .container */
- .content {
- padding:20px;
- max-width:600px;
- margin:0 auto;
- display:block;
- }
-
- /* Let's make sure tables in the content area are 100% wide */
- .content table {
- width: 100%;
- }
-
+ /* Set a max-width, and make it display as block so it will automatically stretch to that width, but will also shrink down on a phone or something */
+ .container {
+ display: block !important;
+ max-width: 600px !important;
+ margin: 0 auto !important; /* makes it centered */
+ clear: both !important;
+ }
+
+ /* This should also be a block element, so that it will fill 100% of the .container */
+ .content {
+ padding: 20px;
+ max-width: 600px;
+ margin: 0 auto;
+ display: block;
+ }
+
+ /* Let's make sure tables in the content area are 100% wide */
+ .content table {
+ width: 100%;
+ }
</style>
</head>
<body bgcolor="#f6f6f6">
-
<!-- body -->
<table class="body-wrap">
<tr>
<td></td>
<td class="container" bgcolor="#FFFFFF">
-
<!-- content -->
<div class="content">
<table>
<tr>
<td>
<h1></h1>
- <p>This font was downloaded from <a href="?ref=readme"></a> . You can visit <a href="?ref=readme"></a> for hundreds of free fonts.</p>
- <p><a href="?ref=readme" class="btn-primary">View Charmap and other information</a> <a href="?ref=readme" class="btn-primary">Browse other free fonts</a></p>
- <p>You will be shortly redirected to </p>
+ <p>
+ This font was downloaded from <a href="?ref=readme"></a> . You can visit
+ <a href="?ref=readme"></a> for hundreds of free fonts.
+ </p>
+ <p>
+ <a href="?ref=readme" class="btn-primary">View Charmap and other information</a>
+ <a href="?ref=readme" class="btn-primary">Browse other free fonts</a>
+ </p>
+ <p>You will be shortly redirected to</p>
</td>
</tr>
</table>
</div>
<!-- /content -->
-
</td>
<td></td>
</tr>
</table>
<!-- /body -->
-
</body>
</html>
diff --git a/girl.html b/girl.html
index a2a815f..18085c7 100644
--- a/girl.html
+++ b/girl.html
@@ -18,53 +18,42 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
- <head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <meta name="description" content="im a _ girl" />
- <title>
- /girl :: roughlynamed
- </title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="stylesheet" href="/style.css" />
- </head>
- <body>
- <nav>
- <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a> <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a> <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
- </nav>
- <main>
- <h1>
- /girl
- </h1>
- <p>
- I am a...
- </p>
- <ul>
- <li>trans girl
- </li>
- <li>book girl
- </li>
- <li>deer girl
- </li>
- <li>coding girl
- </li>
- <li>ATmospheric girl
- </li>
- <li>space girl
- </li>
- <li>cute girl
- </li>
- <li>haskell girl
- </li>
- <li>lispy girl (like the language!)
- </li>
- </ul>
- <p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a> — <a href="COPYING">GNU AGPLv3</a>
- </p>
- </main>
- </body>
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <meta name="description" content="im a _ girl" />
+ <title>/girl :: roughlynamed</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+ <body>
+ <nav>
+ <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a>
+<a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <main>
+ <h1>/girl</h1>
+ <p>I am a...</p>
+ <ul>
+ <li>trans girl</li>
+ <li>book girl</li>
+ <li>deer girl</li>
+ <li>coding girl</li>
+ <li>ATmospheric girl</li>
+ <li>space girl</li>
+ <li>cute girl</li>
+ <li>haskell girl</li>
+ <li>lispy girl (like the language!)</li>
+ </ul>
+ <p class="license">
+ <a href="https://git.roughlynamed.net/website.git/">Source code</a> —
+ <a href="COPYING">GNU AGPLv3</a>
+ </p>
+ </main>
+ </body>
</html>
diff --git a/height.js b/height.js
index 626f362..629139c 100644
--- a/height.js
+++ b/height.js
@@ -1,7 +1,7 @@
-const scrobbles = document.getElementById('recent-scrobbles');
-const publications = document.getElementById('recent-publications');
-const changelog = document.getElementById('recent-now');
-const column = document.querySelector('.recent-column');
+const scrobbles = document.getElementById("recent-scrobbles");
+const publications = document.getElementById("recent-publications");
+const changelog = document.getElementById("recent-now");
+const column = document.querySelector(".recent-column");
let userResized = false;
let lastSetHeight = null;
@@ -10,7 +10,7 @@ new ResizeObserver(([entry]) => {
const observedHeight = Math.round(entry.contentRect.height);
if (lastSetHeight !== null && observedHeight !== lastSetHeight) {
userResized = true;
- column.style.height = 'auto'; // NEW — release the lock so flow can push content down
+ column.style.height = "auto"; // NEW — release the lock so flow can push content down
}
}).observe(changelog);
diff --git a/hello.html b/hello.html
index 9ffc7e4..7e55785 100644
--- a/hello.html
+++ b/hello.html
@@ -19,41 +19,45 @@
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>/hello</title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
-<link rel="stylesheet" href="/style.css" />
-</head>
-
-<body>
- <nav>
- <a href="/">index</a>
- <a href="/about.html">/about</a>
- <a href="/contact.html">/contact</a>
- <a href="/slashes.html">/slashes</a>
- <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a>
- <a href="https://git.roughlynamed.net">/blog</a>
- <a href="https://1kb.roughlynamed.net">/1kb</a>
- <a href="/tarantino/">/tarantino</a>
-</nav>
- <h1>/hello</h1>
- <p>(how i prefer to keep in touch)</p>
- <br></br>
- <p>If you would like to contact me, please email <a href="mailto:hi@roughlynamed.net">hi@roughlynamed.net</a></p>
- <p>If you cannot access your email or prefer something else, please message me on <a href="xmpp:wildebeest@yax.im">wildebeest@yax.im</a> via XMPP</p>
- <br/>
- <p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a>
- &#8212;
- <a href="COPYING">GNU AGPLv3</a>
-</p>
-</body>
-
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>/hello</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+
+ <body>
+ <nav>
+ <a href="/">index</a>
+ <a href="/about.html">/about</a>
+ <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a>
+ <a href="/uses.html">/uses</a>
+
+ <a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a>
+ <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <h1>/hello</h1>
+ <p>(how i prefer to keep in touch)</p>
+ <br />
+ <p>
+ If you would like to contact me, please email
+ <a href="mailto:hi@roughlynamed.net">hi@roughlynamed.net</a>
+ </p>
+ <p>
+ If you cannot access your email or prefer something else, please message me on
+ <a href="xmpp:wildebeest@yax.im">wildebeest@yax.im</a> via XMPP
+ </p>
+ <br />
+ <p class="license">
+ <a href="https://git.roughlynamed.net/website.git/">Source code</a>
+ &#8212;
+ <a href="COPYING">GNU AGPLv3</a>
+ </p>
+ </body>
</html>
diff --git a/humans.txt b/humans.txt
index 8994e6c..96ec027 100644
--- a/humans.txt
+++ b/humans.txt
@@ -1,10 +1,8 @@
Webmaster: Magdalena Szweda
- Contact: hi@roughlynamed.net
+ Contact: hi@roughlynamed.net
Bluesky: @roughlynamed.net
From: Pomerania, Poland
PR, Help with Javascript: Mad_Mage
- Twitter: Mad_Mage_Dev
- From: U.S
-
-
+ Twitter: Mad_Mage_Dev
+ From: U.S
diff --git a/index.html b/index.html
index 9ef72a3..4beec25 100644
--- a/index.html
+++ b/index.html
@@ -37,7 +37,7 @@
<nav>
<a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
<a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/git</a>
+ <a href="https://git.roughlynamed.net">/git</a>
<a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
</nav>
<h1>roughlynamed.net</h1>
@@ -56,16 +56,20 @@
<div id="recent-now" class="recent-box">
<h3>Changelog</h3>
<ul>
- <li>
- <time datetime="2026-10-1">2026-10-1</time>
- <p>
- Switch to gentoo
- </p>
- <p>
- Update LibrePGP fingerprint &amp; key
- </p>
- </p>
- </li>
+ <li>
+ <time datetime="2026-10-5">2026-10-5</time>
+ <p>
+ Change the theme to something similar to
+ <a href="https://git.roughlynamed.net">git.roughlynamed.net</a> &
+ <a href="https://savannah.nongnu.org">savannah.nongnu.org</a>
+ </p>
+ <p>Change every font to sans-serif</p>
+ </li>
+ <li>
+ <time datetime="2026-10-1">2026-10-1</time>
+ <p>Switch to gentoo</p>
+ <p>Update LibrePGP fingerprint &amp; key</p>
+ </li>
<li>
<time datetime="2026-09-26">2026-09-26</time>
<p>Switch to Devuan and change the XMPP JID</p>
@@ -136,14 +140,14 @@
<hr />
</main>
<footer class="buttons">
- <a href="https://roughlynamed.net"
- ><img src="/assets/eightyeight.png" alt="my 88x31 button!" title="hey its me!"
- /></a>
<a href="https://swimming.cat"
><img src="/assets/site-button.webp" alt="swimming.cat" title="ashley website!!"
/></a>
<a href="https://oli.xenia.gay"><img src="/assets/oli.gif" alt="oli.xenia.gay" /></a>
<a href="http://lunaisafox.xyz"><img src="/assets/stuff.gif" alt="lunaisafox.xyz" /></a>
+ <a href="https://www.gentoo.org"
+ ><img src="/assets/gentoo.gif" title="Made on Gentoo GNU/Linux" alt="Gentoo, now!"
+ /></a>
<a href="https://8bitosc.net"
><img
src="https://8bitosc.net/img/88x31/jay.gif"
@@ -165,15 +169,7 @@
alt="made on gnu/linux"
title="this is fact-checked by true sophies."
/>
- <a href="https://debian.org"
- ><img
- src="/assets/debian.gif"
- alt="debian.org"
- title="Debian GNU/Linux"
- width="88"
- height="31"
- /></a>
- <a href="https://gnu.org"
+ <a href="https://www.gnu.org"
><img
src="/assets/gnu.webp"
alt="gnu.org"
@@ -181,7 +177,7 @@
width="88"
height="31"
/></a>
- <a href="https://gnu.org"
+ <a href="https://www.gnu.org"
><img
src="/assets/agpl.png"
alt="agpl free software, made with freedom"
@@ -265,15 +261,7 @@
/></a>
</footer>
<!--END OF BUTTONS-->
- <p class="button-code-label">
- if you want to link back, PLEASE DONT HOTLINK! it hurts my little pi, instead save the image
- and do:
- </p>
- <pre><code>&lt;a href="https://roughlynamed.net"&gt;&lt;img src="/path/to/badge.png" width="88" height="31"
- alt="roughlynamed.net"&gt;&lt;/a&gt;</code></pre>
- <p>the theme on this website changes every now and then, be warned!</p>
<script>
- //<![CDATA[
fetch("/counter.php")
.then((r) => r.text())
.then((n) => {
@@ -282,7 +270,6 @@
.catch(() => {
document.getElementById("visitor-count").textContent = "you are visitor: ???";
});
- //]]>
</script>
<script src="/scrobbles.js" defer="defer"></script>
<script src="/publications.js" defer="defer"></script>
diff --git a/now.html b/now.html
index 910be48..b03364d 100644
--- a/now.html
+++ b/now.html
@@ -18,36 +18,39 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en">
- <head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="description" content="what im working on currently" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>
- /now :: roughlynamed
- </title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="stylesheet" href="/style.css" />
- </head>
- <body>
- <nav>
- <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a> <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a> <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a> <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
- </nav>
- <main>
- <h1>
- /now
- </h1>
- <p>
- I am currently trying to learn Haskell, a purely functional, lazy evaluated programming language!
- </p>
- <p>
- I'm also developing this website, trying to finish all the slashpages.
- </p>
- <p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a> — <a href="COPYING">GNU AGPLv3</a>
- </p>
- </main>
- </body>
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="description" content="what im working on currently" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>/now :: roughlynamed</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
+ <body>
+ <nav>
+ <a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a>
+<a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <main>
+ <h1>/now</h1>
+ <p>
+ I am currently trying to learn Haskell, a purely functional, lazy evaluated programming
+ language!
+ </p>
+ <p>
+ I am also trying to become a GNU developer/webmaster. And i pushed my evergarden port to
+ Emacs into Savannah in hopes of getting it into GNU/ELPA soon
+ </p>
+
+ <p class="license">
+ <a href="https://git.roughlynamed.net/website.git/">Source code</a> —
+ <a href="COPYING">GNU AGPLv3</a>
+ </p>
+ </main>
+ </body>
</html>
diff --git a/publications.js b/publications.js
index 98867f8..22a0b59 100644
--- a/publications.js
+++ b/publications.js
@@ -20,30 +20,34 @@
*/
function escapeXml(str) {
return String(str)
- .replace(/&/g, '&amp;')
- .replace(/</g, '&lt;')
- .replace(/>/g, '&gt;')
- .replace(/"/g, '&quot;')
- .replace(/'/g, '&apos;');
+ .replace(/&/g, "&amp;")
+ .replace(/</g, "&lt;")
+ .replace(/>/g, "&gt;")
+ .replace(/"/g, "&quot;")
+ .replace(/'/g, "&apos;");
}
async function renderPublications() {
- const list = document.querySelector('#recent-publications ul');
+ const list = document.querySelector("#recent-publications ul");
try {
- const res = await fetch('/publications.json');
+ const res = await fetch("/publications.json");
const posts = await res.json();
if (posts.length === 0) {
- list.innerHTML = '<li>No publications yet.</li>';
+ list.innerHTML = "<li>No publications yet.</li>";
return;
}
- list.innerHTML = posts.map(p => `
+ list.innerHTML = posts
+ .map(
+ (p) => `
<li>
<a href="${escapeXml(p.url)}">${escapeXml(p.title.trim())}</a>
- ${p.date ? `<div>${escapeXml(new Date(p.date).toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' }))}</div>` : ''}
+ ${p.date ? `<div>${escapeXml(new Date(p.date).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" }))}</div>` : ""}
</li>
- `).join('');
+ `,
+ )
+ .join("");
} catch (err) {
- console.error('Failed to load publications:', err);
+ console.error("Failed to load publications:", err);
list.innerHTML = "<li>Couldn't load publications right now.</li>";
}
}
diff --git a/scrobbles.js b/scrobbles.js
index a05cd82..5b2d6fa 100644
--- a/scrobbles.js
+++ b/scrobbles.js
@@ -19,9 +19,9 @@
* along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>.
*/
-const LIBREFM_USER = 'sophii.xyz';
-const LIBREFM_API_KEY = '00000000000000000000000000000000';
-const LIBREFM_CACHE_KEY = 'scrobbles-cache';
+const LIBREFM_USER = "sophii.xyz";
+const LIBREFM_API_KEY = "00000000000000000000000000000000";
+const LIBREFM_CACHE_KEY = "scrobbles-cache";
const LIBREFM_CACHE_TTL_MS = 60_000;
async function loadScrobbles(limit = 7) {
@@ -33,7 +33,7 @@ async function loadScrobbles(limit = 7) {
const url = `https://libre.fm/2.0/?method=user.getrecenttracks&user=${LIBREFM_USER}&api_key=${LIBREFM_API_KEY}&format=json&limit=${limit}`;
const res = await fetch(url);
- if (!res.ok) throw new Error('Could not fetch scrobbles');
+ if (!res.ok) throw new Error("Could not fetch scrobbles");
const data = await res.json();
const tracks = data.recenttracks?.track ?? [];
@@ -42,26 +42,26 @@ async function loadScrobbles(limit = 7) {
}
async function renderScrobbles() {
- const list = document.querySelector('#recent-scrobbles ul');
+ const list = document.querySelector("#recent-scrobbles ul");
try {
const tracks = await loadScrobbles();
if (tracks.length === 0) {
- list.innerHTML = '<li>No scrobbles yet.</li>';
+ list.innerHTML = "<li>No scrobbles yet.</li>";
return;
}
- list.innerHTML = '';
- tracks.forEach(track => {
- const li = document.createElement('li');
- const artist = track.artist?.['#text'] ?? '';
- const nowPlaying = track['@attr']?.nowplaying === 'true';
+ list.innerHTML = "";
+ tracks.forEach((track) => {
+ const li = document.createElement("li");
+ const artist = track.artist?.["#text"] ?? "";
+ const nowPlaying = track["@attr"]?.nowplaying === "true";
li.innerHTML = `
<a href="${track.url}">${track.name}</a>
- <div>${artist}${nowPlaying ? ' - listening now' : ''}</div>
+ <div>${artist}${nowPlaying ? " - listening now" : ""}</div>
`;
list.appendChild(li);
});
} catch (err) {
- console.error('Failed to load libre.fm scrobbles:', err);
+ console.error("Failed to load libre.fm scrobbles:", err);
list.innerHTML = "<li>Couldn't load scrobbles right now.</li>";
}
}
diff --git a/slashes.html b/slashes.html
index f7cd77a..cae7dbd 100644
--- a/slashes.html
+++ b/slashes.html
@@ -19,219 +19,220 @@
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta name="theme-color" content="#f8efdf" />
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ <title>/slashes</title>
+ <link rel="icon" type="image/png" href="/assets/_.ico" />
+ <link rel="stylesheet" href="/style.css" />
+ </head>
-<head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>/slashes</title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
-<link rel="stylesheet" href="/style.css" />
-</head>
+ <body>
+ <nav>
+ <a href="/">index</a>
+ <a href="/about.html">/about</a>
+ <a href="/contact.html">/contact</a>
+ <a href="/slashes.html">/slashes</a>
+ <a href="/uses.html">/uses</a>
-<body>
- <nav>
- <a href="/">index</a>
- <a href="/about.html">/about</a>
- <a href="/contact.html">/contact</a>
- <a href="/slashes.html">/slashes</a>
- <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a>
- <a href="https://git.roughlynamed.net">/blog</a>
- <a href="https://1kb.roughlynamed.net">/1kb</a>
- <a href="/tarantino/">/tarantino</a>
-</nav>
- <h1>/slashes</h1>
- <p>All the slashpages on the website</p>
- <p>(this isn't yet accurate, i am migrating it over from my gopherhole, most of the links dont work)</p>
- <p>Goal: add every page from <a href="https://slashpages.net">slashpages.net</a> to this website</p>
+ <a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://1kb.roughlynamed.net">/1kb</a>
+ <a href="/tarantino/">/tarantino</a>
+ </nav>
+ <h1>/slashes</h1>
+ <p>All the slashpages on the website</p>
+ <p>
+ (this isn't yet accurate, i am migrating it over from my gopherhole, most of the links dont
+ work)
+ </p>
+ <p>
+ Goal: add every page from <a href="https://slashpages.net">slashpages.net</a> to this website
+ </p>
- <h2>status</h2>
- <p><strong>total pages:</strong> 55 &#160; <strong>done:</strong> 13</p>
+ <h2>status</h2>
+ <p><strong>total pages:</strong> 55 &#160; <strong>done:</strong> 13</p>
- <h2>list</h2>
- <dl class="slashlist">
+ <h2>list</h2>
+ <dl class="slashlist">
+ <dt><a href="/about.html">/about</a> <span class="tag done">done</span></dt>
+ <dd>/about.html</dd>
- <dt><a href="/about.html">/about</a> <span class="tag done">done</span></dt>
- <dd>/about.html</dd>
+ <dt><a href="/ai.html">/ai</a> <span class="tag done">done</span></dt>
+ <dd>/ai.html</dd>
- <dt><a href="/ai.html">/ai</a> <span class="tag done">done</span></dt>
- <dd>/ai.html</dd>
+ <dt><a href="/blank.html">/blank</a> <span class="tag done">done</span></dt>
+ <dd>/blank.html</dd>
- <dt><a href="/blank.html">/blank</a> <span class="tag done">done</span></dt>
- <dd>/blank.html</dd>
+ <dt>/gitroll <span class="tag todo">todo</span></dt>
+ <dd>a list of other sites i read and reccomend</dd>
- <dt>/gitroll <span class="tag todo">todo</span></dt>
- <dd>a list of other sites i read and reccomend</dd>
+ <dt>/calendar <span class="tag todo">todo</span></dt>
+ <dd>a list of dates from movies, tv shows, etc.</dd>
- <dt>/calendar <span class="tag todo">todo</span></dt>
- <dd>a list of dates from movies, tv shows, etc.</dd>
+ <dt>/canon <span class="tag todo">todo</span></dt>
+ <dd>annotated bibliography of references, the things that shaped me</dd>
- <dt>/canon <span class="tag todo">todo</span></dt>
- <dd>annotated bibliography of references, the things that shaped me</dd>
+ <dt>/carry <span class="tag todo">todo</span></dt>
+ <dd>items i carry daily</dd>
- <dt>/carry <span class="tag todo">todo</span></dt>
- <dd>items i carry daily</dd>
+ <dt>/caw <span class="tag todo">todo</span></dt>
+ <dd>crows.</dd>
- <dt>/caw <span class="tag todo">todo</span></dt>
- <dd>crows.</dd>
+ <dt><a href="/index.html">/log</a> <span class="tag done">done</span></dt>
+ <dd>(its the changelog in index.html)</dd>
- <dt><a href="/index.html">/log</a> <span class="tag done">done</span></dt>
- <dd>(its the changelog in index.html)</dd>
+ <dt><a href="/maccas.html">/mcdonalds</a> <span class="tag todo">todo</span></dt>
+ <dd>/maccas.html</dd>
- <dt><a href="/maccas.html">/mcdonalds</a> <span class="tag todo">todo</span></dt>
- <dd>/maccas.html</dd>
+ <dt>/colophon <span class="tag todo">todo</span></dt>
+ <dd>a page that describes how the site is made, tools n stuff</dd>
- <dt>/colophon <span class="tag todo">todo</span></dt>
- <dd>a page that describes how the site is made, tools n stuff</dd>
+ <dt>/community <span class="tag todo">todo</span></dt>
+ <dd>a page outlining what a community is about and its values</dd>
- <dt>/community <span class="tag todo">todo</span></dt>
- <dd>a page outlining what a community is about and its values</dd>
+ <dt>/concerts <span class="tag todo">todo</span></dt>
+ <dd>a list of the concerts i've been to</dd>
- <dt>/concerts <span class="tag todo">todo</span></dt>
- <dd>a list of the concerts i've been to</dd>
+ <dt><a href="/contact.html">/contact</a> <span class="tag done">done</span></dt>
+ <dd>/contact.html</dd>
- <dt><a href="/contact.html">/contact</a> <span class="tag done">done</span></dt>
- <dd>/contact.html</dd>
+ <dt>/daylists <span class="tag kill">kill</span></dt>
+ <dd>i dont use spotify</dd>
- <dt>/daylists <span class="tag kill">kill</span></dt>
- <dd>i dont use spotify</dd>
+ <dt><a href="/death.html">/death</a> <span class="tag done">done</span></dt>
+ <dd>/death.html</dd>
- <dt><a href="/death.html">/death</a> <span class="tag done">done</span></dt>
- <dd>/death.html</dd>
+ <dt>/disability <span class="tag todo">todo</span></dt>
+ <dd>have to get diagnosed first</dd>
- <dt>/disability <span class="tag todo">todo</span></dt>
- <dd>have to get diagnosed first</dd>
+ <dt>/elsewhere <span class="tag todo">todo</span></dt>
+ <dd>a list of output or writings on sites other than this</dd>
- <dt>/elsewhere <span class="tag todo">todo</span></dt>
- <dd>a list of output or writings on sites other than this</dd>
+ <dt>/feeds <span class="tag todo">todo</span></dt>
+ <dd>page listing RSS/Atom/JSON and other feeds.</dd>
- <dt>/feeds <span class="tag todo">todo</span></dt>
- <dd>page listing RSS/Atom/JSON and other feeds.</dd>
+ <dt>/for <span class="tag todo">todo</span></dt>
+ <dd>a page where i honor my loved ones or thank others</dd>
- <dt>/for <span class="tag todo">todo</span></dt>
- <dd>a page where i honor my loved ones or thank others</dd>
+ <dt>/glossary <span class="tag todo">todo</span></dt>
+ <dd>a list of words i often use and their meanings</dd>
- <dt>/glossary <span class="tag todo">todo</span></dt>
- <dd>a list of words i often use and their meanings</dd>
+ <dt>/green <span class="tag todo">todo</span></dt>
+ <dd>a page that describes how i contribute to the environment</dd>
- <dt>/green <span class="tag todo">todo</span></dt>
- <dd>a page that describes how i contribute to the environment</dd>
+ <dt><a href="/girl.html">/girl</a> <span class="tag done">done</span></dt>
+ <dd>/girl.html</dd>
- <dt><a href="/girl.html">/girl</a> <span class="tag done">done</span></dt>
- <dd>/girl.html</dd>
+ <dt>/hats <span class="tag todo">todo</span></dt>
+ <dd>my hats</dd>
- <dt>/hats <span class="tag todo">todo</span></dt>
- <dd>my hats</dd>
+ <dt><a href="/hello.html">/hello</a> <span class="tag done">done</span></dt>
+ <dd>a list of the ways i prefer to keep in touch</dd>
- <dt><a href="/hello.html">/hello</a> <span class="tag done">done</span></dt>
- <dd>a list of the ways i prefer to keep in touch</dd>
+ <dt>/hills <span class="tag todo">todo</span></dt>
+ <dd>a list of the hills im willing to die on</dd>
- <dt>/hills <span class="tag todo">todo</span></dt>
- <dd>a list of the hills im willing to die on</dd>
+ <dt>/ideas <span class="tag todo">todo</span></dt>
+ <dd>things i want to make</dd>
- <dt>/ideas <span class="tag todo">todo</span></dt>
- <dd>things i want to make</dd>
+ <dt>/interests <span class="tag todo">todo</span></dt>
+ <dd>a list of things im passionate about</dd>
- <dt>/interests <span class="tag todo">todo</span></dt>
- <dd>a list of things im passionate about</dd>
+ <dt>/sale <span class="tag todo">todo</span></dt>
+ <dd>yard sale!!</dd>
- <dt>/sale <span class="tag todo">todo</span></dt>
- <dd>yard sale!!</dd>
+ <dt>/links <span class="tag todo">todo</span></dt>
+ <dd>a list of links to sites i like or want to bookmark</dd>
- <dt>/links <span class="tag todo">todo</span></dt>
- <dd>a list of links to sites i like or want to bookmark</dd>
+ <dt>/next <span class="tag todo">todo</span></dt>
+ <dd>what i'm gonna do next</dd>
- <dt>/next <span class="tag todo">todo</span></dt>
- <dd>what i'm gonna do next</dd>
+ <dt>/nope <span class="tag todo">todo</span></dt>
+ <dd>a list of things i dont like/dont wanna do</dd>
- <dt>/nope <span class="tag todo">todo</span></dt>
- <dd>a list of things i dont like/dont wanna do</dd>
+ <dt><a href="/now.html">/now</a> <span class="tag done">done</span></dt>
+ <dd>/now.html</dd>
- <dt><a href="/now.html">/now</a> <span class="tag done">done</span></dt>
- <dd>/now.html</dd>
+ <dt>/pfp <span class="tag todo">todo</span></dt>
+ <dd>a timeline of all my pfp pictures</dd>
- <dt>/pfp <span class="tag todo">todo</span></dt>
- <dd>a timeline of all my pfp pictures</dd>
+ <dt>/podroll <span class="tag maybe">todo?</span></dt>
+ <dd>a list of podcasts i reccomend, if i get into podcasts</dd>
- <dt>/podroll <span class="tag maybe">todo?</span></dt>
- <dd>a list of podcasts i reccomend, if i get into podcasts</dd>
+ <dt>/posse <span class="tag todo">todo</span></dt>
+ <dd>a page outlining my strategy for POSSE/cross-posting</dd>
- <dt>/posse <span class="tag todo">todo</span></dt>
- <dd>a page outlining my strategy for POSSE/cross-posting</dd>
+ <dt>/postroll <span class="tag todo">todo</span></dt>
+ <dd>a list of interesting blog posts i read</dd>
- <dt>/postroll <span class="tag todo">todo</span></dt>
- <dd>a list of interesting blog posts i read</dd>
+ <dt>/pricing <span class="tag maybe">todo?</span></dt>
+ <dd>a page for those that want to buy my products</dd>
- <dt>/pricing <span class="tag maybe">todo?</span></dt>
- <dd>a page for those that want to buy my products</dd>
+ <dt>/questions <span class="tag todo">todo</span></dt>
+ <dd>questions i wanna ask or im thinking about</dd>
- <dt>/questions <span class="tag todo">todo</span></dt>
- <dd>questions i wanna ask or im thinking about</dd>
+ <dt>/save <span class="tag todo">todo</span></dt>
+ <dd>a list of referral links and discount codes for things i like</dd>
- <dt>/save <span class="tag todo">todo</span></dt>
- <dd>a list of referral links and discount codes for things i like</dd>
+ <dt>/hosted <span class="tag todo">todo</span></dt>
+ <dd>a page listing the services im hosting or managing myself</dd>
- <dt>/hosted <span class="tag todo">todo</span></dt>
- <dd>a page listing the services im hosting or managing myself</dd>
+ <dt>/shoebox <span class="tag todo">todo</span></dt>
+ <dd>a bit of website where for the odds-and-ends</dd>
- <dt>/shoebox <span class="tag todo">todo</span></dt>
- <dd>a bit of website where for the odds-and-ends</dd>
+ <dt>/since <span class="tag todo">todo</span></dt>
+ <dd>habit tracker showing time since i started/stopped doing x</dd>
- <dt>/since <span class="tag todo">todo</span></dt>
- <dd>habit tracker showing time since i started/stopped doing x</dd>
+ <dt>/sitemap <span class="tag todo">todo</span></dt>
+ <dd>a list of pages on here</dd>
- <dt>/sitemap <span class="tag todo">todo</span></dt>
- <dd>a list of pages on here</dd>
+ <dt><a href="/slashes.html">/slashes</a> <span class="tag done">done</span></dt>
+ <dd>this!</dd>
- <dt><a href="/slashes.html">/slashes</a> <span class="tag done">done</span></dt>
- <dd>this!</dd>
+ <dt>/someday <span class="tag todo">todo</span></dt>
+ <dd>things i someday want to achieve/accomplish/learn/etc.</dd>
- <dt>/someday <span class="tag todo">todo</span></dt>
- <dd>things i someday want to achieve/accomplish/learn/etc.</dd>
+ <dt>/style <span class="tag todo">todo</span></dt>
+ <dd>personal style/design style guide</dd>
- <dt>/style <span class="tag todo">todo</span></dt>
- <dd>personal style/design style guide</dd>
+ <dt><a href="/ways.html">/ways</a> <span class="tag done">done</span></dt>
+ <dd>/ways.html</dd>
- <dt><a href="/ways.html">/ways</a> <span class="tag done">done</span></dt>
- <dd>/ways.html</dd>
+ <dt>/coffee <span class="tag todo">todo</span></dt>
+ <dd>donations</dd>
- <dt>/coffee <span class="tag todo">todo</span></dt>
- <dd>donations</dd>
+ <dt>/top4 <span class="tag todo">todo</span></dt>
+ <dd>top 4 of any topic! (top 3 + honor mention)</dd>
- <dt>/top4 <span class="tag todo">todo</span></dt>
- <dd>top 4 of any topic! (top 3 + honor mention)</dd>
+ <dt><a href="/uses.html">/uses</a> <span class="tag done">done</span></dt>
+ <dd>/uses.html</dd>
- <dt><a href="/uses.html">/uses</a> <span class="tag done">done</span></dt>
- <dd>/uses.html</dd>
+ <dt>/verify <span class="tag todo">todo</span></dt>
+ <dd>a page to list and prove online identities</dd>
- <dt>/verify <span class="tag todo">todo</span></dt>
- <dd>a page to list and prove online identities</dd>
+ <dt>/where <span class="tag todo">todo</span></dt>
+ <dd>let others know my current location!</dd>
- <dt>/where <span class="tag todo">todo</span></dt>
- <dd>let others know my current location!</dd>
+ <dt>/why <span class="tag todo">todo</span></dt>
+ <dd>what i care about, where im heading and how i hope to exist</dd>
- <dt>/why <span class="tag todo">todo</span></dt>
- <dd>what i care about, where im heading and how i hope to exist</dd>
+ <dt><a href="/wish.html">/wish</a> <span class="tag done">done</span></dt>
+ <dd>/wish.html</dd>
- <dt><a href="/wish.html">/wish</a> <span class="tag done">done</span></dt>
- <dd>/wish.html</dd>
+ <dt>/yep <span class="tag todo">todo</span></dt>
+ <dd>list of things i agree with or will do</dd>
+ </dl>
- <dt>/yep <span class="tag todo">todo</span></dt>
- <dd>list of things i agree with or will do</dd>
-
- </dl>
-
- <p>I took time out of my day to write this out by hand.</p>
- <p>from Russia with Love, <br />Maddie</p>
-
-<p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a>
- &#8212;
- <a href="COPYING">GNU AGPLv3</a>
-</p>
-</body>
+ <p>I took time out of my day to write this out by hand.</p>
+ <p>from Russia with Love, <br />Maddie</p>
+ <p class="license">
+ <a href="https://git.roughlynamed.net/website.git/">Source code</a>
+ &#8212;
+ <a href="COPYING">GNU AGPLv3</a>
+ </p>
+ </body>
</html>
diff --git a/style.css b/style.css
index 4eb1cba..abfcd21 100644
--- a/style.css
+++ b/style.css
@@ -28,15 +28,27 @@
/* --border: #93836c; */
/* --muted: hsl(30, 8%, 55%); */
/* } */
-
:root {
- /* eink */
- --bg: #f2efe9;
- --text: #2b2926;
- --accent: #7a5c3e;
- --border: #d8d2c4;
- --muted: #8a8578;
+ --bg: #ffffff;
+ --text: #000000;
+ --accent: #641212; /* links */
+ --accent-hover: #c40f0f;
+ --border: #e0c080;
+ --muted: #333333;
+ --tint: #ffe4b7;
+ --row-a: #fffbed;
+ --row-b: #ffeecc;
+ --sans: sans-serif;
+ --serif: sans-serif;
}
+/* :root { */
+/* /\* eink *\/ */
+/* --bg: #f2efe9; */
+/* --text: #2b2926; */
+/* --accent: #7a5c3e; */
+/* --border: #d8d2c4; */
+/* --muted: #8a8578; */
+/* } */
/* :root { */
/* /1* classic *1/ */
@@ -56,11 +68,7 @@ p {
}
body {
- font-family:
- "Atkinson Hyperlegible Next",
- -apple-system,
- "Segoe UI",
- sans-serif;
+ font-family: sans-serif;
background: var(--bg);
color: var(--text);
max-width: 680px;
@@ -73,7 +81,7 @@ body {
h1,
h2,
h3 {
- font-family: "IBM Plex Serif", Georgia, serif;
+ font-family: sans-serif;
font-weight: 600;
line-height: 1.25;
margin-top: 3rem;
@@ -110,7 +118,7 @@ nav {
code,
pre {
- font-family: "IBM Plex Mono", "Courier New", monospace;
+ font-family: monospace;
margin: 0.4rem 0;
}
@@ -229,7 +237,7 @@ code {
display: block;
font-size: 0.8em;
color: var(--muted);
- font-family: "IBM Plex Mono", monospace;
+ font-family: monospace;
}
@media (max-width: 550px) {
@@ -276,7 +284,7 @@ code {
.pgp-key {
all: revert;
white-space: pre-wrap;
- font-family: "Atkinson Hyperlegible Next";
+ font-family: sans-serif;
margin: 0;
}
diff --git a/style.css-pre-sansserif-everything b/style.css-pre-sansserif-everything
new file mode 100644
index 0000000..97b80ce
--- /dev/null
+++ b/style.css-pre-sansserif-everything
@@ -0,0 +1,404 @@
+/*
+ * roughlynamed.net
+ *
+ * Copyright (C) 2026 Magdalena Szweda
+ *
+ * This file is part of roughlynamed.net.
+ *
+ * sophies.rocks is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * sophies.rocks is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with sophies.rocks. If not, see <https://www.gnu.org/licenses/>.
+ */
+/* ROOT COLORSCHEME CHANGES WHENEVER I FEEL LIKE IT */
+
+/* :root { */
+/* /1* flatwhite *1/ */
+/* --bg: #f1ece4; */
+/* --text: #605a52; */
+/* --accent: #4c5361; */
+/* --border: #93836c; */
+/* --muted: hsl(30, 8%, 55%); */
+/* } */
+:root {
+ --bg: #ffffff;
+ --text: #000000;
+ --accent: #641212; /* links */
+ --accent-hover: #c40f0f;
+ --border: #e0c080;
+ --muted: #333333;
+ --tint: #ffe4b7;
+ --row-a: #fffbed;
+ --row-b: #ffeecc;
+ --sans: sans-serif;
+ --serif: sans-serif;
+
+}
+/* :root { */
+/* /\* eink *\/ */
+/* --bg: #f2efe9; */
+/* --text: #2b2926; */
+/* --accent: #7a5c3e; */
+/* --border: #d8d2c4; */
+/* --muted: #8a8578; */
+/* } */
+
+/* :root { */
+/* /1* classic *1/ */
+/* --bg: #f8efdf; */
+/* --text: #33281c; */
+/* --accent: #b8783e; */
+/* --border: #e4e0d8; */
+/* --muted: #7a6a54 */
+/* } */
+
+* {
+ box-sizing: border-box;
+}
+
+p {
+ margin: 0.4rem 0;
+}
+
+body {
+ font-family:
+ "Atkinson Hyperlegible Next",
+ -apple-system,
+ "Segoe UI",
+ sans-serif;
+ background: var(--bg);
+ color: var(--text);
+ max-width: 680px;
+ margin: 0 auto;
+ padding: 4rem 1.5rem;
+ line-height: 1.65;
+ font-size: 1.05rem;
+}
+
+h1,
+h2,
+h3 {
+ font-family: "IBM Plex Serif", Georgia, serif;
+ font-weight: 600;
+ line-height: 1.25;
+ margin-top: 3rem;
+}
+
+h1 {
+ font-size: 2.1rem;
+ margin-top: 0;
+ letter-spacing: -0.02em;
+}
+
+h2 {
+ font-size: 1.4rem;
+}
+
+a {
+ color: var(--accent);
+ text-decoration: underline;
+ text-decoration-color: rgba(181, 83, 60, 0.3);
+ text-underline-offset: 3px;
+}
+
+nav {
+ display: flex;
+ flex-wrap: nowrap;
+ justify-content: flex-end;
+ gap: 1.5rem;
+ margin-bottom: 3rem;
+ padding-bottom: 1rem;
+ border-bottom: 1px solid var(--border);
+ font-size: 1rem;
+ color: var(--muted);
+}
+
+code,
+pre {
+ font-family: "IBM Plex Mono", "Courier New", monospace;
+ margin: 0.4rem 0;
+}
+
+code {
+ background: #f0ede6;
+ padding: 0.15em 0.4em;
+ border-radius: 4px;
+ font-size: 0.9em;
+}
+
+.buttons {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+ margin-top: 3rem;
+}
+.buttons div {
+ display: inline-block;
+}
+#recent {
+ margin-top: 3rem;
+}
+
+#recent h2 {
+ margin-top: 0;
+}
+
+#recent-now p {
+ margin: 0;
+}
+
+.recent-grid {
+ display: grid;
+ grid-template-columns: 2fr 1fr;
+ gap: 1.5rem;
+ margin-top: 1.5rem;
+ align-items: start;
+}
+
+.recent-column {
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+ min-height: 0;
+}
+
+.recent-box {
+ border: 1px solid #ddd;
+ padding: 1.25rem 1.5rem;
+}
+
+.recent-box h3 {
+ margin-top: 0;
+ font-size: 1.1rem;
+}
+
+.recent-box ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 1rem 0 0;
+}
+
+.recent-box li + li {
+ margin-top: 1.2rem;
+}
+
+.recent-box li a {
+ font-weight: 600;
+}
+
+#recent-publications {
+ flex-shrink: 0;
+}
+#recent-now {
+ flex: 0 1 auto;
+ min-height: 150px;
+ max-height: 500px;
+ overflow-y: auto;
+ resize: vertical;
+ scrollbar-width: thin;
+ scrollbar-color: var(--accent) var(--bg);
+}
+
+#recent-now::-webkit-scrollbar {
+ width: 8px;
+}
+
+#recent-now::-webkit-scrollbar-track {
+ background: var(--bg);
+}
+
+#recent-now::-webkit-scrollbar-thumb {
+ background: var(--accent);
+ border-radius: 4px;
+}
+
+#recent-now::-webkit-scrollbar-thumb:hover {
+ background: var(--text);
+}
+
+#recent-now ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 1rem 0 0;
+}
+
+#recent-now li {
+ margin: 0 0 1rem;
+}
+
+#recent-now li:last-child {
+ margin-bottom: 0;
+}
+
+#recent-now time {
+ display: block;
+ font-size: 0.8em;
+ color: var(--muted);
+ font-family: "IBM Plex Mono", monospace;
+}
+
+@media (max-width: 550px) {
+ .recent-grid,
+ .terminology-grid {
+ grid-template-columns: 1fr;
+ }
+}
+
+@font-face {
+ font-family: "IBM Plex Serif";
+ src: url("fonts/IBMPlexSerif-Regular.woff2") format("woff2");
+ font-weight: 400;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "IBM Plex Serif";
+ src: url("fonts/IBMPlexSerif-Bold.woff2") format("woff2");
+ font-weight: 700;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "IBM Plex Mono";
+ src: url("fonts/IBMPlexMono-Regular.woff2") format("woff2");
+ font-weight: 400;
+ font-display: swap;
+}
+
+@font-face {
+ font-family: "Atkinson Hyperlegible Next";
+ src: url("fonts/Atkinson_Hyperlegible_Next/AtkinsonHyperlegibleNext-VariableFont_wght.ttf")
+ format("truetype-variations");
+ font-weight: 400 700;
+ font-display: swap;
+}
+
+.pgp-label {
+ margin: 0;
+ margin-bottom: 0;
+}
+
+.pgp-key {
+ all: revert;
+ white-space: pre-wrap;
+ font-family: "Atkinson Hyperlegible Next";
+ margin: 0;
+}
+
+.tag {
+ font-size: 0.7em;
+ padding: 0.1em 0.5em;
+ border-radius: 4px;
+ font-family: "IBM Plex Mono", monospace;
+ text-transform: uppercase;
+ margin-left: 0.4em;
+}
+
+.tag.done {
+ background: #dcead9;
+ color: #2e5c31;
+}
+
+.tag.todo {
+ background: #f0ede6;
+ color: var(--muted);
+}
+
+.tag.kill {
+ background: #f2dcd8;
+ color: #8a3b32;
+}
+
+.tag.maybe {
+ background: #f3e6c8;
+ color: #7a5a1c;
+}
+
+dl.slashlist dt {
+ font-weight: 600;
+ margin-top: 1.2em;
+}
+
+dl.slashlist dd {
+ margin-left: 0;
+ color: var(--muted);
+ font-size: 0.95em;
+}
+
+.terminology {
+ margin-top: 3rem;
+}
+
+.terminology-intro {
+ color: var(--muted);
+}
+
+.terminology-grid {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 1.5rem;
+ margin-top: 2rem;
+}
+
+.terminology-grid > div {
+ border: 1px solid var(--border);
+ padding: 1rem 1.25rem;
+ border-radius: 6px;
+}
+
+.terminology-grid h3 {
+ margin-top: 0;
+ margin-bottom: 0.75rem;
+}
+
+.terminology-grid ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+
+.terminology-grid li {
+ margin: 0.35rem 0;
+}
+
+.terminology-grid .icon {
+ width: 16px;
+ height: 16px;
+ object-fit: contain;
+ vertical-align: -3px;
+ margin-right: 0.35rem;
+}
+
+.rating-love {
+ color: var(--accent);
+ font-weight: 700;
+}
+
+.rating-like {
+ color: var(--text);
+}
+
+.rating-okay {
+ color: #628c58;
+}
+
+.rating-maybe {
+ color: #a66b3d;
+}
+
+.rating-no {
+ color: #a34f45;
+}
+
+.rating-never {
+ color: #a34f45;
+ font-weight: 700;
+}
diff --git a/tarantino/index.html b/tarantino/index.html
index 809122b..57ed350 100644
--- a/tarantino/index.html
+++ b/tarantino/index.html
@@ -18,7 +18,7 @@
You should have received a copy of the GNU Affero General Public License
along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
-->
-<!DOCTYPE html>
+<!doctype html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="theme-color" content="#000000" />
@@ -51,41 +51,39 @@
<ul>
<li>No bigotry allowed on your website</li>
<li>
- Your website has to be made with your own 2 hands, this means that it
- cannot be something like your leaflet, strawpage, etc.
+ Your website has to be made with your own 2 hands, this means that it cannot be something
+ like your leaflet, strawpage, etc.
</li>
<li>
- your application must contain the word "zucchini" in it, because you're
- a good person and read these rules.
+ your application must contain the word "zucchini" in it, because you're a good person and
+ read these rules.
</li>
<li>
- If your website contains NSFW content, it must be properly marked, same
- goes with flashing lights and gore.
+ If your website contains NSFW content, it must be properly marked, same goes with flashing
+ lights and gore.
</li>
<li>
- Your website has to already have the webring's widget visible somewhere
- on it before application
+ Your website has to already have the webring's widget visible somewhere on it before
+ application
</li>
<li>
- your site does NOT have to be oriented around Quentin Tarantino (any
- website will do, aslong as you are a fan of his)
+ your site does NOT have to be oriented around Quentin Tarantino (any website will do, aslong
+ as you are a fan of his)
</li>
<li>
- your website has to be something on it, it cannot be just a blank page
- or 3 lines of text.
+ your website has to be something on it, it cannot be just a blank page or 3 lines of text.
</li>
<li>i reserve the right to reject any applications under my own terms</li>
</ul>
<h2>Join</h2>
<p>
If you would like to join this webring, please
- <a href="mailto:hi@roughlynamed.net">email me</a> (hi@roughlynamed.net)
- with the subject: "Webring application"
+ <a href="mailto:hi@roughlynamed.net">email me</a> (hi@roughlynamed.net) with the subject:
+ "Webring application"
</p>
<p>
- Please put your name and the URL of the homepage of your website in the
- body text, as well as listing if there are any content warnings (gore,
- nsfw, flashing)
+ Please put your name and the URL of the homepage of your website in the body text, as well as
+ listing if there are any content warnings (gore, nsfw, flashing)
</p>
<h2>Widget</h2>
<p>Paste this snippet anywhere on your site:</p>
@@ -100,15 +98,11 @@
&lt;a id="ring-next" href="#"&gt;next&lt;/a&gt;
&lt;/nav&gt;
&lt;script src="https://roughlynamed.net/webring.js" defer&gt;&lt;/script&gt;
- </pre
- >
+ </pre>
</code>
<p>keep in mind that widget-less sites will be removed.</p>
<p>Below is an example of a correctly added widget (colors may vary):</p>
- <nav
- id="ring-nav"
- style="display: flex; align-items: center; justify-content: center"
- >
+ <nav id="ring-nav" style="display: flex; align-items: center; justify-content: center">
<a id="ring-prev" href="#">prev</a>
<span>|</span>
<a href="/tarantino/">TARANTINO</a>
@@ -118,8 +112,6 @@
</nav>
<script src="/webring.js" defer></script>
<h2>Bugs</h2>
- <p>
- If there are any issues with the webring, please email me about them.
- </p>
+ <p>If there are any issues with the webring, please email me about them.</p>
</body>
</html>
diff --git a/tarantino/tarantino-style.css b/tarantino/tarantino-style.css
index 4b084b0..66b85ab 100644
--- a/tarantino/tarantino-style.css
+++ b/tarantino/tarantino-style.css
@@ -1,6 +1,6 @@
@font-face {
- font-family: 'Pulp Fiction';
- src: url('/fonts/PF.woff2') format('woff2');
+ font-family: "Pulp Fiction";
+ src: url("/fonts/PF.woff2") format("woff2");
}
body {
@@ -10,11 +10,10 @@ body {
h1,
h2 {
- font-family: 'Pulp Fiction', 'Impact', sans-serif;
- color: #f5da1e
+ font-family: "Pulp Fiction", "Impact", sans-serif;
+ color: #f5da1e;
}
-
a {
color: #f5da1e;
text-decoration-color: rgba(245, 218, 30, 0.4);
@@ -27,4 +26,4 @@ a:hover {
code {
background: #1a1a1a;
color: #f5f0e6;
-} \ No newline at end of file
+}
diff --git a/uses.html b/uses.html
index 0d4f224..ec801e1 100644
--- a/uses.html
+++ b/uses.html
@@ -33,7 +33,7 @@
<nav>
<a href="/">index</a> <a href="/about.html">/about</a> <a href="/contact.html">/contact</a>
<a href="/slashes.html">/slashes</a> <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a> <a href="https://git.roughlynamed.net">/blog</a>
+ <a href="https://git.roughlynamed.net">/blog</a>
<a href="https://1kb.roughlynamed.net">/1kb</a> <a href="/tarantino/">/tarantino</a>
</nav>
<main>
@@ -85,12 +85,13 @@
<p>Forge: <a href="https://git.roughlynamed.net">git.roughlynamed.net</a> - selfhosted</p>
<h2>Music</h2>
<p>Download: <a href="https://nicotine-plus.org">Nicotine+</a></p>
- <p>Daemon: <a href="https://musicpd.org">mpd</a></p>
+ <p>Daemon: <a href="https://github.com/xmms2">xmms2</a></p>
<p>
- Scrobbler: <a href="https://github.com/MusicPlayerDaemon/mpdscribble">mpdscribble</a> to
+ Scrobbler: <a href="https://github.com/mariusor/mpris-scrobbler">mpris-scrobbler</a>(via a
+ xmms2 -> mpris shim) to
<a href="https://libre.fm">libre.fm</a>
</p>
- <p>RPC: <a href="https://github.com/JakeStanger/mpd-discord-rpc">mpd-discord-rpc</a></p>
+ <p>RPC: <a href="https://github.com/lazykern/mprisence">mprisence</a></p>
<p>
Player: <a href="https://wiki.archlinux.org/title/Ncmpcpp">emms</a> (emacs multimedia
system)
@@ -100,7 +101,7 @@
<h2>Chat</h2>
<h3>XMPP</h3>
<p>Client: <a href="https://xmpp.org/software/jabber-el">jabber</a></p>
- <p>JID: <a href="xmpp:roughlynamed@yax.im">roughlynamed@yax.im</a></p>
+ <p>JID: <a href="xmpp:wildebeest@yax.im">wildebeest@yax.im</a></p>
<h2>Web &amp; Friends</h2>
<p>Browser: <a href="https://vivaldi.com">Vivaldi</a></p>
<p>Extensions:</p>
diff --git a/webring.js b/webring.js
index e1b9f5b..59ab07a 100644
--- a/webring.js
+++ b/webring.js
@@ -1,48 +1,48 @@
-const RING_CACHE_KEY = 'tarantino-ring-cache';
+const RING_CACHE_KEY = "tarantino-ring-cache";
const RING_CACHE_TTL_MS = 5 * 60_000;
async function fetchRingMembers() {
- const cached = localStorage.getItem(RING_CACHE_KEY);
- if (cached) {
- const { data, ts } = JSON.parse(cached);
- if (Date.now() - ts < RING_CACHE_TTL_MS) return data;
- }
-
- const res = await fetch('https://roughlynamed.net/tarantino/ring.json');
- if (!res.ok) throw new Error(`tarantino webring fetch failed: ${res.status}`);
- const { members } = await res.json();
-
- localStorage.setItem(RING_CACHE_KEY, JSON.stringify({ data: members, ts: Date.now() }));
- return members;
+ const cached = localStorage.getItem(RING_CACHE_KEY);
+ if (cached) {
+ const { data, ts } = JSON.parse(cached);
+ if (Date.now() - ts < RING_CACHE_TTL_MS) return data;
+ }
+
+ const res = await fetch("https://roughlynamed.net/tarantino/ring.json");
+ if (!res.ok) throw new Error(`tarantino webring fetch failed: ${res.status}`);
+ const { members } = await res.json();
+
+ localStorage.setItem(RING_CACHE_KEY, JSON.stringify({ data: members, ts: Date.now() }));
+ return members;
}
function originOf(member) {
- try {
- return new URL(member.url).origin;
- } catch (err) {
- console.error('tarantino webring: bad url on member', member, err);
- return null;
- }
+ try {
+ return new URL(member.url).origin;
+ } catch (err) {
+ console.error("tarantino webring: bad url on member", member, err);
+ return null;
+ }
}
function warningLabel(m) {
- return m.content_warnings?.length ? ` (cw: ${m.content_warnings.join(', ')})` : '';
+ return m.content_warnings?.length ? ` (cw: ${m.content_warnings.join(", ")})` : "";
}
function ensureWarningDialog() {
- let dialog = document.getElementById('ring-warning-dialog');
- if (dialog) return dialog;
+ let dialog = document.getElementById("ring-warning-dialog");
+ if (dialog) return dialog;
- dialog = document.createElement('dialog');
- dialog.id = 'ring-warning-dialog';
- dialog.innerHTML = `
+ dialog = document.createElement("dialog");
+ dialog.id = "ring-warning-dialog";
+ dialog.innerHTML = `
<p id="ring-warning-text"></p>
<menu style="display: flex; gap: 0.5rem; justify-content: flex-end; padding: 0; margin: 0.75rem 0 0;">
<button type="button" value="cancel">cancel</button>
<button type="button" value="continue" autofocus>continue</button>
</menu>
`;
- dialog.style.cssText = `
+ dialog.style.cssText = `
background: var(--bg, #fff);
color: var(--text, #000);
border: 1px solid var(--border, #ccc);
@@ -50,101 +50,105 @@ function ensureWarningDialog() {
max-width: 28rem;
padding: 1rem;
`;
- document.body.appendChild(dialog);
+ document.body.appendChild(dialog);
- dialog.querySelector('button[value="cancel"]').addEventListener('click', () => dialog.close('cancel'));
- dialog.querySelector('button[value="continue"]').addEventListener('click', () => dialog.close('continue'));
+ dialog
+ .querySelector('button[value="cancel"]')
+ .addEventListener("click", () => dialog.close("cancel"));
+ dialog
+ .querySelector('button[value="continue"]')
+ .addEventListener("click", () => dialog.close("continue"));
- return dialog;
+ return dialog;
}
function confirmIfFlagged(e, member) {
- if (!member.content_warnings?.length) return;
- e.preventDefault();
-
- const dialog = ensureWarningDialog();
- dialog.querySelector('#ring-warning-text').textContent =
- `Heads up: this site is flagged for ${member.content_warnings.join(', ')}. Continue?`;
-
- dialog.addEventListener(
- 'close',
- () => {
- if (dialog.returnValue === 'continue') location.href = member.url;
- },
- { once: true }
- );
-
- dialog.showModal();
+ if (!member.content_warnings?.length) return;
+ e.preventDefault();
+
+ const dialog = ensureWarningDialog();
+ dialog.querySelector("#ring-warning-text").textContent =
+ `Heads up: this site is flagged for ${member.content_warnings.join(", ")}. Continue?`;
+
+ dialog.addEventListener(
+ "close",
+ () => {
+ if (dialog.returnValue === "continue") location.href = member.url;
+ },
+ { once: true },
+ );
+
+ dialog.showModal();
}
function wireNavLink(id, member) {
- const el = document.getElementById(id);
- if (!el || !member) return;
- el.href = member.url;
- el.addEventListener('click', e => confirmIfFlagged(e, member));
+ const el = document.getElementById(id);
+ if (!el || !member) return;
+ el.href = member.url;
+ el.addEventListener("click", (e) => confirmIfFlagged(e, member));
}
function disableNavLink(id) {
- const el = document.getElementById(id);
- if (!el) return;
- el.removeAttribute('href');
- el.setAttribute('aria-disabled', 'true');
+ const el = document.getElementById(id);
+ if (!el) return;
+ el.removeAttribute("href");
+ el.setAttribute("aria-disabled", "true");
}
function renderMembersTable(members) {
- const tbody = document.getElementById('members-tbody');
- if (!tbody) return;
-
- const frag = document.createDocumentFragment();
- for (const m of members) {
- const tr = document.createElement('tr');
-
- const nameTd = document.createElement('td');
- nameTd.textContent = m.name;
-
- const linkTd = document.createElement('td');
- const a = document.createElement('a');
- a.href = m.url;
- a.textContent = m.url + warningLabel(m);
- a.addEventListener('click', e => confirmIfFlagged(e, m));
- linkTd.appendChild(a);
-
- tr.append(nameTd, linkTd);
- frag.appendChild(tr);
- }
- tbody.appendChild(frag);
+ const tbody = document.getElementById("members-tbody");
+ if (!tbody) return;
+
+ const frag = document.createDocumentFragment();
+ for (const m of members) {
+ const tr = document.createElement("tr");
+
+ const nameTd = document.createElement("td");
+ nameTd.textContent = m.name;
+
+ const linkTd = document.createElement("td");
+ const a = document.createElement("a");
+ a.href = m.url;
+ a.textContent = m.url + warningLabel(m);
+ a.addEventListener("click", (e) => confirmIfFlagged(e, m));
+ linkTd.appendChild(a);
+
+ tr.append(nameTd, linkTd);
+ frag.appendChild(tr);
+ }
+ tbody.appendChild(frag);
}
async function initRing() {
- try {
- const members = await fetchRingMembers();
- const me = members.findIndex(m => originOf(m) === location.origin);
-
- if (me === -1) {
- console.error('this site is not in the tarantino webring');
- } else if (members.length <= 1) {
- disableNavLink('ring-prev');
- disableNavLink('ring-next');
- disableNavLink('ring-random');
- } else {
- const next = members[(me + 1) % members.length];
- const prev = members[(me - 1 + members.length) % members.length];
- const others = members.filter((_, i) => i !== me);
-
- wireNavLink('ring-prev', prev);
- wireNavLink('ring-next', next);
-
- if (others.length > 0) {
- const random = others[Math.floor(Math.random() * others.length)];
- wireNavLink('ring-random', random);
- } else {
- disableNavLink('ring-random');
- }
- }
-
- renderMembersTable(members);
- } catch (err) {
- console.error('tarantino webring failed:', err);
+ try {
+ const members = await fetchRingMembers();
+ const me = members.findIndex((m) => originOf(m) === location.origin);
+
+ if (me === -1) {
+ console.error("this site is not in the tarantino webring");
+ } else if (members.length <= 1) {
+ disableNavLink("ring-prev");
+ disableNavLink("ring-next");
+ disableNavLink("ring-random");
+ } else {
+ const next = members[(me + 1) % members.length];
+ const prev = members[(me - 1 + members.length) % members.length];
+ const others = members.filter((_, i) => i !== me);
+
+ wireNavLink("ring-prev", prev);
+ wireNavLink("ring-next", next);
+
+ if (others.length > 0) {
+ const random = others[Math.floor(Math.random() * others.length)];
+ wireNavLink("ring-random", random);
+ } else {
+ disableNavLink("ring-random");
+ }
}
+
+ renderMembersTable(members);
+ } catch (err) {
+ console.error("tarantino webring failed:", err);
+ }
}
initRing();
diff --git a/webrings.html b/webrings.html
deleted file mode 100644
index b554884..0000000
--- a/webrings.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!--
- roughlynamed.net
-
- Copyright (C) 2026 Magdalena Szweda
-
- This file is part of roughlynamed.net.
-
- roughlynamed.net is free software: you can redistribute it and/or modify
- it under the terms of the GNU Affero General Public License as
- published by the Free Software Foundation, either version 3 of
- the License, or (at your option) any later version.
-
- roughlynamed.net is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Affero General Public License for more details.
-
- You should have received a copy of the GNU Affero General Public License
- along with roughlynamed.net. If not, see <https://www.gnu.org/licenses/>.
--->
-
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
- <meta name="theme-color" content="#f8efdf" />
- <meta charset="UTF-8" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
- <title>/webrings</title>
- <link rel="icon" type="image/png" href="/assets/_.ico" />
- <link rel="stylesheet" href="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring.css">
- <link rel="stylesheet" href="/style.css" />
-</head>
-
-<body>
- <nav>
- <a href="/">index</a>
- <a href="/about.html">/about</a>
- <a href="/contact.html">/contact</a>
- <a href="/slashes.html">/slashes</a>
- <a href="/uses.html">/uses</a>
- <a href="/webrings.html">/webrings</a>
- <a href="https://git.roughlynamed.net">/blog</a>
- <a href="https://1kb.roughlynamed.net">/1kb</a>
- <a href="/tarantino/">/tarantino</a>
-</nav>
- <h1>Webrings</h1>
- <!-- no ai webring -->
- <div style="text-align:center">
- <a href="https://baccyflap.com/noai/?prv&s=ale" target="_top">« prev</a> |
- <a href="https://baccyflap.com/noai" target="_blank">no ai webring</a>
- <a style="font-size:60%" href="https://baccyflap.com/noai/?rnd" target="_top">(random)</a> |
- <a href="https://baccyflap.com/noai/?nxt&s=ale" target="_top">next »</a>
- </div>
- <hr>
- </hr>
- <!-- yuri webring -->
- <div style="text-align-last: center;">
- <a href="https://lunamilk.neocities.org/webring/yuriwebring">
- <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/yuriwebring1.png" height="26px"></a><br />
- <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=previous">
- <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/arrow%20left.png"></a>
- <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=random">
- random</a>
- <a href="https://lunamilk.neocities.org/webring/yuriwebring/webring?action=next">
- <img src="https://file.garden/Zuy95U5nUSPb-gio/website/webring/arrow%20right.png"></a>
- </div>
- <hr>
- </hr>
- <!-- hollowknight webring -->
- <center>
- <div id='Hallownest-bugs'>
- <script type="text/javascript"
- src="https://samsolarsystem.neocities.org/onionring-variables-Hallownest-bugs.js"></script>
- <script type="text/javascript"
- src="https://samsolarsystem.neocities.org/onionring-widget-Hallownest-bugs-knight.js"></script>
- </div>
- </center>
- <hr>
- </hr>
- <!-- *nix (unix webring) -->
- <center>
- <div id="nixring" style="display: inline-flex; gap: 8px; align-items: center; justify-content: center;">
- <style type="text/css" scoped>
- #nixring {
- text-align: center;
- color: black;
- }
-
- #nixring a {
- color: black;
- text-decoration: none;
- }
- </style>
- <a href="https://softmachine.dev/webring/linuxring/redirect?url=https%3A%2F{roughlynamed.net}%2F&go=prev">←</a>
- <a href="https://softmachine.dev/webring/linuxring">
- <div>*nixRing<br><img style="height: 25px;" src="https://softmachine.dev/webring/linuxring/icon/tux.png"></div>
- </a>
- <a href="https://softmachine.dev/webring/linuxring/redirect?url=https%3A%2F{roughlynamed.net}%2F&go=next">→</a>
- </div>
- </center>
- <hr>
- </hr>
- <!-- transfem webring -->
- <center>
- <script defer src="https://fem.nz/ring/transfemring.js" data-widget="transgender"></script>
- <hr>
- </hr>
- <!-- pony webring -->
-
- <div>
- <center>
- <a href="https://silversneasel.neocities.org/ponyring/main"><b>PonyRing!<br><img
- src="https://silversneasel.neocities.org/pictures/ponyring/widget/g4-1.png" height="90"></b></a><br />
- <a href="https://silversneasel.neocities.org/ponyring/main?action=previous">&lt;-
- </a>
- <a href="https://silversneasel.neocities.org/ponyring/main?action=random">random</a>
- <a href="https://silversneasel.neocities.org/ponyring/main?action=next">-&gt;</a><br>
- </center>
- </div>
- <hr>
- </hr>
- <!-- nix/os ring -->
- <div style="text-align:center">
- <a href="https://nixwebr.ing/prev/sophie" target="_top"> prev</a>
- <a href="https://nixwebr.ing" target="_blank">nix webring</a>
- <a style="font-size:60%" href="https://nixwebr.ing/rand" target="_top">(random)</a>
- <a href="https://nixwebr.ing/next/sophie" target="_top">next</a>
- </div>
- <hr>
- </hr>
- <!-- the ULTRARing -->
- <div id='ultraring'>
- <script type="text/javascript"
- src="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring-variables.js"></script>
- <script type="text/javascript"
- src="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING/onionring-widget-4.js"></script>
- <noscript>
- This site is part of <a href="https://jack-dawlia.neocities.org/page/shrines/ultrakill/ULTRARING">ULTRARING</a>!
- </noscript>
- </div>
- <hr></hr>
- <!-- astronomy ring -->
- <div style="text-align:center">
- <script type="text/javascript" src="https://astroring.auroradynia.com/ring.js"></script>
- </div>
- <hr></hr>
-<!-- roboring -->
-<div style="text-align:center">
- <a href="https://stellophiliac.github.io/roboring/xmlisbetter/previous">←</a>
- <a href="https://stellophiliac.github.io/roboring">roboring</a>
- <a href="https://stellophiliac.github.io/roboring/xmlisbetter/next">→</a>
-</div>
-<hr></hr>
-<div style="text-align:center">
- <a href="https://webring.bucketfish.me/redirect.html?to=prev&amp;name=sophie">prev</a> |
- <a href="https://webring.bucketfish.me/"> bucketfish webring</a>
- <a style="font-size:60%" href="https://webring.bucketfish.me/redirect.html?to=random&amp;name=sophie" target="_top">(random)</a> |
- <a href="https://webring.bucketfish.me/redirect.html?to=next&amp;name=sophie"> next</a>
-</div>
-<hr></hr>
- <nav
- id="ring-nav"
- style="display: flex; align-items: center; justify-content: center"
- >
- <a id="ring-prev" href="#">prev</a>
- <span>|</span>
- <a href="/tarantino/">TARANTINO</a>
- <a id="ring-random" href="#" style="font-size: 60%">(random)</a>
- <span>|</span>
- <a id="ring-next" href="#">next</a>
-</nav>
- <script src="/webring.js" defer></script>
-<hr></hr>
- <p class="license">
- <a href="https://git.roughlynamed.net/website.git/">Source code</a>
- &#8212;
- <a href="COPYING">GNU AGPLv3</a>
- </p>
-</body>
-
-</html>