1
0
Fork 0

Initial commit of website contents

This commit is contained in:
will 2023-01-09 14:30:45 -07:00
parent e3f5f93769
commit 8600c0d46b
294 changed files with 6353 additions and 0 deletions

BIN
about/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 KiB

32
about/index.php Normal file
View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>About</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>about me</h1>
<h2 id="caption">hi</h2>
<nav>
<a href="music/">music</a>
<!--a href="games/">games</a-->
<a href="uses/">uses</a>
</nav>
<p><span title="General Kenobi!">Hello there!</span> They call me Will, but I tend to go by niceopod or deep twisty (more on that later) on the internet. I like to make stuff on the computer, like <a href="https://deeptwisty.bandcamp.com/">music</a>, or <a href="https://deeptwisty.com/art">art</a>, or this website. I've heard rumors calling me such things as "canadian", "autistic", and "incalculably talented". I cannot confirm or deny any of these allegations.</p>
<h2>What's a "deep twisty"?</h2>
<p>"deep twisty" is a pseudonym I came up with to release music under, because everyone is doing it. It comes from some tweets from an <a href="https://web.archive.org/web/20221214182955/https://twitter.com/SubnauticaSCM/status/1095774020446744576">official Subnautica twitter account</a> where they referred to the then-work-in-progress Deep Twisty Bridges biome as just "deep twisty". I thought it sounded funny. Funny enough to brand myself on, apparently.</p>
<p>As for "niceopod", "nice" was the best word I could think of that rhymes with the first syllable of "isopod". I feel like it sounds like I'm trying to say I'm nice. <span title="I'm slowly deprecating this username for this reason. You'll typically find it replaced with &quot;isopod&quot; or &quot;bathynomus&quot; or some other isopod-related thing, depending on availability.">I'm not</span>, it's just that the alternatives were "iceopod" and "sliceopod". Isopods are nice though.</p>
<p>I go by Will because that's my name and I can't be fucked changing it.</p>
<h2>Interests</h2>
<p>Anything with six or more legs or one or more solar masses. If anyone finds something with both, let me know. I'm also into computers and videogames (shocker). My all time favourite game, just by sheer unrivaled volume of playtime, is Minecraft. I've sunk more time into that game than any other I've played by probably an order of magnitude.</p>
<p>If you care, which I'm assuming you do if you read this far, you can get more information about the things I like in the navigation at the top of this page.</p>
<h2>About the site</h2>
<p>This website (and my <a href="https://deeptwisty.com">other one</a>) is hosted using Nginx on a VPS running Ubuntu Server. It's written in pure <span title="I aspire to write my website in pure XHTML">HTML</span> and CSS with the server-side stuff done in PHP. I'd like to say it's entirely free of Javascript, but the old archived versions use it pretty heavily.</p>
<p>You can read about the history of this thing <a href="../blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/">here</a>.</p>
<div id="rightsidebg" style="background-image: url(bg.png); --distancefromcenter: -10%;" title="Pictured: Me on my daily walk"></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

BIN
about/music/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 987 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 546 KiB

BIN
about/music/covers/vast.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

76
about/music/index.php Normal file
View file

@ -0,0 +1,76 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Music</title>
<link href="../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
#flex-container {
display: flex;
flex-wrap: wrap;
filter: drop-shadow(3px 3px 6px black);
}
#flex-container a {
--columncount: 2;
position: relative;
width: calc(var(--bodywidth) / var(--columncount));
height: calc(var(--bodywidth) / var(--columncount));
background-image: var(--img);
background-size: cover;
transition-duration: 0.5s;
overflow: hidden;
}
#flex-container a:hover {
z-index: 50;
box-shadow: 0 0 12px 2px black;
transform: scale(1.2);
color: #df1955;
}
#flex-container a span {
background-color: #000000cc;
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 5.2rem;
padding: 0 2rem;
display: flex;
align-items: center;
transition-duration: 0.5s;
box-sizing: border-box;
}
#flex-container a:hover span {
bottom: -5.2rem;
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>music</h1>
<h2 id="caption">Albums I like</h2>
<div id="flex-container">
<a style="--img: url(covers/spectrum.png);" target="_blank" href="https://findaeden.bandcamp.com/album/spectrum"><span>findaeden - Spectrum</span></a>
<a style="--img: url(covers/funeral.png);" target="_blank" href="https://noisemaster.bandcamp.com/album/funeral-ep"><span>Noisemaker - Funeral EP</span></a>
<a style="--img: url(covers/ultrakill_imperfect_hatred.png);" target="_blank" href="https://heavenpierceher.bandcamp.com/album/ultrakill-imperfect-hatred"><span>Heaven Pierce Her - ULTRAKILL: Imperfect Hatred</span></a>
<a style="--img: url(covers/triangle_unicode.png);" target="_blank" href="https://wearemagonia.bandcamp.com/album/triangle-unicode-lp"><span>We Are Magonia - Triangle Unicode</span></a>
<a style="--img: url(covers/unstoppable_force.png);" target="_blank" href="https://caliphate.bandcamp.com/album/unstoppable-force"><span>CALIPHATE - Unstoppable Force</span></a>
<a style="--img: url(covers/walks_of_lung.png);" target="_blank" href="https://patriciataxxon.bandcamp.com/album/walks-of-lung"><span>Patricia Taxxon - Walks of Lung</span></a>
<a style="--img: url(covers/realign.png);" target="_blank" href="https://vine.bandcamp.com/album/realign"><span>Red Vox - Realign</span></a>
<a style="--img: url(covers/fucked_up_friends_3.png);" target="_blank" href="https://tobaxxo.bandcamp.com/album/fucked-up-friends-3"><span>TOBACCO - Fucked Up Friends 3</span></a>
<a style="--img: url(covers/synthicate.png);" target="_blank" href="https://newretrowave.bandcamp.com/album/synthicate"><span>LAZERPUNK - Synthicate</span></a>
<a style="--img: url(covers/vast.png);" target="_blank" href="https://waterflame.bandcamp.com/album/vast"><span>Waterflame - Vast</span></a>
<a style="--img: url(covers/tortured_waters.png);" target="_blank" href="https://newretrowave.bandcamp.com/album/tortured-waters"><span>DEADLIFE - Tortured Waters</span></a>
<a style="--img: url(covers/millenialism.png);" target="_blank" href="https://music.businesscasual.biz/album/millennialism"><span>NYSE - MILLENNIALISM</span></a>
<a style="--img: url(covers/concrete_and_gold.png);" target="_blank" href="https://www.foofighters.com/"><span>Foo Fighters - Concrete and Gold</span></a>
<a style="--img: url(covers/revolution_radio.png);" target="_blank" href="https://greenday.com/"><span>Green Day - Revolution Radio</span></a>
<a style="--img: url(covers/the_last_ninja_2_c64_ost.png);" target="_blank" href="https://www.youtube-nocookie.com/embed/bjbN2RyZXHI"><span>Matt Gray - The Last Ninja 2 (C64) OST</span></a>
<a style="--img: url(covers/aeon_core.png);" target="_blank" href="https://perctrax.bandcamp.com/album/aeon-core"><span>Scalameriya - Aeon Core</span></a>
</div>
<div id="leftsidebg" style="background-image: url(bg.png); --distancefromcenter: -10%;" title="Pictured: Not necessarily the best, but objectively the coolest medium of music storage. Who am I kidding, this just looks cool. The coolest medium of music storage is obviously CDs, on account of the lasers and the ease of making digital backups."></div>
<br>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

BIN
about/uses/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

BIN
about/uses/images/pc1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 KiB

BIN
about/uses/images/pc2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

322
about/uses/index.php Normal file
View file

