53 Commits

Author SHA1 Message Date
ce18848bb0 Correct protocol for local.desu.ltd 2021-04-22 18:16:17 -05:00
37254883a4 Add entry for local.desu.ltd 2021-04-22 18:02:06 -05:00
722f32e0a9 Add more Sam quotes 2021-04-22 14:06:58 -05:00
d97b679f1e Add subtitle 2021-04-21 20:01:25 -05:00
4bfa632dff More subtitles 2021-04-08 14:37:38 -05:00
0c30da7e6d Actually really for real point current to god knows where 2021-04-08 14:33:49 -05:00
2fcf3ad3a2 Point current off to god knows where 2021-03-25 13:01:32 -05:00
930c550385 Alright fuck it, disable testing 2021-03-25 01:02:41 -05:00
ea31268ef5 Wait for Apache to start up before testing it 2021-03-25 00:56:04 -05:00
c1b575f5a9 Add more debugging info to the test cases 2021-03-25 00:42:24 -05:00
ad67e1831b Oh right --push doesn't take an argument 2021-03-25 00:31:04 -05:00
7330851694 Fix some issues with docker buildx
Unfortunately, I can't use --load, I'll have to use --push directly
2021-03-25 00:24:13 -05:00
62829cecad Oh more diag pls 2021-03-20 20:36:24 -05:00
afa3886de5 Maybe this fixes it? Hopefully I can at least diag from here 2021-03-20 20:36:00 -05:00
d066bed021 Alright, new approach 2021-03-20 20:30:58 -05:00
1cf9089e33 Disabel SELinux to fix builds on arm64 2021-03-20 20:27:42 -05:00
9aeb4b44b4 That image doesn't work; try this one 2021-03-20 18:50:45 -05:00
f3f6fd7be5 No wait I want this one 2021-03-20 14:28:24 -05:00
138fa27962 Switch to an image that will have buildx 2021-03-20 14:25:59 -05:00
234992141c Set up multi-arch builds 2021-03-20 14:20:43 -05:00
89d9610ba8 Need to actually add curl. Whoops 2021-03-20 14:17:37 -05:00
73cad693a1 Set up some barebones automated testing 2021-03-20 14:14:11 -05:00
acc4e3f324 Remove janky script stuff 2021-03-20 13:50:26 -05:00
7b5af1e979 Update README, ensure /files exists in the docroot 2021-03-20 13:49:49 -05:00
6a633ec2eb Fix typo in push for bleeding pipeline 2021-03-20 13:39:01 -05:00
67f15c17e6 Add a GitLab CI 2021-03-20 13:34:56 -05:00
3b5544f99f Update README 2021-03-20 13:03:11 -05:00
b57bcea176 Deprecate current pack 2021-03-09 02:47:38 -06:00
dbd6856dce Add another quote 2021-02-20 01:32:04 -06:00
36f5753088 Add a basic bitch dockerfile 2021-02-15 13:25:00 -06:00
7909e8f91d RGBA Lines 2021-02-14 20:07:03 -06:00
063ffd6f34 Use transparent shadows 2021-02-14 20:05:02 -06:00
1ac6174029 Add subtitle to celebrate no scripts 2021-02-14 19:48:52 -06:00
c3c1761c75 Remove no-fouc 2021-02-14 19:46:55 -06:00
5de09c8789 Remove netdata 2021-02-11 13:25:17 -06:00
f7f1b8b052 Minor description text change for 1.7.10-magicpack 2021-02-09 05:35:42 -06:00
f93a0218a0 Fix escaped quotes in a quote 2021-02-09 05:34:32 -06:00
1225552189 Minor style changes to Minecraft section 2021-02-09 05:34:06 -06:00
756a5a9a8a Work on more revamping of the Minecraft section 2021-02-09 05:24:58 -06:00
267447b172 Ignore the files directory 2021-02-08 19:34:51 -06:00
00c860a237 Fix site being unable to find world backups 2021-02-08 19:33:35 -06:00
0d4cf0c186 Completely rewrite the way modpacks are handled 2021-02-08 19:23:47 -06:00
199c150ad4 Add new quote 2021-02-04 00:14:38 -06:00
290e1fc051 Remove bunk Matrix account 2021-01-29 18:16:52 -06:00
6b8e59bbdf Update subs 2021-01-26 04:28:46 -06:00
cd9f180be6 Remove Matrix 2021-01-26 04:26:56 -06:00
28bf981a69 More subtitles 2021-01-25 05:25:15 -06:00
c7f7785662 Add Netdata dash 2021-01-23 19:43:10 -06:00
3a0d2ac6ef Make animations faster 2021-01-20 19:45:28 -06:00
7daf825ea1 Update icons for games
They're completely arbitrary
2021-01-20 19:39:11 -06:00
943466fa16 Vastly improve startpage
Pare it down and add inspirational messages
2021-01-19 22:14:15 -06:00
3c5696c3ca Update README 2021-01-19 21:42:58 -06:00
fcb31ba60d Remove a bunch of blogposty crap 2021-01-19 21:40:08 -06:00
37 changed files with 411 additions and 598 deletions

6
.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
.git
.gitignore
.templates
deploy.sh
README.md
test.sh

79
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,79 @@
#
# This guy is awesome: https://dev.to/bzinoun/gitlab-ci-to-build-and-push-containers-to-registry-538a
#
image: morlay/buildx:607a2ce
variables:
# DinD's vfs driver is pretty intensive; this is less so
DOCKER_DRIVER: overlay2
CI_HUB_USERNAME: rehashedsalt
stages:
- build
# - test
- push
services:
- docker:dind
before_script:
- echo -n "$CI_LOGIN_PASSWORD" | docker login -u "$CI_LOGIN_USERNAME" --password-stdin
- docker version
- docker info
after_script:
- docker logout hub.docker.com
# BUILD
Build:
stage: build
script:
- docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest || true
- docker buildx create --use
- >
docker buildx build
--pull
--platform linux/amd64,linux/arm64
--cache-from $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
--tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
--push
.
- docker images
# TEST
# TODO: Fix this
#Test_HTTP_200:
# stage: test
# script:
# - apk add curl
# - docker run -d -p 8889:80 $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
# - sleep 10
# - docker ps
# - netstat -tulpn
# - curl localhost:8889 | grep -ie '200 OK'
# - docker kill $(docker ps -q)
# PUSH
Push_When_Tag:
stage: push
only:
- tags
script:
- docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
- >
docker tag
$CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
$CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
- >
docker tag
$CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
$CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
- docker images
- docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
- docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
Push_Bleeding:
stage: push
script:
- docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
- >
docker tag
$CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
$CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding
- docker images
- docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding

View File

@@ -1,3 +0,0 @@
{
"m.server": "matrix.9iron.club"
}

3
Dockerfile Normal file
View File

@@ -0,0 +1,3 @@
FROM php:7-apache
COPY ./ /var/www/html/
EXPOSE 80

View File

@@ -1,11 +1,21 @@
# www2
# 9iron
My personal website, revision 2.
A website for me and my friends.
## Installation
This repo is a ready-to-go webroot. `git clone` and configure Apache. `git pull` for updates.
## Docker
You can pull the image from `rehashedsalt/9iron`. The `:latest` tag will always have the latest git tag applied and the `:bleeding` tag will always be the latest *commit*.
The following directories contain stateful content that you will be interested in keeping in a PV:
* `/var/www/html/files`
The image listens on `:80` and does not terminate SSL; proxy connections if you're interested in that.
## Random Subtitles
I've got random subtitles generated at page load. Hit me up (i.e. open an issue) if you've got dumb ideas for some.

View File

