1
0
Fork 0

Various new posts + quotes update + minor changes

New blog posts:
- How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)
- My Terrible, Horrible, No-Good, Very Bad Distro Hop
- Building a Completely Normal Server
New journal entries
Updated quotes
Added Cohost profile to /links/
Added new albums to /music/
Added buttons to webgarden
Updated info on my laptop in /uses/
house
This commit is contained in:
will 2024-02-29 04:38:50 -07:00
parent c03e7a305c
commit 26e116971a
12 changed files with 333 additions and 59 deletions

View file

@ -9,6 +9,42 @@
<uri>https://isopod.cool/</uri>
</author>
<generator>ME</generator>
<category term="personal"/>
<category term="blog"/>
<category term="tech"/>
<entry>
<title>Building a Completely Normal Server</title>
<id>building_a_normal_server</id>
<link rel="alternate" href="https://isopod.cool/blog/posts/building_a_normal_server/" type="html" title="Building a Completely Normal Server"></link>
<published>2024-02-28T00:00:00+00:00</published>
<updated>2024-02-28T00:00:00+00:00</updated>
<summary>I spent the past few months making full use of all my physical engineering talents to build a NAS that is completely normal, and not weird at all, and involved an amount of 3D modeling, 3D printing, and hacksawing that is entirely typical of most home computer builds, all in the name of reusing an old laptop.</summary>
<category term="personal"/>
<category term="self-hosting"/>
<category term="diy"/>
</entry>
<entry>
<title>My Terrible, Horrible, No-Good, Very Bad Distro Hop</title>
<id>my_terrible_distro_hop</id>
<link rel="alternate" href="https://isopod.cool/blog/posts/my_terrible_distro_hop/" type="html" title="My Terrible, Horrible, No-Good, Very Bad Distro Hop"></link>
<published>2024-02-25T00:00:00+00:00</published>
<updated>2024-02-25T00:00:00+00:00</updated>
<summary>A chronicle of my brief journey from EndeavourOS to Fedora to back to EndeavourOS, and wrestling with a VPN client that sees itself as above such trifling matters as "functioning".</summary>
<category term="personal"/>
<category term="linux"/>
<category term="protonvpn"/>
</entry>
<entry>
<title>How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)</title>
<id>guide_fix_youtube_buffering_firefox</id>
<link rel="alternate" href="https://isopod.cool/blog/posts/guide_fix_youtube_buffering_firefox/" type="html" title="How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)"></link>
<published>2024-02-13T00:00:00+00:00</published>
<updated>2024-02-13T00:00:00+00:00</updated>
<summary>Alternate title: Common Firefox W</summary>
<category term="guide"/>
<category term="youtube"/>
<category term="firefox"/>
</entry>
<entry>
<title>I Don't Like AI Art</title>
<id>ai_art</id>

View file