@ -0,0 +1,322 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>My setup</title>
<link href="../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
details {
margin-top: 1ch;
}
details#winrant>summary::before {
content: "Show ";
}
details[open]#winrant>summary::before {
content: "Hide ";
}
summary {
text-align: right;
}
li,
summary {
margin-bottom: 1ch;
}
/*
:root {
--bgsize: 3rem;
}
li {
background-size: var(--bgsize);
background-repeat: no-repeat;
background-position-x: 0;
transition-duration: 0.5s;
margin-bottom: 0.5rem;
}
li:hover {
background-position-x: calc(0rem - var(--bgsize));
}
summary > h2 {
display: inline-block;
}
summary > h2 > a {
text-decoration: none;
}
summary {
background-size: contain;
background-repeat: no-repeat;
padding: 0 1rem;
}
details:nth-child(2n + 1) > summary{
text-align: right;
background-position: right;
}*/
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>stuff i use</h1>
<h2 id="caption">If your setup is different you're objectively stupid</h2>
<h2>Hardware</h2>
<ul>
<li>
My main computer is a desktop PC I built myself. I made some choices I regret, but nothing critical. I'm proud
of it.
<details>
<summary>System specs</summary>
<ul>
<li><b>AMD Ryzen 7 5700G CPU</b>. Chosen for the integrated graphics, which should come in handy if I'm ever
without a working GPU, and because it's cheaper than the 5800 with the same core count. Little did I know
it's the only component in my system with no PCIe 4 support.</li>
<li><b>Noctua NH-U12A CPU Cooler</b>. Admittedly, a bit overkill. I bought it because the 5700G's stock
cooler was significantly underperforming. Imagine my shock when I took the old cooler off to discover I
had installed it wrong and it wasn't making even CLOSE to full contact! Whoops...</li>
<li><b>Gigabyte B550 AORUS PRO AC Motherboard</b>. Bit of a fancy one. It's a wi-fi board, but I've since
upgraded to a wired connection. It still comes in handy for my bluetooth gamepad, though.</li>
<li><b>G.Skill 2 x 16GB DDR4-3600 CL18 Memory</b>. Great memory. I originally thought the XMP profiles weren't
compatible with my CPU, but it turns out I just had to update my BIOS.</li>
<li><b>Samsung 980 500GB NVMe Boot SSD</b>. It's a fine drive, but in retrospect it's way bigger than I
needed for just a boot drive and I wish I had chosen one with DRAM.</li>
<li><b>WD Blue 1TB SSD</b>. This was originally a storage upgrade for my old laptop. I set it as the mount
point for my /home directory when I installed Linux on that machine, and transplanted it over to the new
one to keep all my stuff with very little hassle.</li>
<li><b>WD Black 4TB 7200RPM HDD</b>. Fits my entire Steam library in less than half its capacity with loads
of space left over for all the, uhm, Linux ISOs I could want. My case has room for one more 3.5" drive,
and if I outgrow two of these I might just have to build a NAS.</li>
<li><b>AMD Radeon RX 6600XT GPU</b>. I knew I was going to be using Linux when I designed the computer, so I
wanted to avoid Nvidia and their less than stellar Linux drivers if possible. Unfortunately, Blender performance
isn't too great and it is somewhat prone to crashing during Cycles renders, but it's better than nothing and the gaming performance is stellar.
</li>
<li><b>Corsair 110R ATX Mid-tower Case</b>. Chosen because it was one of the only aesthetically tolerable
cases I could find with a 5.25" drive bay. It provides surprisingly good airflow for a solid front panel.
Getting the PSU hooked up with the drive cage in proved difficult, though.</li>
<li><b>Seasonic Focus Plus 650w 80+ Gold PSU</b>. I'd heard good things about Seasonic, and my experience
thus far corroborates them. I'm very glad I didn't choose a <a
href="https://www.youtube-nocookie.com/embed/aACtT_rzToI">Gigabyte model</a>.</li>
<li><b>LG WH14NS40 Blu-Ray/DVD/CD Writer</b>. I really wanted my PC to be compatible with optical media, and
this was the cheapest unit available that supported every relevant format. Apparently this one has some
weird firmware issue that stops you from ripping 4k blu-rays? Good thing I don't own any of those. Or a 4k
display.</li>
<li><b>4x Arctic P12 Fans</b> plus the fan that came with my case. These fans are cheap, decent, and you can
daisy-chain them.</li>
<li><b>BTF 1m 60-LED ARGB Strip</b>. I told myself I didn't need lighting when designing the computer, then
bought this later when I realized I couldn't see through the tinted glass panel. I didn't want to overpay
for some PC-specific LED strip that might require proprietary software so I bought this generic one and an
adapter for the motherboard header. I control it with OpenRGB and a custom systemd service that turns it
off on shutdown. Weird that that isn't default behaviour.</li>
</ul>
</details>
<details>
<summary>Peripherals</summary>
<ul>
<li>I use a <b>Logitech G610</b> keyboard with Cherry MX Red switches and a <b>Logitech G602</b> wireless
mouse that I've had for god only knows how long. I don't normally go for wireless peripherals or
proprietary dongles, but Logitech's wireless dongles are really good and the quality of their products
makes it worth it.</li>
<li>I also have a <a target="_blank"
href="https://m.media-amazon.com/images/I/61sf29vWJ-L._AC_SL1000_.jpg">very large enter key</a>, just
because.</li>
<li>I have two 1080p monitors, a <b>24" 165Hz Gigabyte model</b> and a <b>21.5" 75Hz HP one</b>. Both are
fine, but were I to replace them I would go for something larger at a slightly lower framerate, possibly
at 1440p. I would not buy the HP monitor again.</li>
<li>My webcam is a <b>Logitech C925e</b>. The picture quality is good, and the microphone quality is what
you'd expect out of a webcam. I'm a huge fan of the built-in privacy shutter. I'm just that sort of
paranoid.</li>
<li>The microphone is an <b>Audio-Technica AT2020 USB+</b>. The sound quality out of it is superb. I would
have bought the non-USB version, but I didn't want to shell out for an audio interface. It sits on some
random $20 mic arm off Amazon.</li>
<li>I also have an <b>Xbox One wireless controller</b>. I thought for the longest time it wouldn't work with
Linux because I was trying to connect it with a cable, but one day I attempted to connect it via bluetooth
out of desperation and it worked flawlessly!</li>
<li>I have this little wireless <b><a href="https://www.silverstonetek.com/en/product/info/expansion-cards/ES02-USB/">
doodad</a></b> from Silverstone that connects to an internal USB header and lets me turn my computer on and off via
a wireless remote, because I'm just that lazy.</li>
</ul>
</details>
<details>
<summary>Pictures</summary>
<img src="images/pc1.png" style="width: 50%;" /><img src="images/pc2.png" style="width: 50%;" />
</details>
</li>
<li>
I also have an old <b>HP Pavilion 15-dk0030nr gaming laptop</b> being used as a home server.
<details>
<summary>More details</summary>
<p>This is the laptop I upgraded from to my current PC. It's got an Intel i7-9750H, 16GB of RAM (upgraded from
8GB stock), 256GB of SSD space, and a GTX 1660Ti Max-Q GPU. It's currently running Ubuntu server. Right now
I'm using it to run a Minecraft server for some friends.</p>
</details>
</li>
<li>
I rent a small DigitalOcean instance, also on Ubuntu server, to host this website.
<details>
<summary>More details</summary>
<p>I'd host more on the laptop if I wasn't so worried about uptime and I could be bothered to move it all now.
This thing is running this website, an Akkoma instance, an RSS aggregator, an RSS <i>bridge</i>, a SearXNG instance, WireGuard to
get the laptop past the NAT in my house, and probably some other stuff I forgot about. Not half bad for one
core and 2G of RAM.</p>
</details>
</li>
<li>
My phone is a <b>128GB LG K61 LM-Q630</b>.
<details>
<summary>More details</summary>
<p>It's fairly mediocre, but it's not like I'm doing anything important on it. The standout feature for me is
the headphone jack. That, above all else, remains non-negotiable for me. I intend to keep using it until it
becomes unusable or breaks, then replace it with something I can install a custom ROM on.</p>
</details>
</li>
<li>I have a <b>Nintendo Switch</b> that, admittedly, doesn't see much use. Kirby and the Forgotten Land was good,
though. Unfortunately, I don't have one of the early ones that can be softhacked, otherwise I would have for
sure done so by now.</li>
<li>I've softmodded my <b>New 2DS XL</b> and you should too. It's <a href="https://3ds.hacks.guide/">scarily
easy</a>.</li>
<li>I have two pairs of headphones: a modded <b>Beyerdynamic DT 770 Pro (80 Ohm)</b> from <a href="https://customcans.co.uk/">
Custom Cans</a>, and a pair of <a href="https://www.amazon.ca/gp/product/B07JH56Q7J?psc=1" target="_blank"><b>KZ ZSN</b></a>
wired earbuds.
<details>
<summary>More details</summary>
<p>The main factor that drove me to choose Beyerdynamic for my headphones was build quality. Durability was
already important to me, but after my previous headphones from Audio-Technica snapped after only a year I
was determined not to let that happen again. Supposedly this company's headphones are built really well.
Beyond that, these are studio headphones, and I wanted something that was good for musician-ing, on the rare
occasion I actually do that. From what I've been able to discern so far, they certainly live up to the "studio"
moniker. The audio quality is very nice. The one issue I have with these headphones is that they don't have a
removable cable, which is why I had mine modded. They've got a mini-XLR port now!</p>
<p>As for the earbuds, you should buy them. They are quite literally the best earbuds I've ever used. They're
cheap, the sound quality is good, and the build quality is absolutely stellar. I've spent three times as
much on headphones that are worse in every way.</p>
</details>
</li>
</ul>
<h2>Software</h2>
<ul>
<li>
I use arch, btw. Well, <a href="https://manjaro.org/" target="_blank">Manjaro</a>, but close enough.
<details>
<summary>More details</summary>
<details id="winrant">
<summary>furious tirade about Windows</summary>
<p>Seriously, fuck Windows and fuck Microsoft. I've watched them spend the past several years strong-arming
hardware manufacturers into making it harder and harder to install anything but their terrible product on
hardware YOU own in the name of "security". I first noticed it with secure boot, and they've continued
this trend recently with Pluton, a <span style="text-decoration:line-through;">anti-competition</span>
"security" chip built directly into the CPU. As far as I can tell, both of these things can be disabled in
the BIOS (for now), but how long until they can't? Honestly, at this point, I'm running Linux partially
out of sheer spite, as a middle finger to every corporation that thinks they have the right to control
what I do with my hardware.</p>
<p>Apple's even worse, mind you. Say what you will about performance and power efficiency, but I'm convinced
the main reason Apple has started making their own CPU architectures is as the nuclear option to finally
kill the Hackintosh. For as long as I've been alive Apple has spearheaded every anti-consumer movement in
every industry they're in. I swear, every time someone responds to a complaint about Windows or Android by
recommending an Apple product I get a little bit closer to snapping and beating Tim Cook to death with a
broken iMac. This isn't 1983, motherfucker. Buy something you can fix.</p>
</details>
<p>I have a long history with Linux. The first computer I ever owned was a Chromebook, and I wanted to play
<span title="Java Edition, mind. I could have played Pocket Edition anytime I wanted. Minecraft on anything but the PC used to suck big-time. Feature parity didn't exist. I think Chromebooks might even be able to run Minecraft Bedrock Edition now with the Android app support. Honestly, I think it would still be worth hacking proper Linux onto them to play the real deal.">Minecraft</span> on it, which Chromebooks famously can't do,
so naturally the logical solution was to install Linux on the thing with Crouton in order to run it. It was
incredibly sketchy, janky, and not exactly performant, but I got my Minecraft and that was what mattered. I
killed it 9 months in by overworking its poor little <span title="When I say overworked, I mean it. The thing was redlining basically all the time whenever I was doing about anything in the Linux environment, especially Minecraft. It would overhead so much so often I'm pretty sure I melted the adhesive keeping the bottom panel on, because by the end of its life that thing was in a pretty much constant state of nearly coming off.">passively
cooled</span> Celeron CPU, and after that I mostly stuck with Windows on the two HP laptops I had over the
next six years for software compatibility reasons, but I tried to switch back to Linux occasionaly.</p>
<p>I finally pulled it off last year, when I used a combination of upsetting news about Windows 11 and a
storage upgrade to my laptop as my excuse to switch. Software compatibility on Linux still isn't quite there
yet, but I didn't use a lot of Windows-only programs outside of Paint.NET and games anyway, and game
compatibility has improved leaps and bounds with Valve's Proton/Steam Play. Shame I can't play any of the
games I got for free on the Epic launcher, though.</p>
<p>So why Manjaro in particular? Honestly, it's popular, it shipped with the desktop environment I wanted, and
it's based on Arch Linux, and I wanted to be able to tell people I run Arch, by the way. Basically anything
would have been fine, though. I used to use System76's Pop!_OS because it ships with the Nvidia drivers I
needed for my laptop, and before that it was a mix of different flavors of Ubuntu.</p>
</details>
</li>
<li>
I use <a href="https://www.mozilla.org/en-US/firefox/new/" target="_blank">Firefox</a> as my only web browser
outside of testing.
<details>
<summary>More details</summary>
<p>I really like Firefox. It's customizable as hell, the dev tools are better, and it's designed to keep your
data private from the likes of Google and Facebook. No, I won't call them fucking meta.</p>
<p>On top of that, Firefox is genuinely incredibly important. It's the only modern browser left outside of
Safari that isn't built on top of Google's Chromium, and for that reason it's critical that it stays
significant because the alternative is Google (and MAYBE Apple) having the complete final say over every web
standard, and I shouldn't have to explain why that would be really, really bad.</p>
<p>Seriously, please switch to Firefox. It can import your data from other browsers like Chrome, so the
transition should be pretty well seamless. Although, if you're willing to get into the weeds a bit, I'd
recommend using this <a href="https://ffprofile.com/">profile generator</a> to fortify your browsing
experience even further.</p>
</details>
</li>
<li>For Chromium testing and the occasional poorly-built website that just doesn't want to run in Firefox, I use <a
href="https://github.com/ungoogled-software/ungoogled-chromium">Ungoogled Chromium</a>.</li>
<li>I use a self-hosted <a href="https://github.com/nkanaev/yarr">Yarr</a> instance for my RSS reader.</li>
<li>Loathe as I am to admit it, Microsoft's Visual Studio Code is really good. Which is why I use <a
href="https://vscodium.com/" target="_blank">VSCodium</a>, an open-source build with all the telemetry
stripped out.
</li>
<li><a href="https://www.blender.org/" target="_blank">Blender</a> does goddamn everything. It's almost scary. I
use it for visual art, video creation, and modeling and have since mid-2020.</li>
<li>
<a href="https://www.reaper.fm/" target="_blank">REAPER</a> has the benefits of being both available for Linux
and sanely priced.
<details>
<summary>More details</summary>
<p>As of writing (2022-07-18), I haven't released any music made in REAPER yet, but I already like it a hell
of a lot more than LMMS, which is what I've used to make most of my music up until this point. LMMS is a
free DAW with some great built-in synth plugins and the ability to run Windows VST instruments on Linux
natively, and basically nothing else going for it. It's missing a lot of basic functionality that every
other DAW I've seen has and what is there is laid out in a really idiosyncratic way. That said, it's capable
of making some <a href="https://isopod.cool/old/2/audio/bridges.mp3">pretty good stuff</a>.</p>
<p>As for why REAPER in particular, it's the cheapest one there is by a good long way, especially for a
version without artificial limitations (<i>cough cough FL STUDIO</i>), and it's available for Linux. It does
have some problems remembering my settings for the one non-native plugin I currently use, but that seems to
be a problem with the LV2 plugin standard, so I can't really hold that against it.</p>
</details>
</li>
<li><a href="https://www.gimp.org/" target="_blank">GIMP</a> is, frankly, the best photo editor available on
Linux. I'm more comfortable in Paint.NET and would probably still be using it if I could get it running in WINE.
</li>
<li><a href="https://elisa.kde.org/" target="_blank">Elisa</a> is my favourite music player I've ever used. It's
also the only one I could find that didn't have this weird UI bug where it used mismatched color themes for the
UI and icons, leading to absolutely zero contrast.</li>
<li>For everything that isn't music, I default to <a href="https://www.videolan.org/vlc/" target="_blank">VLC</a>.
It's a free and open-source everything player.</li>
<li>I use <a href="https://www.scribus.net/">Scribus</a> on the rare occasion I need to edit a PDF because I have
found literally nothing else for the job.</li>
<li>I download my, uh, Linux ISOs with <a href="https://www.qbittorrent.org/" target="_blank">qBittorrent</a>.
uTorrent is adware, don't get anywhere near it.</li>
<li>I use <a href="https://syncthing.net/" target="_blank">Syncthing</a> to sync my photos, music library, etc.
between my phone and my PC. It's simple, reliable, and fully automatic. Eat your heart out, iTunes.</li>
<li><a href="https://www.zsh.org/" target="_blank">zsh</a> largely out of peer pressure from the greater Linux
community. I'm not enough of a power user to notice much of a difference compared to bash, but I do like being
able to customize my shell prompt.
<details>
<summary>More details</summary>
<ul>
<li>I use <a href="https://ohmyz.sh/">Oh My Zsh</a></li>
<li>and <a href="https://github.com/romkatv/powerlevel10k">Powerlevel10k</a> to do this.</li>
</ul>
</details>
</li>
<li><a href="https://apps.kde.org/yakuake/" target="_blank">Yakuake</a> and whatever other terminal emulator ships
with my distribution.
<details>
<summary>More details</summary>
I also have a <i>heavily</i> customized <a href="https://github.com/hykilpikonna/hyfetch">fetch</a> script I'm currently itching to show off:
<img src="images/2022-12-20_zsh.png" alt="A heavily customized HyFetch (neofetch with pride flags, essentially) featuring, among various stock readouts, fully custom GPU and GPU load and temperature readouts, a fully custom indicator of what media is playing, and a custom to-do list. All of this stuff is absolutely caked in dynamically drawn Unicode box drawing characters and ANSI control codes. The ASCII Manjaro logo has nonbinary pride flag colors. The color theme at play is gruvbox." title="My HyFetch config and accompanying zsh prompt, as of 2022-12-20. The zsh prompt is pretty much stock Powerlevel10k, but the HyFetch above it has been gutted and reassembled out of ANSI control codes and sed commands into something borderline unrecognizable. I'm pretty sure it's radioactive. It's slick as fuck though. The TODO and Playing segments are fully custom and drawn dynamically. I've also configured it to not show when logging in via ssh or the VSCode/kate integrated terminals. Don't ask why I enabled sshd on my home computer." />
</details>
</li>
</ul>
<div id="leftsidebg" style="background-image: url(bg.png); --distancefromcenter: -20%;"
title="Pictured: Nvidia driver support on Wayland"></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

BIN
blog/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 925 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

BIN
blog/images/neonkiosk.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

284
blog/index.php Normal file
View file