@@ -9,16 +9,13 @@
<div class="content">
<div class="section">
<h1>About 9iron</h1>
<p>9iron is a website spun up by yours truly to unify the services I host and inevitably rope my friends into. In addition to being a link aggregator, it's also a blog. But nobody reads my shitty blogposts.</p>
<p>9iron is a website spun up by yours truly to unify the services I host and inevitably rope my friends into. It also aggregates documentation about the various games we play.</p>
<h1>About Me</h1>
<p>I am Salt. I'm a sysadmin and I play video games. I try to be most active on Matrix, but inevitably have to use Discord all the damn time. You can also reach me very effectively through the Fediverse and email.</p>
<p>Hit me up if you wanna play something or if shit breaks.</p>
<dl>
<dt>Fedi:</dt>
<dd>salt@cowfee.moe</dd>
<dd>salt@weeaboo.space</dd>
<dt>Matrix:</dt>
<dd>@salt:9iron.club</dd>
<dt>Discord:</dt>
<dd>Salt#0382</dd>
<dt>Email:</dt>

View File

@@ -1,10 +0,0 @@
#! /bin/sh
#
# post-deploy.sh
# Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
#
# Distributed under terms of the MIT license.
#
ssh -t salt@www.9iron.club sudo git -C /var/www/www.9iron.club pull

View File

@@ -1,49 +0,0 @@
<?php header("Content-Type: application/rss+xml; charset=ISO-8859-1"); ?>
<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>9iron</title>
<link>https://9iron.club/posts</link>
<description>Ramblings of some dumb young admin guy</description>
<language>en-us</language>
<?php
/* Generate feed */
$dir = $_SERVER['DOCUMENT_ROOT']."/posts/";
$posts = scandir($dir, 1);
$ignore = array("index.php", "feed.php", ".", "..");
$extensions = array(".php", ".html", ".htm");
/* Create 25 entries */
foreach (array_slice($posts, 0, 26) as &$post) {
/* Check against blacklist */
if (in_array($post, $ignore)) continue;
$postlocation = $dir.$post;
$posturl = "/posts/".$post;
/* This is a date because I write all my posts as such */
$postdate = pathinfo($postlocation, PATHINFO_FILENAME);
/* Fetch title and summary */
$title = "Title not available";
$summary = "Summary not available";
$dom = new DOMDocument();
if ($dom->loadHTMLFile($postlocation)) {
$xpath_section = new DOMXpath($dom);
/* Get title */
$list = $dom->getElementsByTagName("title");
if ($list->length > 0) $title = $list->item(0)->textContent;
/* Get summary */
$list = $xpath_section->query('//div[@class="section"]//p');
if ($list->length > 0) $summary = $list->item(0)->nodeValue;
}
/* Mark up the data */
$rssfeed .='
<item>
<title>'.$title.'</title>
<description>'.$summary.'</description>
<link>https://www.9iron.club'.$posturl.'</link>
<pubDate>'.date('r', strtotime($postdate)).'</pubDate>
</item>';
}
/* List it */
echo $rssfeed;
?>
</channel>
</rss>

0
files/.keep Normal file
View File

View File

@@ -10,22 +10,22 @@
<div class="content">
<div class="iconbuttoncontainer">
<a href="/minecraft" class="iconbutton">
<i class="fa fa-gamepad"></i>
<i class="fa fa-cube"></i>
<h1>Minecraft</h1>
<p>Modded Minecraft is one of our most-common time wasters</p>
</a>
<a href="/terraria" class="iconbutton">
<i class="fa fa-gamepad"></i>
<i class="fa fa-tree"></i>
<h1>Terraria</h1>
<p>A game we've sunk just as much time into as Minecraft. Sometimes modded, sometimes not</p>
</a>
<a href="/tes3mp" class="iconbutton">
<i class="fa fa-gamepad"></i>
<i class="fa fa-moon"></i>
<h1>TES3MP</h1>
<p>Morrowind, but multiplayer. And it's nowhere near as jank as it sounds</p>
</a>
<a href="/gmod" class="iconbutton">
<i class="fa fa-gamepad"></i>
<i class="fa fa-circle-o"></i>
<h1>Garry's Mod</h1>
<p>It's second banana to other games, but we may have a server up from time to time</p>
</a>
@@ -42,11 +42,6 @@
<h1>Nextcloud</h1>
<p>File storage and collaboration, feed reader, task organizer, and more</p>
</a>
<a href="/matrix" class="iconbutton">
<i class="fa fa-matrix-org"></i>
<h1>Matrix</h1>
<p>Federated messaging client, more similar to Slack than Discord</p>
</a>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>

View File