@ -128,6 +128,24 @@
}
echo "</ul>";
?>
<article id="2024-02-22">
<h2>2024-02-22</h2>
<p>Did a shell swap on my Switch and joycons yesterday. Check it out!</p>
<img src="media/2024-02-22/switchfront.jpg" alt="Front view of a Nintendo Switch with clear plastic shells on the joycons" />
<img src="media/2024-02-22/switchback.jpg" alt="Back view of a Nintendo Switch with clear plastic shells on the joycons and console" />
<p>I think it looks pretty cool. I got the shells from a company called <a href="https://extremerate.com/">eXtremeRate</a> which apparently makes full kits for this kind of mod. I thought I was just getting the plastic parts but they came with tons of extra screws and a screwdriver with the relevant bits, and they publish guides! Given I found this through a random Amazon listing, I am pleasantly surprised. Highly recommend their stuff.</p>
</article>
<article id="2024-02-14">
<h2>2024-02-14</h2>
<p>When I post a guide on my blog and the tutorial part starts with a header reading "How to do it" that's a reference to this btw</p>
<img src="media/2024-02-14_roundmeal.jpg" alt="Roundmeal." />
</article>
<article id="2024-01-29">
<h2>2024-01-29</h2>
<p>I just had a really nasty idea for a 3D printer design. I could describe it in detail, but instead I drew up this helpful diagram:</p>
<img src="media/2024-01-29/diagram.png" alt="A crude diagram outlining a concept for an FDM 3D printer that rotates around a central axis for a toroidal print volume." />
<p>The benefits of this approach are clear. If I receive $1000 in <a href="https://ko-fi.com/deeptwisty">donations</a> I will attempt to build it.</p>
</article>
<article id="2024-01-02">
<h2>2024-01-02</h2>
<p>Published an interesting blog post today. I had ChatGPT write an article about how great AI is and posted it immediately without reading it. Hopefully you can tell. (If you couldn't and didn't register what was happening until the disclaimer at the end, I'm deeply sorry.)</p>
@ -161,52 +179,6 @@
<p>Now, I'm fully aware that I'm probably not going to get super incredible performance out of this setup, but the thing is, hard drives are slow. Like, they're <em>really</em> slow. A fast HDD would be hard pressed to saturate a SATA II connection in optimal conditions, let alone SATA III. In terms of pure bandwidth, one SATA III port should support two or three hard drives fine. Besides, nothing about this was ever going to be performance optimized.</p>
<p>I'm nearing the point where I have everything I need to put this together. All that's left is the hard drives themselves, potentially a second SATA multiplier to spread the load between the two ports better, and to figure out a case, because I'm not running this thing strewn across my desk like this.</p>
</article>
<article id="2023-11-20">
<h2>2023-11-20</h2>
<video controls>
<source src="media/2023-11-20_contraption.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
</article>
<article id="2023-10-28">
<h2>2023-10-28</h2>
<p>This month's update is I've been thinking about ways to upgrade my laptop-server into a full-blown NAS with fancy features like "data redundancy" and "several terabytes of disk space" so today you get to hear about my thought process for that. Look forward to a proper blog post about this if/when I ever build it for real.</p>
<p>My reasons for wanting to do this to a laptop essentially boil down to the fact that I already have it. It's got a good level of computing power and is plenty upgradeable enough to facilitate a mod like this, so it makes sense to me to keep using it instead of buying a new one.</p>
<p>Now, there are a few ways to go about this. The most obvious to most people will probably be to just connect a bunch of USB external hard drives and call it done. A couple of problems with that, though: first, I want to set up a RAID array and I don't remotely trust USB with an application like that, and second, that would be boring.</p>
<p>On <em>certain</em> modern laptops it would start and end there, but luckily for me mine is not one such machine. My laptop is an HP 15-dk0030nr, a four-year-old mid-tier gaming laptop boasting upgradeable RAM, an internal 2.5" SATA drive bay, an M.2 NVMe SSD, and an M.2 WiFi card. A good amount of upgradeability for a laptop, and I plan to take it to its logical extreme.</p>
<p>A fun fact about NVMe is that, despite being billed as a storage connection standard, it's fundamentally just PCIe, which means you can connect basically any PCIe device to it if you have an adapter. Meaning my laptop essentially has two internal PCIe slots I can use to expand its capabilities however I see fit, assuming I'm prepared to punch some holes in the bottom panel to make it all fit.</p>
<p>My plan is as follows: I'll ditch the NVMe SSD and WiFi card, as neither are particularly important for a server to have, and instead boot the system off of an SSD in the internal SATA bay, and fill the M.2 slots with SATA controllers. I bought <a href="https://www.amazon.ca/dp/B09MSWNF7X">this little number</a> for the WiFi card slot and tested it with some dusty old 500GB hard disks I had laying around and it seemed to work perfectly, and I plan to get something like <a href="https://www.silverstonetek.com/en/product/info/expansion-cards/ECS07/">this</a> to replace the NVMe SSD, more or less turning my laptop into a 7-bay NAS.</p>
<div style="display: flex;">
<picture style="width: 50%;">
<source srcset="media/2023-10-28/ChenYang.jxl" type="image/jxl">
<img src="media/2023-10-28/ChenYang.jpg" alt='A 2-port M.2 SATA controller, keyed for a WiFi card slot.'>
</picture>
<picture style="width: 50%;">
<source srcset="media/2023-10-28/ECS07.jxl" type="image/jxl">
<img src="media/2023-10-28/ECS07.jpg" alt='A 5-port M.2 SATA controller, keyed for an NVMe drive slot.'>
</picture>
</div>
<p>One little issue though: I have no way to power the drives directly off of my laptop. For my little test I was able to power the drives off of some spare SATA power connectors in my desktop PC, but that's not exactly an enterprise-grade solution, and for all its internal PCIe connectivity it's not like my laptop is bristling with ATX power connectors. If you thought plugging 3.5" HDDs into the WiFi card slot was janky, you ain't seen nothing yet. Here's where we really get into the weeds.</p>
<p>One of my first thoughts was to use USB power, either from the laptop's ports or an external hub. It's a low-power DC device, so it should be possible, right? Unfortunately, nobody makes an adapter for that. <a href="https://isopod.zone/notes/9la5c343fqi1cjof">Someone on fedi</a> claimed to have success with parts from an external HDD enclosure, but my laptop happens to have less than seven USB ports, and I didn't want to use USB anyway, plus drive shucking stops being cost effective <em>fast</em> once you hit higher capacities.</p>
<p>Small tangent here - in my research I learned that HDDs have some weird power requirements: they apparently take both 5V and 12V power, the latter being for the motor. Also, HDDs can spike in power draw <em>significantly</em> while spinning up, well past the 9 or so watts they use under load. I guess making a dongle that handles all that only to then not provide a data connection is just a little too niche for most companies.</p>
<p>So then, if USB is out, maybe I should look into something that's actually designed to power hard drives. Realistically, that means a PC PSU. I'm divided between a standard ATX PSU or something like a Pico PSU, but it doesn't really matter either way - they both do the same thing. The issue <em>here</em> is how I'm gonna run them without a motherboard.</p>
<p>See, PC power supplies rely on the motherboard for control, specifically on one wire that the motherboard bridges to ground to turn the PSU on. You can run the power supply motherboard-less by making this connection manually, but I'm hesitant to do that on account of if I fuck it up I could light a fire or kill myself. I'd prefer some other way to turn on the power supply. Enter this thing:</p>
<picture>
<source srcset="media/2023-10-28/CSE-PTJBOD-CB1.jxl" type="image/jxl">
<img src="media/2023-10-28/CSE-PTJBOD-CB1.jpg" alt='A Supermicro JBOD power board'>
</picture>
<p>This is the Supermicro CSE-PTJBOD-CB1. I learned about it from a Stack Exchange thread that linked to <a href="https://www.servethehome.com/supermicro-cse-ptjbod-cb1-jbod-power-board-diy-jbod-chassis-made-easy/">this Serve The Home article</a> about it. It's the "motherboard" from a JBOD enclosure (think an external hard drive, but with dozens of disks). It's like a PC motherboard, but stripped down to the absolute bare essentials for the purpose at hand. It's available on Ebay for around $60 CAD, and all it does is basic power management. I can plug this and my drives into my PC PSU and I'm off to the races, without making an electrical hazard! As a bonus, I also get hookups for a power button and a couple of fans.</p>
<p>So my plan thus far is as follows: SATA boot SSD in the laptop's internal drive bay, 7 ports worth of SATA controllers in the NVMe slots hooked up to high-capacity HDDs, and power those drives off of a standard PC PSU managed by a JBOD power board. Just two variables left to solve for: a chassis for the thing, and a way to pay for all those drives. For the former, I've got some vague idea in mind involving some custom-length metal tubing and a lot of 3d-printed brackets. For the latter, maybe I'll use my tax return, or spend like six months buying everything piecemeal.</p>
<p>So that was today's unhinged computer rant. Get ready for a few months from now when I post photos.</p>
</article>
<article id="2023-09-18">
<h2>2023-09-18</h2>
<p>Had a bit of a think about my principles and priorities website-wise. Long story short is I've turned off the redirect for chrome-based browsers. I've got a few reasons for doing this, chief among them being that I don't want to lock out people who have to use chrome because they don't have total control over their computers or rely on chrome-only accessibility tools or whatever, and also if I'm gonna use my website as a link hub it seems a bit counterproductive to block, statistically, most internet users from seeing it.</p>
<p>Also updated my recent blog post about Unity's latest fiasco. I felt like the second section was a little more of an unhinged rant than I was going for, so I rewrote it to hopefully come off a bit more level-headed and explain my point better.</p>
<p>I've also decided to start removing journal entries past the fifth one from this page. There are some things I want to stay on the internet forever, but in-depth accounts of my life are not one of them. Someone remind me to automate that.</p>
<hr>
<p>I saw a fox on my way home from work today, so that was cool.</p>
</article>
<div class="buttons" style="margin-bottom: 1rem;">
<a href="https://status.cafe/"><img src="media/banner-statuscafe.png" alt="Status Cafe"></a>
<a href="https://kiosk.nightfall.city/"><img src="media/neonkiosk.png" alt="Neon Kiosk"></a>

View file

@ -16,10 +16,117 @@
<h1>blog</h1>
<h2 id="caption">Building a Completely Normal Server</h2>
<nav>
<a href="../../../">home</a>
<a href="../../">blog</a>
<a href="/">home</a>
<a href="/blog">blog</a>
</nav>
<p>Imagine I put a blog post here lmao</p>
<p>I spent the past few months making full use of all my physical engineering talents to build a NAS that is completely normal, and not weird at all, and involved an amount of 3D modeling, 3D printing, and hacksawing that is entirely typical of most home computer builds, all in the name of reusing an old laptop.</p>
<h2>The Goal</h2>
<p>My previous daily driver computer and current home server is a mid-range gaming laptop from late 2019 that, due to a flat lithium battery and a broken trackpad resulting from a botched storage upgrade, has been rendered more or less useless as an actual portable computer. Boasting an Intel i7-9750H, an Nvidia GTX 1660-Ti, and 16 gigabytes of aftermarket DDR4, this baby has plenty enough power to play Elite Dangerous at a buttery smooth ~90FPS, while generating enough heat to add that extra layer of immersion while flying dangerously close to main-sequence stars to harvest hydrogen from their outer atmospheres. It's also good for Minecraft servers.</p>
<p>Now that it's in use as a home server, I find that the in-built 256 gigs of solid-state storage isn't really enough for my purposes. Now, it's plenty for one or two game servers, which is what I was using it for, but most other applications such as backups or media servers (which I would quite like to have) would be a bit stifled by that amount of space. Hence, a significant storage upgrade is in order.</p>
<h2>The Method</h2>
<p>There's a few ways I could go about this. My laptop actually has a decent amount of upgradeability, with a full-sized NVMe drive slot and a 2.5" SATA drive bay. The simplest, least janky, and most boring solution here would be to buy two high-capacity SSDs, throw 'em in there and be done.</p>
<p>One problem: At over ten cents per gigabyte, those suckers aren't cheap. For this project to make sense, I'd want at least enough storage to back up my whole personal computer, plus a few terabytes of media and other miscellanies. Ideally, I'd like to never have to upgrade my storage again. Laptop-grade drives of that kind of size currently weigh in at about a thousand dollars apiece. If you look in the right places, spinning rust can be had for literally a tenth the cost per terabyte, so the choice is obvious.</p>
<p>Next option: USB external drives. External HDD solutions such as the WD MyBook are cheaper than SSDs and are likely to be very reliable, being designed to be treated as an external peripheral and possibly moved around quite a lot. I could achieve my desired storage capacity by buying multiple of these and connecting them to my laptop.</p>
<p>Issue the first with this idea is that these hard drives take more power in a weirder voltage configuration than a USB port is equipped to deliver, so unless I want to teach myself electrical engineering each one will require its own power cable, which after the first drive gets sketchy fast:</p>
<img src="media/power_spaghet.png" alt="Hooking up three hard drives with this configuration means a whopping FOUR power cables for one server. Unacceptable." />
<p>Issue the second is that USB is just not the right tool for the job here. USB is designed for hot-plugging peripherals, not semi-permanent internal aspects of a hardware configuration, so trying to pull any fancy shit like RAID or even just relying on all the drives being <em>recognized</em> every boot opens the door to all sorts of weird, unfixable problems. In other words, it's very janky, and I'd rather just not deal with all that.</p>
<p>Of course, the reasonable way to build a NAS would be to get a machine that's actually fit for that purpose, like an off-the-shelf NAS box or a custom computer in a case with a lot of drive bays or something. I'd also rather not do this. I mean, I already have all this perfectly good computing power right here! I can't just let it go to waste. What I actually did is as follows:</p>
<h2>The Madness</h2>
<p>I decided to buy internal PC hard drives and hook them up to the laptop using internal connectors. This would avoid the reliability concerns of USB, and allow me to use off-the-shelf components to power all the drives off of one AC outlet, at a much cheaper price per terabyte than either of the above options. Given most laptops aren't really equipped with the requisite hardware to make such an upgrade, this presented three major problems that I was about to have a lot of fun solving.</p>
<h3>Problem the First: Data Connections</h3>
<p>Generally, adding internal HDDs to a computer requires the use of an internal SATA connector. My laptop has one, and I will be using it, but I'd quite like to have more than one of these drives, both for redundancy and raw capacity, so I need a way to add more. In a desktop PC, such expansion would typically be done using a spare PCIe slot on the motherboard:</p>
<picture>
<source srcset="media/pcie_slots.jxl" type="image/jxl">
<img src="media/pcie_slots.jpg" alt='Three PCIe slots on a desktop PC motherboard.'>
</picture>
<p>However, due to the industry's blind rush to make all electronics as thin as <span title="This is a joke. PCIe expansion cards are genuinely too bulky to fit in anything with portability as a design goal. However, despite Tim Cook's best efforts, this is not true of most other expansion options.">possible</span>, no laptop on Earth has these. The meager modularity present inside laptops is typically found in the form of M.2 slots:</p>
<picture>
<source srcset="media/m2_slot.jxl" type="image/jxl">
<img src="media/m2_slot.jpg" alt='An M.2 slot in a laptop, intended for an SSD.'>
</picture>
<p>Normally, these are used in computers of all sizes to attach NVMe SSDs, but the secret to the speed advantage of the NVMe over your standard SATA is a fundamentally different protocol: NVMe SSDs communicate directly over PCIe, meaning any NVMe slot is essentially just a tiny PCIe slot, and other types of device can take advantage of that connection, such as the SATA expander that I'll need for this project.</p>
<p>Most laptops, including mine, have two M.2 slots: one for an SSD, and one for a wifi and bluetooth module. You can get SATA expanders for both, such as these two that I bought:</p>
<div style="display: flex;">
<picture style="width: 50%;">
<source srcset="media/ChenYang.jxl" type="image/jxl">
<img src="media/ChenYang.jpg" alt='A 2-port M.2 SATA controller, keyed for a WiFi card slot.'>
</picture>
<picture style="width: 50%;">
<source srcset="media/ECS07.jxl" type="image/jxl">
<img src="media/ECS07.jpg" alt='A 5-port M.2 SATA controller, keyed for an NVMe drive slot.'>
</picture>
</div>
<p>Unfortunately, my laptop didn't want to turn on with a SATA expander in the NVMe SSD slot, so I'm stuck with the dinky two-port one. That's fine, since my server doesn't really need wireless connectivity anyway, and I've got a secret nasty trick up my sleeve that's gonna let me <em>really</em> get the most out of those two SATA ports.</p>
<p>So, SATA as a protocol is designed to have exactly one device connected per SATA port, as opposed to USB, which supports hubs that let you turn one port into several and connect multiple devices. However, that's also not actually true at all. For reasons that are honestly beyond my understanding, some SATA controllers, such as the one on my little M.2 module, support devices that essentially do for SATA what hubs do for USB, allowing me to connect multiple drives per port.</p>
<p>This feels a little like forbidden dark magics to me, and it probably isn't great for performance, but it lets me connect more drives so I'm using it. Keep in mind, all this is to reach a level of connectivity that almost matches what the motherboard in my desktop computer supports out of the box.</p>
<p>Don't mind the fact that I had to cut holes in the bottom of my laptop to hook stuff up to the SATA ports. Just, um, ignore that.</p>
<h3>Problem the Second: Powering All This Crap</h3>
<p>Now that I've got my laptop <em>talking</em> to all these drives, they need power. I'm sure I could get this from the laptop somehow, but I'm not an electrical engineer, and the point of this project is to <em>not</em> have to buy a new computer, so I'll have to get it from elsewhere.</p>
<p>The best way I'm aware of to power multiple hard drives from the same source is a PC power supply, such as the one I'm currently using to power the drives in my desktop PC. In fact, as part of early testing I actually had to power some drives off of my desktop PC while they were connected to the laptop. I wish I had pictures to show you of that, it was so fucked.</p>
<p>Trouble is, PC PSUs rely on the motherboard for control. Specifically, one of the contacts in the 24-pin motherboard connector needs to be shorted to ground for the PSU to actually "S" any "P". I could do this manually with some wire, but that has the potential to be unreliable and also maybe a fire hazard. Enter this thing:</p>
<picture>
<source srcset="media/CSE-PTJBOD-CB1.jxl" type="image/jxl">
<img src="media/CSE-PTJBOD-CB1.jpg" alt='A small circuit board with an ATX motherboard power connector and headers for a fan and a power button.'>
</picture>
<p>This is the Supermicro CSE-PTJBOD-CB1. It's a part from a Supermicro JBOD enclosure, and it exists to solve my exact problem. This little board's entire purpose is to interface a power button (and some fans) with a PC PSU, which is exactly what I need. Lucky me!</p>
<p>Pictured above is the exact board mentioned in the <a href="https://www.servethehome.com/supermicro-cse-ptjbod-cb1-jbod-power-board-diy-jbod-chassis-made-easy/">Serve The Home article</a> I learned about this from, but this specific model appears to no longer be available, so I'll be using the more fully-featured CSE-PTJBOD-CB<em>2</em>. The only difference that matters for me is that it has headers for more fans and a power button LED.</p>
<p>With power and storage solved, I could now confirm that this crazy plan was actually going to work. Here's a video I recorded documenting this historic moment:</p>
<video controls>
<source src="media/2023-11-20_contraption.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
<p>And furthermore, photos of the SATA splitter working:</p>
<div style="display: flex;">
<picture style="width: 64%;">
<source srcset="media/drive_spaghet.jxl" type="image/jxl">
<img src="media/drive_spaghet.jpg" alt='Five SATA drives plugged into a laptop, one via an internal SATA bay, and the other four via an M.2 SATA controller in place of the WiFi card and a SATA splitter board. The latter four hard drives are powered off of an ATX PC PSU controlled by a Supermicro JBOD controller board.'>
</picture>
<picture style="width: 36%;">
<source srcset="media/drive_spaghet_lsblk.jxl" type="image/jxl">
<img src="media/drive_spaghet_lsblk.jpg" alt='lsblk output showing five SATA drives recognized by the system (sda through sde)'>
</picture>
</div>
<h3>Problem the Third: A Case</h3>
<p>I could run this whole setup naked, strewn out across my desk, but I'm not doing that, so I'll need a case. Unfortunately, they don't make computer cases designed for this use case. I shall have to build my own.</p>
<p>There's a few different ways I could go about this. I've seen people make custom computer cases out of wood. <a href="https://www.youtube.com/watch?v=xE4_jKlX-xc">This guy</a> modified a rack-mount server chassis to accept his laptop's motherboard for a similar project. I don't have much in the way of woodworking ability and I'm not planning to disassemble my laptop for mounting inside a computer case, but I do have a 3D printer.</p>
<p>I could 3D print the whole case, but that seems like it would take a lot of plastic, and more importantly, be a pain in the ass to design, especially since my 3D printer is smaller than the case I'll need to make so I can't really print it all in one go. My plan is to make the main structure out of metal rods, and 3D print various brackets to attach everything together.</p>
<p>I originally wanted to order the rods custom-cut to the lengths I'd need, but on top of being kind of expensive the shipping would actually cost <em>more</em> than the rods themselves. In other words, too expensive. Fortunately for me, it turns out hardware stores sell lengths of steel and aluminum rods, the latter of which I can easily cut at home with a hand saw.</p>
<p>So I bought 12 feet of aluminum rods, manually cut them to length, and then 3D printed little corner pieces out of PETG (in translucent green to match the accents on my gaming-ass laptop) to join them into a frame:</p>
<picture>
<source srcset="media/bare_frame.jxl" type="image/jxl">
<img src="media/bare_frame.jpg" alt='A frame made of aluminum rods press-fit into custom 3d-printed joints'>
</picture>
<p>Now I need a way to mount hard drives to this. I considered 3D printing a rack of some kind for them, but I don't know how hot these things get and for obvious reasons I honestly just don't want to take any chances with them. For this reason, I instead bought a drive cage designed to mount to a couple of 5.25" drive bays, and mounted that to my frame. In fact, the height of the frame was chosen based on the size of this part.</p>
<p>This cage also accepts a fan, so I figured I'd add a couple of those to the case, too.</p>
<p>I attached everything to the frame using various simple 3D printed brackets I designed that just snap onto the frame, and then the various parts can be screwed into them. I specifically designed it all in order to reduce the amount of precision that was required of me.</p>
<div style="display: flex;">
<picture style="width: 50%;">
<source srcset="media/partially_assembled_1.jxl" type="image/jxl">
<img src="media/partially_assembled_1.jpg" alt='Frame made from aluminum rods and 3d-printed joints, with the following mounted to it via 3d-printed brackets: two PCBs, an ATX PSU, a power button, and a computer fan'>
</picture>
<picture style="width: 50%;">
<source srcset="media/partially_assembled_2.jxl" type="image/jxl">
<img src="media/partially_assembled_2.jpg" alt='Same frame, but from a different angle'>
</picture>
</div>
<p>I wanted to make some kind of fancy bespoke mount for the laptop, but that turned out to require a lot of precise measurement and modeling that I wasn't prepared to do, so I just put a normal laptop stand on top of this thing.</p>
<picture>
<source srcset="media/fully_assembled.jxl" type="image/jxl">
<img src="media/fully_assembled.jpg" alt='The frame with a drive cage installed and a running laptop sitting on top'>
</picture>
<p>IT'S ALIIIIIVE!!!</p>
<h2>Software</h2>
<p>This post is mostly about my fucked up hardware, but I figured I should share my software setup too. It's TrueNAS. I went with it because it boasts a lot of fancy features and smooths out a lot of processes that I was intimidated by the idea of doing manually in the terminal. This is probably the most normal part of the build by far, and I think some of the jankiness of the hardware side has infected it. I tried to run Syncthing on it and it just... didn't take. I don't know how else to describe it. TrueNAS is pretty good though.</p>
<h2>Postmortem</h2>
<p>As of writing, I've been running this thing for a couple months now, and it's been pretty good. I haven't done a lot with it yet beyond some basic backups and a Jellyfin server that I have yet to make accessible from outside my LAN, but it's been mostly reliable so far. It even survived a power outage once with no issue, though I'm currently looking into UPS solutions to make sure that doesn't happen again. All that isn't to say I'm completely happy with it, though.</p>
<p>Firstly, after I built the chassis I discovered that you can get v-slot aluminum extrustion in custom sizes meant for exactly this type of project. They call it <a href="https://www.makerbeam.com/">MakerBeam</a>. If I had to pull some bullshit like this again I would have probably used this stuff instead of hardware store aluminum and a hacksaw.</p>
<p>I also didn't do a perfect job of designing the 3D-printed parts. I think they came out pretty good all things considered, but I made all the brackets just a little too short and they're all a little bit bowed. Fortunately I used PETG so it just looks sketchy - PLA would have snapped by now, which I know because my first PLA test print snapped instantly!</p>
<p>The PSU I used, a Seasonic S12III, is also a bit dubious. I picked it because it was cheap and my other Seasonic PSU is working well, and it's worked out fine so far, especially because it's a 500 watt unit which is kind of extravagant overkill for my use case, but after I bought it I learned it's actually one of the shittier units Seasonic sells. Apparently they outsource the manufacturing to some other company, which strikes me as weird considering a bunch of other companies outsource PSU manufacturing <em>to</em> Seasonic. At any rate, it's been fine so far and I don't expect it to blow up running at a fraction of its rated wattage.</p>
<p>I got the hard drives from a website called <a href="https://serverpartdeals.com/">ServerPartDeals.com</a> that sells recertified high-capacity HDDs for like half of what they'd sell for new, and while a few months of use isn't enough to say for sure whether that was a good idea, they've certainly left a good impression. The drives I bought arrived encased in foam, inside a box which was itself packed inside another padded box. With that level of care on the part of the seller, I'm pretty comfortable trusting these drives with what I need them for.</p>
<p>And now the elephant in the room: I cannot in good conscience recommend you do this. Having a NAS is a good idea, and using an old laptop as a basic server is a good idea, but if you're going to build a NAS like this then you should really procure a purpose-built machine, or at the very least an old desktop that can accept some extra drives. Definitely, <em>definitely</em> don't <em>buy a new laptop</em> with the intent to do this.</p>
<p>In order to make this work I had to replace my laptop's wifi card with two layers of janky, probably AliExpress-tier hardware that is, frankly, probably introducing performance bottlenecks, or if I'm lucky, bottlenecked by the relatively low-speed interconnect of the wifi card M.2 slot. Bear in mind, that slot needs <em>at most</em> 1 gigabit of bandwidth to fulfill its intended purpose, which is about a sixth of what a single SATA 3 port can do. According to my research, that thing has two <em>separate</em> PCIe Gen 2 x 1 interfaces. Who knows what my cheap SATA controller is even doing with that.</p>
<p>Plus, interfacing with this thing makes it painfully obvious that it was <em>not</em> designed with this kind of bullshit in mind. I ran into all kinds of Laptop Bios Moment&trade;s during this project, from the CMOS resetting every time I made a hardware change to the machine refusing to even POST with anything but an NVMe SSD in the NVMe SSD slot. I was gonna put connectors for FIVE hard drives in there. I wouldn't have even needed the SATA splitters.</p>
<p>Honestly, I only did this at all because I figured adapting this thing to this use case would be cheaper than procuring a new machine that was as fast and I didn't want it going to waste. All that said, I have a NAS now, and it's good enough for me, and this whole adventure was a hell of a Learning Experience&trade; so I really can't complain, though if you gave me the amount of money all this stuff would have cost new to put toward a new NAS, I would have done something else.</p>
<?php include("../../comment/form.php"); ?>
</body>
</html>
</html>

View file

@ -117,7 +117,7 @@
<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>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 <span class="house">house</span> 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>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Guide - How to Make Youtube Videos Buffer All The Way Like The Old Days</title>
<link href="/style.css" rel="stylesheet" type="text/css" media="all">
<link href="/blog/comment/comments.css" rel="stylesheet" type="text/css" media="all">
<style>
h1 {
background-image: url('youtube.svg');
}
</style>
</head>
<body>
<h1>guide:</h1>
<h2 id="caption">How to Make Youtube Videos Buffer All The Way Like The Old Days (In Firefox)</h2>
<nav>
<a href="/">home</a>
<a href="/blog">blog</a>
</nav>
<p>Remember when you could pause a video on, like, Youtube and wait and it would eventually load the whole thing so you could watch it with no buffering?</p>
<img src="what_they_took_from_you.png" alt="Comic of a guy pausing a Youtube video and reminiscing tearfully about the old days where it would buffer all the way to the end" />
<p>I happened across a <a href="https://nyxgoddessofcandles.tumblr.com/post/733566253212598272/theres-more-to-do-actually-now-go-to">tumblr post</a> detailing some settings to accomplish that in modern Firefox, and I wanted to document it here.</p>
<p>I can't guarantee that this won't stop working at some point amidst the constant churn of arbitrary updates to websites and browsers alike, but it works for me right now, and if I learn about an updated method this is where it'll be.</p>
<h2>How to do it</h2>
<p>In <code>about:config</code>, change the following settings:</p>
<ul>
<li>Set <code>media.mediasource.enabled</code> to <code>false</code></li>
<li>Set <code>media.cache_readahead_limit</code> and <code>media.cache_resume_threshold</code> to <code>9999</code></li>
</ul>
<?php include("../../comment/form.php"); ?>
</body>
</html>

View file

@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My Terrible, Horrible, No-Good, Very Bad Distro Hop</title>
<link href="/style.css" rel="stylesheet" type="text/css" media="all">
<link href="/blog/comment/comments.css" rel="stylesheet" type="text/css" media="all">
<style>
h1 {
background-image: url('computer_explode.png');
}
</style>
</head>
<body>
<h1>blog</h1>
<h2 id="caption">My Terrible, Horrible, No-Good, Very Bad Distro Hop</h2>
<nav>
<a href="/">home</a>
<a href="/blog">blog</a>
</nav>
<h2>Prologue</h2>
<p>Of late, I've been having some mildly annoying, highly esoteric issues, of the sort any desktop OS tends to develop given enough time, with my daily-driver install of the Arch-based EndeavourOS with XFCE. The most annoying of these annoyances include the XFCE panel daemon having stopped running on login, which I dealt with by binding the command to start it to a keyboard shortcut, and the monitor layout defaulting to mirrored every time I locked the screen, which I dealt with much the same way. I say of late, but I've been dealing with this shit for months. These seemed like bugs somewhere deep in XFCE that I really didn't have the energy to try to fix, so my solution was to just go scorched-earth and start again with something new.</p>
<p>The something new I landed on was a fresh install of Fedora. I chose Fedora partially for the GNOME desktop environment, which, to be blunt, seems to have its shit together much more than XFCE does (or KDE for that matter), and partially because I was hoping that by moving away from a rolling-release distro to something more stable I could avoid some of the inscrutable weirdness that kept materializing after updates on <span title="I say Arch, and not EndeavourOS, because I used to use Manjaro and it was like this too.">Arch</span>. Plus, I was excited to once again be on an OS with some more sane defaults, like flatpaks and Bluetooth being available out of the box. This is what was going through my head as I loaded the Fedora live ISO onto a flash drive and rebooted my computer.</p>
<p>I had no idea what I was about to get myself into.</p>
<h2>The Installation Experience</h2>
<p>The installation went very smoothly. I was actually pretty impressed. It was probably the fastest I've ever installed Linux - All it did was prompt me for a language, timezone, and the drive to install to and a few minutes later it was done. Fast and simple even by Linux installation standards. It was the next part that was painful.</p>
<h2>Setup (Or Rather, My Doomed Attempt Thereof)</h2>
<p>I should say here that this isn't a review of Fedora as much as it is just me venting. It seems like it would be great for the kind of user it's designed for, but as it turns out that is <em>not</em> me. Honestly, a lot of this stuff may or may not have been my fault. Anyway, on to the pain.</p>
<p>The first weird thing I noticed was that Firefox had reverted to the default profile instead of recalling my settings from before. Normal, except that I store my /home/ directory on a separate drive and the first thing I did was <a href="../guide_how_to_automount_drives_on_boot_in_linux/">reconfigure my fstab</a> as such, so it should have seen the config files and just loaded them right up. Odd.</p>
<p>I also had to manually install all the nonfree media codecs in order to watch videos on Youtube, but that's basically fine. Takes two seconds and you never have to think about it again. Would have been nice to be prompted for that on install, though.</p>
<p>Anyway, this issue with programs not seeing their existing config files would become a running theme. I would later discover that this had something to do with the fact that all this stuff had been installed as flatpaks, as opposed to a native installation from the distro's repositories or the AUR like it would have been before.</p>
<p>See, for some (probably security-related) reason, flatpaks store their config files in a different place than natively installed programs, and the preinstalled graphical Software Center, which I was using to install all this stuff, seems to like to default to flatpaks whenever possible. I never used flatpaks on my previous install because they weren't enabled by default, hence, almost none of the programs I installed remembered their previous settings.</p>
<p>To be clear, this probably would have been fine if flatpaks were already my go-to, but they weren't, and I wasn't about to reconfigure all my shit or go way out of my way to be particular about which packaging method I preferred for my software in order to avoid reconfiguring all my shit.</p>
<p>On a related note, a lot of the software in the repositories that were available to me was <em>severely</em> outdated. PrusaSlicer, for example, was only available in version 2.4.2, which was released in April of 2022. As of writing in February of 2024, the latest version is 2.7.1. It was upon going to Prusa's website to download the AppImage of the latest version like some kind of fucking caveman and discovering that <span title="AppImages are programs packaged as standalone executables. They don't need to be installed - AppImageLauncher isn't necessary to run them, but it's my preferred tool for integrating them into the system with menu entries and such.">AppImageLauncher</span> wasn't in <em>any</em> of the repos that I got fed up, decided I wasn't gonna risk dealing with this type of shit for every program I wanted to install and noped out.</p>
<h2>Where To Next</h2>
<p>So Fedora was a bust, so where do I go from here? I considered moving to an Ubuntu-based distribution like Pop!_OS or Mint that might give me what I wanted from Fedora, and I briefly considered going back to Manjaro for reasons I have honestly forgotten, but I had been at this for hours now and I really just wanted my computer in a usable state again with the minimum possible amount of adaptation, so I came crawling back to EndeavourOS, and went to take a nap while it installed to hopefully come back to this ordeal with a cooler head.</p>
<p>I kept using GNOME, though. I kinda like it. I switched to XFCE initially because I had been looking at r/unixporn and had it in my head that I wanted really granular customization, but that honestly didn't last long. I got it looking <a href="https://rosepinetheme.com/">decent</a> and then got bored. Eventually, the creeping accumulation of jank and bugs got tiresome, and my hope is that GNOME is sufficiently well-integrated and UX-designed to avoid some of that.</p>
<p>I have a couple issues with GNOME, though. I don't much like the MacOS-style grid of large icons as an app launcher, for one, having gotten used to the density of a barely-configured Rofi menu. I've also gotten used to seeing at a glance what programs I have open, from years of using basically every desktop environment but GNOME, from KDE to XFCE to fucking Windows. I'd like if that was available in, say, the positively barren top panel. I found an extension for that, but it doesn't seem to work properly.</p>
<p>Beyond that, I've been acclimating to the fresh install pretty much fine. All my programs are set up the way I like them again, which is nice. Turns out GNOME ships with Wayland by default now, and it's actually been giving me fewer issues than I was expecting. Even gaming is fine from what I've seen so far (what kind of topsy turvy world are we living in where gaming is one of the EASIEST things to do on Linux?), but I did have to pass the flag <code>-platform xcb</code> to OBS to get it to run. Also, the state of graphical package managers on Arch is utterly abysmal, but that's neither here nor there.</p>
<p>I do have one very difficult issue, though.</p>
<h2>What Is The Fucking Deal With ProtonVPN On Linux</h2>
<p>I use ProtonVPN, and one of the things I attempted to do on Fedora was set it back up. I don't know what I did originally to dodge this, but trying to set it up recently, both on Fedora and on Arch, has been an excercise in navigating an insane maze of complete and utter bullshit.</p>
<p>Proton lists Fedora as officially supported by ProtonVPN. Great! One issue: It Fucking Isn't, It Would Seem. The ProtonVPN client is only present in the Software Center as an unofficial GTK app (as opposed to the Electron app I'm used to (I know, ugh)) that refused to work. I went to Proton's website and followed the instructions there, only to end up with a very similar looking GTK app that very similarly didn't work. Awesome.</p>
<p>Fortunately, ProtonVPN supports connecting using OpenVPN, and GNOME's network settings panel has an option for that built right in! I download the relevant configuration file from the ProtonVPN website and it also doesn't work. Even awesomer!</p>
<p>Back on Arch, which is <em>not</em> officially supported, I install the AUR package that worked perfectly before and it fails. Trying to connect via the CLI (which, by the way, didn't exist in Fedoraland) with my usual settings gives this output:</p>
<code>
<span class="codetitle">protonvpn-cli c --cc CA -p udp</span>
Setting up Proton VPN.<br>
Connecting to Proton VPN on CA#166 with UDP.<br>
<br>
Unable to connect to Proton VPN: Proton VPN connection failed due to unknown reason.
</code>
<p>Tremendously fucking helpful. Why even bother having an error message if it's gonna tell me nothing?</p>
<p>So I look up this "unknown reason" error and find a Github issue where someone says to run a <code>journalctl</code> command to see if there's any errors, and wouldn't you know it, I find one!</p>
<code>
<span class="codetitle">sudo journalctl -eu NetworkManager</span>
"Proton VPN CA#166"]: secrets: failed to request VPN secrets #3: No agents were available for this request.
</code>
<p>Progress! I think. I don't know what this means. I look up this error and find a different Github issue where someone claims to have fixed a similar issue by installing a package called nm-applet, which... doesn't seem to exist. Transcendantly spectacular!!!</p>
<p>(Mind you, all this is going on on a repo that was archived some time last year, which seems ominous. Please tell me that weird GTK client from Fedora that's missing a CLI isn't the up-to-date official solution.)</p>
<p>So I look up "nm-applet" and find a Stackoverflow thread from eight years ago where someone is describing an unrelated issue with an ancient version of GNOME and I learn that the package I'm looking for is actually called <code>network-manager-applet</code> and not <code>nm-applet</code> in the Arch repos for some reason. So I install it and run the <code>nm-applet</code> command, and, bracing for disappointment, run the command to start the VPN...</p>
<code>
<span class="codetitle">protonvpn-cli c --cc CA -p udp</span>
Setting up Proton VPN.<br>
Connecting to Proton VPN on CA#70 with UDP.<br>
<br>
<span style="color: limegreen; font-weight: bold;">Successfully connected to Proton VPN.</span>
</code>
<p>huh.</p>
<p>I think the Github user I learned this from says it best in their comment:</p>
<blockquote>
Yes!!! It needs [network-manager]-applet!!<br><br>
Oh man, that was a saga, and what a simple fix!<br><br>
Thanks so much. I understand that protonvpn doesn't want to say that it "officially supports" desktop environments other than GNOME or KDE, but I think it would still be really great if we could add some documentation here.
<span class="attr">-<a href="https://github.com/ProtonVPN/linux-cli/issues/49#issuecomment-910662957">ExpandingMan</a></span>
</blockquote>
<p>I have a couple questions. One, why isn't this listed as a dependency if not having it breaks everything? I assume it's the fault of the person maintaining the AUR package, but that seems like a weird oversight on a family of distros where that package <em>clearly</em> does not come standard.</p>
<p>Two, what's going on with ProtonVPN clients on Linux? It looks like the Electron app and accompanying CLI (which I quite liked) are deprecated as of last October? And replaced with that weird GTK thing that's missing a bunch of features and doesn't include a CLI anymore? What the fuck? Why did they make it worse? I mean, it's not like this isn't part of a pattern for Proton. I'm pretty sure the Proton Drive desktop client still isn't on Linux yet.</p>
<p>Also, three, why wasn't network-manager-applet already installed? This thing seems like a pretty important system package, especially given the rest of network-manager was already present and seems to be the thing allowing me to connect to the internet right now. Well, such is Arch I suppose. The type of Linux user who runs this thing seems to tend towards having a pathological obsession with bloat and the relevant de-'s.<p>
<h2>Oh Sweet It's Fine Actually</h2>
<p>That concludes my blog post, and the blog-post-within-a-blog-post that appears to have metastasized up there. I think you should know I finished troubleshooting both ProtonVPN <em>and</em> OBS while writing the post chronicling my suffering. Thank you for indulging my bitching and moaning about totally avoidable software problems. Who knows, maybe this will help you. For your sake, I hope it doesn't.</p>
<?php include("../../comment/form.php"); ?>
</body>
</html>

