1
0
Fork 0
isopod.cool/blog/index.php
will 26e116971a 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
2024-02-29 04:38:50 -07:00

191 lines
12 KiB
PHP

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Blog</title>
<link href="../style.css" rel="stylesheet" type="text/css" media="all">
<style>
ul#articles {
margin: 0;
margin-top: 1rem;
display: flex;
flex-direction: column;
padding-left: 0;
list-style: none;
}
.blogentry {
width: 100%;
list-style: none;
display: inline-block;
margin: .4rem 0;
}
ul#articles h2 {
margin: 0;
}
/*ul h2:first-of-type::before {
content: "Articles - "
}*/
article img, article video, article iframe {
filter:drop-shadow(var(--stddropshadow));
}
.blogentry > * {
display: block;
margin: 0.1rem 0;
}
.entrysummary {
font-size: .9em;
color: gainsboro;
}
.entrytag {
font-size: .9em;
color: #bbbbbb;
font-style: italic;
display: inline-block;
margin-right: 1ch;
}
.entrydate {
font-weight: bold;
}
article:first-of-type h2::before {
content: 'Journal - ';
}
</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="blog.atom">Article feed</a>
<a href="https://journal.miso.town/atom?url=https://isopod.cool/blog/">Journal feed</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>";
?>
<?php
$stag = $_GET["tag"];
$nostag = empty($stag);
if(!$nostag) {
echo "<a style='display: block; margin-top: 1rem; margin-bottom: 1rem;' href='.'>All articles</a>";
}
$content = simplexml_load_file("blog.atom");
echo "<ul id='articles'>";
$year = "-69420";
$yc = 0;
foreach($content->entry as $entry) {
$pfilt = false;
if(!$nostag) {
foreach($entry->category as $cat) {
$term = $cat["term"];
if($stag == $term) {
$pfilt = true;
}
}
}
if($pfilt or $nostag) {
$nyr = substr($entry->published, 0, 4);
if($nyr != $year) {
$year = $nyr;
echo "<li><h2 id='$year'>$year</h2></li>";
}
$dt = substr($entry->published, 0, 10);
$ti = $entry->title;
$wn = "";
if(preg_match('/2022-0(5|4)-(21|25|13)/', $dt)) {
$wn = "title=\"This post is on the archived v2 version of the site. It will not load if you don't have Javascript enabled, and expect jank if viewing on mobile. You have been warned.\" ";
}
$cats = "";
foreach($entry->category as $cat) {
$term = $cat["term"];
$cats = $cats."<a class='entrytag' href='?tag=".$term."'>".$term."</a>";
}
echo "<li class='blogentry'><time class='entrydate'>".$dt."</time><h4 class='entrytitle'><a ".$wn."href='".$entry->link["href"]."'>".$ti."</h4></a><span class='entrysummary'>".$entry->summary."</span><span>".$cats."</span></li>";
}
}
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>
<p>To be clear, I don't like "AI" tools like ChatGPT one bit; I figured doing this would be an elegant way to communicate my feelings on the matter - here's how it feels to get tricked into reading AI-generated spam, this is how I feel anytime I see something AI-generated in the wild.</p>
<blockquote>
My perspective on the use of AI in writing is that if someone couldn't be bothered to write it, why should anyone else be bothered to read it?
<span class="attr">-<a href="https://final.town/notice/AcGPT0FZUH2quPlDe4">@lucretia@final.town</a></span>
</blockquote>
<p>I've got half a blog post about this sitting on my computer somewhere.</p>
<hr>
<p>In more fun news, my laptop server is up and running! Building the case was a fun time involving hand-cut aluminum rods and many 3D-printed brackets, but I'll save all that for the blog post about it. So far I've set up Jellyfin on it, and only Jellyfin. I plan to get some other stuff going eventually. Word of advice, don't use the official Jellyfin android app. It stutters a ton and is generally not very good. Use Findroid instead, but make sure to turn "mpv player" on in the settings, otherwise it will use software decoding and you'll get approximately 7 frames per second in your 1080p content.</p>
</article>
<article id="2023-11-23">
<h2>2023-11-23</h2>
<p>Another update on my little Contraption today, mostly expanding on stuff that's evident in the video I posted a couple days ago, but I have a fresh update too.</p>
<p>Firstly, the JBOD board I bought isn't the one I mentioned before. That board, seemingly, is old and no longer in production. I got a newer revision, the CB2 as opposed to the CB1. It's got some differences, but nothing that really matters for my purposes.</p>
<p>Next, the 5-port SATA controller I expressed interest in doesn't work. I bought it and installed it and the laptop just doesn't seem to agree with it. Like, it won't even load the BIOS interface, let alone boot with the thing installed. With an NVMe SSD, or with nothing in the slot, it's fine, but with the SATA controller, no dice. My Game Theory&trade; is it's either a power thing or it's just a classic Laptop Bios Moment&trade;, the thing being programmed to expect an SSD in that slot and not knowing what to do when there's something there other than a storage device. Either way, I don't see a good way to solve this, so I'm not really interested in pursuing it further.</p>
<p>So that's five out of my eight total SATA slots gone, replaced with a single SSD, leaving me with a boot drive and three SATA slots to work with. This by no means dooms the project; that's still enough for a drive for TrueNAS apps and redundant storage in the form of two mirrored disks. That's not bad, and it would be reasonable to stop here. But we can do better.</p>
<p>SATA is kind of weird. It's not designed to be split into multiple connections with a hub the way, say, USB is, but if your controller supports it you can kind of do it anyway. If I wanna hook up more than two or three HDDs to this thing, and I do, this is looking like my best bet. Fortunately, the SATA controller that <em>is</em> working happens to support this feature. So I bought one such hub to see if it would work, and, well:</p>
<div style="display: flex;">
<picture style="width: 50%;">
<source srcset="media/2023-11-23/contraption.jxl" type="image/jxl">
<img src="media/2023-11-23/contraption.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: 50%;">
<source srcset="media/2023-11-23/lsblk.jxl" type="image/jxl">
<img src="media/2023-11-23/lsblk.jpg" alt='lsblk output showing five SATA drives recognized by the system (sda through sde)'>
</picture>
</div>
<p>If you're not sufficiently techy to decipher what's going on in those pictures, it boils down to this: it worked.</p>
<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>
<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>
<a href="https://journal.miso.town/"><img src="media/banner-htmlj.png" alt="Valid HTML Journal"></a>
</div>
<div id="rightsidebg" style="background-image: url(bg.jxl), url(bg.jpg); --distancefromcenter: -10%;"></div>
</body>
</html>