@@ -1,96 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link rel="shortcut icon" href="/favicon.ico" />
<title>9iron</title>
</head>
<body>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>What is Matrix?</h1>
<div class="toc">
<h2>Contents</h2>
<ul>
<li><a href="#gettingstarted">Getting Started</a></li>
<li><a href="#darkmode">Dark Mode</a></li>
<li>Using Matrix</li>
<ul>
<li><a href="#voicechat">Voice Chat</a></li>
<li><a href="#communities">Communities</a></li>
</ul>
<li>Miscellaneous</li>
<ul>
<li><a href="#rules">Rules</a></li>
<li><a href="#federation">Federation</a></li>
<li><a href="#contact">Contact an Admin</a></li>
</ul>
</ul>
</div>
<p>Matrix is a communication platform. Think Discord, but hosted here and without <a href="https://cadence.moe/blog/2020-06-06-why-you-shouldnt-trust-discord">its problems</a>.</p>
<p>To get up and running, you only need to read the <a href="#gettingstarted">Getting Started</a> section. Everything else here is just in case you want or need it.</p>
</div>
<div class="section" id="gettingstarted">
<h1>Getting Started</h1>
<p>Setting up Matrix is pretty simple. </p>
<p>Download, install, and launch <a href="https://about.riot.im/">Riot</a>. You'll be presented with the following screen:</p>
<img class="bigimg" src="/images/riot-tut-1.png" />
<p>Create an account:</p>
<img class="bigimg" src="/images/riot-tut-2.png" />
<p>Under Advanced, click Other and enter in <code>https://matrix.9iron.club</code>:</p>
<img class="bigimg" src="/images/riot-tut-3.png" />
<p>Click Next and enter in your account details:</p>
<img class="bigimg" src="/images/riot-tut-4.png" />
<p>If you would like to set up encryption, follow the prompts. I would recommend doing so for account recovery. After that:</p>
<img class="bigimg" src="/images/riot-tut-5.png" />
<p>You're done!</p>
<p>After registering, you will automatically be added to the Welcome room. To find more rooms, hit "Explore". You can also create a room and invite other users to it.</p>
</div>
<div class="section" id="voicechat">
<h1>Voice Chat</h1>
<p>Matrix uses a plugin called Jitsi for voice chat. Each Jitsi chat is unique to its own room. To add one, click this button:</p>
<img class="bigimg" src="/images/riot-vc-1.png" />
<p>Depending on how the room permissions are set up, you may have to be an admin to add one. From here, pick Jitsi and follow the prompts:</p>
<img class="bigimg" src="/images/riot-vc-2.png" />
<p>Then, simply click this button to expand Jitsi and join the call:</p>
<img class="bigimg" src="/images/riot-vc-3.png" />
<img class="bigimg" src="/images/riot-vc-4.png" />
<img class="bigimg" src="/images/riot-vc-5.png" />
<p>You can also add other embeds, such as a Spotify playlist or a YouTube video. For now, these plugins are run on another server, but I may bring them into 9iron eventually.</p>
</div>
<div class="section" id="communities">
<h1>Communities</h1>
<p>Where Discord has a Server, Matrix has Communities. You can join a bunch of rooms together in a community and invite people to it. To make a community, hit the big plus button on the left side of Riot and follow the prompts.</p>
</div>
<div class="section" id="darkmode">
<h1>Enabling Dark Mode</h1>
<p>By default, Riot assumes that you light light mode. Nobody likes light mode. To turn on dark mode, click your name, click "Settings", then scroll down to the "Theme" section and pick "Dark theme". You may have to turn off "Match system theme" to do so:</p>
<img class="bigimg" src="/images/riot-darkmode-1.png" />
<img class="bigimg" src="/images/riot-darkmode-2.png" />
</div>
<div class="section" id="rules">
<h1>Rules</h1>
<p>The 9iron server as a whole only has two main rules:</p>
<ul>
<li>Upload something illegal in the United States and I'll kick your ass</li>
<li>Break into my boxes and I'll kick your ass</li>
</ul>
<p>Everything beyond that is up to the room's admins. Each room has its own different set of admins and I might not necessarily be part of it.</p>
<p>For the rooms I own (like <code>#welcome</code> and <code>#adminbs</code>), the rules are in the <code>+9:9iron.club</code> community.</p>
</div>
<div class="section" id="federation">
<h1>Federation</h1>
<p>The server on 9iron can communicate with other servers as well. If you want to chat with someone on Matrix.org or some other server, you can. When Setting up a room, add a local address and give it to the person on the other server:</p>
<img class="bigimg" src="/images/riot-fedi-1.png" />
<img class="bigimg" src="/images/riot-fedi-2.png" />
<p>In this case, I would give out <code>#adminbs:9iron.club</code>. With this, the user on the other server can join the room. You can also join theirs in a similar way (ie. you get given <code>#room:matrix.org</code>)</p>
</div>
<div class="section" id="contact">
<h1>Contact an Admin</h1>
<p>If the server goes down or you need to reach out to an admin for any reason, send an email to rehashedsalt@cock.li.</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</body>
</html>

View File

@@ -3,126 +3,88 @@
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link href="/styles/buttons.css" type="text/css" rel="stylesheet" />
<link href="/minecraft/styles/styles.css" type="text/css" rel="stylesheet" />
<link rel="shortcut icon" href="/favicon.ico" />
<title>9iron</title>
<title>9iron - Modded Minecraft</title>
</head>
<body>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Modded Minecraft</h1>
<p>It's been a go-to of ours for a while. Ongoing and historical modpacks are listed here for your convenience and participation.</p>
<p>At-a-glance information is provided here for the various packs we play.</p>
<div class="iconbuttoncontainer">
<a href="/minecraft/setup" class="iconbutton">
<i class="fa fa-play"></i>
<h1>Setup</h1>
<p>Set up an entire modded Minecraft environment</p>
</a>
</div>
</div>
<div class="section">
<h1>Current Modpacks</h1>
<div class="subcontainer">
<i class="badge fa fa-star"></i>
<h2>The 1.7.10 Magic Pack</h2>
<p><code>magic.thefuck.how</code></p>
<p><a href="/files/magic-1.7.10-2.zip">Download</a> (MultiMC)</p>
<p>1.7.10, Forge 1614</p>
<p>Oh man, this one. We ended up going back to this pack at least 5(?) times because of how well it played. We were enthralled by the amount of content, especially the first time around. It's a heavy magic pack with Botania, Blood Magic, Thaumcraft, Witchery, and as many good addons for each as we could cram in there. It comes with numerous atmosphere mods, like World Tooltips, Dynamic Surroundings, SoundFilters, and more.</p>
<p>It's been thoroughly burned out for us, but it might be right up your alley. May it give you as much entertainment as it gave us.</p>
<p>A stock install ships with OptiFine, too, but it's not required.</p>
<p>As a 1.7.10 pack, the server will not intelligently disable client-side-only mods. Scour it before deploying.</p>
<p>Changelog:</p>
<ul>
<li>2020-12-31: Reexported as a MultiMC instance</li>
<li>Not even fucking trying</li>
</ul>
</div>
</div>
<div class="section">
<h1>Old Modpacks</h1>
<div class="subcontainer">
<h2>Material Energy^5</h2>
<p><a href="/files/me5.zip">Download</a> (MultiMC)</p>
<p>You and a bunch of other guys are locked in an extradimensional space ship. The universe has imploded and your only methods of gathering resources are to scavenge them from small pieces of the universe stored in Spatial I/O cells.</p>
<p>It includes fun shit like ProjectE (heavily gimped), MineChem, Metallurgy, and the usual suite of tech mods. Heavily quest-focused.</p>
</div>
<div class="subcontainer">
<h2>botaniapack-1</h2>
<p><code>botania.mc.9iron.club</code></p>
<p><a href="/files/botaniapack-1.zip">Download</a> (MultiMC)</p>
<p>1.10.2, Forge 2511</p>
<p>A basic modpack with pretty much just Botania and Quark. Initially authored by KidiroInfiniti</p>
<p>World backups:
<ul>
<li>2020-04-08: <a href="/files/survival-2020-04-08-02-30-09.zip">survival</a>, <a href="/files/creative-2020-04-08-03-16-50.zip">creative</a></p></li>
</ul>
<p>Changelog:</p>
<ul>
<li>2020-07-29 - Removed Mo Creatures (fuck you, Carson)</li>
<li>2020-07-25 - Made pack a MultiMC importable zip</li>
<li>2020-03-31 - Calmed down Chance Cubes</li>
<li>2020-03-25 - Removed Shoulder Surfing, resolved server-client discrepencies</li>
<li>2020-03-13 - <em>Server-Side</em>: Added Dynmap, see link next above</li>
<li>2020-03-09 - Tweak server roles, bump chunk limit up to 10k</li>
<li>2020-03-07 - Tweak Wither Skeleton Tweaks to remove OP swords and make skulls easier to get</li>
<li>2020-02-29 - <em>Server-Side</em>: Updated Forge chunk limit per ticket to 10k (<a href="https://github.com/FTBTeam/FTB-Utilities/issues/504">#504</a>)</li>
<li>2020-02-28 - Added FTBUtils for chunk loading</li>
<li>2020-02-25 - Added Quark for TE piston movement, among other things</li>
<li>2020-02-23 - Initial release</li>
</ul>
</div>
<div class="subcontainer">
<h2>Magic Pack Redux</h2>
<p><code>magic-main.mc.9iron.club</code></p>
<p><a href="/files/magicpackredux.zip">Download</a> (MultiMC)</p>
<p>1.12.2, Forge 2673</p>
<p>The epic saga of the magic pack continues, this time with a version of Blood Magic where cutting yourself is actually a solution and a version of Thaumcraft that is dramatically more lackluster than its ancestors. Comes with other stuff, too, like Embers, Wizardry, Psi, and a whole host of other fun shit.</p>
<p>World Backups:</p>
<ul>
<li>2020-07-27: <a href="/files/magic-main-2020-07-27.tar.gz">survival</a></li>
</ul>
<p>Changelog: </p>
<ul>
<li>2020-06-24: Updated all of the things, switch to MultiMC pack style</li>
<li>2020-06-21: Re-released here for all to enjoy</li>
<li>????-??-??: Things happened, pack was actually developed</li>
</ul>
</div>
<div class="subcontainer">
<h2>Rotary Pack</h2>
<p><code>rotary-main.mc.9iron.club</code></p>
<p>Download: <a href="/files/rotarypack-client.zip">Client</a> (simple zip), <a href="/files/rotarypack-server.zip">Server</a></p>
<p>1.7.10, Forge 1614</p>
<p>A pack with a ton of Reika's mods and AE2.</p>
<p>World Backups:</p>
<ul>
<li>2020-07-23: <a href="/files/rotary-main-2020-07-23.tar.gz">survival</a></li>
</ul>
<p>Changelog:</p>
<ul>
<li>2020-07-07: Fixed cable anchor recipe on server</li>
<li>2020-06-01: Initial release</li>
</ul>
</div>
<div class="subcontainer">
<h2>FTB Ultimate Reloaded 1.8.0</h2>
<p><a href="https://www.curseforge.com/minecraft/modpacks/ftb-ultimate-reloaded/files/2746965">Download</a> (Curse)</p>
<p>1.12.2, Forge 2838</p>
<p>It's a remake of FTB Ultimate, and contains such wonderful things as Modular Powersuits and a complete lack of shitty expert mode stuff.</p>
<p>We're using pack version 1.8 instead of 1.9 because this was the last version that the pack authors made a server bundle for. Looks like 1.9 was mostly just patches anyway.</p>
<p>You'll also have to add the following mods:</p>
<ul>
<li><a href="https://www.curseforge.com/minecraft/mc-mods/gravestone-mod/files/2608278">Gravestone Mod</a></li>
</ul>
<p>Changelog:</p>
<ul>
<li>2020-04-24 - Enabled TechReborn power conversion</li>
<li>2020-04-23 - Added NetherPortalFix</li>
</ul>
</div>
<a href="/minecraft/setup" class="startbutton">
<i class="fa fa-arrow-right"></i>
<p>Confused? Click here to get started</p>
</a>
</div>
<?php
# Define a pack card generator function
function echo_pack($pack) {
# Add basic coloration to the element, if it exists
if (file_exists("packs/$pack/color")) {
$color = file_get_contents("packs/$pack/color");
echo "<div class=\"modpack\" style=\"background: $color; color: var(--background);\">";
} else {
echo '<div class="modpack">';
}
# Push an image if we've got one of those
if (file_exists("packs/$pack/icon.png")) {
echo "<img src=\"/minecraft/packs/$pack/icon.png\" class=\"packicon\"/>";
}
# Get the pack description
$desc = "<h2>$pack</h2><p>A modpack.</p>";
$descfile = "packs/$pack/desc.html";
if (file_exists($descfile)) {
$desc = file_get_contents($descfile);
}
echo "$desc";
# A small button to browse previous world downloads
if (file_exists("../files/packs/$pack/worlds")) {
echo "<p><a href=\"/files/packs/$pack/worlds\" class=\"worldsbutton\">Browse world backups</a></p>";
}
# And a bright big download button
echo "<a href=\"/files/packs/$pack/latest.zip\" class=\"downloadbutton\">Download</a>";
echo '</div>';
}
# Get list of modpacks
$dir = new DirectoryIterator("packs");
$packs = array();
foreach ($dir as $fileinfo) {
if (!$fileinfo->isDot() && $fileinfo->isDir()) {
array_push($packs, $fileinfo->getFilename());
}
}
# Parse through and provide their information
if (!empty($packs)) {
echo '<div class="section">';
# If we have a current pack, print that upfront
if (file_exists("packs/current") && readlink("packs/current")) {
# We have a valid current pack, remove it from the list and print it upfront
$currentpack = readlink("packs/current");
$packs = array_diff($packs, ["$currentpack", "current"]);
echo '<div class="currentcontainer"><h1>Current Modpack</h1>';
echo_pack($currentpack);
# If there's a server IP name along with that, print that out too
if (file_exists("packs/currentip")) {
$ip = file_get_contents("packs/currentip");
echo "<p><code class=\"bigcode\">$ip</code></p>";
}
echo '</div></div><div class="section">';
}
# Sort the list of remaining packs
sort($packs);
# Print the rest of them
echo '<h1>Modpacks</h1><div class="packcontainer">';
foreach ($packs as $pack) {
echo_pack($pack);
}
echo '</div></div>';
}
?>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</body>

View File

@@ -0,0 +1,3 @@
<h2>Botania</h2>
<p>1.10.2, Forge 2511</p>
<p>A pack with <i>just</i> Botania. And Quark and a couple other minor things. Whatever.</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,3 @@
<h2>Magic Pack Redux</h2>
<p>1.12.2, Forge 2673</p>
<p>It's like the 1.7.10 Magic Pack, but with more updated mods and dramatically less Thaumcraft. As a bonus, you get Embers, Psi, and a ton of other side mods to explore.</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

View File

@@ -0,0 +1,3 @@
<h2>The Magic Pack</h2>
<p>1.7.10, Forge 1614</p>
<p>A very, <i>very</i> well-worn modpack with a ton of magic content. Includes Thaumcraft, Blood Magic, Botania, Witchery, Ars, and a couple others.</p>

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,3 @@
<h2>Rotarypack</h2>
<p>1.7.10, Forge 1614</p>
<p>A pack by autists, for autists. Explore revolutionary new power types and hyperrealistic nuclear reactors. And also AE2's there.</p>

1
minecraft/packs/current Symbolic link
View File

@@ -0,0 +1 @@
null

View File

@@ -0,0 +1 @@
magic.thefuck.how

View File

@@ -2,37 +2,36 @@
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link href="/minecraft/styles/styles.css" type="text/css" rel="stylesheet" />
<title>9iron - Modded Minecraft Setup</title>
</head>
<body>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<a href="/minecraft" class="startbutton">
<i class="fa fa-arrow-left"></i>
<p>Return to modpacks</p>
</a>
<h1>Setting Up Modded Minecraft</h1>
<p>This guide will set you up with the following:</p>
<ul>
<li>Java, because that's <em>still</em> a pain in the dick to set up</li>
<li>A new Minecraft game launcher to help organize modpacks</li>
<li>Whatever modpack we're playing</li>
</ul>
</div>
<div class="section" id="java">
<h1>1. Installing Java</h1>
<div class="subcontainer" id="java">
<h2>1. Installing Java</h2>
<p>Minecraft depends on Java. It's important that you have the latest 64-bit edition of Java installed.</p>
<ol>
<li>Download <a href="https://sdlc-esd.oracle.com/ESD6/JSCDL/jdk/8u251-b08/3d5a2bb8f8d4428bbe94aed7ec7ae784/jre-8u251-windows-x64.exe?GroupName=JSC&FilePath=/ESD6/JSCDL/jdk/8u251-b08/3d5a2bb8f8d4428bbe94aed7ec7ae784/jre-8u251-windows-x64.exe&BHost=javadl.sun.com&File=jre-8u251-windows-x64.exe&AuthParam=1593609737_aee69d42e03369a5aed61477a858b110&ext=.exe">the 64-bit edition of Java 8</a></li>
<li>Run it</li>
<li>You're done</li>
<li>Go to <a href="https://www.java.com/en/download/manual.jsp">Java Downloads</a></li>
<li>Download and run the "Windows Offline (64-bit)" option</li>
</ol>
</div>
<div class="section" id="multimc">
<h1>2. Installing MultiMC</h1>
<div class="subcontainer" id="multimc">
<h2>2. Installing MultiMC</h2>
<p>MultiMC is the launcher that we use to organize our modpacks. It has a number of features to make pack installation easier.</p>
<ol>
<li>Download <a href="https://multimc.org/#Download">MultiMC</a></li>
<li>Extract the zip file somewhere, like your desktop or Documents</li>
<li>Extract the zip file somewhere, like your desktop or Documents folder</li>
<li>Run <code>multimc.exe</code></li>
</ol>
<p>MultiMC will then run you through basic setup. You can accept the defaults, but change the following:</p>
<p>MultiMC will then run you through basic setup. You can accept the defaults, but will probably want to change the following:</p>
<ul>
<li>On the page where it asks you to set up Java, set these values:</li>
<ul>
@@ -42,28 +41,32 @@
</ul>
<p>After that, it'll drop you to the main screen and you can progress to the next step.</p>
</div>
<div class="section" id="pack">
<h1>3. Installing a Modpack</h1>
<p>Packs on the server, as of the time of writing this document, will from now on be provided in a format that's much easier to use with MultiMC. If, for whatever reason, you have to install one that <em>isn't</em>, flag down a moderator and have them show you. It's honestly a pretty involved process.</p>
<div class="subcontainer" id="pack">
<h2>3. Installing a Modpack</h2>
<p>All modpacks here are installable through MultiMC.</p>
<ol>
<li>Download the modpack you want to play</li>
<li>Open MultiMC</li>
<li>Hit the "Add Instance" button in the upper-left</li>
<li>Pick the option on the left called "Import from Zip"</li>
<li>Copy the pack download link from the previous page and stick it in the URL</li>
<li>Browse for the zip you just downloaded</li>
<li>Click OK</li>
</ol>
<p>This will set you up with a nice, shiny new instance with all the mods ready to go. Double-click it to launch it.</p>
<p>If MultiMC prompts for it, be sure to set up your Minecraft account.</p>
</div>
<div class="section" id="joining">
<h1>4. Joining a Server</h1>
<p>This one's pretty easy, thankfully</p>
<div class="subcontainer" id="joining">
<h2>4. Joining the Server</h2>
<p>Now the last thing we need to do is connect you to the server.</p>
<ol>
<li>Launch the game by double-clicking the modpack icon</li>
<li>Copy the server URL (something like <code>modpack.mc.9iron.club</code>)</li>
<li>Open the game, go to Multiplayer, and click "Add Server"</li>
<li>In the game, go to "Multiplayer", and click "Add Server"</li>
<li>Stick whatever name you want in the name field and paste the server URL in the "IP Address" field</li>
<li>Double-click it to join</li>
</ol>
<p>You're looking for the huge, can't-miss-it serif font with the gray background:</p>
<code class="bigcode">serverip.blah.blah</code>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>

View File

@@ -0,0 +1,90 @@
/*
* styles.css
* Copyright (C) 2021 Vintage Salt
*
* Distributed under terms of the MIT license.
*/
a.startbutton {
background: var(--greenlink);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
color: var(--background);
display: block;
font-size: 140%;
padding: 1em;
}
a.startbutton:hover {
background: var(--greenlink-hover);
}
a.startbutton i {
float: right;
vertical-align: middle;
}
a.startbutton p {
display: inline-block;
font-weight: bold;
margin: 0;
vertical-align: middle;
}
code.bigcode {
background: var(--background);
border-radius: 8px;
display: block;
font-size: 400%;
text-align: center;
margin: auto;
padding: 0.5em;
}
div.currentcontainer {
border: 4px solid var(--line);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
margin: 1em 0;
padding: 1em;
}
div.packcontainer {
display: grid;
grid-gap: 1em;
grid-template-columns: 1fr 1fr;
}
div.modpack {
background: var(--background-bright);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
display: block;
margin: auto 0 0 0;
padding: 1em;
}
div.modpack h2 {
display: inline;
vertical-align: middle;
}
div.modpack a.downloadbutton {
background: var(--link);
border-radius: 8px;
box-shadow: 5px 5px var(--shadow);
color: var(--background);
display: block;
font-size: 120%;
font-weight: bold;
margin: 0 auto;
max-width: 24em;
padding: 1em;
text-align: center;
}
div.modpack a.downloadbutton:hover {
background: var(--link-hover);
}
img.packicon {
border-radius: 50%;
float: right;
height: 48px;
width: 48px;
vertical-align: middle;
}
@media only screen and (max-width: 600px) {
div.packcontainer {
grid-template-columns: 1fr;
}
}

View File

@@ -1,32 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link rel="shortcut icon" href="/favicon.ico" />
<title>9iron - Midnight Musings</title>
</head>
<body>
<div class="container">
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Midnight Musings</h1>
<p>It's really more like 5 in the morning, but whatever.</p>
<p>I'm honestly not entirely sure what I want out of this website. On the one thing, I could host a blog here, but on the other, I'm trying to do so by writing out the markup by fucking hand. Like c'mon, guy.</p>
<p>Perhaps it's just because it's way way late, perhaps it's because I didn't get enough sleep last night, perhaps a combination thereof, but I don't really care. I feel like there's charm in just writing it out in HTML and committing it, waiting for my box to pull it at noon.</p>
<p>But back to the point at hand: I have no clue what to do here. Like, it already aggregates links just fine. I've lost many an hour just making this place look good and all I use it for is a New Tab page that I break every fifth commit and ignore half the time anyway.</p>
<p>Perhaps it's the right idea to host a blog here. Already I feel a bit clearer-headed writing my thoughts out like this (even if it is 5AM and my eyes hurt). I've gotta figure a few things out, probably script the production of these posts and manage an RSS feed, but altogether I'm starting to warm up to the idea.</p>
<p>You wouldn't think it reading through this stream-of-consciousness garbage, but I used to be pretty good at writing. I used to be able to write very coherent papers with good pacing and pleasing verbiage, but most of those abilities have fallen off to the wayside since the only things I've written since are tweets and reddit posts. I've started to swear a lot more in place of using accurate wording to express my points-</p>
<p>God dammit, that's like the third time 29 Years has come on. Hang on.</p>
<p>There we go.</p>
<p>-which is possibly the worst fate for a writer. That and carpal tunnel, I suppose.</p>
<p>Yeah, this oughtta be the remedy for my prose that I've been looking for. Getting back into the rhythm of writing for fun has been on my backlog for so long and I've now got the opportunity to execute it. It'll be healthy, for sure.</p>
<p>But typing this out by hand sucks.</p>
<p>- Salt</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/sidebar.html';?>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</div>
</body>
</html>

View File

@@ -1,32 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link rel="shortcut icon" href="/favicon.ico" />
<title>9iron - Nightly Blogpost Time</title>
</head>
<body>
<div class="container">
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Nightly Blogpost Time</h1>
<p>I work second shift, currently, which puts me going to bed at like 4-5AM, sometimes 6-7 depending on my shift. Naturally, <em>no</em> sensible motherfucker is up at this hour, which gives me a lot of time to do nothing but write code and dump my thoughts.</p>
<p>I'm really enjoying just how much thoughtless (thoughtful?) garbage I'm able to throw at this terminal in a night. It really helps precipitate my thoughts into more solid opinions, for sure.</p>
<p>But enough about that.</p>
<p>Today was pretty nice. Played a lot of modded MC and wrote up a good few pages documenting my setup. At this rate, I'm probably gonna decomm the dokuwiki and just write it all out here. Looks a lot cleaner over here.</p>
<p>I feel like I'm starting to get the hang of minimalist webdev. Regardless, my current workflow is... messy, to say the least. I really shouldn't be dicking around knee-deep in HTML for every post when I could write a small preprocessor. I <em>really</em> need to sort out deployment, too. Currently, I just remote into the server and <code>sudo git pull</code> the site down every time I write a post, which could be hella automated. And then there's the entire concept of actually working on a feed, which is insanely difficult to do given my workflow.</p>
<p>See, one of the things I want this site to be (and not necessarily the child sites on this domain) is stateless. I want to be able to clone the repo to a webroot and launch Apache and just have my site. No fuss, no mess. Now I've already broken this paradigm by including modpacks in the webroot in the gitignore'd <code>/files</code> directory, but I'm willing to exclude 200MB binary files for the sake of sanity. But as such, I don't want anything on the box to generate the feed without my intervention.</p>
<p>I suppose I could automatically generate the feed with a script based on the contents of files in here. It shouldn't be too hard to just copy the contents of a couple tags over in a Python script. And I suppose with that I could just nail a new entry to the top of the file, make a commit, and push it alongside the post.</p>
<p>Maybe this workflow isn't too bad. Just needs a little glue is all.</p>
<div class="break"></div>
<p>I'm hoping that, once I get in the habit of making these posts, I'll have much clearer thoughts planned out. If I make it a habit, I'll start thinking over the course of the day what sort of things I want to include, what thoughts I want to present, etc. As such, I apologize in advance for the next like twenty of these fucking things. They're gonna read like ass, just like this one.</p>
<p>But that's okay. I'll improve.</p>
<p>- Salt</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/sidebar.html';?>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</div>
</body>
</html>

View File

@@ -1,43 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<title>9iron - Inflation in Modded Minecraft</title>
</head>
<body>
<div class="container">
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Inflation in Modded Minecraft</h1>
<p>It's hard to believe Minecraft is 9 years old, and even harder to believe that <a href="https://howoldisminecraft1710.today/">the single biggest version for modded</a> is almost 6. There's been so much refinement in modding tools and mods themselves since; orders of magnitude more complexity, more things, <em>cooler</em> things. The dev for Factorio once said that a major inspiration for him was IC2. <em>It's that good</em>. But it's inflated to hell and back.</p>
<p>Let's take a popular mod as a baseline, as I feel that it best represents (and is the posterboy for) its power system: Thermal. A basic generator produces 80RF/t (unit power per unit time) and can handle a basic powered furnace and a Pulverizer simultaneously. With upgrades, some of the largest basic Thermal generator setups I've seen produce upwards of 20-80kRF/t, can power <em>damn</em> good furnaces, and are easily scaleable.</p>
<p>Thermal also provides an addon mod: Redstone Arsenal. This mod adds tools, armor, and weapons that consume RF to work. They're upgrades from diamond, can never break, but require infrastructure. It's a good system. The armor holds 800kRF per piece and consumes 200 per hit. Wearing four pieces of armor, this means it takes half a second of basic shitty coal generator power production to effectively add one durability point to your better-than-diamond armor.</p>
<p>Enter third-party addon mods. There exist many, <em>many</em> mods that produce and consume several orders of magnitude more power. Extreme Reactors can produce 100<em>M</em>RF/t without breaking a sweat, Draconic Evolution is notorious for its power usage (4MRF to conjure an overpowered arrow out of thin air) and invincibility armor, RFTools Dimensions provides user-controllable worlds and lets you buy resources that you should <em>never</em> allow a player to buy given that you have the power to support the place long enough to get your shit and get out, etc.</p>
<p>Now, these mods weren't all developed at the same time. Early on, the most insane mod you could get was Buildcraft, which had a Quarry. Then came IC2, which had cool stuff like a mining laser, OG powered armorsuits, and nuclear reactors that would blow your base a new asshole if you weren't careful. Thermal came along and eventually pioneered a new power system, AE followed and allowed for centralized storage and automation, etc.</p>
<p>Basically, what I'm getting at is that the modded Minecraft ecosystem has inflated insanely quickly. Power costs are somewhere between 3-9 (or 12!) orders of magnitude off of what the developers of those power systems originally intended. Resources in endgame ME systems can number in the millions. Damage has been affected too, but dramatically less so because functional overkill is really low in Vanilla and combat is uninteresting regardless.</p>
<p>What made me realize this is an ongoing playthrough with Botania. Just Quark and Botania. And Spartan Weapons because a friend wanted it, I guess. You move from generation on the order of a 16th of a Mana Pool to generation on the order of half a pool. It's just enough difference in stages to make you want to progress, and that's perfect.</p>
<p>The power curve also drops off really quickly. The highest damage sword Botania offers is only equivalent to diamond, same with the armor. Instead, it offers little odds and ends that are usually reserved for magic mods: quicker movement, health regen, second sight, potion effects, longer reach, and other unique trinkets. It adds swords that fire laser beams if you wait for the attack timer, making combat more interesting. In effect, what this means is that a botanist gathers much different power than would be obtained in the larger RF ecosystem.</p>
<p>I'm finding that, in the end, a pack with just Botania plays better than a pack with a bunch of RF tech mods. Botania has just as much focus on automation as a tech pack would (and with significantly more automation complexity, but that's a topic for another post) but doesn't throw out Vanilla balance. Combat remains challenging and engaging, the environment isn't trivialized by creative flight early on, and the endgame is powerful but grounded.</p>
<p>The point boils down to this: slow down and don't trivialize shit.</p>
<p>Every mod makes their stuff more powerful than the one that preceeded it to make sure people use it. What ends up happening is that earlier mods get shunted to the side because their numbers aren't big enough, Vanilla included, even if there's absolutely <em>no</em> need for that much power. So the solution is as such:</p>
<ul>
<li>Normalize power generation and consumption across machines in a pack</li>
<li>Put a cap on the player's power and ensure that it doesn't trivialize anything</li>
<li>If you do trivialize something, add something else to replace it</li>
<li>Create in-world challenges, like things to fight or places to explore and conquer</li>
<li>Omissions are just as powerful as inclusions in pack development</li>
<li>High resource costs do not justify breaking balance. No exceptions.</li>
</ul>
<p>Fuck Draconic Evolution.</p>
<p>Make more mob mods.</p>
<p>Somebody needs to do a combat overhaul.</p>
<p>Stop putting creative items at the ends of your packs.</p>
<p>- Salt</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/sidebar.html';?>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</div>
</body>
</html>

View File

@@ -1,34 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<title>9iron - An Update</title>
</head>
<body>
<div class="container">
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>An Update</h1>
<p>Just want to keep this site up to speed.</p>
<p>It's been months since my last post and and a lot has happened. I've landed a job as an actual sysadmin, made friends, eased stress, and suffered loss. It's been exhausting, which is why I haven't posted much.</p>
<p>On top of that, I have basically no social media presence so nobody reads these things anyway. I know I said I would do this for myself, but as it turns out, doing things for yourself is hard, and I'm no social butterfly by any metric.</p>
<div class="break"></div>
<p>Beyond personal shit, though, I have updated this site a bit. In no particular order:</p>
<ul>
<li><b>Gitea registrations are now open!</b> Bring your friends and encourage people to run around and write code and file bug reports and do whatever they do on git hosts. Commit bigass binary files and I'll kick your ass.</li>
<li>The website is undergoing a major redesign, and this probably won't even be its final form. There's a lot to do here; I'm no webdev.</li>
</ul>
<p>The Ansible repo that I use to manage 9iron has gotten significantly more complex and significantly more organized. I'm making good use of tags, making good inventory, making good playbooks, and more. Really there are only a few things I need to work on, like separating out roles a bit more and separating plays between installation, configuration, and removal. Oh, and getting ansible-pull figured out.</p>
<p>My weird obsession with statelessness is waning as I figure out backup scripts. Just need to hook into the S3 API and push weekly backups to cold buckets and we're good to start rolling with statefulness again. I realized really quickly that basically any deployment is going to have state.</p>
<p>I ported my tModLoader development environment to Linux and <em>almost</em> everything works. The only thing I can't quite figure out is how to get edit-and-continue to work with the Steam Runtime, but once either that's sorted or I trash my packageset with Terraria dependencies, I should be ready to pick Sutando Da back up. It's a mod I wrote a while back to try to add stands and it was entirely because I wanted to try to implement The World. Timestop actually works pretty well, surprisingly; I didn't think TML would have all the right hooks but it <em>definitely</em> does.</p>
<p>Still listening to The National.</p>
<p>Things are looking bright.</p>
<p>- Salt</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/sidebar.html';?>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</div>
</body>
</html>

View File

@@ -1,31 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<title>9iron - Dumb Shit</title>
</head>
<body>
<div class="container">
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Dumb Shit</h1>
<p>Finally got a wild hare up my ass and redid the CSS. Again. Outside of that, only thing that's been going on is what feels like the collapse of my circle of friends. F. Oh, and Matrix I guess.</p>
<p>I'm not gonna get into the details of it here since this <em>is</em> a public blog and my friends <em>can</em> (read: don't) read it from time to time. Hell, nobody does. But regardless, what <em>did</em> happen feels unjust and I can't help but feel partially responsible for it. I know I wasn't the axeman, but being supportive isn't a virtue.</p>
<p>I'm still sorry, Sam.</p>
<div class="break"></div>
<p>Anyway, onto other happenings.</p>
<p>I now have a Matrix server with open registrations! Check out <a href="/matrix">the setup page</a> for details. At the time of writing, the tutorial still mentions Riot, but it's been rebranded to Element. Should still be the same loose set of steps.</p>
<p>I finally broke down and bought a Pinephone on like the 22nd, just waiting for that to arrive. From what I understand it and PMOS are actually in a pretty useable state, all things considered. Can't wait to have to hack together something to actually make a darn telephone call. At least I've got the know-how to automate whatever dumb bubblegum-and-duct-tape fix I brew up now.</p>
<p>As for the CSS, I'm sure you've probably noticed that a lot has changed. I'm trying to bring this place into more-or-less parity with the rest of my rice. I know it's not exactly the most productive pasttime, but it's therapeutic: just sit back, throw on some nice relaxing music, and write away. Helluva lot less frustrating than trying to diagnose an incomplete Nagios deployment (though I do still need to finish that, fuck). Everything's a bit boxier, a bit tighter, less round and weird, and ideally more useable.</p>
<p>I'm also finding it pretty hard to stay on-task with all this technical shit lately, think I might be getting burnt out. I mean, it's a third shift work-from-home position and all my other hobbies involve computers in some way; there's nothing else it could be. Whenever it may be, I need to take the next chance I get to jump away from all this for a while.</p>
<p>Mad about politics,</p>
<p>But what can you do.</p>
<p>- Salt</p>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/sidebar.html';?>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</div>
</body>
</html>

