196 lines
No EOL
6.5 KiB
PHP
196 lines
No EOL
6.5 KiB
PHP
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
|
|
<head>
|
|
<title>Nyx Tutt</title>
|
|
<link href="assets/index.css" rel="stylesheet">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
</head>
|
|
|
|
<body>
|
|
<?php
|
|
$skip_exts = ['ico', 'png', 'jpg', 'css', 'js', 'webp', 'gif', 'svg', 'woff', 'woff2', 'ttf', 'eot', 'otf'];
|
|
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
|
|
$ext = pathinfo($path, PATHINFO_EXTENSION);
|
|
if (in_array($ext, $skip_exts)) {
|
|
return;
|
|
}
|
|
$filename = 'visitorCount.txt';
|
|
$fp = fopen($filename, 'r+');
|
|
if (flock($fp, LOCK_EX)) {
|
|
$count = (int) fread($fp, filesize($filename));
|
|
$count++;
|
|
rewind($fp);
|
|
fwrite($fp, (string) $count);
|
|
ftruncate($fp, ftell($fp));
|
|
fflush($fp);
|
|
flock($fp, LOCK_UN);
|
|
}
|
|
|
|
fclose($fp);
|
|
|
|
// display the count
|
|
echo "welcome, visitor number <strong>$count</strong>!";
|
|
?>
|
|
<p>
|
|
<h1>Nyx Tutt</h1> is a <span class="hoverblur">trans</span>feminine
|
|
<span class="hoverblur">robot-cat-girl-</span>thing.
|
|
it likes <span class="hoverblur">matrix, irc, xmpp, and other</span>
|
|
open chat protocols, privacy advocacy, the fediverse, programming,
|
|
and more. it uses it/its when possible, otherwise she/her when not
|
|
possible (for example, non-english languages that don't have the concept
|
|
of it/its like this).
|
|
</p>
|
|
<h3>more about it</h3>
|
|
<p>
|
|
it speaks in 3rd person about itself. it also likes to write in all
|
|
lowercase often, and it's learning web development. it also has a
|
|
few projects in progress, those will be explained later in this page.
|
|
please don't use 2nd person "you" when referring to it. instead, use its
|
|
name, or something along the lines of "that one".
|
|
</p>
|
|
<h3>beliefs</h3>
|
|
<p>
|
|
it has quite a few seemingly uncommon beliefs, like that everyone should
|
|
have the same rights to know things. as such, it runs things like a
|
|
<a href="https://snowflake.torproject.org/">Snowflake</a> proxy, which
|
|
helps people in countries that like to censor information connect to Tor.
|
|
it also wants to run a Tor (non-exit) node sometime in the future, although
|
|
it doesn't have the time to manage that currently. it also belives in
|
|
not punishing others nearly as much, and outlawing the death penalty everywhere.
|
|
</p>
|
|
<h3>contact</h3>
|
|
<p>
|
|
this one has a few ways to be contacted:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<a href="xmpp:nyx@everypizza.im">xmpp</a><br>
|
|
</li>
|
|
<li>
|
|
<a href="matrix:u/n:everypizza.im">matrix</a><br>
|
|
</li>
|
|
<li>
|
|
<a href="mailto:me@everypizza.im">email</a> (it has a pgp key over in <a
|
|
href="https://keys.openpgp.org/search?q=me%40everypizza.im">keys.openpgp.org</a>.)<br>
|
|
</li>
|
|
<li>
|
|
<a href="https://sharkey.everypizza.im">fedi</a><br>
|
|
</li>
|
|
<li>
|
|
discord: everypizza
|
|
</li>
|
|
</ul>
|
|
<h3>social media</h3>
|
|
<p>
|
|
this one isn't on mainstream social media. instead, it uses things
|
|
like <a href="https://sharkey.everypizza.im/@me">fedi</a>.
|
|
other things that <i>could</i> be counted:
|
|
</p>
|
|
<ul>
|
|
<li>
|
|
<a href="https://listenbrainz.org/user/everypizza/">
|
|
listenbrainz
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://git.everypizza.im/n/">
|
|
git
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a href="https://blog.everypizza.im/">
|
|
blog
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<h3>projects</h3>
|
|
<p>
|
|
this one has a ton of unfinished projects. it also has a few things,
|
|
like skibidifetch (a fork of badapplefetch by
|
|
<a href="https://ari.lt/">Ari</a>), that are smaller.
|
|
it also made a collection of web-based tools using server-side rendering,
|
|
which is hosted at <a href="https://tools.everypizza.im">tools.everypizza.im</a>.
|
|
</p>
|
|
<h4>current project</h4>
|
|
<p>
|
|
learning Ruby and Rails
|
|
</p>
|
|
<h3>music</h3>
|
|
<p>
|
|
<?php
|
|
$apiRoot = 'https://api.listenbrainz.org';
|
|
$user = 'everypizza';
|
|
|
|
$nowPlayingString = '';
|
|
$nowPlaying = false;
|
|
|
|
try {
|
|
$response = file_get_contents($apiRoot . "/1/user/" . urlencode($user) . "/playing-now");
|
|
if ($response === false) {
|
|
throw new Exception("Failed to fetch");
|
|
}
|
|
|
|
$data = json_decode($response, true);
|
|
|
|
if (empty($data['payload']['listens'])) {
|
|
$nowPlayingString = "nothing is playing right now.";
|
|
} else {
|
|
$track = $data['payload']['listens'][0]['track_metadata']['track_name'];
|
|
$artist = $data['payload']['listens'][0]['track_metadata']['artist_name'];
|
|
$album = $data['payload']['listens'][0]['track_metadata']['release_name'];
|
|
|
|
$nowPlaying = true;
|
|
$nowPlayingString = "now playing for <b>" . htmlspecialchars($user) . "</b>: <b>" .
|
|
htmlspecialchars($track) . "</b> by <b>" .
|
|
htmlspecialchars($artist) . "</b> from <b>" .
|
|
htmlspecialchars($album) . "</b>";
|
|
}
|
|
} catch (Exception $e) {
|
|
$nowPlayingString = "Failed to reach API";
|
|
}
|
|
|
|
echo $nowPlayingString;
|
|
?>
|
|
|
|
<br>
|
|
<small>
|
|
data is from listenbrainz.
|
|
</small>
|
|
</p>
|
|
<h3>buttons</h3>
|
|
<p>
|
|
<a href="https://benjae.nekoweb.org">
|
|
<img src="/assets/88x31s/benjae.nekoweb.org.gif" alt="Benjae" width="88" height="31">
|
|
</a>
|
|
<a href="https://freetards.xyz">
|
|
<img src="/assets/88x31s/freetards.xyz.gif" alt="Freetards" width="88" height="31">
|
|
</a>
|
|
<a href="https://fsky.io">
|
|
<img src="/assets/88x31s/fsky.io.webp" alt="FSKY" width="88" height="31">
|
|
</a>
|
|
<a href="https://purplebored.pl">
|
|
<img src="/assets/88x31s/purplebored.pl.gif" alt="Purplebored" width="88" height="31">
|
|
</a>
|
|
<a href="https://squarebowl.club">
|
|
<img src="/assets/88x31s/squarebowl.club.gif" alt="PlateNet" width="88" height="31">
|
|
</a>
|
|
<a href="https://synth.download">
|
|
<img src="/assets/88x31s/synth.download.svg" alt="synth.download" width="88" height="31">
|
|
</a>
|
|
<a href="https://telepath.im">
|
|
<img src="/assets/88x31s/telepath.im.png" alt="Telepath" width="88" height="31">
|
|
</a>
|
|
<a href="https://voxel.fsky.io">
|
|
<img src="/assets/88x31s/voxel.fsky.io.webp" alt="voxel" width="88" height="31">
|
|
</a>
|
|
<a href="https://zayd.fsky.io">
|
|
<img src="/assets/88x31s/zayd.fsky.io.png" alt="voxel" width="88" height="31">
|
|
</a>
|
|
<br /><br />
|
|
<img src="/assets/88x31s/nyx.everypizza.im.webp" alt="Nyx" width="88" height="31">
|
|
<img src="/assets/88x31s/nyx.everypizza.im-2.png" alt="Nyx" width="88" height="31">
|
|
</p>
|
|
</body>
|
|
|
|
</html>
|