@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
ul {
margin: 0;
margin-top: 2rem;
display: flex;
flex-direction: column;
padding-left: 0;
list-style: none;
/*height: 6.4rem;
overflow-x: scroll;
flex-wrap: wrap;*/
}
li {
width: fit-content;
list-style: none;
display: inline-block;
height: calc(100% / 3);
margin-right: 2rem;
}
ul h2 {
margin-top: -0.4rem;
margin-bottom: 0;
}
/*ul h2:first-of-type::before {
content: "Articles - "
}*/
article img, article video, article iframe {
filter:drop-shadow(var(--stddropshadow));
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>blog</h1>
<h2 id="caption">inane ramblings</h2>
<nav>
<a href="https://blog.miso.town/atom?url=https://isopod.cool/blog/">Atom (articles)</a>
<a href="https://journal.miso.town/atom?url=https://isopod.cool/blog/">Atom (journal)</a>
</nav>
<?php
$username = "niceopod"; // Your username here!
$ch = curl_init("https://status.cafe/users/$username/status.json");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$str = curl_exec($ch);
if(curl_error($ch)) {
//echo curl_error($ch);
$str = "";
}
curl_close($ch);
$status_data = json_decode($str, true);
$content = $status_data["content"];
$face = $status_data["face"];
$timeago = $status_data["timeAgo"];
if(strlen($content) < 1) {
$content = "Something's gone wrong server side...";
}
echo "<div id='statuscafe'><div id='statuscafe-username'><a href='https://status.cafe/users/$username' target='_blank'>status</a> $face $timeago</div><div id='statuscafe-content'>$content</div></div>";
?>
<ul>
<li><h2>2022</h2></li>
<li><time datetime="2022-09-19 1:18">2022-09-19</time> <a href="posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/">deeptwisty.com 2nd anniversary - A History of This Bullshit</a></li>
<li><time datetime="2022-08-25 8:04">2022-08-25</time> <a href="posts/guide_self_host_safely_with_wireguard/">Guide - Self-Host Safely with WireGuard</a></li>
<li><time datetime="2022-05-21 0:00">2022-05-21</time> <a href="https://isopod.cool/old/2/?page=blog#Late_May_Updates">Late May Updates</a></li>
<li><time datetime="2022-04-25 0:00">2022-04-25</time> <a href="https://isopod.cool/old/2/?page=blog#Second">Second</a></li>
<li><time datetime="2022-04-13 6:00">2022-04-13</time> <a href="https://isopod.cool/old/2/?page=blog#First">First</a></li>
</ul>
<article>
<h2>2023-01-05</h2>
<p>Wow, I haven't seen you since last year! I told you I wouldn't get another post out within a week. I bought Factorio for myself for Christmas, and that was a mistake. I already have 83 hours logged in my save file, and I've probably played a bit more than that because I save scum like crazy when fighting biters.</p>
<p>In spite of this, I've actually done some stuff on the ol' website! I've got an article in the works, and I've created a <a href="../etc/quotes/">page</a> immortalizing all the funniest bullshit my friends and I have said in our discord group chat. I'm real proud of it, I wrote some PHP code to generate HTML styled like real discord messages. It's nicer presentation, easier on my server's storage space, and better for screen readers than uploading screenshots! Fair warning if you want to check it out, there's quite a high density of "sex joke".</a>
</article>
<article>
<h2>2022-12-21</h2>
<p>Can you believe it guys? Christmas, just a week away. Christmas is in a week! Woohoo! I am so happy about this information. Christmas! Just a week away, oh wow. Can you believe it? Christmas! Just in a week! It got here so fast!</p>
<p>It Has Been Almost A Month. Whoops! Not many updates I can think of, hence the lack of entries here I guess. All my time's been taken up by procrastinating on my college work. I got meds that were supposed to help with that, but all they've accomplished so far is allowing me to procrastinate more efficiently. Maybe I need a higher dose.</p>
<p>Speaking of procrastinating efficiently, I've done some coding. I wrote a <a href="https://isopod.cool/stuff/firefoxrss/feed.php">PHP script</a> that scrapes the Firefox release notes into an RSS feed. After that I got hard into customizing Neofetch for a few days. My setup is so caked in box drawing characters and manually coded ANSI escapes as to be borderline unrecognizable, and quite possibly alive. Here, I'll subject you to it:</p>
<details>
<summary>Click to be subjected</summary>
<p>Thanks. I really needed to get this out of my system.</p>
<img src="images/2022-12-21_zsh.png" alt="The sickest damn Neofetch config you've ever seen in your life" />
<p>Admittedly, this is actually a fork of Neofetch called Hyfetch. It's functionally the same though, all it does is color the ASCII Manjaro logo with nonbinary pride flag colors. Anyway, just look at this shit. I'm gonna brag about every damn detail of it to you now. First off, those lines surrounding everything are dynamically drawn. The width of the box is dependent on the width of the <span title="It's just the top line because I know that one's likely to always be the longest">top line</span> there. All the shit underneath is dynamic too. That "playing" indicator goes away completely when nothing's playing, and as a fun little touch I made it so that separators in the title string like " - " and " | " are replaced with a line that connects up to the box. The to-do list below it isn't hard coded either. That thing pulls from a text file in my home directory and dynamically draws those lines to connect to each item, and it also disappears when there's nothing in the to-do list. I've configured zshrc to only show this when I log in via terminal emulators so it doesn't clog up my IDE terminal windows or my <span title="Don't ask.">ssh</span> client. Half these readouts are custom. I had to install a whole separate program (shoutout <a href="https://github.com/clbr/radeontop">radeontop</a>) to get the GPU load. I had to learn both sed and ANSI escape codes to get this to work. It's so packed to brimming with both I almost want to throw up looking at it, and I didn't even get most of it off Stack Overflow. I can do all this crazy crap because Neofetch's config file is literally just a shell script it runs, but that also means I had to write all that shit in <i>bash</i>. Let me tell you, it's a bitch and a half to get almost anything of substance done in that fuckin' mess of a language. I learned the hard way it can only do integer math on its own. Javascript's weird type coercion shit and Lua counting arrays from 1 instead of 0 is child's play compared to what I had to deal with to get my Neofetch looking all pretty. If statements in this nightmare language are fucking indecipherable. I had to search for "bash if" more than I had to search for anything related to that ANSI control code fuckery.</p>
<img src="images/2022-12-21_ssh.png" alt="An equally sick fetch script as the first, but fully custom and running on my VPS" />
<p>I also have this. I coded it for my VPS, just because, and it's <i>entirely</i> custom. From <span title="Except the ASCII art. I stole the ASCII art from Neofetch. It's my code printing it and my ANSI escapes coloring it, though.">scratch</span>. This is how I learned Bash can't do floating point math. Did I need to do this? No. Was there any good reason for me to do this? Probably not. What's your point?</p>
</details>
<p>I also went bowling today, so that was fun. I sucked shit at it. There was pizza.</p>
<p>My headphones continue to be amazing. If any pair of headphones on planet Earth will last me ten years, I think it's this one. Knock on wood, etc.</p>
<p>According to the roughly weekly schedule I set for these things for myself, there's still one more post due this year, but let's be real here. See you next year!</p>
</article>
<article>
<h2>2022-11-26</h2>
<p>I finally got my ADHD meds! They seem to be working, too. Since I started taking them a couple days ago, I've noticed a pronounced drop in my general compulsion to do bad unproductive things like scroll social media for multiple hours. I spent all day today setting up a companion website for my Minecraft server, but not in a forgot-to-eat-lunch kind of way, which is doubly impressive because one of the side effects of this stuff is a reduced appetite.</p>
<p>This past week in class has been really easy - the provided study plan provisioned a whole week for an assignment that consisted of installing a C++ compiler and debugging a simple program, and I got that done in a couple of hours, even including the snag I hit where they expected me to use Windows because of course they fucking did. I spent the rest of the week doing nothing because that's what was on the schedule. I could have worked ahead, but fuck that.</p>
<p>The headphones that I got literally the day I posted the last entry have proven to be very nice. Not only are they built like a tank, but I've learned it's possible to replace just about every part of them. I might actually manage to keep these until the drivers fail! How cool would that be?</p>
<p>I need to get some more exercise. Can one of you remind me to go on a walk or something tomorrow?</p>
</article>
<article>
<h2>2022-11-17</h2>
<p>My new headphones are finally here! Thus far, they certainly seem to live up to the hype. I hear a lot of people in the audiophile space talking about "soundstage", and while this certainly doesn't have Dolby Atmos&trade; levels of it, I kind of see what they mean now. It's like the sounds are coming from outside of my ears! Naturally, the quality of those sounds is fantastic as well. Plus, they're really comfortable, built well, and the custom braided cable that the modding company provided is superb. Okay, enough gushing. Maybe I'll write a review of these once I've gotten some more use out of them.</p>
<p>I've created a service on here! It's a little utility that takes an RSS feed and filters it based on the contents of the entries. I created it because there are a couple Tumblr blogs I subscribe to the <span title="Did you know you can get an RSS feed from any Tumblr blog at <blog URL>.tumblr.com/rss?">RSS feeds</span> for and I wanted to filter them to have just the posts with images. You can feel free to <a href="https://isopod.cool/stuff/rssfilter.php">use it</a> if you want, but I encourage you to download the source code and self-host it as well!</p>
<p>The computer science class I'm taking has been going well. So far it's mostly been the basics - going over ideas like loops and binary numbers and shit. The chapter of the textbook I read today explained AND gates to me. My years of being a Redstone Knower in Minecraft have been building up to this! Not to imply I think this is dumb or pointless or anything - this is clearly building up to some much more involved shit and I'm waiting with bated breath for the other shoe to drop difficulty-wise, but I'm taking it as a good sign that this has been <span title="Knock on wood.">so easy</span> thus far.</p>
<p>Now for some major tonal whiplash: I'm now fairly confident that I'm some degree of nonbinary. You may have guessed this if you've been poking around my <span title="Particularly the stats page where my pronouns are listed as &quot;any&quot; and my gender is listed as a randomly selected joke about how there isn't one, and the more page which features a nonbinary pride flag button">website</span> of late, or just reading this journal, but I was reluctant to say so explicitly in case I ended up changing my mind. I don't want to get into the details, because I don't really know them either, but I'm pretty sure at this point that "man" doesn't nearly cover it. As for pronouns, anything works! Fuck around! This is all uncharted territory for me, so if some gendered term or other makes me uncomfortable (or doesn't), I'd like to find out now lest I come out to my family and then have to amend that shit later.</p>
<p>I think that about covers it for now. I'm gonna go listen to some more of my favorite music with these shiny new headphones, or maybe just go the hell to bed already.</p>
</article>
<article>
<h2>2022-11-06</h2>
<p>I've started the first of my classes! So far it's been mostly reading the textbook and making tedious discussion posts about it in the class forum. I understand on some level why they make us do it, but that doesn't make it not annoying.</p>
<p>All this stuff going on hasn't left me with a ton of time or energy to update my website. One course isn't exactly a full load, but between doing the course work, procrastinating on the course work, working on this music video, procrastinating on that, and my utterly wrecked sleep schedule, there just doesn't seem to be enough hours in the day.</p>
<p>Speaking of the music video, here's some more renders of it I've made if you're interested:
<details>
<summary>Renders</summary>
<iframe style="display: block; margin: 1rem auto;" width="560" height="315" src="https://www.youtube-nocookie.com/embed/2-EA661SKic" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
Looks so much better in Cycles, doesn't it? I lament the destructive effects of Youtube compression, however.
<iframe style="display: block; margin: 1rem auto;" width="560" height="315" src="https://www.youtube-nocookie.com/embed/r54mC6eIZxI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
This second one was rendered in a secret third thing, Workbench, a barebones rendering engine with basically no graphical features at all that I used here just to see how some timings would look in the final product.
</details>
</p>
<p>I've also finally made some progress towards getting some kind of ADHD medication, so hopefully that will help somewhat.</p>
</article>
<article>
<h2>2022-10-28</h2>
<p>My headphones broke a couple days ago. The flimsy swivel joint on one of the ear cups snapped. Lest you suffer the same fate, this was the Audio-Technica ATH-M40x. The joints on the M50x look much more robust, but I've elected not to chance it. I've chosen as their replacement a pair of headphones that reportedly have better sound and vastly superior build quality, the Beyerdynamic DT 770 Pro. I wasn't thrilled about the lack of a removable cable, though, so I elected to get mine through an <a href="https://customcans.co.uk/">English modding company</a> that I've heard good things about. I'll post an update when they get here.</p>
<p>I've added some automated spookification to my website just in time for Halloween! I used some basic server-side scripting to add some simple themed styling to the webpages and swap out the pool of landing page captions during October. I also have a <a href="../images/autoisopod.png">link</a> that automatically serves an appropriate seasonal isopod image. I also set it up with a little party hat on my birthday :)</p>
<p>My classes start in a few days. I am filled with Dread and Worry. It'll probably be fine.</p>
</article>
<article>
<h2>2022-10-19</h2>
<p>It's been a minute. Whoops. I had informally planned to update this thing every week or so. I guess this time falls more on the "or so" end of the spectrum. Anyway, I've made significant progress on the music video. The section I posted a test render of a couple entries ago is finished now! I'm proud of how it turned out and I'm really excited for the next part.</p>
<p>I decided to render the animation in <span title="Blender's stock raytracing-based rendering engine">Cycles</span> instead of <span title="Blender's stock rasterization-based rendering engine">Eevee</span> because, as you might be able to tell from what I've shown, it looks pretty bad in Eevee. I'd been having some stability problems when rendering in Cycles where my system would lock up and crash at random, but I've figured out how to solve that. First, I had Cycles set to use both my dedicated GPU and my CPU's integrated graphics, which was apparently causing issues. The integrated GPU was barely contributing anyway, and turning it off solved 90% of my problems. The other 10% were solved by not doing GPU-intensive stuff like hanging out in a video call with four people during the render.</p>
<p>Basically my dedicated GPU has to be the only thing working on the render and the render has to be the only thing of note it's doing. This shit is why I want that second GPU as a coprocessor. At least my computer is usable on a basic level during renders now. Before the iGPU rendering was eating up all my CPU time and causing the rest of my system to grind to a halt. I'm thinking, if I go through with this second GPU business, that I'll get a cheap 3050 or 3060 once the low end 40-series cards come out. GPU prices are approaching sane again, so my main concern is whether my 650 watt power supply can handle it. It's a quality unit and most of the cards I've looked at still leave my total system power at under 600 watts, so I expect it should be fine, but that's still cutting a little closer than I'd like.</p>
<p>I had to add bot protection to my guestbook a couple days ago. Adding a basic test wasn't hard, but I was hoping I wouldn't have to do it. I checked my guestbook that day to find 67 new entries of obvious spam. I do think it was funny that the spam entries were full of BBCode. Not sure why they expected a majority of their targets to support that in the proprietary corporate hellscape that is the modern internet.</p>
<p>I tried live streaming a couple times recently. I played Noita. To quote one of the webcomics of all time, I am NOT VERY GOOD AT IT. Both streaming and Noita.</p>
<p>In other news, I've realized my neighborhood resembles an <code>[FUNNY MEME]</code> on the street map. I'm not gonna show a picture for obvious reasons, so you'll just have to take my word for it that it's very funny.</p>
</article>
<article>
<h2>2022-10-06</h2>
<p>Pretty cool day today. A while back I ordered an internal USB card for my computer that purports to allow remote control of the power and reset buttons, and it arrived today. I had some problems initially upon installing it where it was behaving in a weird and unpredictable way, but it turns out I had overtightened the screw on the back of the remote while installing the battery, which had caused the reset button to be held down, and loosening it fixed everything.</p>
<p>While looking into the new Intel GPUs that are releasing soon, I incidentally learned that my AMD GPU is actually pretty terrible for rendering in Blender relative to basically everything else. Could have done with that information several months ago. Maybe I'll look into getting a cheap Nvidia card for only rendering once the 40-series comes out and everything else (<span title="I feel foolish for even suggesting this will happen. Many GTX 1080s from FIVE years ago are still going for MORE than their original MSRP, I'm assuming as a holdover from the shortage, but still.">hopefully</span>) drops in price. At least it's good for gaming.</p>
</article>
<article>
<h2>2022-10-01</h2>
<p>Why is it October? That's ridiculous. It's not time for October yet.</p>
<p>I've been working on that music video I mentioned in... uh... July. I'd be lying if I said I thought I was making good progress, but I'm certainly making progress. Here's some pictures:</p>
<details>
<summary>Pictures</summary><br>
<img width="100%" src="images/2022-10-01_arm.png" alt="A low-poly 3D render of a robotic arm mounted on a vertical rail" />
<img width="100%" src="images/2022-10-01_drone.png" alt="A low-poly 3D render of a quadcopter-style drone carrying a cube with &quot;CRATE&quot; crudely scrawled on the front" />
<img width="100%" src="images/2022-10-01_cam.png" alt="A low-poly 3D render of a wall-mounted camera with a glowing green light below the lens" />
And a partial test render:
<video width="100%" controls>
<source src="images/2022-10-01_mv_preview.mp4" type="video/mp4" />
Your browser does not support the video tag. Watch it <a href="images/2022-10-01_mv_preview.mp4">here</a>.
</video>
</details>
<p>I've registered for an online college computer science program. I'm planning to start with one course, then see if I want to keep going and do a 1-year diploma, then after that see if I want to keep going some more and do a whole degree. Thanking my lucky stars I already have a way to pay for it lined up. God damn is this shit expensive.</p>
</article>
<article>
<h2>2022-09-19</h2>
<p>Publishing a new blog post right now. It's a special celebratory post for the second anniversary of my other website. The anniversary was actually yesterday, but the forces of procrastination were simply too powerful.</p>
<p>I bought ULTRAKILL a few days ago and I've been playing the absolute shit out of it. Like, probably too much. It's been eight days and I've played for almost 50 hours and P-ranked almost all of Act 1. I'm not normal about this videogame. You should play it right now.</p>
<p>I've been thinking about ways to make my computer's RGB lighting behave the way I want. Right now it just stays on whenever the computer has power unless I shut it off, which I've configured systemd to do for me, but I'd prefer it to behave more like an extension of my system's power LED, turning off automatically when the system is off or in sleep mode. I really hope there's some easy way to do it in software that I've missed and I don't have to figure out how to rig up my own janky solution with relays or some crap. That does sound fun though.</p>
</article>
<article>
<h2>2022-09-13</h2>
<p>Happy birthday to me! I turned 20 today. I had a bunch of stuff to do today for unrelated reasons. I am very tired.</p>
</article>
<article>
<h2>2022-09-11</h2>
<p>Another entry in the overclocking saga. I've pushed my CPU another half a GHz with no problems, but more importantly, I discovered what was actually wrong with my RAM! I thought it was just partially incompatible with my CPU, but it turns out my motherboard BIOS was almost two years out of date, and updating it fixed the problem! I've seen a <span title="For those keeping score at home, I went from 2:24 to 2:22, a 1.4% improvement.">2-second improvement</span> in my render times in the Blender BMW <span title="If you're curious, my GPU absolutely creams my CPU in the BMW test, getting times in the 30 second range.">CPU benchmark</span>.</p>
</article>
<article>
<h2>2022-09-05</h2>
<p>Overclocked my CPU today! Admittedly, I pretty much blindly followed a guide for my specific CPU on Youtube. But it seems to have worked! It didn't change my performance in Blender CPU rendering even slightly, but it runs somewhat hotter now and my performance in Minecraft has noticeably improved. I wonder if I could push it further.</p>
</article>
<article>
<h2>2022-08-30</h2>
<p>Absolute linear time moment right now. It's almost September, and my birthday is in September, which means I'm almost In My 20s&trade;, and none of that is fucking with me at all.</p>
<p>I drove some places today. I went downtown to attend some small event, but I was the only person who showed. Then I went to the mall to eat at the New York Fries there (Their "Bacon Double Cheese Poutine" doesn't even have gravy! Outrageous! Still good tho), then I went to go buy some bus tickets. I can drive now, but sometimes other people in the house need the car.</p>
<p>Each stop required that I navigate a parking lot, plus an extra bonus one to turn around in because I fucked up and exited one of them at a spot where I could only turn right, but needed to go left. For those keeping score at home, that's four total parking lots in one day. I also slipped and fell in some mud in one of them. Based on today's experiences, I can only conclude that parking lots are evil. They are the worst places to navigate both on foot and in a car. The more I use this thing, the more I feel like I shouldn't have to. At least the fries were good.</p>
<p>Still figuring out the whole "gender" business. No major progress on that front as yet.</p>
<p>Been thinking about home server stuff a lot. I kind of want to try to convert my laptop into some kind of fucked up chimera of a storage server. Disable the chassis intrusion detector, mount the mainboard in a desktop/server case somehow, massively upgrade the storage, maybe try and source one of those sketchy NVMe to SATA HBAs. Obviously couldn't power the drives off the laptop though. Anyway, could be fun if I don't blow everything up in the process.</p>
<p>I also built a guestbook for my website the other day. I learned a lot of PHP doing that. I do want to deprecate the cbox channel now, because it sees basically no use and I'd like to cut down on JavaScript.</p>
<p>I think these posts might be getting a little too long.</p>
</article>
<article>
<h2>2022-08-24</h2>
<p>I've been having fun with various networking nonsense of late. To start, I finally got that SearXNG instance up and running. The issue originally was that I tried to run it in a Docker container, but it was listening on the HTTP ports so I couldn't run my website at the same time. Then I tried installing it normally, but something broke and it didn't want to work. I guess the installation instructions got updated recently, because I followed the guide again and it worked this time. No more search engine privacy drama for me!</p>
<p>After that I decided I wanted to start self-hosting a Minecraft server I run, <span title="I say &quot;at the time&quot; like it wasn't less than 24 hours ago">at the time</span> hosted on a Shockbyte server I was renting. I had an old gaming laptop laying around collecting dust that was more than up to the task, the only problem was my home network. See, I live with my parents, and naturally they're in charge of the home network setup. I'm not convinced they'd be willing to let me mess around <span title="haha get it? that's my name">willy</span>-nilly with the router settings. And even if I could, it's behind some weird mesh WiFi network with its OWN management interface I don't know the login to.</p>
<p>Luckily, there was a way I could circumvent all this mess entirely: WireGuard. If I could connect, say, an <span title="Something that, if you've been paying attention, you know I very much have.">external VPS</span> to my laptop with a VPN, I could forward Minecraft traffic to it without having to care in the slightest about my home network! So naturally I didn't hesitate to install WireGuard and look up a guide on how to configure it. It was easier than I expected, funny enough. The main problem I ran into was that WireGuard is configured (sanely) by default to close the connection if the client doesn't send any packets for a bit, so I had to dig around in the config files to fix that if I wanted it accessible from the internet.</p>
<p>It worked great! As a bonus, my laptop is still accessible via LAN, so I can now connect to the Minecraft server directly from across my desk for ping times in the same order of magnitude as my monitors. With all this stuff running on my VPS now, I needed to upgrade from the $5 base plan. Fortunately, I now had a freshly-made-redundant Minecraft server rental I could cancel to free up the necessary funds.</p>
<p>Finally, I've installed Termux on my phone. I can now SSH into my computer to save Youtube videos with yt-dlp from anywhere in the house! I was worryingly enthused about that when I got it set up. I think I have problems.</p>
</article>
<article>
<h2>2022-08-17</h2>
<p>I've had my driver's license for a few days now. I've even driven a couple of places... independently! It's proving to be significantly less terrifying than I was expecting, they said, jinxing themself.</p>
<p>Yeah, about that bit at the end there. The short version is, I'm no longer certain of my gender. You'd know this already if you've been poking around my site of late<span title="😎">;</span> I've taken quite a while to actually properly write about it. I guess I just felt weird about making it "official" by discussing it, so to speak. Anyway, I've started using he/they as opposed to the default he/him in spaces where I feel comfortable doing so, like here. Just to try it out. Seeing how I like it. Gathering data, et cetera. We'll see how it works out. Gender is hard.</p>
<p>Oh, and the car's fine, by the way. We think there was a broken seal somewhere in the power steeing system. The repair was expensive.</p>
<article>
<h2>2022-08-12</h2>
<p>It's been an exciting 24 hours. I'm <i>actually</i> just about over this cold, it seems, for one. Also, I took my driver's exam today! I passed with 60 out of a possible 75 demerit points. Not phenomenal, but good enough! I am now officially a licensed driver! I smelled steering fluid during the parking section of the test though, so we took the family car I took it in to a mechanic immediately after. Fun stuff. In nicer news, we celebrated with ice cream cake afterwards!</p>
<p>I also set up a fediverse instance on my server today. Since quitting twitter, I've been sorely missing a place to post my banger tweets. My account is <a href="https://social.isopod.cool/will">@will@social.isopod.cool</a> if you're interested. I went with Pleroma because I'd heard Mastodon might be too heavy for my weak little VPS. I'm glad I did, because even Pleroma is seemingly the most resource-hungry thing on my server thus far. It uses almost as much RAM as everything else (read: my website and an XMPP server I don't use because I can't make file sharing work) put together.</p>
<p>The thing was surprisingly easy to set up. This coming from someone who unironically calls Minecraft redstone stuff "simple", but still. I followed <a href="https://landchad.net/pleroma/">this guide</a> and the process was shockingly smooth and painless, relatively speaking. Not like the time I tried to run a SearX instance. That sucked.</p>
</article>
<article>
<h2>2022-08-08</h2>
<p>I've just about gotten over this cold. I've had nothing but a mild cough and runny nose for days now.</p>
<p>I took my last of several driving lessons today. I've got the exam to get my license scheduled in a few days and by the looks of it, there's a non-zero chance I'll pass! Very excited to be able to run errands for my parents.</p>
</article>
<article>
<h2>2022-08-02</h2>
<p>Small update to say I've tested negative for covid! What a goddamn relief. <span title="🤜🪵">At the risk of tempting fate, I seem to be getting better, too.</span> Had to cancel an event I was going to today because I'm sick, though.</p>
<p>Also, according to the weather forecast, temperatures are supposed to be, like, sane for at least the next week! Hell yeah!</p>
</article>
<article>
<h2>2022-08-01</h2>
<p>In an entry from 11 days ago I said I felt like it was supposed to still be June. It has since been at least a month. Somehow, it's also only been like a day since I updated this thing. Also somehow, it <i>definitely</i> shouldn't be August yet.</p>
<p>I'm diseased! Can't say whether it's the same thing everyone else had a couple entries back. Still just really hoping it isn't covid. It's been pretty mild so far, fortunately (knock on wood 🤜🪵).</p>
<p>I've moved my website onto a VPS I'm renting. No real problem with Neocities, I just really wanted to experiment with server-side stuff. No longer do you need to have Javascript enabled to see the silly little randomized subheader on my landing page. I intend to get a guestbook set up as well, now that I don't need to rely on a third party for it.</p>
<p>I've also moved domains. It's isopod.cool now! The old link still works, though. My website is linked in a few places now and I didn't want to break anything. That's another major reason I had to leave Neocities. I could point two domains to my Neocities site, but only one of them would have been able to have SSL, and that is simply not acceptable.</p>
</article>
<article>
<h2>2022-07-26</h2>
<p>My parents replaced the modem in the house today. The one we had was apparently really old and grandfathered in from our previous internet plan, and it turns out it was bottlenecking the bandwith to the entire house by something like TENFOLD. We went from 30Mb down to <i>300</i>. This means we've been getting 10% of our (their) money's worth on broadband for YEARS. I am both upset and excited about this development.</p>
<p>My parents have also convinced me to watch The Office with them. We're three episodes in and I've had enough second-hand embarrassment for a whole month.</p>
</article>
<article>
<h2>2022-07-25</h2>
<p>I haven't gotten sick yet, so that's good.</p>
<p>I've been trying to distance myself from larger social medias lately. I pretty much went cold turkey on Twitter a while back, and I've been cutting down on the time I spend on Tumblr recently as well. I may write a blog post about this soon. I also joined a small forum recently. So far it's much more pleasant than any social media I've used. On the off-chance you found my site from there, hi!</p>
<p>I've decided to learn Rust. It's certainly different. Still don't know how to declare a string.</p>
</article>
<article>
<h2>2022-07-22</h2>
<p>Today I remembered this old XFCE theming website I used to frequent (and even contribute to!) back when I was very young and running Linux on a Chromebook. I went there and it's since been brutally KILLED and replaced with a Pling site... What has this world come to... R.I.P. xfce-look.org.</p>
<p>Everybody in my house but me seems to be sick with... something. Here's hoping it's not another round of covid. My mom is confident that it isn't, but I'm not so sure. 3 vaccines weren't enough to stop it the first time and apparently it can seriously damage your immune system - If I get it again, it'll probably be even worse.</p>
<p>In other news, I got lunch from my favourite sandwich joint today. Wore a mask, of course. We should never have stopped wearing those. Anyway, the sandwich was good. I got my usual order: ham + turkey + salami with smoked cheddar cheese and mayo + mustard and cucumbers on a kaiser bun (they've been out of my preferred dutch crunch bread for like the past few months). Of everything in my city, that place will be the thing I miss the most when we move by a good long way.</p>
</article>
<article>
<h2>2022-07-21</h2>
<p>It feels like it shouldn't be this late in the month. Isn't it supposed to still be June?</p>
<p>Anyway, I'm just about done a song I've been working on! Love it when that happens. I should do that more often. I've got some fun ideas for the music video I wanna make for it, too.</p>
</article>
<article>
<h2>2022-07-18</h2>
<p>Making the page I mentioned in the previous entry is taking longer than anticipated. I've been really tired recently for some reason. Part of me is blaming it on the heat, but it's possible that the complete degradation of my sleep schedule of late could be playing a part. Y'know, being unemployed and all.</p>
<p>I had a dream last night where I got a really good deal on a used <span title="I paid around $170 for two RTX 2070's, if you're curious.">graphics card</span>. I don't know what that says about me.</p>
</article>
<article>
<h2>2022-07-16</h2>
<p>I hate summer. It's too hot. It's been in the high 20's to low 30's Celsius almost every day for the past few weeks and I'm sick of it!!! I'm Canadian, I wasn't built for this!! One benefit, though, is the vastly increased volume of cool bugs.</p>
<p>I'm working on a page for my website about software I use. Well, really I've been scrolling Tumblr with the blank HTML document open on the other monitor. But you get the picture.</p>
<p>My home internet connection has been on the fritz today. I've been using my phone's mobile hotspot to connect to the internet on my computer. I chewed through something like a fifth of my monthly data cap doing that.</p>
</article>
<article>
<h2>2022-07-15</h2>
<p>Had a bit of a scare this morning when I went to turn on my computer and the <span title="Power On Self Test, if you didn't know.">POST</span> kept failing at the graphics card I overpaid for in March. Fortunately I re-seated it and everything was fine. In other news, today I learned that one of Ryzen's many idiosyncracies is that it will turbo super hard under almost any load at all if it thinks it can get away with it, so my CPU temps can skyrocket like fifteen degrees from as little as saving this document in VSCode.</p>
</article>
<article>
<h2>2022-07-14</h2>
<p>Instead of writing a new blog post, I have added an <a href="https://journal.miso.town/">HTML Journal</a> to my site. <span title="Naturally, the logical conclusion of this is one page each for posts of every possible word count.">This will be a place for posts that are too short to warrant a blog post, but too long to be a <a href="https://status.cafe/users/niceopod">status</a>.</span> For example:</p>
<p>I installed some RGB strips in my computer recently! Well, one RGB strip. I bought two, but they were both a meter long and I seem to have underestimated just how long that is. When I built the computer, I figured I didn't need RGB, so I went out of my way a little to avoid it and then I realized that the glass panel on my case was tinted so I couldn't even see in. Hence the RGB strip, because I didn't want to spend money replacing perfectly good parts with ones that light up. I've got the strip crammed in a gap next to the wall of the case where it's blocked from direct view so that it just illuminates the inside and doesn't shine in my face. Here's a picture:</p>
<a href="images/2022-07-14_PC-RGB.jpg"><img src="images/2022-07-14_PC-RGB.jpg" style="width: 50%; margin: 0 25%;"/></a>
<p>It's not exactly radiant compared to some other peoples' setups, but I like it. It's subtler.</p>
<p>Cool, right? I've retrofitted the blog post list to be compliant with HTML Journal's fresh new sister spec, <a href="https://blog.miso.town/">HTML Blog</a>, as well, mainly for the automatic feed generation it offers.</p>
</article>
<div class="buttons" style="margin-bottom: 1rem;">
<a href="https://status.cafe/"><img src="images/banner-statuscafe.png"/></a>
<a href="https://kiosk.nightfall.city/"><img src="images/neonkiosk.png"/></a>
<a href="https://journal.miso.town/"><img src="images/banner-htmlj.png"/></a>
<a href="https://blog.miso.town/"><img src="images/banner-htmlb.png"/></a>
</div>
<div id="rightsidebg" style="background-image: url(bg.png); --distancefromcenter: -10%;"></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View file

@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>deeptwisty.com 2nd anniversary - A History of This Bullshit</title>
<link href="../../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
@font-face {
font-family: Ubuntu;
src: url('../../../stuff/fonts/ubuntu.ttf');
}
body {
background: url('bg.png') #000000;
background-position: center;
background-size: cover;
background-attachment: fixed;
}
a {
color: #00CED1;
}
a:hover {
color: gold;
}
[title] {
color: white;
text-shadow: 0 0 1.5px white;
text-decoration: none;
}
h1 {
color: transparent;
-webkit-text-stroke-width: 2px;
}
#headerblue {
-webkit-text-stroke-color: blue;
text-shadow: 0 0 15px blue;
animation: hblue;
animation-duration: 10s;
animation-iteration-count: infinite;
}
@keyframes hblue {
0%,
100% {
-webkit-text-stroke-color: rgb(0, 0, 200);
text-shadow: 0 0 15px rgb(0, 0, 200);
}
15% {
-webkit-text-stroke-color: blue;
text-shadow: 0 0 15px blue;
}
}
#headergreen {
-webkit-text-stroke-color: #5ff508;
text-shadow: 0 0 15px #5ff508;
}
#headeryellow {
-webkit-text-stroke-color: gold;
text-shadow: 0 0 15px gold;
animation: hyellow;
animation-duration: 16.7ms;
animation-iteration-count: infinite;
}
@keyframes hyellow {
from {
text-shadow: 0 0 15px #dbba00de;
}
to {
text-shadow: 0 0 15px gold;
}
}
body > code {
border-color: #0ff;
box-shadow: 0 0 4px #0ff, 0 0 4px inset #0ff;
color: white;
}
</style>
</head>
<body>
<h1><span id="headerblue">nice</span><span id="headergreen">obl</span><span id="headeryellow">og</span></h1>
<h2 id="caption">deeptwisty.com 2nd anniversary:<br />A History of This Bullshit</h2>
<nav>
<a href="../../../">home</a>
<a href="../../">blog</a>
</nav>
<p>Yesterday, September 18th, 2022, was the second anniversary of the creation of my first website <span title="It has since been migrated off of Neocities">on Neocities</span>, the site that is now known as <a href="https://deeptwisty.com">deeptwisty.com</a>. I intended to publish this then, but life got in the way, by which I mean I wrote 90% of it and then procrastinated for two weeks on the last couple paragraphs. I figured that to commemorate the occasion I would finally dispense with the half-assed abridged history of the place on the about page or wherever and consolidate a complete history of my Personal Home Pages in one convenient location, that being this post.</p>
<h2>Tumblr</h2>
<p>My first proper social media was Tumblr. Well, the first social media site I joined was Pinterest, but that doesn't count. Anyway, Tumblr was my main social media and the center of my Online Presence&trade; for several years. I would pour hours into tweaking the custom theming on my blog to be just right, and I often had some sort of bio on a custom page, which is a thing Tumblr lets you do. I linked to all my other online profiles from my Tumblr page, and would prioritize linking back to it from them. This caused problems, as I was and still am the type of Tumblr user to change their username on impulse, and it was terribly inconvenient having to go through all my other accounts and change that link whenever I did (I've got it set up as a subdomain of my website now, so that should never be a problem again). Eventually, though, another service would crop up that everyone seemed to be using, and that presented me with a better way:</p>
<h2>Carrd</h2>
<p>I still use Tumblr, just not as the hub for my entire online presence. I maintain that it is still <span title="Did you know you can get an RSS feed for ANY tumblr blog by going to &lt;blog url&gt;/rss? True story!">far and away the best</span> centralized social media site. Anyway, a Carrd page became the central hub which linked to all my online profiles and which all my online profiles could link back to. Finally, I only had to update my frequently changing Tumblr link in one place. For the most part.</p>
<p>I perceived a certain stigma (at least on Tumblr) around having a Carrd page, and the sorts of people who made one. The stereotype was that you would have overly exhaustive BYF (Before You Follow) and DNI (Do Not Interact) lists full of sometimes <span title="Oh, I should have mentioned, GTFO if you kin Komaeda.">outlandish criteria</span>, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers <span title="I get why you would want people to know that information, but I'm surprised more people didn't realize that bad actors could abuse that information SO easily.">(!)</span> and probably not be the most pleasant person to interact with. I like to think I bucked that trend. My Carrd pages were generally very simple: a profile picture, a short bio (some shit like "Will&nbsp;|&nbsp;20&nbsp;|&nbsp;🇨🇦&nbsp;|&nbsp;real&nbsp;life&nbsp;isopod"), and links to my socials. That was all. I remember adding the obligatory long-form bio and DNI list at some point, but those didn't last long.</p>
<p>I believe it was around this time when the alias <span title="Yes, it's intended to be all lower case">"deep twisty"</span> came into being. I was just starting out making music at this point, posting crummy songs to SoundCloud that I'd made in an online editor called <a href="https://earsketch.gatech.edu/landing/#/">EarSketch</a> that had you use Python to arrange pre-made loops and samples on a timeline. That shit was wack, yo, but that's beside the point. I was looking for an alias to release my music under, because I was intent on making more and my actual name wasn't gonna cut it.</p>
<p>I was quite into Subnautica around this time (I promise this is relevant) and its sequel, Subnautica: Below Zero, was in the early stages of early access around this time, like still working on early-game areas early, and I was following it closely. The devs had a twitter account that posted all the git commits for the game, and a couple of them referred to a biome they were working on, the <span title="Yes, I named a song Bridges so I could call it &quot;deep twisty - Bridges&quot;. Shut up.">Deep Twisty Bridges</span>, as just "deep twisty". That is the origin of that name. I don't know why I felt compelled to base my brand off that, but now I'm committed. I get self-conscious about it sometimes, but honestly, <span title="Not to endorse Lapfox, but I wonder if that's why they go through aliases so fast. Like, god damn.">I've seen worse</span>. Not that I'm judging.</p>
<p>Anyway, I made a separate Carrd as a hub for this new "deep twisty" persona (I keep it separate from everything else mainly so I can show it to family without them seeing all of... this. Not that I have yet...). That worked fine until I wanted to start embedding my latest YouTube upload on the Carrd page, something Carrd locks behind a paywall. It was at this precise moment I remembered <span title="I did edit custom Tumblr themes, after all">I know how to code</span> and resolved to make the jump to a platform that lets you write your own HTML from scratch, in my case, this being</p>
<h2>NeoCities</h2>
<p>My first Neocities sites were simple affairs, basic little pages with little more to them than the Carrd sites they had replaced, albeit with some of the things Carrd would have made me pay to add, like that YouTube embed. You can still see the original version of what is now this site <a href="../../../old/1/">here</a>, though the original version of deeptwisty.com was unfortunately lost. It was nothing special, though. It had a similar aesthetic to its replacement, and it was pretty similarly laid out to this here page, even with the same background, just with WAY less text, and no cool isopod.</p>
<p>I've seen some people in this here "small web" community getting mad at people who use Neocities this way, to which I say: shut the fuck up! Everyone has to start somewhere, and messing around on a simple page like that could easily be a gateway drug into making something much bigger, like it was for me. Hearing sentiments like this is just going to discourage people. Besides, it's their website. They're not intruding on your special cool kids club by using a free service to do the thing that it's for.</p>
<p>It was also during this time when I bought the domain deeptwisty.com. I had to pay Neocities to use it, but I was more than happy to support the cause anyway. I didn't stricly <i>need</i> the domain, but boy was it cool to have my very own Dot Com. It just sounds so professional. deep twisty Dot Com.</p>
<p>The deep twisty site tended to take precedence over this here personal one for a while; the personal site was relegated to a subdirectory or subdomain like deeptwisty.com/me or me.deeptwisty.com. In fact, the transition from the former to the latter is when the original deeptwisty.com was tragically lost. I was copying over the contents of deeptwisty.com/me to its own fresh new dedicated Neocities profile and I accidentally uploaded the files to the wrong site, overwriting a large portion of the main deeptwisty.com with no way to recover it. I spent a couple days rebuilding it into roughly what you see at that domain now, and when I was done I was having enough fun with it that I wanted to keep going and decided to overhaul my other site too, and what resulted was <a href="../../../old/2">this</a>.</p>
<p>For this new version of the site, I decided I wanted to be able to actually add content to it, whereas the old site hadn't really been designed in a way that was conducive to that. I decided to do this in the most JS-reliant way possible. I had one main page with the navigation and layout, and the navigation worked by using a URL querystring to tell the page which content to load. It was pretty fuckin' neat, but I would eventually realize I wasn't a fan of how dependent it was on Javascript. My favorite feature of this revision is the theme picker, which swapped out different stylesheets and set a cookie to remember which one you prefer. The main problem with this was that I designed it so the themes could change basically everything bar the fudamentals of the layout, and it became a huge pain in the ass to add both new pages and new themes while ensuring everything stayed compatible. It was really cool though.</p>
<p>To be completely honest, I took rather a lot of inspiration for this revision from <a href="https://hosma.neocities.org/10/">this site here</a>, which is to say I basically made a worse version of it and went from there. You can still see some of that inspiration in v3, with the giant header text and centered single-column layout.</p>
<p>This revision was, as the kids say, Real Cool&trade;, but the aforementioned problems led me to scrap it after only about 2 months, which brings us here:</p>
<h2>v3 and Self-Hosting</h2>
<p>I wanted something that could be viewed without Javascript and wasn't a colossal pain in the ass to update, hence what you see on the site now if you're reading this soon after it was posted. If I've since overhauled the site again, the version I'm referring to should be available <a href="../../../old/3/">here</a>. This version is designed to be as simple layout-wise as possible, to the point where you can read it in a text-only browser and not lose much of the experience. It's much easier to add stuff to now. My one issue with it is the navigation - unlike v2, where you could get to any page from any other in one click, v3 requires you to go back to the homepage to move between pages. It's just harder to navigate. This system is better than having to add a link to every new page on every existing page, though. Now that I can do server-side rendering, I'll probably put in a proper navbar or something of that nature at some point.</p>
<p>Speaking of which, a bit after the jump to v3 I decided to start self-hosting my websites. I didn't have any deal breaking issues with Neocities per se, but I wanted to start messing around with server-side scripting, and I wanted to host some other things that I wasn't in a position to otherwise. I originally wanted to do this with an old laptop I had lying around, but I would have had to punch through the NAT in my house and point the domain to my home IP address, neither of which I wanted to do. Instead, I cancelled my paid Neocities account and reallocated those funds to rent a VPS. I was originally going to use Linode for this, but they literally wouldn't let me sign up for an account for some reason <span title="WTF? Like, let me give you my money, dude. The only thing I can think of that could have happened is their system assumed I was some kind of spammer or bot because I was accessing their site through a VPN. I solved the CAPTCHAs and everything. What's the deal?">(?)</span> so I went with DigitalOcean instead.</p>
<p>I've had quite a lot of fun with this newfound backend access. I now have the freedom to use Javascript only when there's literally no other way to do what I want done, and I've taken advantage, moving stuff like the randomized subheader on the landing page server-side. I'm also hosting a lot of other services on this same VPS, including but not limited to a Pleroma instance, an RSS aggregator, a SearXNG instance, and a WireGuard VPN to make <span title="Currently just a Minecraft server, but the mind races with the possibilities.">more intensive stuff</span> I host on my laptop available to the internet. I'm honestly really impressed that the 1 CPU thread and 2G of RAM my server has can handle all that.</p>
<p>That brings us to now, at this moment, when I'm writing this. I'm absolutely not out of stuff to do here, if I can ever get myself to actually fucking do any of it. I've had a great time with this whole "personal website" business so far, and I'm excited to see where I go with it from here. The community around it is cool too, though lord knows I'm still learning to navigate this particular social environment. At any rate, I'll definitely take this over Twitter.</p>
<code>
cd /home/willem/cumulus\ server/www/niceopod/blog/posts/<br>
sftp root@isopod.cool:/var/www/niceopod/blog/posts/<br>
put -r deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/
</code>
<br>
</body>
</html>