View file

@ -32,7 +32,7 @@
margin-left: 1rem;
}
hr {
margin: 1rem;
margin: auto;
border-top: 1px solid #42464d;
}
</style>
@ -73,6 +73,33 @@
}
?>
<?php
echo_message($will, "I think we should fully replace Discord with Second Life", true);
echo_message($mage, "just ignore the drowning horses in the hot tub", true);
echo_message($mage, "BALLS?", true);
echo_message($celian, "ye<br>if you're too tall u gotta have balls<br>to show off how tall you are");
echo_message($mage, "why do you serve so much cunt in roblox", true);
echo_message($vivi, "omg its almost as pretty as you are ahaha<br>am i bleeding out", true);
echo_message($mage, "Alasator is suspicious of my figgy pudding", true);
echo_message($will, "check out my rod", true);
echo_message($mage, "thats a nice rod");
echo_message($joy, "yo you're really schloobin it out this time", true);
echo_message($joy, "I'd be the best wife ever", true);
echo_message($mage, "i think your tits dont like the mechanism", true);
echo_message($will, "Are you the hoe?", true);
echo_message($joy, "I have no issues with eating babies", true);
echo_message($will, "Would you dropkick joe biden? I think you should dropkick joe biden", true);
echo_message($celian, "i dont care enough about him to drop kick him tbh");
echo_message($will, "i think you should drop kick him");
echo_message($mage, "sad flooboob", true);
echo_message($will, "thats so weirdcore liminal analogue horror backrooms scp", true);
echo_message($will, "I think you should die for funsies", true);
echo_message($mage, "Joob spoob?", true);
echo_message($sad, "PUSSY?");
echo_message($vivi, "I would love to just absolutely rawdog a toaster", true);
echo_message($sad, "i LOVE the filth", true);
echo_message($goon, "i had a dream that, Wheezer they all decided to go birdwatching", true);
echo_message($will, "Serial like Universal Serial Bus", true);
echo_message($celian, "Love me a good froot loop");
echo_message($will, "thats his brain-heart<br>thats his brheart", true);
echo_message($celian, "i think you should unload it", true);
echo_message($vivi, "i would love to unload inside a shotgun, yes");
@ -270,7 +297,7 @@
echo_message($will, "*Caroline voice* Pee your pants, Mr. Johnson.", true);
echo_message($sad, "i feel like im reading it with my eyes", true);
echo_message($will, "i think there should be a datapack that lets you right click people with a bucket<br>and milk them", true);
echo_message($celian, "bebito house reveel<br>bebito hous reveel when the bebito has.<br>hous reveaal<br>hous reval bebito REAL NO CLICKBAIT!!!!!!!!!!!!!!!!", true);
echo_message($celian, "bebito <span class="house">house</span> reveel<br>bebito <span class="house">hous</span> reveel when the bebito has.<br><span class="house">hous</span> reveaal<br><span class="house">hous</span> reval bebito REAL NO CLICKBAIT!!!!!!!!!!!!!!!!", true);
echo_message($celian, "its like having a stroke WHILE having an aneurism", true);
echo_message($mage, "ideal");
echo_message($will, "Joe Biden can get his ass blasted in a nonfurry way", true);
@ -307,7 +334,7 @@
echo_message($will, "don't smoke cigarettes kids they'll make your lungs sus", true);
echo_message($thom, "Bestie you've been given 2 full folders of skins<br>You can be any type of white you want to", true);
echo_message($celian, "im gonna pause the video so i can listen to the flavors better", true);
echo_message($vivi, "we stan the <b><i>boner knife</i></b> in this house", true);
echo_message($vivi, "we stan the <b><i>boner knife</i></b> in this <span class="house">house</span>", true);
echo_message($vivi, "god said it's my turn on the being a milf", true);
echo_message($mage, "\"Big Boy\" will be milked for his venom at the Australian Reptile Park", true);
echo_message($mage, "i think you should get some weed and <i>drink it</i>", true);