View File

@@ -1,54 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-meta.php';?>
<link rel="shortcut icon" href="/favicon.ico" />
<title>9iron - Posts</title>
</head>
<body>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-header.php';?>
<div class="content">
<div class="section">
<h1>Posts</h1>
<p>Included is a list of all blog posts I've written here, latest first. I try to post as frequently as I can make an excuse to.</p>
<p>It's also got a <a href="/feed">feed</a> if you want it.</p>
<dl>
<?php
$dir = $_SERVER['DOCUMENT_ROOT']."/posts/";
$posts = scandir($dir, 1);
$ignore = array("index.php", "feed.php", ".", "..");
$extensions = array(".php", ".html", ".htm");
foreach ($posts as &$post) {
// See if it's a blacklisted file
if (in_array($post, $ignore)) {
continue;
}
$postlocation = $_SERVER['DOCUMENT_ROOT']."/posts/".$post;
$posturl = "/posts/".$post;
// Get the title
$title = "Title not available";
$summary = "Summary not available";
$dom = new DOMDocument();
if ($dom->loadHTMLFile($postlocation)) {
$xpath_section = new DOMXpath($dom);
$list = $dom->getElementsByTagName("title");
if ($list->length > 0) {
$title = $list->item(0)->textContent;
}
$list = $xpath_section->query('//div[@class="section"]//p');
if ($list->length > 0) {
$summary = $list->item(0)->nodeValue;
}
}
// Produce a list item
$post = str_replace($extensions, "", $post);
$title = str_replace("9iron - ", "", $title);
echo "<a href=\"$posturl\"><div class=\"subcontainer\"><h3>$post: $title</h3><p>$summary</p></div></a>";
}
?>
</dl>
</div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</body>
</html>