View file

@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Guide - Self-Host Safely with WireGuard</title>
<link href="../../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
h1 {
background-image: url('wireguard_logo.png');
}
summary > * {
margin-bottom: 0;
display: inline-block;
}
details[open] > summary h6 {
display: none;
}
</style>
</head>
<body>
<h1>guide:</h1>
<h2 id="caption">Self-Host Safely with WireGuard</h2>
<nav>
<a href="../../../">home</a>
<a href="../../">blog</a>
</nav>
<details>
<summary><h2>Preamble</h2> <h6>Click to show</h5></summary>
<p>If you're like me, you don't like relying on other people for your online services, either because you don't want to give out your data unnecessarily, or just because you don't want to shell out for subscription services. You might be willing to host such services yourself, and you might even have access to spare hardware to do it on.</p>
<p>One critical issue arises, however: your home network. Maybe you're behind some weird impenetrable NAT setup you don't control, or maybe your IP address is dynamic and changes regularly, or maybe you just don't want to expose your home IP to the world. What then?</p>
<p>Luckily for us, there's a way to circumvent all that nonsense. A custom VPN like the one we'll be setting up today, hosted on an external server like a VPS, can punch through any weird home internet configuration while also swapping out your home IP address for a static one that you can feel safe exposing to the world.</p>
<p>That said, this isn't the be-all end-all for security. I don't claim to know everything about that, and there's probably something you're missing in that regard if you stop here. This is intended as a basic guide for exposing a machine in your home to the internet without messing with your home network or exposing your home IP address.</p>
<p>This guide borrows heavily from the <a href="https://landchad.net/wireguard/">landchad.net</a> WireGuard guide, but while their one is geared toward running a VPN for your personal machine (complete with a tutorial on setting up a WebSocket tunnel), this one will focus specifically on forwarding incoming traffic from one server to another over the internet.</p>
<p>There are some reasons you'd want to do this instead of just hosting everything on the same VPS - in my case, I wanted to host a Minecraft server, and I had a spare computer at home that was better up to the task than anything for rent in my price range. WireGuard can run on pretty much anything; the cheapest tier on Vultr, DigialOcean or Linode will be more than sufficient.</p>
<h2>Now on to the good stuff</h2>
</details>
<p>This guide will take you through the process of setting up a WireGuard VPN connection between two machines running Linux, and configuring it to forward incoming web traffic from one to the other. It assumes you already have two servers set up running Linux (Ubuntu Server in my case, but any distro should suffice) with UFW configured and enabled, and know what ports you'll need.</p>
<p>The machine running your WireGuard server should be an external one exposed to the internet, such as a VPS, for maximum effect. For our purposes, this machine will be the "server", and the one you're forwarding traffic to will be the "client".</p>
<p>We'll be configuring WireGuard with a 172.16.0.1/24 virtual network and forwarding port 25565, the default for Minecraft, but any private IP range and port will do.</p>
<h2>Installation</h2>
<p>First, we'll install WireGuard on both machines:</p>
<code>$ apt install wireguard wireguard-tools</code>
<p>And allow the port it uses in UFW:</p>
<code>$ ufw allow 51820</code>
<h3>On the server</h3>
<p>Uncomment this line in <code>/etc/sysctl.d/99-sysctl.conf</code> to enable IPv4 forwarding:</p>
<code>$ net.ipv4.ip_forward=1</code>
<p>And apply the change with this command:</p>
<code>$ sysctl -w net.ipv4.ip_forward=1</code>
<h3>On the client</h3>
<p>We'll need to generate a public/private key pair for each machine on our VPN network. Do that now for our client like so:</p>
<code>$ sudo bash -c "umask 077 ; wg genkey &gt; /etc/wireguard/client_priv.key"<br/>$ sudo bash -c "wg pubkey &lt; /etc/wireguard/client_priv.key &gt; /etc/wireguard/client_pub.key"</code>
<p>This generates a private key for WireGuard and then generates a corresponding public key based on it. Our client's keys can now be found in <code>/etc/wireguard/client_priv.key</code> and <code>/etc/wireguard/client_pub.key</code> for our private and public keys respectively.</p>
<h3>Back to the server</h2>
<p>Now do the same for the server:</p>
<code>$ umask 077 ; wg genkey &gt; /etc/wireguard/server_priv.key<br/>$ wg pubkey &lt; /etc/wireguard/server_priv.key &gt; /etc/wireguard/server_pub.key</code>
<p>Our server's keys can now be found in <code>/etc/wireguard/server_priv.key</code> and <code>/etc/wireguard/server_pub.key</code> for our private and public keys respectively.</p>
<p>Now, create a WireGuard configuration file at <code>/etc/wireguard/wg0.conf</code>. <code>wg0</code> will be the name of our network interface, you can name yours something else if you'd like.</p>
<code>[Interface]<br/>Address = 172.16.0.1/24<br/>ListenPort = 51820<br/>PrivateKey = &nbsp;&nbsp;#(server's private key goes here)<br/># Firewall rules<br/>PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE<br/>PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE<br/><br/>[Peer]<br/># Client #1 details<br/>PublicKey = &nbsp;&nbsp;#(client's public key goes here)<br/># Traffic to route to this client<br/>AllowedIPs = 172.16.0.2/32</code>
<p>Paste the server's private key after <code>PrivateKey =</code> in <code>[Interface]</code> and the client's public key after <code>PublicKey =</code> in <code>[Peer]</code>.</p>
<p>With this setup, our server will use the virtual local IP <code>172.16.0.1</code> and our client will use the IP <code>172.16.0.2</code>. You can also add up to 254 more clients by duplicating the <code>[Peer]</code> block and and updating it with the respective public key and a new local IP address.</p>
<p>Now, enable and start the WireGuard service with</p>
<code>$ systemctl enable --now wg-quick@wg0.service</code>
<p><code>wg0</code> being what we called our network interface before.</p>
<h3>Back to the client</h3>
<p>Create a WireGuard configuration file for our client at <code>/etc/wireguard/myvpn.conf</code> (you can replace <code>myvpn</code> with a different name if you so choose):</p>
<code>[Interface]<br/>Address = 172.16.0.2/24<br/>PrivateKey = &nbsp;&nbsp;#(client's private key goes here)<br/># Optionally, set to your desired DNS server<br/># DNS = 9.9.9.9<br/><br/>[Peer]<br/>PublicKey = &nbsp;&nbsp;#(server's public key goes here)<br/># Endpoint (server) can be a domain name or IP address<br/>Endpoint = (server's public IP goes here):51820<br/># Traffic to route to server<br/>AllowedIPs = 0.0.0.0/0, ::/0<br/>PersistentKeepalive = 25</code>
<p>Make sure you use your server's public IP here. The PersistentKeepalive option is there because WireGuard closes the connection by default if no data comes through for a while and will only reopen it for the client, so here we send a KeepAlive packet every 25 seconds to prevent that in order to keep our client accessible from the internet.</p>
<p>Now we start WireGuard:</p>
<code>$ sudo wg-quick up myvpn</code>
<p><code>myvpn</code> being whatever you called your vpn before. Shut WireGuard down by typing <code>down</code> instead of <code>up</code> here. At this point, you should be able to ping the server (<code>172.16.0.1</code>) or any URL from the client and get a response.</p>
<h2>Port Forwarding</h2>
<p>Now we'll configure the firewall and port forwarding. This bit assumes you already have UFW configured and enabled. You can set it up now if necessary.</p>
<h3>On the server</h3>
<p>Allow forwarding for the ports you need:</p>
<code>$ ufw route allow proto tcp to 172.16.0.2 port 25565</code>
<p><code>25565</code> being your relevant port. Repeat this command as necessary.</p>
<p>Now we need to configure iptables. We can do this through UFW by adding the following onto the very end of the file <code>/etc/ufw&#8288;/before.rules</code>:</p>
<code>*nat<br/>:PREROUTING ACCEPT [0:0]<br/>:POSTROUTING ACCEPT [0:0]<br/>-A PREROUTING -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 172.16.0.2<br/>-A POSTROUTING -o eth0 -j MASQUERADE<br/>COMMIT</code>
<p>Where <code>25565</code> is, again, your relevant port. Copy the <code>-A PREROUTING</code> line for every port you need.</p>
<p>Now restart UFW:</p>
<code>$ ufw reload</code>
<h3>On the client</h3>
<p>Allow the relevant ports and restart UFW:</p>
<code>$ ufw allow 51820<br/>$ ufw allow 25565<br/>$ ufw reload</code>
<p>And you're done! At this point, your client should be accessible from the IP address of your server on the ports you forwarded.</p>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,70 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Guide - Things I Keep Having to Google</title>
<link href="../../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
/*h1 {
background-image: url('wireguard_logo.png');
}
summary > * {
margin-bottom: 0;
display: inline-block;
}
details[open] > summary h6 {
display: none;
}*/
td {
padding: .2rem;
}
td h4 {
margin: 0;
}
</style>
</head>
<body>
<h1>guide:</h1>
<h2 id="caption">Things I Keep Having to Google</h2>
<nav>
<a href="../../../">home</a>
<a href="../../">blog</a>
</nav>
<p>This isn't really a guide to anything in particular, I just wanted an easily accessible reference for all the things I'm sick of wading through google results for, or otherwise seem to need help remembering. I've put it here in case someone else might find this helpful. I'll likely be adding to this as I find myself repeatedly googling things.</p>
<h2>Binding things to just the Super key in KDE</h2>
<ol>
<li>Bind it to some other keyboard shortcut using KDE's typical GUI methods. Any shortcut will do.</li>
<li>Find the entry for it in <code>~/.config/khotkeysrc</code>. There should be a line that looks like: <code>Uuid=<u>{77575b17-36d6-4b4e-b01f-2f1156e38583}</u></code>. Copy the contents of that line, specifically everything I have underlined there.</li>
<li>Run the following commands:</li>
</ol>
<code>$ kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/khotkeys,org.kde.kglobalaccel.Component,invokeShortcut,&lt;YOUR UUID HERE&gt;"<br>$ qdbus org.kde.KWin /KWin reconfigure</code>
<h2>Linux command line/Bash stuff</h2>
<table>
<tr><td colspan="2"><h4>pipeline</h4></td></tr>
<tr><td><code>command | command2</code></td><td>uses the output of one command as the input to the next</td></tr>
<tr><td><code>command > file</code></td><td>saves the output of a command to a file</td></tr>
<tr><td><code>command < file</code></td><td>uses a file as the input to a command</td></tr>
<tr><td><code>command < fileA > fileB</code></td><td>will therefore run <code>command</code> with the contents of <code>fileA</code> as the input, and save the output to <code>fileB</code></td></tr>
<tr><td nowrap><code>command <<< "string or $variable"</code></td><td>will use the string or variable as the input to a command, the same as <code>&nbsp;< file</code></td></tr>
<tr><td colspan="2"><h4>variables</h4></td></tr>
<tr><td><code>variable=value</code></td><td>assigns a variable</td></tr>
<tr><td><code>$variable</code></td><td>references it</td></tr>
<tr><td><code>$(command)</code></td><td>lets you treat the output of a command like a variable reference</td></tr>
<tr><td><code>$((number+variable))</code></td><td>does the same thing for integer math expressions.</td></tr>
<tr><td><code>$((&nbsp;$(command)&nbsp;))<br>$((&nbsp;variable&nbsp;))</code></td><td>This can also just convert strings into integers.</td></tr>
<tr><td><code>"te$(command)xt"<br>"as$((math))df"</code></td><td>Both can be inserted into strings.</td></tr>
<tr><td><code>"some&nbsp;$variable&nbsp;text"<br>"more${variable}text"</code></td><td>Both of these are valid ways to insert a variable into a string.</td></tr>
<tr><td colspan="2"><h4>grep</h4></td></tr>
<tr><td><code>-v</code></td><td>inverts it, so matches are excluded</td></tr>
<tr><td><code>-E "/regex/"</code></td><td>lets you use regex</td></tr>
<tr><td colspan="2"><h4>cut</h4></td></tr>
<tr><td><code>-d 'string'</code></td><td>determines the delimiter string</td></tr>
<tr><td><code>-f n</code></td><td>specifies a field to output, delimited by <code>-d</code></td></tr>
<tr><td><code>sed 's/ */ /g' | cut -d ' '</code></td><td>Piping your thing through this <span title="It's not foolproof, though. Make sure you understand what this is doing so you can adapt it if it breaks.">helps</span> with parsing a lot of Linux commands that output tabular data</td></tr>
<tr><td colspan="2"><h4>xrandr</h4></td></tr>
<tr><td><code>xrandr --output &lt;display name&gt; --brightness &lt;brightness&gt;</code></td><td title="It would definitely for sure be better to change this via the monitor's built-in menus, but that requires navigating both of my monitors' built-in menus.">Janky software-side display brightness setting</td></tr>
</table>
<h2>HTML/CSS stuff</h2>
<p>Force a <code>&lt;td&gt;</code> element not to wrap by adding the <code>nowrap</code> attribute to it.</p>
</body>
</html>