View file

@ -59,6 +59,10 @@
<td><a href="https://isopod.zone/@root" rel="me">@root@isopod.zone</a></td>
<td>Fediverse</td>
</tr>
<tr>
<td><a href="https://cohost.org/bathynomus" rel="me">@bathynomus</a></td>
<td>Cohost</td>
</tr>
<!--tr><td><a href="https://tumblr.isopod.cool/" rel="me">@isopodhours</a></td><td>My Tumblr account</td></tr-->
<tr>
<td><a href="https://deeptwisty.bandcamp.com/" rel="me">deeptwisty.bandcamp.com</a></td>

View file

@ -25,7 +25,7 @@
#flex-container a:hover {
z-index: 50;
box-shadow: 0 0 12px 2px black;
transform: scale(1.2);
transform: scale(1.15);
color: #df1955;
}
#flex-container a span {
@ -75,14 +75,18 @@
<a style="--img: url(covers/unstoppable_force.jpg);" target="_blank" href="https://caliphate.bandcamp.com/album/unstoppable-force" ><span>CALIPHATE - Unstoppable Force</span></a>
<a style="--img: url(covers/walks_of_lung.jpg);" 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.jpg);" target="_blank" href="https://vine.bandcamp.com/album/realign" ><span>Red Vox - Realign</span></a>
<a style="--img: url(covers/american_automatic.jpg);" target="_blank" href="https://en.wikipedia.org/wiki/Kill_Memory_Crash" ><span>Kill Memory Crash - American Automatic</span></a>
<a style="--img: url(covers/fucked_up_friends_3.jpg);" 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/audio_video_disco.jpg);" target="_blank" href="https://etjusticepourtous.bandcamp.com/album/audio-video-disco-1" ><span>Justice - Audio, Video, Disco</span></a>
<a style="--img: url(covers/synthicate.jpg);" target="_blank" href="https://newretrowave.bandcamp.com/album/synthicate" ><span>LAZERPUNK - Synthicate</span></a>
<a style="--img: url(covers/vast.jpg);" target="_blank" href="https://waterflame.bandcamp.com/album/vast" ><span>Waterflame - Vast</span></a>
<a style="--img: url(covers/tortured_waters.jpg);" target="_blank" href="https://newretrowave.bandcamp.com/album/tortured-waters" ><span>DEADLIFE - Tortured Waters</span></a>
<a style="--img: url(covers/spirit_phone.jpg);" target="_blank" href="http://www.neilcic.com/" ><span>Lemon Demon - Spirit Phone</span></a>
<a style="--img: url(covers/millenialism.jpg);" target="_blank" href="https://music.businesscasual.biz/album/millennialism" ><span>NYSE - MILLENNIALISM</span></a>
<a style="--img: url(covers/hawaii_part_ii.jpg);" target="_blank" href="https://miraclemusical.bandcamp.com" ><span>ミラクルミュージカル - Hawaii: Part II</span></a>
<a style="--img: url(covers/concrete_and_gold.jpg);" target="_blank" href="https://www.foofighters.com/" ><span>Foo Fighters - Concrete and Gold</span></a>
<a style="--img: url(covers/revolution_radio.jpg);" target="_blank" href="https://greenday.com/" ><span>Green Day - Revolution Radio</span></a>
<a style="--img: url(covers/this_is_all_yours.jpg);" target="_blank" href="https://altjband.com/" ><span>Alt-J - This Is All Yours</span></a>
<a style="--img: url(covers/the_last_ninja_2_c64_ost.jpg);" 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.jpg);" target="_blank" href="https://perctrax.bandcamp.com/album/aeon-core" ><span>Scalameriya - Aeon Core</span></a>
</div>