View File

@@ -9,7 +9,6 @@
<nav class="navbar">
<ul>
<a href="/"><li>Home</li></a>
<a href="/posts"><li>Posts</li></a>
<a href="/about"><li>About</li></a>
</ul>
</nav>

View File

@@ -0,0 +1,58 @@
<?php
$subtitles = array(
# Source: https://gist.github.com/breanneboland/a3226f8d667dc8cc40d7fcbdde0e0567
# https://breanneboland.com/blog/2020/02/28/you-can-put-what-in-dns-txt-records-a-blog-post-for-con-west-2020
"Ask them again.",
"If you still do not like it, maybe it is time to leave it.",
"Tilt your head (or the thing) and look at it 90 or 180 degrees off true.",
"Reconsider your use of something central. Social media is a good one, or anything that takes a significant amount of energy. For a couple of days, do it differently: abstain entirely, or make automatic processes manual. See what you lose and gain.",
"Do a little dance for 60 seconds or five minutes.",
"Take a picture of the thing and look at it on a screen. See what you have been overlooking. Bring it into your regular vision and address it.",
"Take five deep breaths.",
"Say it in your best Kermit the Frog voice.",
"This might not be the thing for you. How did it feel reading that? That is your actual answer.",
"Think of the last thing that made you truly happy. Can you have more of that thing? Is it a thing that is healthy to have in unfettered abundance? If so, how can you pull it into more of your days?",
"Can you tell it to an animal friend?",
"Can you make it digital or analog instead?",
"What would it look like made of yarn?",
"Set it aside for 72 hours. Leave the state if you can.",
"That, but carved in marble.",
"Turn it into an elevator pitch for the person you like the least.",
"What is the headline? What is the lede? What is the first transition?",
"Meld it with the thing you like least about yourself. Envision taking it outside into the world.",
"I promise you this is interesting. You find it interesting. There are too many other people for you to be the only one.",
"You are good enough to do this. No, seriously. You are.",
"There is a reason you had this idea and not someone else.",
"How you fixed something is always an interesting story to someone.",
"How you survived is always an interesting story to someone.",
"Take the weakest thing in you and then beat the bastards with it. (Thanks, Stars.)",
"What if the perceived defect is what makes it special?",
"Skip the introduction and conclusion for now. All headers are transient, so make them temporary text. Lorem ipsum everything that isnt working right now.",
"If you're writing and stuck, tap the . key until the words come back. If you're not writing, hum until the next action comes.",
"Go outside for 20 minutes. Sing out loud or inside your head. Transform the inside of your brain for a moment to make it more hospitable to your work.",
"If you keep thinking about a nap, maybe a nap is exactly the thing to do.",
"Set a timer for 30 seconds and draw without lifting your writing instrument off the page. Make a satisfying scribble, do a weird self-portrait, or just be aimless. Stop when you're done and return to the task.",
"Try to draw with your foot, if that's physically possible for you. Study the similarities and differences between the way feet and hands work. Think about how similar tools can be used very differently.",
"Look up https://zoom.earth/. For five minutes, click intuitively: where you live, where you've gone, where you want to go to. When five minutes is up, see where you ended up. Find three facts about it. Marvel at this time in history.",
"Remember that you are an expert in your own life, and you hold an entire history and universe that no one else is entirely party to. Your voice is needed because there is no other voice like it.",
"What is the kindest route to take?",
"How would you express it using only hummed notes?",
"Ok, you can clean one thing or do one other procrastination exercise, but you must do it while wearing a ridiculous accessory. Otherwise the dishes must stay undone until you've finished.",
"Do a DuckDuckGo image search for: your first name, your favorite color, the year you were born, the last thing you ate, the word “nebula,” and the phrase “cat stained glass.” Think for a minute when you're done.",
"If you haven't said yes yet, try saying a specific maybe and seeing what happens.",
"Put it through Google Translate into another language. Then put it back through, changing it back to the original. What is lost? What is gained?",
"Ask a kid a simplified version of your question.",
"How would H.R. Giger represent it? Maybe don't do that, but think of what it could look like.",
"List out the projects you'd like yours to be like. List out the projects you wouldn't like yours to be like.",
"At a medium scale, list out the steps a fairy godmother would take to fix your conundrum. How many can you do yourself?",
"What would go into a montage that resulted in you sorting this out?",
"Describe the conundrum in a word. Look up its synonyms and antonyms. Read them out loud and see which ones sing to you. Look those up too. See how far you can get from your original word without losing the original meeting entirely.",
"Ok, but have you had a snack recently? Think about that while drinking a glass of water.",
"Has it been too long since you talked to another person with your actual voice? Is there someone you can take a five-minute being-human break with?",
"What would the cartoon mascot of your project and problem look like? In what ways might they be friends?",
"The world does not offer infinite possibility, but daily life does a good job of disguising what possibility we have. Consider that you are stardust, we share atoms with every great genius that ever was, & your legacy is unlikely life in a cold universe.",
"Life is, on a baseline, difficult, and yet every breath is a miracle in a world where our matter could have also been rocks or corn or a plastic bag in a puddle. In that way, we start ahead, and you can go even further.",
);
$message = $subtitles[array_rand($subtitles, 1)];
echo "$message";
?>