21
chromealert.php Normal file
View file

@ -0,0 +1,21 @@
<?php
if($_GET['donotsee'] === 'yes') {
setcookie(
"niceopodNoChromiumWarning",
"true",
time() + 60 * 60 * 24 * 365 * 5,
"/",
$_SERVER['HTTP_HOST'],
false,
true
);
header("Location: " . $_GET['originalpage']);
} else if($_SERVER["REQUEST_URI"] == "/chromealert.php") {
http_response_code(403);
die();
} else if (preg_match('/(chrome|opera|edge|brave)/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/(headlesschrome)/i', $_SERVER['HTTP_USER_AGENT']) && $_COOKIE['niceopodNoChromiumWarning'] !== "true") {
$ogpg = $_SERVER['REQUEST_URI'];
echo "<style type='text/css'>#cacb { margin-right: 0.7rem; padding: 0; border: none; background: none; font-size: 0; display: flex; justify-content: center; align-items: center; } #cacb:hover { cursor: pointer; } #chromealert { display: none; position: absolute; top: 1rem; left: 50%; transform: translateX(-50%); background-color: #ffcccc; box-shadow: 3px 3px 3px black; padding: .7rem; border-radius: .7rem; text-shadow: none; color: black; } #cadc:checked + #chromealert { display: flex; } #cadc { display: none; } #chromealert a { color: #df1955; } </style> <input type='checkbox' name='cadc' id='cadc' checked> <div id='chromealert'> <label for='cadc' id='cacb'><svg xmlns='http://www.w3.org/2000/svg' viewBox='-6 -6 24 24' width='24' fill='currentColor'><path d='M7.314 5.9l3.535-3.536A1 1 0 1 0 9.435.95L5.899 4.485 2.364.95A1 1 0 1 0 .95 2.364l3.535 3.535L.95 9.435a1 1 0 1 0 1.414 1.414l3.535-3.535 3.536 3.535a1 1 0 1 0 1.414-1.414L7.314 5.899z'></path></svg></label> <div>It seems you're using a browser based on Google Chrome. Chrome itself is effectively spyware, but even if you're using <a href='https://en.wikipedia.org/wiki/List_of_web_browsers#Blink-based'>something else</a> Google still controls the engine and there are <a href='https://www.cnet.com/tech/computing/chrome-banishes-jpeg-xl-photo-format-that-could-save-phone-space/'>various</a> <a href='https://arstechnica.com/gadgets/2022/01/google-drops-floc-after-widespread-opposition-pivots-to-topics-api-plan/'>compelling</a> <a href='https://www.theverge.com/2022/6/10/23131029/mozilla-ad-blocking-firefox-google-chrome-privacy-manifest-v3-web-request'>reasons</a> to avoid that. I recommend switching to <a href='https://www.mozilla.org/en-US/firefox/new/'>Firefox</a>.<br><a href='https://isopod.cool/chromealert.php?donotsee=yes&originalpage=$ogpg'>Do not see this again (sets a cookie)</a></div> </div>";
}
?>