View file

@ -163,6 +163,8 @@
<label for="mus"><a style="text-decoration: underline; cursor: pointer;">play music</a></label>
<hr style="width: 30px;">
<iframe src="https://isopod.cool/stuff/beat/frame.php?theme=pixel" style="width: 84px; height: 27px;"></iframe>
<img src="/etc/buttons/isopodhours.png" alt="isopod hours"/>
<img src="/etc/buttons/nonbinary.png" alt="nonbinary"/>
</div>
<audio controls style="position: absolute; width: calc(100% - 0.4rem); top: 0.2rem; left: 0.2rem; z-index: 5;"><source src="music.mp3" type="audio/mp3"></audio>
</body>

View file

@ -258,6 +258,9 @@ hr {
display: inline-block;
}
.house {
color: cornflowerblue;
}
@keyframes growshrink {
0%, 100% { transform: scale(1) rotate(-10deg); }
50% { transform: scale(1.2) rotate(-10deg); }

View file

@ -169,9 +169,9 @@
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 (in theory).</p>
<p>This is the laptop I upgraded from to my current PC. It's got an Intel i7-9750H, 32GB of RAM (upgraded from
8GB stock), a GTX 1660Ti Max-Q GPU, and entirely too much hard drive space. It's currently running TrueNAS and being used as a Jellyfin server,
backup location, and some other stuff probably. Learn more about it <a href="https://isopod.cool/blog/posts/building_a_normal_server/">here</a>.</p>
</details>
</li>
<li>
@ -180,7 +180,7 @@
<summary>More details</summary>
<p>I'd host more on the laptop if I wasn't so worried about uptime and latency and I could be bothered to move it all now.
This thing is running this website, an Akkoma instance, an RSS bridge, a SearXNG instance, WireGuard to
get the laptop past the NAT in my house, a Forgejo instance, a Nextcloud instance, a Matrix server, and probably some other stuff I forgot about.</p>
get the laptop past the NAT in my <span class="house">house</span>, a Forgejo instance, a Nextcloud instance, a Matrix server, and probably some other stuff I forgot about.</p>
</details>
</li>
<li>