View File

@@ -5,18 +5,3 @@
<link href="/styles/styles.css" type="text/css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/fork-awesome@1.1.7/css/fork-awesome.min.css" integrity="sha256-gsmEoJAws/Kd3CjuOQzLie5Q3yshhvmo7YNtBG7aaEY=" crossorigin="anonymous">
<link href="/favicon.ico" rel="shortcut icon" />
<link rel="alternate" href="/feed" title="9iron RSS Feed" type="application/rss+xml" />
<!-- No FOUC -->
<style type="text/css">
.no-fouc {display: none;}
</style>
<script type="text/javascript">
document.documentElement.classname = 'no-fouc';
window.addEventListener("load", function(event) {
// No flash of unstyled content
nf = document.getElementsByClassName('no-fouc');
for (i = 0, len = nf.length; i < len; i++) {
nf[i].removeClass('no-fouc');
}
});
</script>

View File

@@ -2,8 +2,11 @@
$subtitles = array(
// Press F to pay respects
"For those afflicted",
// F
"We don't fuck dragons",
// F
"Synapse a shit, use XMPP",
// F
"cowfee",
"gween tea",
"You shot it into the fucking sand",
@@ -83,7 +86,6 @@
"Lain in a bear suit",
"Let's get this out onto a tray. Nice. Mmkay.",
"This space intentionally left blank",
"",
"Banned in Australia",
"Banned in Australia(?)",
"I want a PSP again",
@@ -106,6 +108,10 @@
// - Me, all the fucking time
"\"Is that THE Simon Belmont Castlevania?\"",
// - Me, irritating Sam
"\"My heart runs Linux\"",
// - Me, context forgotten
"\"Brett has Mrs. Chapman nipples\"",
// - Me
"\"I suck a lot of dick, get over here\"",
// - Brett
"\"This was worth sucking dick\"",
@@ -114,6 +120,16 @@
// - Brett
"\"100% of people that get killed die\"",
// - Brett
"\"I don't like prison\"",
// - Brett
"\"Be grody on my back. Wait-\"",
// - Brett
"\"Let's get this cock onto a tray!\"",
// - Brett
"\"This is Hell, they are all prostitutes.\"",
// - Jordyn
"\"Isn't an asshole like a brass instrument?\"",
// - Jordyn
"\"Sir, this is an M32 grenade launcher\"",
// - Jacob https://www.youtube.com/watch?v=DJRkFLFnv3c
"\"OHNO!\"",
@@ -150,8 +166,14 @@
// - Jacob, after I said he's my little pogchamp
"\"They're children you thirsty whores\"",
// - Sam
"\"Imagine \'Blades of Glory\' but they fuck\"",
"\"Pichu is illegal\"",
// - Sam
"\"DEDEDE FUCKS\"",
// - Sam
"\"Imagine 'Blades of Glory' but they fuck\"",
// - Also Sam
"\"There's no D in BDSM\"",
// - Rachael
"God dammit, Sam",
"God dammit, Jacob",
"God dammit",
@@ -187,6 +209,7 @@
"No backing database edition",
"Motherfucking website edition",
"Licensed under MIT edition",
"Absolutely no scripts edition",
"Now SFW edition",
"NSFW edition?",
"NSFW edition"

View File

@@ -23,12 +23,13 @@
<h4>desu.ltd</h4>
<a href="https://desu.ltd">Index</a>
<a href="https://git.desu.ltd">Gitea</a>
<a href="http://local.desu.ltd">Local</a>
</div>
<div class="spsubsection">
<h4>9iron</h4>
<a href="https://9iron.club">Index</a>
<a href="https://git.9iron.club">Gitea</a>
<a href="https://monitor.9iron.club">Grafana</a>
<a href="https://nc.9iron.club">Nextcloud</a>
</div>
<div class="spsubsection">
<h4>Resources</h4>
@@ -46,38 +47,12 @@
</div>
<div class="spsubsection">
<h4>Imageboards</h4>
<a href="https://smuglo.li">Smuglo</a>
<a href="https://8kun.top">8kun</a>
</div>
<div class="spsubsection">
<h4>Comms</h4>
<a href="https://app.element.io">Element</a>
<a href="https://discordapp.com/app">Discord</a>
<a href="https://web.telegram.org">Telegram</a>
</div>
<div class="spsubsection">
<h4>Galleries</h4>
<a href="https://derpibooru.org">Derpibooru</a>
<a href="https://gelbooru.com">Gelbooru</a>
</div>
</div>
<!-- NERD -->
<div class="spsection">
<div class="spsubsection">
<h4>Git</h4>
<a href="https://git.9iron.club">9iron</a>
<a href="https://gitlab.com">GitLab</a>
<a href="https://github.com">GitHub</a>
</div>
<div class="spsubsection">
<h4>Core</h4>
<a href="https://git.9iron.club/salt/ansible">Ansible</a>
<a href="https://git.9iron.club/salt/home">Home</a>
<a href="https://git.9iron.club/salt/www2">www2</a>
<a href="https://8chan.moe">8chan.moe</a>
<a href="https://smuglo.li">smuglo.li</a>
</div>
<div class="spsubsection">
<h4>Projects</h4>
<a href="https://itazuraneko.neocities.org/learn/guide.html">LEARN JAP</a>
<a href="https://itazuraneko.neocities.org/learn/guide.html">Learn Japanese</a>
</div>
<div class="spsubsection">
<h4>Other</h4>
@@ -86,6 +61,7 @@
<a href="https://git.axiodl.com/AxioDL/urde">URDE</a>
</div>
</div>
<div class="quote"><?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-inspiration.php';?></div>
</div>
<?php include $_SERVER['DOCUMENT_ROOT'].'/src/common-footer.php';?>
</body>

View File

@@ -35,7 +35,7 @@ h4 {
font-size: 16px;
font-family: var(--font);
padding: 0.25em;
transition: .08s ease-in;
transition: .04s ease-in;
width: 100%;
}
.search-input:hover,

View File

@@ -10,10 +10,12 @@
:root {
--background-bright: #fdfcfa;
--background: #ecebe9;
--line: #d6d5d3;
--line: rgba(0,0,0,0.1);
--greenlink: #327117;
--greenlink-hover: #47b625;
--link: #286a9d;
--link-hover: #3ea5f3;
--shadow: 8px -5px #d6d5d3;
--shadow: 8px -5px rgba(0,0,0,0.1);
--text: #414040;
--text-code: #a7674e;
}
@@ -32,7 +34,7 @@ body {
a {
color: var(--link);
text-decoration: none;
transition: .08s ease-in;
transition: .04s ease-in;
}
a:hover {
color: var(--link-hover);
@@ -75,6 +77,11 @@ div.break {
margin: 2em auto;
border-bottom: 3px double var(--line);
}
div.quote {
border-left: 4px solid var(--line);
margin: 1em 4em;
padding: 1em;
}
i.badge {
font-size: 200%;
float: right;
@@ -125,7 +132,7 @@ img.bigimg {
.header nav ul li:hover {
background: var(--link-hover);
color: var(--background);
transition: .08s ease-in;
transition: .04s ease-in;
}
/* CONTENT */

10
test.sh
View File

@@ -1,10 +0,0 @@
#! /bin/sh
#
# test.sh
# Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
#
# Distributed under terms of the MIT license.
#
php -S localhost:8000