BIN
deeptwisty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

155
desktop.css Normal file
View file

@ -0,0 +1,155 @@
:root {
--stdfont: mono, monospace;
--windowcountx: 3;
--windowgap: 1.4rem;
--navbarheight: 2.8rem;
--uicolor: #000000bf;
--bgimage: url('https://i.redd.it/abhfagc5t4591.jpg');
--borderrounding: 1;
--txtcolor: #ffffff;
--navbarmargin: 0.25rem;
}
html, body {
height: 100%;
font-family: var(--stdfont);
padding: 0;
margin: 0;
}
body {
background-image: var(--bgimage);
background-size: cover;
background-position: center;
background-attachment: fixed;
}
header {
height: var(--navbarheight);
}
nav {
float: left;
box-sizing: border-box;
}
nav, .navbutton {
height: 100%;
font-size: 0;
}
.navbutton, nav a {
display: inline-block;
color: var(--txtcolor);
border: none;
border-radius: 0;
background: none;
padding: calc((var(--navbarheight) / 2) - 12px);
}
.navbutton:hover, nav a:hover {
cursor: pointer;
background-color: #ffffff44;
}
nav a {
border-radius: calc(50% * var(--borderrounding));
margin: var(--navbarmargin);
}
nav a img {
filter: drop-shadow(1px 1px 4px black);
}
#apps, .systray {
box-sizing: border-box;
display: inline-block;
overflow: clip;
border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding));
background-color: var(--uicolor);
margin: var(--navbarmargin) 0;
padding: 0 0.5rem;
}
.systray {
color: var(--txtcolor);
float: right;
height: 100%;
margin-right: var(--navbarmargin);
margin-bottom: -1rem;
}
.sysleft {
float: left;
margin-left: var(--navbarmargin);
}
.systray p {
margin: 0;
padding: calc((var(--navbarheight) / 2) - 1.2ch);
}
#settingspanel {
display: none;
position: absolute;
right: var(--navbarmargin);
top: calc((var(--navbarmargin) * 2) + var(--navbarheight));
z-index: 5;
background-color: var(--uicolor);
border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding));
padding: 1rem;
}
#settingsbutton:checked ~ #settingspanel {
display: block;
}
#settingspanel input, #settingspanel button {
border: none;
border-radius: calc(0.9rem * var(--borderrounding));
padding: 0.3rem 0.6rem;
}
#settingspanel td {
padding: 0.3rem;
}
main {
display: flex;
padding: calc(var(--windowgap) / 2);
flex-wrap: wrap;
height: calc(100vh - var(--navbarheight));
box-sizing: border-box;
padding-top: var(--navbarmargin);
}
.window {
margin: calc(var(--windowgap) / 2);
flex-grow: 1;
box-sizing: border-box;
flex: calc((100% / var(--windowcountx)) - var(--windowgap));
border-radius: calc(1.15rem * var(--borderrounding));
overflow: clip;
background-color: var(--uicolor);
z-index: 2;
}
.window iframe {
width: 100%;
height: calc(100% - 2.2rem);
border: none;
}
.windowdecoration {
display: block;
width: 100%;
height: 2.2rem;
}
.closewindow {
display: block;
float: right;
margin: 0.3rem;
height: 1.6rem;
width: 1.6rem;
padding: calc(.8rem - 12px);
border: none;
color: red;
background: none;
border-radius: calc(50% * var(--borderrounding));
z-index: 500000;
}
.closewindow:hover {
cursor: pointer;
color: black;
background-color: red;
}
.CboxOpenBtn img {
opacity: 0;
transition-duration: 0.2s;
}
.CboxOpenBtn:hover img {
opacity: 1;
}

