268 lines
8.8 KiB
PHP
268 lines
8.8 KiB
PHP
<?php
|
|
require_once $_SERVER["DOCUMENT_ROOT"]."/sys/site.php";
|
|
$page = Page::this("Home", "folder_home");
|
|
|
|
$page->outline = [
|
|
"about" => ["_" => "What's wrong with you?",
|
|
"pronouns" => ["_" => "Pronouns"],
|
|
"furry-code" => ["_" => "Furry code"],
|
|
],
|
|
"updates" => ["_" => "Latest updates"],
|
|
"links" => ["_" => "Links",
|
|
"e-mail" => ["_" => "E-mail"],
|
|
"messaging" => ["_" => "Messaging"],
|
|
"social" => ["_" => "Social media"],
|
|
"other" => ["_" => "Other stuff"],
|
|
"services" => ["_" => "Services I host"],
|
|
],
|
|
"donate" => ["_" => "Donate"],
|
|
];
|
|
|
|
require_once $_SERVER["DOCUMENT_ROOT"]."/sys/semantics.php";
|
|
|
|
require_once $_SERVER["DOCUMENT_ROOT"]."/sys/infobox.php";
|
|
require_once $_SERVER["DOCUMENT_ROOT"]."/sys/default_template.php";
|
|
default_template($page);
|
|
|
|
slot_begin("main"); ?>
|
|
<main>
|
|
<aside>
|
|
<img class="block" src="/assets/me.png" alt="A black dog with a rainbow mohawk, red horns, a spiked collar, and a patch of red wool on its chest." />
|
|
</aside>
|
|
<p>
|
|
Hi, I'm ~keith, a mysterious gay dog prowling the dark, unexplored corners of the Internet. <strong>Welcome to my Web site!</strong> Please excuse the mess, I haven't been able to update it as often as I'd like. Hopefully that'll change soon.
|
|
</p>
|
|
|
|
<h1 id="about">What's wrong with you?</h1>
|
|
<p>
|
|
I'm a queer, trans, polyamorous anarchist hackerpunk mutt. (<em>Wruff~</em> :3) My interests include tinkering with old computers, kissing men, working on programming & electronics projects, violating copyright law, and playing video games.
|
|
</p>
|
|
|
|
<h2 id="pronouns">Pronouns</h2>
|
|
<p>I use <strong>it/its</strong> and <strong>punk/punks</strong> pronouns. Here's an example of how to use them:</p>
|
|
<blockquote>
|
|
This morning, <b>punk</b> went to the park.<br />
|
|
I went with <b>punk</b>.<br />
|
|
And <b>punk</b> brought <b>punks</b> frisbee.<br />
|
|
At least I think it was <b>punks</b>.<br />
|
|
By the end of the day, <b>punk</b> started throwing the frisbee to <b>punkself</b>.
|
|
</blockquote>
|
|
|
|
<h2 id="furry-code">Furry code</h2>
|
|
<code>FCM A--> C->++ D>m+++ H+++ M->+ P+ R T+++ W--> S+++ RLCT* cl+++ d+ f++++ i+++</code>
|
|
<details>
|
|
<summary><span>Translation</span></summary>
|
|
<div class="content">
|
|
<table>
|
|
<tr>
|
|
<th>Species</th>
|
|
<td><code>FCM</code></td>
|
|
<td>Domestic mutt</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Art</th>
|
|
<td><code>A--></code></td>
|
|
<td>No experience, but would like to try</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Conventions</th>
|
|
<td><code>C->++</code></td>
|
|
<td>Never gone, but would like to become a regular</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Fursuiting</th>
|
|
<td><code>D>m+++</code></td>
|
|
<td>Would like to make my own fursuit and wear it regularly</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Hugs</th>
|
|
<td><code>H+++</code></td>
|
|
<td>If it moves, I'll hug it (if it doesn't move, I'll hug it until it moves)</td>
|
|
</tr>
|
|
<tr>
|
|
<th><abbr title="Multi-User Dungeon">MUD</abbr>s</th>
|
|
<td><code>M->+</code></td>
|
|
<td>Never tried it, but would like to</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Plushies</th>
|
|
<td><code>P+</code></td>
|
|
<td>I have been known to cuddle a few</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Realism</th>
|
|
<td><code>R</code></td>
|
|
<td>No particular preference</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Transformation</th>
|
|
<td><code>T+++</code></td>
|
|
<td>Definitely! (as long as I get to choose the species)</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Writing</th>
|
|
<td><code>W--></code></td>
|
|
<td>No experience, but would like to try</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Furry sex</th>
|
|
<td><code>S+++</code></td>
|
|
<td>What do you mean there are other things to do?</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Real Life</th>
|
|
<td><code>RLCT*</code></td>
|
|
<td>Computers/<wbr />information technology (no job yet)</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Computers</th>
|
|
<td><code>cl+++</code></td>
|
|
<td>Linux user. If there was anything else to life, there'd be a newsgroup about it!
|
|
<img class="goomoji" src="/assets/goomoji/338.gif" alt="laughing face" /></td>
|
|
</tr>
|
|
<tr>
|
|
<th>DOOM</th>
|
|
<td><code>d+</code></td>
|
|
<td>I've played it and I like it, but I'm not a <em>huge</em> fan</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Furriness</th>
|
|
<td><code>f++++</code></td>
|
|
<td>I am not a human, I am a furry</td>
|
|
</tr>
|
|
<tr>
|
|
<th>Internet</th>
|
|
<td><code>i+++</code></td>
|
|
<td>I'm a Webmaster/site administrator</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</details>
|
|
|
|
<h1 id="updates">Latest updates</h1>
|
|
<?php
|
|
require_once $_SERVER["DOCUMENT_ROOT"]."/sys/infobox.php";
|
|
|
|
// Use git-post-receive-hook.sh to update the log_cache.
|
|
|
|
if (!file_exists($_SERVER["DOCUMENT_ROOT"]."/sys/log_cache")) {
|
|
echo InfoBox::new()->error()->text("Could not get commit log.")->html();
|
|
} else {
|
|
$output = file($_SERVER["DOCUMENT_ROOT"]."/sys/log_cache");
|
|
?>
|
|
<ul>
|
|
<?php
|
|
$prev_date = NULL;
|
|
$date_count = 1;
|
|
foreach ($output as $line) {
|
|
$fields = explode(" ", $line, 2);
|
|
|
|
$date = html_date("F j, Y", intval($fields[0]));
|
|
$message = $fields[1];
|
|
|
|
if ($prev_date == NULL) {
|
|
?>
|
|
<li>
|
|
<b><?=$date?></b>
|
|
<ul>
|
|
<?php
|
|
} elseif ($prev_date != $date) {
|
|
if ($date_count >= 3)
|
|
break;
|
|
$date_count += 1;
|
|
?>
|
|
</ul>
|
|
</li>
|
|
<li>
|
|
<b><?=$date?></b>
|
|
<ul>
|
|
<?php
|
|
}
|
|
|
|
?>
|
|
<li><?=$message?></li>
|
|
<?php
|
|
$prev_date = $date;
|
|
}
|
|
?>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<?php
|
|
}
|
|
?>
|
|
|
|
<h1 id="links">Links</h1>
|
|
<h2 id="e-mail">E-mail</h2>
|
|
<p>
|
|
My e-mail address is <a href="mailto:keith@keithhacks.cyou">keith@keithhacks.cyou</a>, and my PGP key is below. <strong>Please</strong> feel free to e-mail me about anything at all!
|
|
</p>
|
|
<ul>
|
|
<li><img class="icon" src="/assets/hicolor/vcard.png" role="presentation" /> <a href="/dl/public_key.pgp">Download my public key</a></li>
|
|
<li>Fingerprint: <code>5779 C800 24A2 5968 EBC9 6EC0 5BEB EEAB 2C73 D520</code></li>
|
|
</ul>
|
|
|
|
<h2 id="messaging">Messaging</h2>
|
|
<p>You can contact me using <a href="https://xmpp.org/">XMPP</a> or <a href="https://matrix.org">Matrix</a>.</p>
|
|
<ul>
|
|
<li>XMPP: <a href="xmpp:root@knotsinside.me">root@knotsinside.me</a>, <a href="xmpp:root@nullob.si">root@nullob.si</a></li>
|
|
<li>Matrix: <a href="https://matrix.to/#/@keith:kde.org">@keith:kde.org</a></li>
|
|
</ul>
|
|
|
|
<h2 id="social">Social media</h2>
|
|
<p>
|
|
I'm active on the Fediverse, where you can find me at <a href="https://anarchism.space/@keith" rel="me">@keith@anarchism.space</a>. I no longer have a Twitter account.
|
|
</p>
|
|
|
|
<h2 id="other">Other stuff</h2>
|
|
<ul>
|
|
<li>Streaming: <a href="https://tv.keithhacks.cyou/">tv.keithhacks.cyou</a></li>
|
|
<li>Git: <a href="https://bytes.keithhacks.cyou/keith">~keith (bytes.keithhacks.cyou)</a></li>
|
|
<li>Furryring:
|
|
<a href="/furryring.php?prev=keithhacks.cyou">← Prev</a>
|
|
<a href="/furryring.php">Home</a>
|
|
<a href="/furryring.php?next=keithhacks.cyou">Next →</a>
|
|
</li>
|
|
<li>Fediring:
|
|
<a href="https://fediring.net/previous?host=keithhacks.cyou">← Prev</a>
|
|
<a href="https://fediring.net/">Home</a>
|
|
<a href="https://fediring.net/next?host=keithhacks.cyou">Next →</a>
|
|
</li>
|
|
</ul>
|
|
|
|
<h2 id="services">Services I host</h2>
|
|
<p>I currently run the following public-facing Internet services. You're welcome to use them!</p>
|
|
<ul>
|
|
<li>This Web site</li>
|
|
<li><a href="http://gaymurrr6mnuw533ofk2ds22kjpikrwiopruyzfnzetdchljitoalkid.onion">Tor mirror of this Web site</a></li>
|
|
<li><a href="https://bytes.keithhacks.cyou/">Git server (~keith/bytes)</a></li>
|
|
<li><a href="ircs://keithhacks.cyou:6697">~keithspace IRC</a></li>
|
|
<li><a href="/etc/knotsinside-me.php">knotsinside.me XMPP</a></li>
|
|
</ul>
|
|
|
|
<h1 id="donate">Donate</h1>
|
|
<?php
|
|
$xmr_addr = "89Tttn7NZbp7zpM1yZWDmDiGqjdng3FVFVpuQ7uYWX5DcCMibc1mP1NUmojd8XoMq4LJMActo8cDBUbXtfeKvVXTR74xzG7";
|
|
function break_addr($address) {
|
|
return implode('<wbr/>', str_split($address, 5));
|
|
}
|
|
?>
|
|
<p>I can't sign up for PayPal or any similar service, so I can only accept Monero:</p>
|
|
<ul>
|
|
<li>
|
|
<img class="icon" src="/assets/coin_xmr.png" role="presentation" />
|
|
Monero: <code id="xmr-addr"><?=break_addr($xmr_addr)?></code>
|
|
<button onclick="navigator.clipboard.writeText(document.getElementById('xmr-addr').innerText)" style="margin: 0;">
|
|
<img class="icon" src="/assets/hicolor/clipboard.png" role="presentation" />
|
|
<span>Copy</span>
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<img class="icon" src="/assets/hicolor/launch.png" role="presentation" />
|
|
<a href="https://trocador.app/anonpay?ticker_to=xmr&network_to=Mainnet&address=<?=$xmr_addr?>&name=%7Ekeith&donation=True" target="_blank">Pay with another cryptocurrency</a>
|
|
(Trocador AnonPay)
|
|
</li>
|
|
</ul>
|
|
<p>You can still send me Monero even if you don't use it - just go to <a href="https://www.getmonero.org/community/merchants/#exchanges">any "buy monero online" website</a> and put my address in.</p>
|
|
</main>
|
|
<?php slot_end(); ?>
|