78
desktop.html Normal file
View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>niceopodOS</title>
<link href="desktop.css" rel="stylesheet" type="text/css" media="all">
</head>
<body>
<header>
<nav>
<a href="https://deeptwisty.com/"><img src="deeptwisty.png" style="width:24px;height:24px;"/></a>
<div id="apps" class="systray">
<button class="navbutton" onclick="openwindow('about')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" width="24" fill="currentColor"><path d="M4 0h12a4 4 0 0 1 4 4v12a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4zm1.229 16H4a2 2 0 0 1-.813-.172 5.58 5.58 0 0 1 3.347-3.758 1 1 0 1 1 .733 1.86A3.579 3.579 0 0 0 5.229 18zm9.512 0a3.658 3.658 0 0 0-2.097-2.066 1 1 0 1 1 .712-1.868 5.659 5.659 0 0 1 3.437 3.77A1.993 1.993 0 0 1 16 18h-1.26zM10 4a4 4 0 0 1 4 4v2a4 4 0 1 1-8 0V8a4 4 0 0 1 4-4zm0 2a2 2 0 0 0-2 2v2a2 2 0 1 0 4 0V8a2 2 0 0 0-2-2z"></path></svg></button>
<button class="navbutton" onclick="openwindow('blog')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-1.5 -1.5 24 24" width="24" fill="currentColor"><path d="M13.89 10.808l3.616-3.616a3 3 0 0 0-4.243-4.242L11.77 4.444l.598 2.23.896-.896a1 1 0 1 1 1.415 1.414L11.66 10.21l2.23.598zm-1.633 1.633l-2.23-.598-2.74 2.74 2.66.169 2.31-2.311zm-2.12-6.364L5.71 10.502l.163 2.665 4.86-4.86-.598-2.23zM5.403 16.466L1.95 19.92a1 1 0 0 1-1.414-1.414l3.45-3.45-.326-5.331 8.19-8.19a5 5 0 1 1 7.07 7.072l-8.198 8.198-5.318-.34z"></path></svg></button>
<button class="navbutton" onclick="openwindow('links')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-3 -3 24 24" width="24" fill="currentColor"><path d="M3.19 9.345a.97.97 0 0 1 1.37 0 .966.966 0 0 1 0 1.367l-2.055 2.052a1.932 1.932 0 0 0 0 2.735 1.94 1.94 0 0 0 2.74 0l4.794-4.787a.966.966 0 0 0 0-1.367.966.966 0 0 1 0-1.368.97.97 0 0 1 1.37 0 2.898 2.898 0 0 1 0 4.103l-4.795 4.787a3.879 3.879 0 0 1-5.48 0 3.864 3.864 0 0 1 0-5.47L3.19 9.344zm11.62-.69a.97.97 0 0 1-1.37 0 .966.966 0 0 1 0-1.367l2.055-2.052a1.932 1.932 0 0 0 0-2.735 1.94 1.94 0 0 0-2.74 0L7.962 7.288a.966.966 0 0 0 0 1.367.966.966 0 0 1 0 1.368.97.97 0 0 1-1.37 0 2.898 2.898 0 0 1 0-4.103l4.795-4.787a3.879 3.879 0 0 1 5.48 0 3.864 3.864 0 0 1 0 5.47L14.81 8.656z"></path></svg></button>
<button class="navbutton" onclick="openwindow('stats')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-5 -4 24 24" width="24" fill="currentColor"><path d="M1 0a1 1 0 0 1 1 1v14a1 1 0 0 1-2 0V1a1 1 0 0 1 1-1zm12 4a1 1 0 0 1 1 1v10a1 1 0 0 1-2 0V5a1 1 0 0 1 1-1zM7 8a1 1 0 0 1 1 1v6a1 1 0 0 1-2 0V9a1 1 0 0 1 1-1z"></path></svg></button>
<button class="navbutton" onclick="openwindow('stuff')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -4 24 24" width="24" fill="currentColor"><path d="M10.83 2H17a3 3 0 0 1 3 3v8a3 3 0 0 1-3 3H3a3 3 0 0 1-3-3V3a3 3 0 0 1 3-3h5c1.306 0 2.417.835 2.83 2zM17 4H9.415l-.471-1.334A1.001 1.001 0 0 0 8 2H3a1 1 0 0 0-1 1v10a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1z"></path><path d="M1 5h18v2H1z"></path></svg></button>
<button class="navbutton" onclick="openwindow('more')"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-9 -2 24 24" width="24" fill="currentColor"><path d="M3 4a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0 2a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0 14a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm0-5a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-2a1 1 0 1 0 0-2 1 1 0 0 0 0 2z"></path></svg></button>
</div>
</nav>
<div class="systray"><p>niceopodOS alpha v1.0</p></div>
<div class="systray"><p id="date"><script type="text/javascript">const d = new Date; document.write(`${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`);</script></p></div>
<div class="systray" style="padding: 0;">
<input id="settingsbutton" type="checkbox" style="display: none;">
<label for="settingsbutton" class="navbutton"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-2 -2 24 24" width="24" fill="currentColor"><path d="M20 8.163A2.106 2.106 0 0 0 18.926 10c0 .789.433 1.476 1.074 1.837l-.717 2.406a2.105 2.105 0 0 0-2.218 3.058l-2.062 1.602A2.104 2.104 0 0 0 11.633 20l-3.29-.008a2.104 2.104 0 0 0-3.362-1.094l-2.06-1.615A2.105 2.105 0 0 0 .715 14.24L0 11.825A2.106 2.106 0 0 0 1.051 10C1.051 9.22.63 8.54 0 8.175L.715 5.76a2.105 2.105 0 0 0 2.207-3.043L4.98 1.102A2.104 2.104 0 0 0 8.342.008L11.634 0a2.104 2.104 0 0 0 3.37 1.097l2.06 1.603a2.105 2.105 0 0 0 2.218 3.058L20 8.162zM14.823 3.68c0-.063.002-.125.005-.188l-.08-.062a4.103 4.103 0 0 1-4.308-1.428l-.904.002a4.1 4.1 0 0 1-4.29 1.43l-.095.076A4.108 4.108 0 0 1 2.279 7.6a4.1 4.1 0 0 1 .772 2.399c0 .882-.28 1.715-.772 2.4a4.108 4.108 0 0 1 2.872 4.09l.096.075a4.104 4.104 0 0 1 4.289 1.43l.904.002a4.1 4.1 0 0 1 4.307-1.428l.08-.062A4.108 4.108 0 0 1 17.7 12.4a4.102 4.102 0 0 1-.773-2.4c0-.882.281-1.716.773-2.4a4.108 4.108 0 0 1-2.876-3.919zM10 14a4 4 0 1 1 0-8 4 4 0 0 1 0 8zm0-2a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"></path></svg></label>
<div id="settingspanel">
<table>
<thead>
<tr><td colspan="2" style="text-align: center;">Settings</td></tr>
</thead>
<tbody>
<tr>
<td><label for="bginput">Wallpaper</label></td>
<td><input placeholder="Image URL" value="https://i.redd.it/abhfagc5t4591.jpg" id="bginput"></td>
</tr>
<tr>
<td><label for="bcinput">Text Color</label></td>
<td><input placeholder="Hex Code" value="#ffffff" id="tcinput"></td>
</tr>
<tr>
<td><label for="bcinput">UI Color</label></td>
<td><input placeholder="Hex Code" value="#000000bf" id="bcinput"></td>
</tr>
<tr>
<td><label for="brinput">Rounding</label></td>
<td><input type="number" step="0.05" min="0" max="1" placeholder="Value from 0-1" value="1" id="brinput"></td>
</tr>
<tr>
<td colspan="2" style="text-align: center;"><script type="text/javascript">
function update() {
changeRootVar('bgimage', `url(${document.getElementById('bginput').value})`);
changeRootVar('txtcolor', `#${document.getElementById('tcinput').value.replace('#', '')}`);
changeRootVar('uicolor', `#${document.getElementById('bcinput').value.replace('#', '')}`);
changeRootVar('borderrounding', document.getElementById('brinput').value);
}
window.onload = function() { update(); };
</script>
<button onclick="update();">Apply</button></td>
</tr>
</tbody>
</table>
</div>
</div>
</header>
<main id="desktop">
<noscript><div class="window" style="display: flex; justify-content: center; align-items: center; flex-direction: column; background-color: #00000077; color: whitesmoke;"><h1>Shockingly, this page doesn't work without Javascript.</h1><h3 style="margin-top: 0">Sorry about that.</h3><p>You can view a normal homepage without all the flashy interactive junk <a href="index.html">here</a>.</p></div></noscript>
</main>
<!--img src="images/isopod_with_aviators.png" style="z-index: 1; position: absolute; right: 22%; top: 59%; width: 6rem; transform: rotate(-20deg);" />
<a target="_blank" href="https://wobble.town/visit/93" style="z-index: 1; position:absolute; top: 63%; right: 19%; font-size: 0;" title="charles"><img src="https://wobble.town/visit/93/wobble.gif" style="width: 48px; image-rendering: pixelated; filter:hue-rotate(20deg) brightness(110%) drop-shadow(1px 1px 0 #00000088);"></a-->
<script src="desktop.js"></script>
<script type="text/javascript">
window['CboxReady'] = function (Cbox) {
Cbox('button', '3-3517193-ZPAfDN');
}
</script>
<script src="https://static.cbox.ws/embed/2.js" async></script>
</body>
</html>

36
desktop.js Normal file
View file

@ -0,0 +1,36 @@
let activeWindowCount = 0;
const desktop = document.getElementById('desktop');
function changeRootVar(name, value) {
document.documentElement.style.setProperty(`--${name}`, value);
}
function updateWindowCountX() {
if(activeWindowCount <= 4) {
document.documentElement.style.setProperty('--windowcountx', '2');
} else if(activeWindowCount <= 9) {
document.documentElement.style.setProperty('--windowcountx', '3');
} else {
document.documentElement.style.setProperty('--windowcountx', '4');
}
}
function openwindow(name) {
if(activeWindowCount < 9) {
let newWindow = document.createElement('div');
newWindow.innerHTML = '<div class="windowdecoration"><button class="closewindow" onclick="closewindow(this)"><svg xmlns="http://www.w3.org/2000/svg" viewBox="-6 -6 24 24" width="24" fill="currentColor"><path d="M7.314 5.9l3.535-3.536A1 1 0 1 0 9.435.95L5.899 4.485 2.364.95A1 1 0 1 0 .95 2.364l3.535 3.535L.95 9.435a1 1 0 1 0 1.414 1.414l3.535-3.535 3.536 3.535a1 1 0 1 0 1.414-1.414L7.314 5.899z"></path></svg></button></div>'
let newWindowContent = document.createElement('iframe');
newWindow.className = 'window';
newWindowContent.src = `${name}/`;
newWindow.appendChild(newWindowContent);
desktop.appendChild(newWindow);
activeWindowCount = activeWindowCount + 1;
//updateWindowCountX();
}
}
function closewindow(window) {
window.parentElement.parentElement.remove();
activeWindowCount = activeWindowCount - 1;
//updateWindowCountX();
}

8
embedded.css Normal file
View file

@ -0,0 +1,8 @@
body {
background: none;
padding: 0;
margin: 0;
}
img {
max-width: 100%;
}

BIN
etc/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 KiB

BIN
etc/buttons/35mm.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
etc/buttons/ace.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

BIN
etc/buttons/agender.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

BIN
etc/buttons/amd_powered.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

BIN
etc/buttons/antinft.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
etc/buttons/aro.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
etc/buttons/badhtml.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

BIN
etc/buttons/bestviewed.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
etc/buttons/canadian.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

BIN
etc/buttons/chrome.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
etc/buttons/css.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
etc/buttons/dontyouhate.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
etc/buttons/drpepper.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
etc/buttons/getvlcnow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
etc/buttons/handcode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
etc/buttons/krisbtn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

BIN
etc/buttons/nonbinary.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

BIN
etc/buttons/notoweb3.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

BIN
etc/buttons/nowebp.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
etc/buttons/piracy.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 910 B

BIN
etc/buttons/queercoded.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
etc/buttons/shrimp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
etc/buttons/the void.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
etc/buttons/usatoday.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
etc/buttons/web-pi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
etc/buttons/win11no.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

367
etc/changelog.php Normal file
View file

@ -0,0 +1,367 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Changelog</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<link href="../embedded.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
h2:first-of-type {
margin-top: 0;
}
h2 {
font-size: medium;
}
h1 {
display: none;
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body style="background: none;">
<h1>isopod.cool changelog</h1>
<article>
<h2>2023-1-05</h2>
<ul>
<li>Renamed the site from "niceopod" to just "isopod.cool"</li>
<li>widened everything slightly to accommodate the longer title</li>
</ul>
</article>
<article>
<h2>2023-1-04</h2>
<ul>
<li>Added <a target="_blank" href="quotes/">/etc/quotes/</a></li>
</ul>
</article>
<article>
<h2>2022-12-16</h2>
<ul>
<li>Renamed /more/ to /etc/</li>
</ul>
</article>
<article>
<h2>2022-12-15</h2>
<ul>
<li>Created an <a target="_blank" href="../stuff/firefoxrss/feed.php">RSS bridge</a> for Firefox release notes</li>
<li>Also I rearranged <a target="_blank" href="../stuff/">/stuff/</a> a bit and created an RSS filter script there. I guess I forgot to mention that</li>
<li>Added <a target="_blank" href="https://wearemagonia.bandcamp.com/album/triangle-unicode-lp">We Are Magonia - Triangle Unicode</a> to the music page</li>
</ul>
</article>
<article>
<h2>2022-12-08</h2>
<ul>
<li>Added <a target="_blank" href="https://hypem.com/merch-table">Hype Machine Merch Table</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-12-04</h2>
<ul>
<li>Added <a target="_blank" href="https://github.com/awesome-selfhosted/awesome-selfhosted">Awesome Selfhosted</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-11-27</h2>
<ul>
<li>Added an RSS feed for the <a target="_blank" href="../guestbook">guestbook</a></li>
<li>Added <a target="_blank" href="https://jort.link/">jort.link</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-11-25</h2>
<ul>
<li>Added a list of services I host to <a target="_blank" href="../stuff">/stuff</a></li>
</ul>
</article>
<article>
<h2>2022-11-11</h2>
<ul>
<li>Added <a target="_blank" href="https://trilobites.info/">trilobites.info</a>, <a target="_blank" href="https://based.cooking/">based.cooking</a>, <a target="_blank" href="https://landchad.net/">LandChad.net</a>, and <a target="_blank" href="https://invidious.io/">Invidious</a> to the links page</li>
<li>Organized the links page somewhat</li>
</ul>
</article>
<article>
<h2>2022-11-06</h2>
<ul>
<li>Added <a target="_blank" href="https://alula.github.io/SpaceCadetPinball">Space Cadet Pinball</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-10-27</h2>
<ul>
<li>Added a bunch of cool automated Halloween stuff</li>
</ul>
</article>
<article>
<h2>2022-10-18</h2>
<ul>
<li>Added <a target="_blank" href="https://www.darkpattern.games/">Dark Pattern Games</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-10-15</h2>
<ul>
<li>Added bot protection to the guestbook</li>
</ul>
</article>
<article>
<h2>2022-10-01</h2>
<ul>
<li>Added a server-side rendered navbar to all the pages</li>
</ul>
</article>
<article>
<h2>2022-09-29</h2>
<ul>
<li>Added some buttons</li>
</ul>
</article>
<article>
<h2>2022-09-20</h2>
<ul>
<li>Added <a target="_blank" href="https://heavenpierceher.bandcamp.com/album/ultrakill-imperfect-hatred">Heaven Pierce Her - ULTRAKILL: Imperfect Hatred</a> to the music page</li>
<li>Updated the layout on said music page to have two items per row instead of one</li>
</ul>
</article>
<article>
<h2>2022-09-19</h2>
<ul>
<li>New <a target="_blank" href="../blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/">blog post</a>!</li>
</ul>
</article>
<article>
<h2>2022-09-07</h2>
<ul>
<li>Added <a target="_blank" href="https://github.com/viraptor/reverse-interview">Reverse Interview</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-09-04</h2>
<ul>
<li>Added <a target="_blank" href="https://newretrowave.bandcamp.com/album/synthicate">LAZERPUNK - Synthicate</a> to the music page</li>
</ul>
</article>
<article>
<h2>2022-08-31</h2>
<ul>
<li>Removed the Cbox widget from most pages, as it was really only intended as an interim replacement for my old freegb guestbook anyway</li>
</ul>
</article>
<article>
<h2>2022-08-27</h2>
<ul>
<li>Added a <a target="_blank" href="../guestbook/">guestbook</a>!</li>
</ul>
</article>
<article>
<h2>2022-08-25</h2>
<ul>
<li>New <a target="_blank" href="../blog/posts/guide_self_host_safely_with_wireguard/">blog post</a>! It's a guide on configuring WireGuard to do port forwarding through a VPN.</li>
</ul>
</article>
<article>
<h2>2022-08-18</h2>
<ul>
<li>Changed the background of the links page</li>
<li>All me.deeptwisty.com URLs now return a 301 redirect to the corresponding location on isopod.cool</li>
</ul>
</article>
<article>
<h2>2022-08-10</h2>
<ul>
<li>Made elements with hover-text display a special cursor when hovered over, so you know to wait for it to appear.</li>
<li>Added a webgarden and a <a target="_blank" href="greenhouse/">greenhouse page</a>!</li>
<li>Updated the <a target="_blank" href="../about/uses/">uses</a> page to include the VPS this site is hosted on.</li>
</ul>
</article>
<article>
<h2>2022-08-08</h2>
<ul>
<li>Updated some configurations server-side to reduce bandwidth consumption</li>
<li>Added <a target="_blank" href="../images/plant1-2.png">this thing</a> from <a target="_blank" href="https://lu.tiny-universes.net/webgarden/adopt.html">here</a>!</li>
<li>Added <a target="_blank" href="https://newlambda.neocities.org/stuff/adopt.html">benlet</a>.</li>
</ul>
</article>
<article>
<h2>2022-08-07</h2>
<ul>
<li>Added a couple buttons</li>
</ul>
</article>
<article>
<h2>2022-08-01</h2>
<ul>
<li>Moved the status.cafe widget on my blog page server-side</li>
<li>Added a couple buttons to the links page, also removed my Twitter and Neocities.</li>
</ul>
</article>
<article>
<h2>2022-07-30</h2>
<ul>
<li>Rewrote the random caption function on the landing page in PHP</li>
</ul>
</article>
<article>
<h2>2022-07-29</h2>
<ul>
<li>Moved the site to a VPS and moved domains from me.deeptwisty.com to isopod.cool (me.deeptwisty.com still works though)</li>
</ul>
</article>
<article>
<h2>2022-07-25</h2>
<ul>
<li>Added <a target="_blank" href="https://jsrn.net/howoldisit/">How old is it?</a> to the links page</li>
<li>Added <a target="_blank" href="https://8mb.video/">8mbvideo</a> to the links page</li>
<li>Moved /about/software to <a target="_blank" href="../about/uses/">/about/uses</a> and added info about my hardware setup to it</li>
<li>Added a button</li>
</ul>
</article>
<article>
<h2>2022-07-23</h2>
<ul>
<li>Added <a target="_blank" href="https://12ft.io/">12ft.io</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-07-21</h2>
<ul>
<li>Added <a target="_blank" href="../images/isopod3.png">this little guy</a> from <a target="_blank" href="https://dokodemo.neocities.org/adopt.html">here</a>!</li>
</ul>
</article>
<article>
<h2>2022-07-20</h2>
<ul>
<li>Added some buttons</li>
</ul>
</article>
<article>
<h2>2022-07-19</h2>
<ul>
<li>Added a <a target="_parent" href="../about/software/">page</a> for programs I use!</li>
<li>Added <a target="_blank" href="https://www.youtube-nocookie.com/embed/bjbN2RyZXHI">Matt Gray - The Last Ninja 2 (C64) OST</a> to the music page.</li>
</ul>
</article>
<article>
<h2>2022-07-16</h2>
<ul>
<li>Re-formatted the changelog to be a valid HTML Journal, you know, in case you want to <a target="_blank" href="https://journal.miso.town/atom?url=https://isopod.cool/etc/changelog.php">subscribe</a> to it. For some reason.</li>
</ul>
</article>
<article>
<h2>2022-07-15</h2>
<ul>
<li>Updated every page to have &lt;html lang="en"&gt; instead of &lt;html&gt; or &lt;html lang=""&gt;</li>
</ul>
</article>
<article>
<h2>2022-07-14</h2>
<ul>
<li>The changelog is now its own page for easier portability between revisions, embedded here in an iframe.</li>
<li>...as is the to-do list.</li>
<li>Added an <a target="_blank" href="https://journal.miso.town/">HTML Journal</a> to the blog page for shorter entries that I don't feel warrant an entire page.</li>
<li>Updated the blog post list to be compliant with m15o's <a target="_blank" href="https://blog.miso.town/">HTML Blog</a> spec, mostly to automate feed generation.</li>
<li>The old RSS feed for the blog is now deprecated and will no longer be updated.</li>
</ul>
</article>
<article>
<h2>2022-07-04</h2>
<ul>
<li>Added <a target="_blank" href="buttons/getvlcnow.png">VLC button</a> to this page</li>
</ul>
</article>
<article>
<h2>2022-07-01</h2>
<ul>
<li>Added a to-do list for the site to this page</li>
</ul>
</article>
<article>
<h2>2022-06-30</h2>
<ul>
<li>Added <a target="_blank" href="https://www.inaturalist.org/">iNaturalist</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-06-25</h2>
<ul>
<li>Added a little popup to the homepage and /stuff that bugs you to switch to firefox if you're not using it. Please for the love of GOD use firefox.</li>
<li>Added a new <a target="_blank" href="buttons/niceopod_button_2.png">button</a> for my site!</li>
</ul>
</article>
<article>
<h2>2022-06-24</h2>
<ul>
<li>Renamed /misc to /more</li>
</ul>
</article>
<article>
<h2>2022-06-20</h2>
<ul>
<li>Added <a target="_blank" href="https://imgflip-is-dead.crabdance.com/">Imgflip is DEAD</a> to the links page
</li>
</ul>
</article>
<article>
<h2>2022-06-18</h2>
<ul>
<li>Added my buttons to this page (please don't hotlink!)</li>
</ul>
</article>
<article>
<h2>2022-06-17</h2>
<ul>
<li>Added <a target="_blank" href="https://www.1001freefonts.com/snailets.font">Snailets</a> to the links page
</li>
</ul>
</article>
<article>
<h2>2022-06-14</h2>
<ul>
<li>Redesigned the website again! It works when you disable Javascript now!</li>
</ul>
</article>
<article>
<h2>2022-06-12</h2>
<ul>
<li>Renamed /misc to /stuff</li>
<li>Added my address to the stats page</li>
</ul>
</article>
<article>
<h2>2022-05-29</h2>
<ul>
<li>Added <a target="_blank" href="https://regexr.com/">RegExr</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-05-25</h2>
<ul>
<li>Added an <a target="_blank" href="https://isopod.cool/feed.xml" target="_blank">RSS feed</a> for the blog!</li>
<li>Demoted the link to isopod.cool v1 from having its own section on the homepage to being relegated to /misc/</li>
</ul>
</article>
<article>
<h2>2022-05-23</h2>
<ul>
<li>Added <a target="_blank" href="https://switching.software/">switching.software</a> and <a target="_blank" href="https://www.allaboutbirds.org/cams/">Cornell Lab Bird Cams</a> to the links page</li>
</ul>
</article>
<article>
<h2>2022-05-22</h2>
<ul>
<li>Added <a target="_blank" href="https://status.cafe/users/niceopod">status.cafe</a> widget to the home and blog pages</li>
<li>Added a changelog</li>
</ul>
</article>
<article>
<h2>2022-05-21</h2>
<ul>
<li>Added <a target="_blank" href="../stats">stats table</a> page</li>
<li>Added a cbox channel </li>
<li>New blog post!</li>
</ul>
</article>
</body>
</html>

BIN
etc/greenhouse/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

51
etc/greenhouse/index.php Normal file
View file

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Greenhouse</title>
<link href="../../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
body {
max-width: 50rem;
}
.shelf {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
}
.shelf > iframe {
box-shadow: 2px 2px 6px black;
width: 250px;
height: 250px;
}
.shelf > * {
margin-bottom: 1rem;
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>webgreenhouse</h1>
<h2 id="caption">&nbsp;</h2>
<div class="shelf">
<iframe src="https://isopod.cool/stuff/webgarden/" scrolling="no" loading="lazy"></iframe>
<div style="height: 250px; width: 524px; overflow-x: hidden; overflow-y: scroll;">
<p style="margin-top: 0; margin-bottom: 0.85rem;">You've found my webgarden page! A <span title="or pot, or bonsai">webgarden</span> is a mini&#8209;webpage that other people can embed in their websites, as defined by <a href="https://missmoss.neocities.org/webgardens/tutorial/">Miss Moss</a>. Here's the code for mine:</p>
<textarea style="width: 100%; margin: 0; box-sizing: border-box;" rows="2" readonly>&lt;iframe src="https://isopod.cool/stuff/webgarden/" style="height: 250px; width: 250px;" scrolling="no" loading="lazy"&gt;&lt;/iframe&gt;</textarea>
</div>
<iframe src="https://melonking.net/webgarden.html" scrolling="no" loading="lazy" style="border: 2px solid yellow;"></iframe>
<iframe src="https://lu.tiny-universes.net/webgarden/webgarden.html" scrolling="no" loading="lazy"></iframe>
<iframe src="https://sadgrl.online/webgarden.html" scrolling="no" loading="lazy"></iframe>
<iframe src="https://obspogon.neocities.org/webgarden" scrolling="no" loading="lazy"></iframe>
<iframe src="https://kitecreature.net/webgarden.html" scrolling="no" loading="lazy"></iframe>
<iframe src="https://pip-pepping.neocities.org/web-garden/webgarden.html" scrolling="no" loading="lazy"></iframe>
<iframe src="https://dantescanline.com/webgarden.html" scrolling="no" loading="lazy"></iframe>
<iframe src="https://missmoss.neocities.org/webgarden.html/" scrolling="no" loading="lazy"></iframe>
<!--iframe src="https://dokodemo.neocities.org/webgarden.html" scrolling="no" loading="lazy"></iframe-->
<iframe src="https://neonriser.neocities.org/webgarden.html" scrolling="no" loading="lazy"></iframe>
</div>
<div id="rightsidebg" style="background-image: url(bg.png); --distancefromcenter: 10%;"></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

BIN
etc/images/apiopage.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

80
etc/index.php Normal file
View file

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>More</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<style type="text/css">
#changelogwindow {
height: 15rem;
}
#todowindow {
height: 7.2rem;
}
</style>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/seasonal.php'); ?>
</head>
<body>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/nav.php'); ?>
<h1>more</h1>
<h2 id="caption">more</h2>
<nav><a href="greenhouse/">greenhouse</a><a href="quotes/">quotes</a></nav>
<iframe src="https://john.citrons.xyz/embed?ref=https://isopod.cool/"
style="margin-left:auto;display:block;margin-right:auto;max-width:732px;width:100%;height:94px;border:none;"></iframe>
<h2>Changelog <a style="font-weight: 400; font-size: small;"
href="https://journal.miso.town/atom?url=https://isopod.cool/etc/changelog.php">&lt;Atom feed&gt;</a></h2>
<iframe id="changelogwindow" class="embed" src="changelog.php"></iframe>
<h2>Buttons</h2>
<div class="buttons">
<a target="_blank" href="https://easyussr.neocities.org/torrenting.html"><img src="buttons/piracy.gif"></a>
<a target="_blank" href="https://frame.work"><img src="buttons/bestviewed.gif"></a>
<a target="_blank" href="https://www.videolan.org/"><img src="buttons/getvlcnow.png"></a>
<img src="buttons/35mm.gif">
<img src="buttons/tested_on_firefox.gif">
<img src="buttons/nowebp.gif">
<a target="_blank" href="http://web3.14159.annwfn.net/"><img src="buttons/web-pi.png"></a>
<a target="_blank" href="https://neocities.org"><img src="buttons/neocities_stamp.gif"></a>
<a target="_blank" href="http://www.ermel.org/handcoded/"><img src="buttons/handcode.png"></a>
<a target="_blank" href="https://12ft.io/"><img src="buttons/dontyouhate.gif"></a>
<img src="buttons/righttorepair.png">
<img src="buttons/google_stand.gif">
<a target="_blank" href="https://www.mozilla.org/en-US/firefox/new/"><img src="buttons/chrome.gif"></a>
<img src="buttons/i_hate_microsoft.png">
<img src="buttons/win11no.gif">
<img src="buttons/antinft.gif">
<a target="_blank" href="https://yesterweb.org/no-to-web3/"><img src="buttons/notoweb3.gif"></a>
<img src="buttons/amd_powered.gif">
<img src="buttons/linux_powered.gif">
<img src="buttons/drpepper.gif">
<img src="buttons/the void.gif">
<img src="buttons/krisbtn.png">
<img src="buttons/badhtml.png">
<img src="buttons/bantimetravel.png">
<img src="buttons/css.png">
<a target="_blank" href="https://crouton.net/"><img src="buttons/usatoday.gif"></a>
<a target="_blank" href="https://seaslug.neocities.org/"><img src="buttons/shrimp.png"></a>
<img src="buttons/canadian.gif" title="Regrettably...">
<img src="buttons/queercoded.png">
<img src="buttons/aro.png">
<img src="buttons/ace.png">
<a href="https://rainy.gay/pride/pridebuttons.html"><img src="buttons/nonbinary.png"></a>
<br /><a target="_blank" href="https://citrons.xyz/a/memetic-apioform-page.html"
style="display: inline-block; margin-top: .7rem;"><img src="images/apiopage.png" /></a>
</div>
<h3>My buttons</h3>
<div class="buttons">
<img src="buttons/niceopod_button_2.png" />
<img src="buttons/niceopod_button.png" />
<a target="_blank" href="https://deeptwisty.com/"><img src="buttons/deeptwisty_button.png" /></a>
</div>
<h2>TODO</h2>
<iframe id="todowindow" class="embed" src="todo.html"></iframe>
<div id="leftsidebg" style="background-image: url(bg.png); --distancefromcenter: -10%;"
title="Pictured: A millipede, because I couldn't think of anything better to put here and I like them."></div>
<?php include($_SERVER['DOCUMENT_ROOT'] . '/chromealert.php'); ?>
</body>
</html>

BIN
etc/quotes/bg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 KiB

BIN
etc/quotes/images/c_pfp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
etc/quotes/images/g_pfp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
etc/quotes/images/m_pfp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
etc/quotes/images/s_pfp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
etc/quotes/images/t_pfp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Some files were not shown because too many files have changed in this diff Show more