diff --git a/about/bg.png b/about/bg.png new file mode 100644 index 0000000..bb19d15 Binary files /dev/null and b/about/bg.png differ diff --git a/about/index.php b/about/index.php new file mode 100644 index 0000000..78a456e --- /dev/null +++ b/about/index.php @@ -0,0 +1,32 @@ + + + + + About + + + + + +

about me

+

hi

+ +

Hello there! They call me Will, but I tend to go by niceopod or deep twisty (more on that later) on the internet. I like to make stuff on the computer, like music, or art, or this website. I've heard rumors calling me such things as "canadian", "autistic", and "incalculably talented". I cannot confirm or deny any of these allegations.

+

What's a "deep twisty"?

+

"deep twisty" is a pseudonym I came up with to release music under, because everyone is doing it. It comes from some tweets from an official Subnautica twitter account where they referred to the then-work-in-progress Deep Twisty Bridges biome as just "deep twisty". I thought it sounded funny. Funny enough to brand myself on, apparently.

+

As for "niceopod", "nice" was the best word I could think of that rhymes with the first syllable of "isopod". I feel like it sounds like I'm trying to say I'm nice. I'm not, it's just that the alternatives were "iceopod" and "sliceopod". Isopods are nice though.

+

I go by Will because that's my name and I can't be fucked changing it.

+

Interests

+

Anything with six or more legs or one or more solar masses. If anyone finds something with both, let me know. I'm also into computers and videogames (shocker). My all time favourite game, just by sheer unrivaled volume of playtime, is Minecraft. I've sunk more time into that game than any other I've played by probably an order of magnitude.

+

If you care, which I'm assuming you do if you read this far, you can get more information about the things I like in the navigation at the top of this page.

+

About the site

+

This website (and my other one) is hosted using Nginx on a VPS running Ubuntu Server. It's written in pure HTML and CSS with the server-side stuff done in PHP. I'd like to say it's entirely free of Javascript, but the old archived versions use it pretty heavily.

+

You can read about the history of this thing here.

+
+ + + diff --git a/about/music/bg.png b/about/music/bg.png new file mode 100644 index 0000000..f03057e Binary files /dev/null and b/about/music/bg.png differ diff --git a/about/music/covers/aeon_core.png b/about/music/covers/aeon_core.png new file mode 100644 index 0000000..c869690 Binary files /dev/null and b/about/music/covers/aeon_core.png differ diff --git a/about/music/covers/concrete_and_gold.png b/about/music/covers/concrete_and_gold.png new file mode 100644 index 0000000..7d02e19 Binary files /dev/null and b/about/music/covers/concrete_and_gold.png differ diff --git a/about/music/covers/fucked_up_friends_3.png b/about/music/covers/fucked_up_friends_3.png new file mode 100644 index 0000000..aa37168 Binary files /dev/null and b/about/music/covers/fucked_up_friends_3.png differ diff --git a/about/music/covers/funeral.png b/about/music/covers/funeral.png new file mode 100644 index 0000000..9ba0dcc Binary files /dev/null and b/about/music/covers/funeral.png differ diff --git a/about/music/covers/millenialism.png b/about/music/covers/millenialism.png new file mode 100644 index 0000000..f48534c Binary files /dev/null and b/about/music/covers/millenialism.png differ diff --git a/about/music/covers/realign.png b/about/music/covers/realign.png new file mode 100644 index 0000000..3ec2407 Binary files /dev/null and b/about/music/covers/realign.png differ diff --git a/about/music/covers/revolution_radio.png b/about/music/covers/revolution_radio.png new file mode 100644 index 0000000..81308bd Binary files /dev/null and b/about/music/covers/revolution_radio.png differ diff --git a/about/music/covers/spectrum.png b/about/music/covers/spectrum.png new file mode 100644 index 0000000..73a1fd9 Binary files /dev/null and b/about/music/covers/spectrum.png differ diff --git a/about/music/covers/synthicate.png b/about/music/covers/synthicate.png new file mode 100644 index 0000000..09e507b Binary files /dev/null and b/about/music/covers/synthicate.png differ diff --git a/about/music/covers/the_last_ninja_2_c64_ost.png b/about/music/covers/the_last_ninja_2_c64_ost.png new file mode 100644 index 0000000..b1496a1 Binary files /dev/null and b/about/music/covers/the_last_ninja_2_c64_ost.png differ diff --git a/about/music/covers/tortured_waters.png b/about/music/covers/tortured_waters.png new file mode 100644 index 0000000..44d4ae0 Binary files /dev/null and b/about/music/covers/tortured_waters.png differ diff --git a/about/music/covers/triangle_unicode.png b/about/music/covers/triangle_unicode.png new file mode 100644 index 0000000..32134b4 Binary files /dev/null and b/about/music/covers/triangle_unicode.png differ diff --git a/about/music/covers/ultrakill_imperfect_hatred.png b/about/music/covers/ultrakill_imperfect_hatred.png new file mode 100644 index 0000000..8bdd0c1 Binary files /dev/null and b/about/music/covers/ultrakill_imperfect_hatred.png differ diff --git a/about/music/covers/unstoppable_force.png b/about/music/covers/unstoppable_force.png new file mode 100644 index 0000000..a240bc9 Binary files /dev/null and b/about/music/covers/unstoppable_force.png differ diff --git a/about/music/covers/vast.png b/about/music/covers/vast.png new file mode 100644 index 0000000..4a7db5b Binary files /dev/null and b/about/music/covers/vast.png differ diff --git a/about/music/covers/walks_of_lung.png b/about/music/covers/walks_of_lung.png new file mode 100644 index 0000000..f1be293 Binary files /dev/null and b/about/music/covers/walks_of_lung.png differ diff --git a/about/music/index.php b/about/music/index.php new file mode 100644 index 0000000..76f434a --- /dev/null +++ b/about/music/index.php @@ -0,0 +1,76 @@ + + + + + + Music + + + + + + + +

music

+

Albums I like

+
+ findaeden - Spectrum + Noisemaker - Funeral EP + Heaven Pierce Her - ULTRAKILL: Imperfect Hatred + We Are Magonia - Triangle Unicode + CALIPHATE - Unstoppable Force + Patricia Taxxon - Walks of Lung + Red Vox - Realign + TOBACCO - Fucked Up Friends 3 + LAZERPUNK - Synthicate + Waterflame - Vast + DEADLIFE - Tortured Waters + NYSE - MILLENNIALISM + Foo Fighters - Concrete and Gold + Green Day - Revolution Radio + Matt Gray - The Last Ninja 2 (C64) OST + Scalameriya - Aeon Core +
+
+
+ + + \ No newline at end of file diff --git a/about/uses/bg.png b/about/uses/bg.png new file mode 100644 index 0000000..b17fc2e Binary files /dev/null and b/about/uses/bg.png differ diff --git a/about/uses/images/2022-12-20_zsh.png b/about/uses/images/2022-12-20_zsh.png new file mode 100644 index 0000000..acec442 Binary files /dev/null and b/about/uses/images/2022-12-20_zsh.png differ diff --git a/about/uses/images/pc1.png b/about/uses/images/pc1.png new file mode 100644 index 0000000..3a14ba0 Binary files /dev/null and b/about/uses/images/pc1.png differ diff --git a/about/uses/images/pc2.png b/about/uses/images/pc2.png new file mode 100644 index 0000000..3353846 Binary files /dev/null and b/about/uses/images/pc2.png differ diff --git a/about/uses/index.php b/about/uses/index.php new file mode 100644 index 0000000..c2832cb --- /dev/null +++ b/about/uses/index.php @@ -0,0 +1,322 @@ + + + + + + My setup + + + + + + + +

stuff i use

+

If your setup is different you're objectively stupid

+

Hardware

+ +

Software

+ +
+ + + + \ No newline at end of file diff --git a/blog/bg.png b/blog/bg.png new file mode 100644 index 0000000..36d5c1c Binary files /dev/null and b/blog/bg.png differ diff --git a/blog/images/2022-07-14_PC-RGB.jpg b/blog/images/2022-07-14_PC-RGB.jpg new file mode 100644 index 0000000..ddd22f6 Binary files /dev/null and b/blog/images/2022-07-14_PC-RGB.jpg differ diff --git a/blog/images/2022-10-01_arm.png b/blog/images/2022-10-01_arm.png new file mode 100644 index 0000000..bb002be Binary files /dev/null and b/blog/images/2022-10-01_arm.png differ diff --git a/blog/images/2022-10-01_cam.png b/blog/images/2022-10-01_cam.png new file mode 100644 index 0000000..2d20498 Binary files /dev/null and b/blog/images/2022-10-01_cam.png differ diff --git a/blog/images/2022-10-01_drone.png b/blog/images/2022-10-01_drone.png new file mode 100644 index 0000000..7546648 Binary files /dev/null and b/blog/images/2022-10-01_drone.png differ diff --git a/blog/images/2022-10-01_mv_preview.mp4 b/blog/images/2022-10-01_mv_preview.mp4 new file mode 100644 index 0000000..451d79f Binary files /dev/null and b/blog/images/2022-10-01_mv_preview.mp4 differ diff --git a/blog/images/2022-12-21_ssh.png b/blog/images/2022-12-21_ssh.png new file mode 100644 index 0000000..c496d34 Binary files /dev/null and b/blog/images/2022-12-21_ssh.png differ diff --git a/blog/images/2022-12-21_zsh.png b/blog/images/2022-12-21_zsh.png new file mode 100644 index 0000000..acec442 Binary files /dev/null and b/blog/images/2022-12-21_zsh.png differ diff --git a/blog/images/banner-htmlb.png b/blog/images/banner-htmlb.png new file mode 100644 index 0000000..4d16e8b Binary files /dev/null and b/blog/images/banner-htmlb.png differ diff --git a/blog/images/banner-htmlj.png b/blog/images/banner-htmlj.png new file mode 100644 index 0000000..4af7fac Binary files /dev/null and b/blog/images/banner-htmlj.png differ diff --git a/blog/images/banner-statuscafe.png b/blog/images/banner-statuscafe.png new file mode 100644 index 0000000..c94631b Binary files /dev/null and b/blog/images/banner-statuscafe.png differ diff --git a/blog/images/neonkiosk.png b/blog/images/neonkiosk.png new file mode 100644 index 0000000..947512f Binary files /dev/null and b/blog/images/neonkiosk.png differ diff --git a/blog/index.php b/blog/index.php new file mode 100644 index 0000000..81e089b --- /dev/null +++ b/blog/index.php @@ -0,0 +1,284 @@ + + + + + Blog + + + + + + +

blog

+

inane ramblings

+ +
status $face $timeago
$content
"; + ?> + +
+

2023-01-05

+

Wow, I haven't seen you since last year! I told you I wouldn't get another post out within a week. I bought Factorio for myself for Christmas, and that was a mistake. I already have 83 hours logged in my save file, and I've probably played a bit more than that because I save scum like crazy when fighting biters.

+

In spite of this, I've actually done some stuff on the ol' website! I've got an article in the works, and I've created a page immortalizing all the funniest bullshit my friends and I have said in our discord group chat. I'm real proud of it, I wrote some PHP code to generate HTML styled like real discord messages. It's nicer presentation, easier on my server's storage space, and better for screen readers than uploading screenshots! Fair warning if you want to check it out, there's quite a high density of "sex joke". +

+
+

2022-12-21

+

Can you believe it guys? Christmas, just a week away. Christmas is in a week! Woohoo! I am so happy about this information. Christmas! Just a week away, oh wow. Can you believe it? Christmas! Just in a week! It got here so fast!

+

It Has Been Almost A Month. Whoops! Not many updates I can think of, hence the lack of entries here I guess. All my time's been taken up by procrastinating on my college work. I got meds that were supposed to help with that, but all they've accomplished so far is allowing me to procrastinate more efficiently. Maybe I need a higher dose.

+

Speaking of procrastinating efficiently, I've done some coding. I wrote a PHP script that scrapes the Firefox release notes into an RSS feed. After that I got hard into customizing Neofetch for a few days. My setup is so caked in box drawing characters and manually coded ANSI escapes as to be borderline unrecognizable, and quite possibly alive. Here, I'll subject you to it:

+
+ Click to be subjected +

Thanks. I really needed to get this out of my system.

+ The sickest damn Neofetch config you've ever seen in your life +

Admittedly, this is actually a fork of Neofetch called Hyfetch. It's functionally the same though, all it does is color the ASCII Manjaro logo with nonbinary pride flag colors. Anyway, just look at this shit. I'm gonna brag about every damn detail of it to you now. First off, those lines surrounding everything are dynamically drawn. The width of the box is dependent on the width of the top line there. All the shit underneath is dynamic too. That "playing" indicator goes away completely when nothing's playing, and as a fun little touch I made it so that separators in the title string like " - " and " | " are replaced with a line that connects up to the box. The to-do list below it isn't hard coded either. That thing pulls from a text file in my home directory and dynamically draws those lines to connect to each item, and it also disappears when there's nothing in the to-do list. I've configured zshrc to only show this when I log in via terminal emulators so it doesn't clog up my IDE terminal windows or my ssh client. Half these readouts are custom. I had to install a whole separate program (shoutout radeontop) to get the GPU load. I had to learn both sed and ANSI escape codes to get this to work. It's so packed to brimming with both I almost want to throw up looking at it, and I didn't even get most of it off Stack Overflow. I can do all this crazy crap because Neofetch's config file is literally just a shell script it runs, but that also means I had to write all that shit in bash. Let me tell you, it's a bitch and a half to get almost anything of substance done in that fuckin' mess of a language. I learned the hard way it can only do integer math on its own. Javascript's weird type coercion shit and Lua counting arrays from 1 instead of 0 is child's play compared to what I had to deal with to get my Neofetch looking all pretty. If statements in this nightmare language are fucking indecipherable. I had to search for "bash if" more than I had to search for anything related to that ANSI control code fuckery.

+ An equally sick fetch script as the first, but fully custom and running on my VPS +

I also have this. I coded it for my VPS, just because, and it's entirely custom. From scratch. This is how I learned Bash can't do floating point math. Did I need to do this? No. Was there any good reason for me to do this? Probably not. What's your point?

+
+

I also went bowling today, so that was fun. I sucked shit at it. There was pizza.

+

My headphones continue to be amazing. If any pair of headphones on planet Earth will last me ten years, I think it's this one. Knock on wood, etc.

+

According to the roughly weekly schedule I set for these things for myself, there's still one more post due this year, but let's be real here. See you next year!

+
+
+

2022-11-26

+

I finally got my ADHD meds! They seem to be working, too. Since I started taking them a couple days ago, I've noticed a pronounced drop in my general compulsion to do bad unproductive things like scroll social media for multiple hours. I spent all day today setting up a companion website for my Minecraft server, but not in a forgot-to-eat-lunch kind of way, which is doubly impressive because one of the side effects of this stuff is a reduced appetite.

+

This past week in class has been really easy - the provided study plan provisioned a whole week for an assignment that consisted of installing a C++ compiler and debugging a simple program, and I got that done in a couple of hours, even including the snag I hit where they expected me to use Windows because of course they fucking did. I spent the rest of the week doing nothing because that's what was on the schedule. I could have worked ahead, but fuck that.

+

The headphones that I got literally the day I posted the last entry have proven to be very nice. Not only are they built like a tank, but I've learned it's possible to replace just about every part of them. I might actually manage to keep these until the drivers fail! How cool would that be?

+

I need to get some more exercise. Can one of you remind me to go on a walk or something tomorrow?

+
+
+

2022-11-17

+

My new headphones are finally here! Thus far, they certainly seem to live up to the hype. I hear a lot of people in the audiophile space talking about "soundstage", and while this certainly doesn't have Dolby Atmos™ levels of it, I kind of see what they mean now. It's like the sounds are coming from outside of my ears! Naturally, the quality of those sounds is fantastic as well. Plus, they're really comfortable, built well, and the custom braided cable that the modding company provided is superb. Okay, enough gushing. Maybe I'll write a review of these once I've gotten some more use out of them.

+

I've created a service on here! It's a little utility that takes an RSS feed and filters it based on the contents of the entries. I created it because there are a couple Tumblr blogs I subscribe to the RSS feeds for and I wanted to filter them to have just the posts with images. You can feel free to use it if you want, but I encourage you to download the source code and self-host it as well!

+

The computer science class I'm taking has been going well. So far it's mostly been the basics - going over ideas like loops and binary numbers and shit. The chapter of the textbook I read today explained AND gates to me. My years of being a Redstone Knower in Minecraft have been building up to this! Not to imply I think this is dumb or pointless or anything - this is clearly building up to some much more involved shit and I'm waiting with bated breath for the other shoe to drop difficulty-wise, but I'm taking it as a good sign that this has been so easy thus far.

+

Now for some major tonal whiplash: I'm now fairly confident that I'm some degree of nonbinary. You may have guessed this if you've been poking around my website of late, or just reading this journal, but I was reluctant to say so explicitly in case I ended up changing my mind. I don't want to get into the details, because I don't really know them either, but I'm pretty sure at this point that "man" doesn't nearly cover it. As for pronouns, anything works! Fuck around! This is all uncharted territory for me, so if some gendered term or other makes me uncomfortable (or doesn't), I'd like to find out now lest I come out to my family and then have to amend that shit later.

+

I think that about covers it for now. I'm gonna go listen to some more of my favorite music with these shiny new headphones, or maybe just go the hell to bed already.

+
+
+

2022-11-06

+

I've started the first of my classes! So far it's been mostly reading the textbook and making tedious discussion posts about it in the class forum. I understand on some level why they make us do it, but that doesn't make it not annoying.

+

All this stuff going on hasn't left me with a ton of time or energy to update my website. One course isn't exactly a full load, but between doing the course work, procrastinating on the course work, working on this music video, procrastinating on that, and my utterly wrecked sleep schedule, there just doesn't seem to be enough hours in the day.

+

Speaking of the music video, here's some more renders of it I've made if you're interested: +

+ Renders + + Looks so much better in Cycles, doesn't it? I lament the destructive effects of Youtube compression, however. + + This second one was rendered in a secret third thing, Workbench, a barebones rendering engine with basically no graphical features at all that I used here just to see how some timings would look in the final product. +
+

+

I've also finally made some progress towards getting some kind of ADHD medication, so hopefully that will help somewhat.

+
+
+

2022-10-28

+

My headphones broke a couple days ago. The flimsy swivel joint on one of the ear cups snapped. Lest you suffer the same fate, this was the Audio-Technica ATH-M40x. The joints on the M50x look much more robust, but I've elected not to chance it. I've chosen as their replacement a pair of headphones that reportedly have better sound and vastly superior build quality, the Beyerdynamic DT 770 Pro. I wasn't thrilled about the lack of a removable cable, though, so I elected to get mine through an English modding company that I've heard good things about. I'll post an update when they get here.

+

I've added some automated spookification to my website just in time for Halloween! I used some basic server-side scripting to add some simple themed styling to the webpages and swap out the pool of landing page captions during October. I also have a link that automatically serves an appropriate seasonal isopod image. I also set it up with a little party hat on my birthday :)

+

My classes start in a few days. I am filled with Dread and Worry. It'll probably be fine.

+
+
+

2022-10-19

+

It's been a minute. Whoops. I had informally planned to update this thing every week or so. I guess this time falls more on the "or so" end of the spectrum. Anyway, I've made significant progress on the music video. The section I posted a test render of a couple entries ago is finished now! I'm proud of how it turned out and I'm really excited for the next part.

+

I decided to render the animation in Cycles instead of Eevee because, as you might be able to tell from what I've shown, it looks pretty bad in Eevee. I'd been having some stability problems when rendering in Cycles where my system would lock up and crash at random, but I've figured out how to solve that. First, I had Cycles set to use both my dedicated GPU and my CPU's integrated graphics, which was apparently causing issues. The integrated GPU was barely contributing anyway, and turning it off solved 90% of my problems. The other 10% were solved by not doing GPU-intensive stuff like hanging out in a video call with four people during the render.

+

Basically my dedicated GPU has to be the only thing working on the render and the render has to be the only thing of note it's doing. This shit is why I want that second GPU as a coprocessor. At least my computer is usable on a basic level during renders now. Before the iGPU rendering was eating up all my CPU time and causing the rest of my system to grind to a halt. I'm thinking, if I go through with this second GPU business, that I'll get a cheap 3050 or 3060 once the low end 40-series cards come out. GPU prices are approaching sane again, so my main concern is whether my 650 watt power supply can handle it. It's a quality unit and most of the cards I've looked at still leave my total system power at under 600 watts, so I expect it should be fine, but that's still cutting a little closer than I'd like.

+

I had to add bot protection to my guestbook a couple days ago. Adding a basic test wasn't hard, but I was hoping I wouldn't have to do it. I checked my guestbook that day to find 67 new entries of obvious spam. I do think it was funny that the spam entries were full of BBCode. Not sure why they expected a majority of their targets to support that in the proprietary corporate hellscape that is the modern internet.

+

I tried live streaming a couple times recently. I played Noita. To quote one of the webcomics of all time, I am NOT VERY GOOD AT IT. Both streaming and Noita.

+

In other news, I've realized my neighborhood resembles an [FUNNY MEME] on the street map. I'm not gonna show a picture for obvious reasons, so you'll just have to take my word for it that it's very funny.

+
+
+

2022-10-06

+

Pretty cool day today. A while back I ordered an internal USB card for my computer that purports to allow remote control of the power and reset buttons, and it arrived today. I had some problems initially upon installing it where it was behaving in a weird and unpredictable way, but it turns out I had overtightened the screw on the back of the remote while installing the battery, which had caused the reset button to be held down, and loosening it fixed everything.

+

While looking into the new Intel GPUs that are releasing soon, I incidentally learned that my AMD GPU is actually pretty terrible for rendering in Blender relative to basically everything else. Could have done with that information several months ago. Maybe I'll look into getting a cheap Nvidia card for only rendering once the 40-series comes out and everything else (hopefully) drops in price. At least it's good for gaming.

+
+
+

2022-10-01

+

Why is it October? That's ridiculous. It's not time for October yet.

+

I've been working on that music video I mentioned in... uh... July. I'd be lying if I said I thought I was making good progress, but I'm certainly making progress. Here's some pictures:

+
+ Pictures
+ A low-poly 3D render of a robotic arm mounted on a vertical rail + A low-poly 3D render of a quadcopter-style drone carrying a cube with "CRATE" crudely scrawled on the front + A low-poly 3D render of a wall-mounted camera with a glowing green light below the lens + And a partial test render: + +
+

I've registered for an online college computer science program. I'm planning to start with one course, then see if I want to keep going and do a 1-year diploma, then after that see if I want to keep going some more and do a whole degree. Thanking my lucky stars I already have a way to pay for it lined up. God damn is this shit expensive.

+
+
+

2022-09-19

+

Publishing a new blog post right now. It's a special celebratory post for the second anniversary of my other website. The anniversary was actually yesterday, but the forces of procrastination were simply too powerful.

+

I bought ULTRAKILL a few days ago and I've been playing the absolute shit out of it. Like, probably too much. It's been eight days and I've played for almost 50 hours and P-ranked almost all of Act 1. I'm not normal about this videogame. You should play it right now.

+

I've been thinking about ways to make my computer's RGB lighting behave the way I want. Right now it just stays on whenever the computer has power unless I shut it off, which I've configured systemd to do for me, but I'd prefer it to behave more like an extension of my system's power LED, turning off automatically when the system is off or in sleep mode. I really hope there's some easy way to do it in software that I've missed and I don't have to figure out how to rig up my own janky solution with relays or some crap. That does sound fun though.

+
+
+

2022-09-13

+

Happy birthday to me! I turned 20 today. I had a bunch of stuff to do today for unrelated reasons. I am very tired.

+
+
+

2022-09-11

+

Another entry in the overclocking saga. I've pushed my CPU another half a GHz with no problems, but more importantly, I discovered what was actually wrong with my RAM! I thought it was just partially incompatible with my CPU, but it turns out my motherboard BIOS was almost two years out of date, and updating it fixed the problem! I've seen a 2-second improvement in my render times in the Blender BMW CPU benchmark.

+
+
+

2022-09-05

+

Overclocked my CPU today! Admittedly, I pretty much blindly followed a guide for my specific CPU on Youtube. But it seems to have worked! It didn't change my performance in Blender CPU rendering even slightly, but it runs somewhat hotter now and my performance in Minecraft has noticeably improved. I wonder if I could push it further.

+
+
+

2022-08-30

+

Absolute linear time moment right now. It's almost September, and my birthday is in September, which means I'm almost In My 20s™, and none of that is fucking with me at all.

+

I drove some places today. I went downtown to attend some small event, but I was the only person who showed. Then I went to the mall to eat at the New York Fries there (Their "Bacon Double Cheese Poutine" doesn't even have gravy! Outrageous! Still good tho), then I went to go buy some bus tickets. I can drive now, but sometimes other people in the house need the car.

+

Each stop required that I navigate a parking lot, plus an extra bonus one to turn around in because I fucked up and exited one of them at a spot where I could only turn right, but needed to go left. For those keeping score at home, that's four total parking lots in one day. I also slipped and fell in some mud in one of them. Based on today's experiences, I can only conclude that parking lots are evil. They are the worst places to navigate both on foot and in a car. The more I use this thing, the more I feel like I shouldn't have to. At least the fries were good.

+

Still figuring out the whole "gender" business. No major progress on that front as yet.

+

Been thinking about home server stuff a lot. I kind of want to try to convert my laptop into some kind of fucked up chimera of a storage server. Disable the chassis intrusion detector, mount the mainboard in a desktop/server case somehow, massively upgrade the storage, maybe try and source one of those sketchy NVMe to SATA HBAs. Obviously couldn't power the drives off the laptop though. Anyway, could be fun if I don't blow everything up in the process.

+

I also built a guestbook for my website the other day. I learned a lot of PHP doing that. I do want to deprecate the cbox channel now, because it sees basically no use and I'd like to cut down on JavaScript.

+

I think these posts might be getting a little too long.

+
+
+

2022-08-24

+

I've been having fun with various networking nonsense of late. To start, I finally got that SearXNG instance up and running. The issue originally was that I tried to run it in a Docker container, but it was listening on the HTTP ports so I couldn't run my website at the same time. Then I tried installing it normally, but something broke and it didn't want to work. I guess the installation instructions got updated recently, because I followed the guide again and it worked this time. No more search engine privacy drama for me!

+

After that I decided I wanted to start self-hosting a Minecraft server I run, at the time hosted on a Shockbyte server I was renting. I had an old gaming laptop laying around collecting dust that was more than up to the task, the only problem was my home network. See, I live with my parents, and naturally they're in charge of the home network setup. I'm not convinced they'd be willing to let me mess around willy-nilly with the router settings. And even if I could, it's behind some weird mesh WiFi network with its OWN management interface I don't know the login to.

+

Luckily, there was a way I could circumvent all this mess entirely: WireGuard. If I could connect, say, an external VPS to my laptop with a VPN, I could forward Minecraft traffic to it without having to care in the slightest about my home network! So naturally I didn't hesitate to install WireGuard and look up a guide on how to configure it. It was easier than I expected, funny enough. The main problem I ran into was that WireGuard is configured (sanely) by default to close the connection if the client doesn't send any packets for a bit, so I had to dig around in the config files to fix that if I wanted it accessible from the internet.

+

It worked great! As a bonus, my laptop is still accessible via LAN, so I can now connect to the Minecraft server directly from across my desk for ping times in the same order of magnitude as my monitors. With all this stuff running on my VPS now, I needed to upgrade from the $5 base plan. Fortunately, I now had a freshly-made-redundant Minecraft server rental I could cancel to free up the necessary funds.

+

Finally, I've installed Termux on my phone. I can now SSH into my computer to save Youtube videos with yt-dlp from anywhere in the house! I was worryingly enthused about that when I got it set up. I think I have problems.

+
+
+

2022-08-17

+

I've had my driver's license for a few days now. I've even driven a couple of places... independently! It's proving to be significantly less terrifying than I was expecting, they said, jinxing themself.

+

Yeah, about that bit at the end there. The short version is, I'm no longer certain of my gender. You'd know this already if you've been poking around my site of late; I've taken quite a while to actually properly write about it. I guess I just felt weird about making it "official" by discussing it, so to speak. Anyway, I've started using he/they as opposed to the default he/him in spaces where I feel comfortable doing so, like here. Just to try it out. Seeing how I like it. Gathering data, et cetera. We'll see how it works out. Gender is hard.

+

Oh, and the car's fine, by the way. We think there was a broken seal somewhere in the power steeing system. The repair was expensive.

+
+

2022-08-12

+

It's been an exciting 24 hours. I'm actually just about over this cold, it seems, for one. Also, I took my driver's exam today! I passed with 60 out of a possible 75 demerit points. Not phenomenal, but good enough! I am now officially a licensed driver! I smelled steering fluid during the parking section of the test though, so we took the family car I took it in to a mechanic immediately after. Fun stuff. In nicer news, we celebrated with ice cream cake afterwards!

+

I also set up a fediverse instance on my server today. Since quitting twitter, I've been sorely missing a place to post my banger tweets. My account is @will@social.isopod.cool if you're interested. I went with Pleroma because I'd heard Mastodon might be too heavy for my weak little VPS. I'm glad I did, because even Pleroma is seemingly the most resource-hungry thing on my server thus far. It uses almost as much RAM as everything else (read: my website and an XMPP server I don't use because I can't make file sharing work) put together.

+

The thing was surprisingly easy to set up. This coming from someone who unironically calls Minecraft redstone stuff "simple", but still. I followed this guide and the process was shockingly smooth and painless, relatively speaking. Not like the time I tried to run a SearX instance. That sucked.

+
+
+

2022-08-08

+

I've just about gotten over this cold. I've had nothing but a mild cough and runny nose for days now.

+

I took my last of several driving lessons today. I've got the exam to get my license scheduled in a few days and by the looks of it, there's a non-zero chance I'll pass! Very excited to be able to run errands for my parents.

+
+
+

2022-08-02

+

Small update to say I've tested negative for covid! What a goddamn relief. At the risk of tempting fate, I seem to be getting better, too. Had to cancel an event I was going to today because I'm sick, though.

+

Also, according to the weather forecast, temperatures are supposed to be, like, sane for at least the next week! Hell yeah!

+
+
+

2022-08-01

+

In an entry from 11 days ago I said I felt like it was supposed to still be June. It has since been at least a month. Somehow, it's also only been like a day since I updated this thing. Also somehow, it definitely shouldn't be August yet.

+

I'm diseased! Can't say whether it's the same thing everyone else had a couple entries back. Still just really hoping it isn't covid. It's been pretty mild so far, fortunately (knock on wood 🤜🪵).

+

I've moved my website onto a VPS I'm renting. No real problem with Neocities, I just really wanted to experiment with server-side stuff. No longer do you need to have Javascript enabled to see the silly little randomized subheader on my landing page. I intend to get a guestbook set up as well, now that I don't need to rely on a third party for it.

+

I've also moved domains. It's isopod.cool now! The old link still works, though. My website is linked in a few places now and I didn't want to break anything. That's another major reason I had to leave Neocities. I could point two domains to my Neocities site, but only one of them would have been able to have SSL, and that is simply not acceptable.

+
+
+

2022-07-26

+

My parents replaced the modem in the house today. The one we had was apparently really old and grandfathered in from our previous internet plan, and it turns out it was bottlenecking the bandwith to the entire house by something like TENFOLD. We went from 30Mb down to 300. This means we've been getting 10% of our (their) money's worth on broadband for YEARS. I am both upset and excited about this development.

+

My parents have also convinced me to watch The Office with them. We're three episodes in and I've had enough second-hand embarrassment for a whole month.

+
+
+

2022-07-25

+

I haven't gotten sick yet, so that's good.

+

I've been trying to distance myself from larger social medias lately. I pretty much went cold turkey on Twitter a while back, and I've been cutting down on the time I spend on Tumblr recently as well. I may write a blog post about this soon. I also joined a small forum recently. So far it's much more pleasant than any social media I've used. On the off-chance you found my site from there, hi!

+

I've decided to learn Rust. It's certainly different. Still don't know how to declare a string.

+
+
+

2022-07-22

+

Today I remembered this old XFCE theming website I used to frequent (and even contribute to!) back when I was very young and running Linux on a Chromebook. I went there and it's since been brutally KILLED and replaced with a Pling site... What has this world come to... R.I.P. xfce-look.org.

+

Everybody in my house but me seems to be sick with... something. Here's hoping it's not another round of covid. My mom is confident that it isn't, but I'm not so sure. 3 vaccines weren't enough to stop it the first time and apparently it can seriously damage your immune system - If I get it again, it'll probably be even worse.

+

In other news, I got lunch from my favourite sandwich joint today. Wore a mask, of course. We should never have stopped wearing those. Anyway, the sandwich was good. I got my usual order: ham + turkey + salami with smoked cheddar cheese and mayo + mustard and cucumbers on a kaiser bun (they've been out of my preferred dutch crunch bread for like the past few months). Of everything in my city, that place will be the thing I miss the most when we move by a good long way.

+
+
+

2022-07-21

+

It feels like it shouldn't be this late in the month. Isn't it supposed to still be June?

+

Anyway, I'm just about done a song I've been working on! Love it when that happens. I should do that more often. I've got some fun ideas for the music video I wanna make for it, too.

+
+
+

2022-07-18

+

Making the page I mentioned in the previous entry is taking longer than anticipated. I've been really tired recently for some reason. Part of me is blaming it on the heat, but it's possible that the complete degradation of my sleep schedule of late could be playing a part. Y'know, being unemployed and all.

+

I had a dream last night where I got a really good deal on a used graphics card. I don't know what that says about me.

+
+
+

2022-07-16

+

I hate summer. It's too hot. It's been in the high 20's to low 30's Celsius almost every day for the past few weeks and I'm sick of it!!! I'm Canadian, I wasn't built for this!! One benefit, though, is the vastly increased volume of cool bugs.

+

I'm working on a page for my website about software I use. Well, really I've been scrolling Tumblr with the blank HTML document open on the other monitor. But you get the picture.

+

My home internet connection has been on the fritz today. I've been using my phone's mobile hotspot to connect to the internet on my computer. I chewed through something like a fifth of my monthly data cap doing that.

+
+
+

2022-07-15

+

Had a bit of a scare this morning when I went to turn on my computer and the POST kept failing at the graphics card I overpaid for in March. Fortunately I re-seated it and everything was fine. In other news, today I learned that one of Ryzen's many idiosyncracies is that it will turbo super hard under almost any load at all if it thinks it can get away with it, so my CPU temps can skyrocket like fifteen degrees from as little as saving this document in VSCode.

+
+
+

2022-07-14

+

Instead of writing a new blog post, I have added an HTML Journal to my site. This will be a place for posts that are too short to warrant a blog post, but too long to be a status. For example:

+

I installed some RGB strips in my computer recently! Well, one RGB strip. I bought two, but they were both a meter long and I seem to have underestimated just how long that is. When I built the computer, I figured I didn't need RGB, so I went out of my way a little to avoid it and then I realized that the glass panel on my case was tinted so I couldn't even see in. Hence the RGB strip, because I didn't want to spend money replacing perfectly good parts with ones that light up. I've got the strip crammed in a gap next to the wall of the case where it's blocked from direct view so that it just illuminates the inside and doesn't shine in my face. Here's a picture:

+ +

It's not exactly radiant compared to some other peoples' setups, but I like it. It's subtler.

+

Cool, right? I've retrofitted the blog post list to be compliant with HTML Journal's fresh new sister spec, HTML Blog, as well, mainly for the automatic feed generation it offers.

+
+
+ + + + +
+
+ + + diff --git a/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/bg.png b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/bg.png new file mode 100644 index 0000000..eacda1a Binary files /dev/null and b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/bg.png differ diff --git a/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.html b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.html new file mode 100644 index 0000000..690b435 --- /dev/null +++ b/blog/posts/deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/index.html @@ -0,0 +1,129 @@ + + + + + + deeptwisty.com 2nd anniversary - A History of This Bullshit + + + + + +

niceoblog

+

deeptwisty.com 2nd anniversary:
A History of This Bullshit

+ +

Yesterday, September 18th, 2022, was the second anniversary of the creation of my first website on Neocities, the site that is now known as deeptwisty.com. I intended to publish this then, but life got in the way, by which I mean I wrote 90% of it and then procrastinated for two weeks on the last couple paragraphs. I figured that to commemorate the occasion I would finally dispense with the half-assed abridged history of the place on the about page or wherever and consolidate a complete history of my Personal Home Pages in one convenient location, that being this post.

+

Tumblr

+

My first proper social media was Tumblr. Well, the first social media site I joined was Pinterest, but that doesn't count. Anyway, Tumblr was my main social media and the center of my Online Presence™ for several years. I would pour hours into tweaking the custom theming on my blog to be just right, and I often had some sort of bio on a custom page, which is a thing Tumblr lets you do. I linked to all my other online profiles from my Tumblr page, and would prioritize linking back to it from them. This caused problems, as I was and still am the type of Tumblr user to change their username on impulse, and it was terribly inconvenient having to go through all my other accounts and change that link whenever I did (I've got it set up as a subdomain of my website now, so that should never be a problem again). Eventually, though, another service would crop up that everyone seemed to be using, and that presented me with a better way:

+

Carrd

+

I still use Tumblr, just not as the hub for my entire online presence. I maintain that it is still far and away the best centralized social media site. Anyway, a Carrd page became the central hub which linked to all my online profiles and which all my online profiles could link back to. Finally, I only had to update my frequently changing Tumblr link in one place. For the most part.

+

I perceived a certain stigma (at least on Tumblr) around having a Carrd page, and the sorts of people who made one. The stereotype was that you would have overly exhaustive BYF (Before You Follow) and DNI (Do Not Interact) lists full of sometimes outlandish criteria, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers (!) and probably not be the most pleasant person to interact with. I like to think I bucked that trend. My Carrd pages were generally very simple: a profile picture, a short bio (some shit like "Will | 20 | 🇨🇦 | real life isopod"), and links to my socials. That was all. I remember adding the obligatory long-form bio and DNI list at some point, but those didn't last long.

+

I believe it was around this time when the alias "deep twisty" came into being. I was just starting out making music at this point, posting crummy songs to SoundCloud that I'd made in an online editor called EarSketch that had you use Python to arrange pre-made loops and samples on a timeline. That shit was wack, yo, but that's beside the point. I was looking for an alias to release my music under, because I was intent on making more and my actual name wasn't gonna cut it.

+

I was quite into Subnautica around this time (I promise this is relevant) and its sequel, Subnautica: Below Zero, was in the early stages of early access around this time, like still working on early-game areas early, and I was following it closely. The devs had a twitter account that posted all the git commits for the game, and a couple of them referred to a biome they were working on, the Deep Twisty Bridges, as just "deep twisty". That is the origin of that name. I don't know why I felt compelled to base my brand off that, but now I'm committed. I get self-conscious about it sometimes, but honestly, I've seen worse. Not that I'm judging.

+

Anyway, I made a separate Carrd as a hub for this new "deep twisty" persona (I keep it separate from everything else mainly so I can show it to family without them seeing all of... this. Not that I have yet...). That worked fine until I wanted to start embedding my latest YouTube upload on the Carrd page, something Carrd locks behind a paywall. It was at this precise moment I remembered I know how to code and resolved to make the jump to a platform that lets you write your own HTML from scratch, in my case, this being

+

NeoCities

+

My first Neocities sites were simple affairs, basic little pages with little more to them than the Carrd sites they had replaced, albeit with some of the things Carrd would have made me pay to add, like that YouTube embed. You can still see the original version of what is now this site here, though the original version of deeptwisty.com was unfortunately lost. It was nothing special, though. It had a similar aesthetic to its replacement, and it was pretty similarly laid out to this here page, even with the same background, just with WAY less text, and no cool isopod.

+

I've seen some people in this here "small web" community getting mad at people who use Neocities this way, to which I say: shut the fuck up! Everyone has to start somewhere, and messing around on a simple page like that could easily be a gateway drug into making something much bigger, like it was for me. Hearing sentiments like this is just going to discourage people. Besides, it's their website. They're not intruding on your special cool kids club by using a free service to do the thing that it's for.

+

It was also during this time when I bought the domain deeptwisty.com. I had to pay Neocities to use it, but I was more than happy to support the cause anyway. I didn't stricly need the domain, but boy was it cool to have my very own Dot Com. It just sounds so professional. deep twisty Dot Com.

+

The deep twisty site tended to take precedence over this here personal one for a while; the personal site was relegated to a subdirectory or subdomain like deeptwisty.com/me or me.deeptwisty.com. In fact, the transition from the former to the latter is when the original deeptwisty.com was tragically lost. I was copying over the contents of deeptwisty.com/me to its own fresh new dedicated Neocities profile and I accidentally uploaded the files to the wrong site, overwriting a large portion of the main deeptwisty.com with no way to recover it. I spent a couple days rebuilding it into roughly what you see at that domain now, and when I was done I was having enough fun with it that I wanted to keep going and decided to overhaul my other site too, and what resulted was this.

+

For this new version of the site, I decided I wanted to be able to actually add content to it, whereas the old site hadn't really been designed in a way that was conducive to that. I decided to do this in the most JS-reliant way possible. I had one main page with the navigation and layout, and the navigation worked by using a URL querystring to tell the page which content to load. It was pretty fuckin' neat, but I would eventually realize I wasn't a fan of how dependent it was on Javascript. My favorite feature of this revision is the theme picker, which swapped out different stylesheets and set a cookie to remember which one you prefer. The main problem with this was that I designed it so the themes could change basically everything bar the fudamentals of the layout, and it became a huge pain in the ass to add both new pages and new themes while ensuring everything stayed compatible. It was really cool though.

+

To be completely honest, I took rather a lot of inspiration for this revision from this site here, which is to say I basically made a worse version of it and went from there. You can still see some of that inspiration in v3, with the giant header text and centered single-column layout.

+

This revision was, as the kids say, Real Cool™, but the aforementioned problems led me to scrap it after only about 2 months, which brings us here:

+

v3 and Self-Hosting

+

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 here. 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.

+

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 (?) so I went with DigitalOcean instead.

+

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 more intensive stuff 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.

+

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.

+ + cd /home/willem/cumulus\ server/www/niceopod/blog/posts/
+ sftp root@isopod.cool:/var/www/niceopod/blog/posts/
+ put -r deeptwistycom_2nd_anniversary_-_a_history_of_this_bullshit/ +
+
+ + + \ No newline at end of file diff --git a/blog/posts/guide_self_host_safely_with_wireguard/index.html b/blog/posts/guide_self_host_safely_with_wireguard/index.html new file mode 100644 index 0000000..0ab10d7 --- /dev/null +++ b/blog/posts/guide_self_host_safely_with_wireguard/index.html @@ -0,0 +1,88 @@ + + + + + Guide - Self-Host Safely with WireGuard + + + + +

guide:

+

Self-Host Safely with WireGuard

+ +
+

Preamble

Click to show
+

If you're like me, you don't like relying on other people for your online services, either because you don't want to give out your data unnecessarily, or just because you don't want to shell out for subscription services. You might be willing to host such services yourself, and you might even have access to spare hardware to do it on.

+

One critical issue arises, however: your home network. Maybe you're behind some weird impenetrable NAT setup you don't control, or maybe your IP address is dynamic and changes regularly, or maybe you just don't want to expose your home IP to the world. What then?

+

Luckily for us, there's a way to circumvent all that nonsense. A custom VPN like the one we'll be setting up today, hosted on an external server like a VPS, can punch through any weird home internet configuration while also swapping out your home IP address for a static one that you can feel safe exposing to the world.

+

That said, this isn't the be-all end-all for security. I don't claim to know everything about that, and there's probably something you're missing in that regard if you stop here. This is intended as a basic guide for exposing a machine in your home to the internet without messing with your home network or exposing your home IP address.

+

This guide borrows heavily from the landchad.net WireGuard guide, but while their one is geared toward running a VPN for your personal machine (complete with a tutorial on setting up a WebSocket tunnel), this one will focus specifically on forwarding incoming traffic from one server to another over the internet.

+

There are some reasons you'd want to do this instead of just hosting everything on the same VPS - in my case, I wanted to host a Minecraft server, and I had a spare computer at home that was better up to the task than anything for rent in my price range. WireGuard can run on pretty much anything; the cheapest tier on Vultr, DigialOcean or Linode will be more than sufficient.

+

Now on to the good stuff

+
+

This guide will take you through the process of setting up a WireGuard VPN connection between two machines running Linux, and configuring it to forward incoming web traffic from one to the other. It assumes you already have two servers set up running Linux (Ubuntu Server in my case, but any distro should suffice) with UFW configured and enabled, and know what ports you'll need.

+

The machine running your WireGuard server should be an external one exposed to the internet, such as a VPS, for maximum effect. For our purposes, this machine will be the "server", and the one you're forwarding traffic to will be the "client".

+

We'll be configuring WireGuard with a 172.16.0.1/24 virtual network and forwarding port 25565, the default for Minecraft, but any private IP range and port will do.

+

Installation

+

First, we'll install WireGuard on both machines:

+ $ apt install wireguard wireguard-tools +

And allow the port it uses in UFW:

+ $ ufw allow 51820 +

On the server

+

Uncomment this line in /etc/sysctl.d/99-sysctl.conf to enable IPv4 forwarding:

+ $ net.ipv4.ip_forward=1 +

And apply the change with this command:

+ $ sysctl -w net.ipv4.ip_forward=1 +

On the client

+

We'll need to generate a public/private key pair for each machine on our VPN network. Do that now for our client like so:

+ $ sudo bash -c "umask 077 ; wg genkey > /etc/wireguard/client_priv.key"
$ sudo bash -c "wg pubkey < /etc/wireguard/client_priv.key > /etc/wireguard/client_pub.key"
+

This generates a private key for WireGuard and then generates a corresponding public key based on it. Our client's keys can now be found in /etc/wireguard/client_priv.key and /etc/wireguard/client_pub.key for our private and public keys respectively.

+

Back to the server

+

Now do the same for the server:

+ $ umask 077 ; wg genkey > /etc/wireguard/server_priv.key
$ wg pubkey < /etc/wireguard/server_priv.key > /etc/wireguard/server_pub.key
+

Our server's keys can now be found in /etc/wireguard/server_priv.key and /etc/wireguard/server_pub.key for our private and public keys respectively.

+

Now, create a WireGuard configuration file at /etc/wireguard/wg0.conf. wg0 will be the name of our network interface, you can name yours something else if you'd like.

+ [Interface]
Address = 172.16.0.1/24
ListenPort = 51820
PrivateKey =   #(server's private key goes here)
# Firewall rules
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Client #1 details
PublicKey =   #(client's public key goes here)
# Traffic to route to this client
AllowedIPs = 172.16.0.2/32
+

Paste the server's private key after PrivateKey = in [Interface] and the client's public key after PublicKey = in [Peer].

+

With this setup, our server will use the virtual local IP 172.16.0.1 and our client will use the IP 172.16.0.2. You can also add up to 254 more clients by duplicating the [Peer] block and and updating it with the respective public key and a new local IP address.

+

Now, enable and start the WireGuard service with

+ $ systemctl enable --now wg-quick@wg0.service +

wg0 being what we called our network interface before.

+

Back to the client

+

Create a WireGuard configuration file for our client at /etc/wireguard/myvpn.conf (you can replace myvpn with a different name if you so choose):

+ [Interface]
Address = 172.16.0.2/24
PrivateKey =   #(client's private key goes here)
# Optionally, set to your desired DNS server
# DNS = 9.9.9.9

[Peer]
PublicKey =   #(server's public key goes here)
# Endpoint (server) can be a domain name or IP address
Endpoint = (server's public IP goes here):51820
# Traffic to route to server
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
+

Make sure you use your server's public IP here. The PersistentKeepalive option is there because WireGuard closes the connection by default if no data comes through for a while and will only reopen it for the client, so here we send a KeepAlive packet every 25 seconds to prevent that in order to keep our client accessible from the internet.

+

Now we start WireGuard:

+ $ sudo wg-quick up myvpn +

myvpn being whatever you called your vpn before. Shut WireGuard down by typing down instead of up here. At this point, you should be able to ping the server (172.16.0.1) or any URL from the client and get a response.

+

Port Forwarding

+

Now we'll configure the firewall and port forwarding. This bit assumes you already have UFW configured and enabled. You can set it up now if necessary.

+

On the server

+

Allow forwarding for the ports you need:

+ $ ufw route allow proto tcp to 172.16.0.2 port 25565 +

25565 being your relevant port. Repeat this command as necessary.

+

Now we need to configure iptables. We can do this through UFW by adding the following onto the very end of the file /etc/ufw⁠/before.rules:

+ *nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 25565 -j DNAT --to-destination 172.16.0.2
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
+

Where 25565 is, again, your relevant port. Copy the -A PREROUTING line for every port you need.

+

Now restart UFW:

+ $ ufw reload +

On the client

+

Allow the relevant ports and restart UFW:

+ $ ufw allow 51820
$ ufw allow 25565
$ ufw reload
+

And you're done! At this point, your client should be accessible from the IP address of your server on the ports you forwarded.

+ + diff --git a/blog/posts/guide_self_host_safely_with_wireguard/wireguard_logo.png b/blog/posts/guide_self_host_safely_with_wireguard/wireguard_logo.png new file mode 100644 index 0000000..30d8f92 Binary files /dev/null and b/blog/posts/guide_self_host_safely_with_wireguard/wireguard_logo.png differ diff --git a/blog/posts/guide_things_i_keep_having_to_google/index.html b/blog/posts/guide_things_i_keep_having_to_google/index.html new file mode 100644 index 0000000..cecf425 --- /dev/null +++ b/blog/posts/guide_things_i_keep_having_to_google/index.html @@ -0,0 +1,70 @@ + + + + + Guide - Things I Keep Having to Google + + + + +

guide:

+

Things I Keep Having to Google

+ +

This isn't really a guide to anything in particular, I just wanted an easily accessible reference for all the things I'm sick of wading through google results for, or otherwise seem to need help remembering. I've put it here in case someone else might find this helpful. I'll likely be adding to this as I find myself repeatedly googling things.

+

Binding things to just the Super key in KDE

+
    +
  1. Bind it to some other keyboard shortcut using KDE's typical GUI methods. Any shortcut will do.
  2. +
  3. Find the entry for it in ~/.config/khotkeysrc. There should be a line that looks like: Uuid={77575b17-36d6-4b4e-b01f-2f1156e38583}. Copy the contents of that line, specifically everything I have underlined there.
  4. +
  5. Run the following commands:
  6. +
+ $ kwriteconfig5 --file ~/.config/kwinrc --group ModifierOnlyShortcuts --key Meta "org.kde.kglobalaccel,/component/khotkeys,org.kde.kglobalaccel.Component,invokeShortcut,<YOUR UUID HERE>"
$ qdbus org.kde.KWin /KWin reconfigure
+

Linux command line/Bash stuff

+ + + + + + + + + + + + + + + + + + + + + + + + +

pipeline

command | command2uses the output of one command as the input to the next
command > filesaves the output of a command to a file
command < fileuses a file as the input to a command
command < fileA > fileBwill therefore run command with the contents of fileA as the input, and save the output to fileB
command <<< "string or $variable"will use the string or variable as the input to a command, the same as  < file

variables

variable=valueassigns a variable
$variablereferences it
$(command)lets you treat the output of a command like a variable reference
$((number+variable))does the same thing for integer math expressions.
$(( $(command) ))
$(( variable ))
This can also just convert strings into integers.
"te$(command)xt"
"as$((math))df"
Both can be inserted into strings.
"some $variable text"
"more${variable}text"
Both of these are valid ways to insert a variable into a string.

grep

-vinverts it, so matches are excluded
-E "/regex/"lets you use regex

cut

-d 'string'determines the delimiter string
-f nspecifies a field to output, delimited by -d
sed 's/ */ /g' | cut -d ' 'Piping your thing through this helps with parsing a lot of Linux commands that output tabular data

xrandr

xrandr --output <display name> --brightness <brightness>Janky software-side display brightness setting
+

HTML/CSS stuff

+

Force a <td> element not to wrap by adding the nowrap attribute to it.

+ + diff --git a/chromealert.php b/chromealert.php new file mode 100644 index 0000000..267564b --- /dev/null +++ b/chromealert.php @@ -0,0 +1,21 @@ +#cacb { margin-right: 0.7rem; padding: 0; border: none; background: none; font-size: 0; display: flex; justify-content: center; align-items: center; } #cacb:hover { cursor: pointer; } #chromealert { display: none; position: absolute; top: 1rem; left: 50%; transform: translateX(-50%); background-color: #ffcccc; box-shadow: 3px 3px 3px black; padding: .7rem; border-radius: .7rem; text-shadow: none; color: black; } #cadc:checked + #chromealert { display: flex; } #cadc { display: none; } #chromealert a { color: #df1955; }
It seems you're using a browser based on Google Chrome. Chrome itself is effectively spyware, but even if you're using something else Google still controls the engine and there are various compelling reasons to avoid that. I recommend switching to Firefox.
Do not see this again (sets a cookie)
"; +} +?> \ No newline at end of file diff --git a/deeptwisty.png b/deeptwisty.png new file mode 100644 index 0000000..31c1ad8 Binary files /dev/null and b/deeptwisty.png differ diff --git a/desktop.css b/desktop.css new file mode 100644 index 0000000..9013f1a --- /dev/null +++ b/desktop.css @@ -0,0 +1,155 @@ +:root { + --stdfont: mono, monospace; + --windowcountx: 3; + --windowgap: 1.4rem; + --navbarheight: 2.8rem; + --uicolor: #000000bf; + --bgimage: url('https://i.redd.it/abhfagc5t4591.jpg'); + --borderrounding: 1; + --txtcolor: #ffffff; + --navbarmargin: 0.25rem; +} +html, body { + height: 100%; + font-family: var(--stdfont); + padding: 0; + margin: 0; +} +body { + background-image: var(--bgimage); + background-size: cover; + background-position: center; + background-attachment: fixed; +} + +header { + height: var(--navbarheight); +} +nav { + float: left; + box-sizing: border-box; +} +nav, .navbutton { + height: 100%; + font-size: 0; +} +.navbutton, nav a { + display: inline-block; + color: var(--txtcolor); + border: none; + border-radius: 0; + background: none; + padding: calc((var(--navbarheight) / 2) - 12px); +} +.navbutton:hover, nav a:hover { + cursor: pointer; + background-color: #ffffff44; +} +nav a { + border-radius: calc(50% * var(--borderrounding)); + margin: var(--navbarmargin); +} +nav a img { + filter: drop-shadow(1px 1px 4px black); +} +#apps, .systray { + box-sizing: border-box; + display: inline-block; + overflow: clip; + border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding)); + background-color: var(--uicolor); + margin: var(--navbarmargin) 0; + padding: 0 0.5rem; +} +.systray { + color: var(--txtcolor); + float: right; + height: 100%; + margin-right: var(--navbarmargin); + margin-bottom: -1rem; +} +.sysleft { + float: left; + margin-left: var(--navbarmargin); +} +.systray p { + margin: 0; + padding: calc((var(--navbarheight) / 2) - 1.2ch); +} +#settingspanel { + display: none; + position: absolute; + right: var(--navbarmargin); + top: calc((var(--navbarmargin) * 2) + var(--navbarheight)); + z-index: 5; + background-color: var(--uicolor); + border-radius: calc((var(--navbarheight) / 2) * var(--borderrounding)); + padding: 1rem; +} +#settingsbutton:checked ~ #settingspanel { + display: block; +} +#settingspanel input, #settingspanel button { + border: none; + border-radius: calc(0.9rem * var(--borderrounding)); + padding: 0.3rem 0.6rem; +} +#settingspanel td { + padding: 0.3rem; +} + +main { + display: flex; + padding: calc(var(--windowgap) / 2); + flex-wrap: wrap; + height: calc(100vh - var(--navbarheight)); + box-sizing: border-box; + padding-top: var(--navbarmargin); +} + +.window { + margin: calc(var(--windowgap) / 2); + flex-grow: 1; + box-sizing: border-box; + flex: calc((100% / var(--windowcountx)) - var(--windowgap)); + border-radius: calc(1.15rem * var(--borderrounding)); + overflow: clip; + background-color: var(--uicolor); + z-index: 2; +} +.window iframe { + width: 100%; + height: calc(100% - 2.2rem); + border: none; +} +.windowdecoration { + display: block; + width: 100%; + height: 2.2rem; +} +.closewindow { + display: block; + float: right; + margin: 0.3rem; + height: 1.6rem; + width: 1.6rem; + padding: calc(.8rem - 12px); + border: none; + color: red; + background: none; + border-radius: calc(50% * var(--borderrounding)); + z-index: 500000; +} +.closewindow:hover { + cursor: pointer; + color: black; + background-color: red; +} + +.CboxOpenBtn img { + opacity: 0; + transition-duration: 0.2s; +} +.CboxOpenBtn:hover img { + opacity: 1; +} \ No newline at end of file diff --git a/desktop.html b/desktop.html new file mode 100644 index 0000000..2fcb089 --- /dev/null +++ b/desktop.html @@ -0,0 +1,78 @@ + + + + + niceopodOS + + + +
+ +

niceopodOS alpha v1.0

+

+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Settings
+
+
+
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/desktop.js b/desktop.js new file mode 100644 index 0000000..c73f02b --- /dev/null +++ b/desktop.js @@ -0,0 +1,36 @@ +let activeWindowCount = 0; +const desktop = document.getElementById('desktop'); + +function changeRootVar(name, value) { + document.documentElement.style.setProperty(`--${name}`, value); +} + +function updateWindowCountX() { + if(activeWindowCount <= 4) { + document.documentElement.style.setProperty('--windowcountx', '2'); + } else if(activeWindowCount <= 9) { + document.documentElement.style.setProperty('--windowcountx', '3'); + } else { + document.documentElement.style.setProperty('--windowcountx', '4'); + } +} + +function openwindow(name) { + if(activeWindowCount < 9) { + let newWindow = document.createElement('div'); + newWindow.innerHTML = '
' + let newWindowContent = document.createElement('iframe'); + newWindow.className = 'window'; + newWindowContent.src = `${name}/`; + newWindow.appendChild(newWindowContent); + desktop.appendChild(newWindow); + activeWindowCount = activeWindowCount + 1; + //updateWindowCountX(); + } +} + +function closewindow(window) { + window.parentElement.parentElement.remove(); + activeWindowCount = activeWindowCount - 1; + //updateWindowCountX(); +} \ No newline at end of file diff --git a/embedded.css b/embedded.css new file mode 100644 index 0000000..d857a7c --- /dev/null +++ b/embedded.css @@ -0,0 +1,8 @@ +body { + background: none; + padding: 0; + margin: 0; +} +img { + max-width: 100%; +} \ No newline at end of file diff --git a/etc/bg.png b/etc/bg.png new file mode 100644 index 0000000..a1cd49e Binary files /dev/null and b/etc/bg.png differ diff --git a/etc/buttons/35mm.gif b/etc/buttons/35mm.gif new file mode 100644 index 0000000..2c5bb0e Binary files /dev/null and b/etc/buttons/35mm.gif differ diff --git a/etc/buttons/ace.png b/etc/buttons/ace.png new file mode 100644 index 0000000..1d62add Binary files /dev/null and b/etc/buttons/ace.png differ diff --git a/etc/buttons/agender.png b/etc/buttons/agender.png new file mode 100644 index 0000000..2241f13 Binary files /dev/null and b/etc/buttons/agender.png differ diff --git a/etc/buttons/amd_powered.gif b/etc/buttons/amd_powered.gif new file mode 100644 index 0000000..c6982a6 Binary files /dev/null and b/etc/buttons/amd_powered.gif differ diff --git a/etc/buttons/antinft.gif b/etc/buttons/antinft.gif new file mode 100644 index 0000000..1a4caf0 Binary files /dev/null and b/etc/buttons/antinft.gif differ diff --git a/etc/buttons/aro.png b/etc/buttons/aro.png new file mode 100644 index 0000000..e1e50d2 Binary files /dev/null and b/etc/buttons/aro.png differ diff --git a/etc/buttons/aromantic-80x15.png b/etc/buttons/aromantic-80x15.png new file mode 100644 index 0000000..8a43594 Binary files /dev/null and b/etc/buttons/aromantic-80x15.png differ diff --git a/etc/buttons/asexual-80x15.png b/etc/buttons/asexual-80x15.png new file mode 100644 index 0000000..58b6beb Binary files /dev/null and b/etc/buttons/asexual-80x15.png differ diff --git a/etc/buttons/badhtml.png b/etc/buttons/badhtml.png new file mode 100644 index 0000000..17b36a1 Binary files /dev/null and b/etc/buttons/badhtml.png differ diff --git a/etc/buttons/bantimetravel.png b/etc/buttons/bantimetravel.png new file mode 100644 index 0000000..83bcfa1 Binary files /dev/null and b/etc/buttons/bantimetravel.png differ diff --git a/etc/buttons/bestviewed.gif b/etc/buttons/bestviewed.gif new file mode 100644 index 0000000..0b43d5a Binary files /dev/null and b/etc/buttons/bestviewed.gif differ diff --git a/etc/buttons/canadian.gif b/etc/buttons/canadian.gif new file mode 100644 index 0000000..be1d040 Binary files /dev/null and b/etc/buttons/canadian.gif differ diff --git a/etc/buttons/chrome.gif b/etc/buttons/chrome.gif new file mode 100644 index 0000000..791016f Binary files /dev/null and b/etc/buttons/chrome.gif differ diff --git a/etc/buttons/css.png b/etc/buttons/css.png new file mode 100644 index 0000000..7d8235b Binary files /dev/null and b/etc/buttons/css.png differ diff --git a/etc/buttons/deeptwisty_button.png b/etc/buttons/deeptwisty_button.png new file mode 100644 index 0000000..b5d24fc Binary files /dev/null and b/etc/buttons/deeptwisty_button.png differ diff --git a/etc/buttons/dontyouhate.gif b/etc/buttons/dontyouhate.gif new file mode 100644 index 0000000..ff8902d Binary files /dev/null and b/etc/buttons/dontyouhate.gif differ diff --git a/etc/buttons/drpepper.gif b/etc/buttons/drpepper.gif new file mode 100644 index 0000000..dff6eaa Binary files /dev/null and b/etc/buttons/drpepper.gif differ diff --git a/etc/buttons/getvlcnow.png b/etc/buttons/getvlcnow.png new file mode 100644 index 0000000..8922252 Binary files /dev/null and b/etc/buttons/getvlcnow.png differ diff --git a/etc/buttons/google_stand.gif b/etc/buttons/google_stand.gif new file mode 100644 index 0000000..08ffd8b Binary files /dev/null and b/etc/buttons/google_stand.gif differ diff --git a/etc/buttons/handcode.png b/etc/buttons/handcode.png new file mode 100644 index 0000000..c5bbdd1 Binary files /dev/null and b/etc/buttons/handcode.png differ diff --git a/etc/buttons/i_hate_microsoft.png b/etc/buttons/i_hate_microsoft.png new file mode 100644 index 0000000..c20422b Binary files /dev/null and b/etc/buttons/i_hate_microsoft.png differ diff --git a/etc/buttons/krisbtn.png b/etc/buttons/krisbtn.png new file mode 100644 index 0000000..176d3c4 Binary files /dev/null and b/etc/buttons/krisbtn.png differ diff --git a/etc/buttons/linux_powered.gif b/etc/buttons/linux_powered.gif new file mode 100644 index 0000000..2dbe456 Binary files /dev/null and b/etc/buttons/linux_powered.gif differ diff --git a/etc/buttons/neocities_stamp.gif b/etc/buttons/neocities_stamp.gif new file mode 100644 index 0000000..c8e8ea4 Binary files /dev/null and b/etc/buttons/neocities_stamp.gif differ diff --git a/etc/buttons/niceopod_button.png b/etc/buttons/niceopod_button.png new file mode 100644 index 0000000..0398b0e Binary files /dev/null and b/etc/buttons/niceopod_button.png differ diff --git a/etc/buttons/niceopod_button_2.png b/etc/buttons/niceopod_button_2.png new file mode 100644 index 0000000..84112e8 Binary files /dev/null and b/etc/buttons/niceopod_button_2.png differ diff --git a/etc/buttons/nonbinary-80x15.png b/etc/buttons/nonbinary-80x15.png new file mode 100644 index 0000000..5e06396 Binary files /dev/null and b/etc/buttons/nonbinary-80x15.png differ diff --git a/etc/buttons/nonbinary.png b/etc/buttons/nonbinary.png new file mode 100644 index 0000000..19bc440 Binary files /dev/null and b/etc/buttons/nonbinary.png differ diff --git a/etc/buttons/notoweb3.gif b/etc/buttons/notoweb3.gif new file mode 100644 index 0000000..4f5a2f1 Binary files /dev/null and b/etc/buttons/notoweb3.gif differ diff --git a/etc/buttons/nowebp.gif b/etc/buttons/nowebp.gif new file mode 100644 index 0000000..e63f1f2 Binary files /dev/null and b/etc/buttons/nowebp.gif differ diff --git a/etc/buttons/piracy.gif b/etc/buttons/piracy.gif new file mode 100644 index 0000000..37b73b8 Binary files /dev/null and b/etc/buttons/piracy.gif differ diff --git a/etc/buttons/queercoded.png b/etc/buttons/queercoded.png new file mode 100644 index 0000000..d8b53d0 Binary files /dev/null and b/etc/buttons/queercoded.png differ diff --git a/etc/buttons/righttorepair.png b/etc/buttons/righttorepair.png new file mode 100644 index 0000000..865ba1f Binary files /dev/null and b/etc/buttons/righttorepair.png differ diff --git a/etc/buttons/shrimp.png b/etc/buttons/shrimp.png new file mode 100644 index 0000000..5132eb8 Binary files /dev/null and b/etc/buttons/shrimp.png differ diff --git a/etc/buttons/tested_on_firefox.gif b/etc/buttons/tested_on_firefox.gif new file mode 100644 index 0000000..92dbae0 Binary files /dev/null and b/etc/buttons/tested_on_firefox.gif differ diff --git a/etc/buttons/the void.gif b/etc/buttons/the void.gif new file mode 100644 index 0000000..1099de4 Binary files /dev/null and b/etc/buttons/the void.gif differ diff --git a/etc/buttons/usatoday.gif b/etc/buttons/usatoday.gif new file mode 100644 index 0000000..9e6fa57 Binary files /dev/null and b/etc/buttons/usatoday.gif differ diff --git a/etc/buttons/web-pi.png b/etc/buttons/web-pi.png new file mode 100644 index 0000000..9888021 Binary files /dev/null and b/etc/buttons/web-pi.png differ diff --git a/etc/buttons/win11no.gif b/etc/buttons/win11no.gif new file mode 100644 index 0000000..ce23096 Binary files /dev/null and b/etc/buttons/win11no.gif differ diff --git a/etc/changelog.php b/etc/changelog.php new file mode 100644 index 0000000..e468f87 --- /dev/null +++ b/etc/changelog.php @@ -0,0 +1,367 @@ + + + + + + Changelog + + + + + + + +

isopod.cool changelog

+
+

2023-1-05

+ +
+
+

2023-1-04

+ +
+
+

2022-12-16

+ +
+
+

2022-12-15

+ +
+
+

2022-12-08

+ +
+
+

2022-12-04

+ +
+
+

2022-11-27

+ +
+
+

2022-11-25

+ +
+
+

2022-11-11

+ +
+
+

2022-11-06

+ +
+
+

2022-10-27

+ +
+
+

2022-10-18

+ +
+
+

2022-10-15

+ +
+
+

2022-10-01

+ +
+
+

2022-09-29

+ +
+
+

2022-09-20

+ +
+
+

2022-09-19

+ +
+
+

2022-09-07

+ +
+
+

2022-09-04

+ +
+
+

2022-08-31

+ +
+
+

2022-08-27

+ +
+
+

2022-08-25

+ +
+
+

2022-08-18

+ +
+
+

2022-08-10

+ +
+
+

2022-08-08

+ +
+
+

2022-08-07

+ +
+
+

2022-08-01

+ +
+
+

2022-07-30

+ +
+
+

2022-07-29

+ +
+
+

2022-07-25

+ +
+
+

2022-07-23

+ +
+
+

2022-07-21

+ +
+
+

2022-07-20

+ +
+
+

2022-07-19

+ +
+
+

2022-07-16

+ +
+
+

2022-07-15

+ +
+
+

2022-07-14

+ +
+
+

2022-07-04

+ +
+
+

2022-07-01

+ +
+
+

2022-06-30

+ +
+
+

2022-06-25

+ +
+
+

2022-06-24

+ +
+
+

2022-06-20

+ +
+
+

2022-06-18

+ +
+
+

2022-06-17

+ +
+
+

2022-06-14

+ +
+
+

2022-06-12

+ +
+
+

2022-05-29

+ +
+
+

2022-05-25

+ +
+
+

2022-05-23

+ +
+
+

2022-05-22

+ +
+
+

2022-05-21

+ +
+ + + \ No newline at end of file diff --git a/etc/greenhouse/bg.png b/etc/greenhouse/bg.png new file mode 100644 index 0000000..65e78c0 Binary files /dev/null and b/etc/greenhouse/bg.png differ diff --git a/etc/greenhouse/index.php b/etc/greenhouse/index.php new file mode 100644 index 0000000..6a66f47 --- /dev/null +++ b/etc/greenhouse/index.php @@ -0,0 +1,51 @@ + + + + + Greenhouse + + + + + + +

webgreenhouse

+

 

+
+ +
+

You've found my webgarden page! A webgarden is a mini‑webpage that other people can embed in their websites, as defined by Miss Moss. Here's the code for mine:

+ +
+ + + + + + + + + + +
+
+ + + diff --git a/etc/images/apiopage.png b/etc/images/apiopage.png new file mode 100644 index 0000000..686ec4c Binary files /dev/null and b/etc/images/apiopage.png differ diff --git a/etc/index.php b/etc/index.php new file mode 100644 index 0000000..fad40f4 --- /dev/null +++ b/etc/index.php @@ -0,0 +1,80 @@ + + + + + + More + + + + + + + +

more

+

more

+ + +

Changelog <Atom feed>

+ +

Buttons

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

My buttons

+
+ + + +
+

TODO

+ +
+ + + + \ No newline at end of file diff --git a/etc/quotes/bg.png b/etc/quotes/bg.png new file mode 100644 index 0000000..1281756 Binary files /dev/null and b/etc/quotes/bg.png differ diff --git a/etc/quotes/images/c_pfp.png b/etc/quotes/images/c_pfp.png new file mode 100644 index 0000000..0c67400 Binary files /dev/null and b/etc/quotes/images/c_pfp.png differ diff --git a/etc/quotes/images/g_pfp.png b/etc/quotes/images/g_pfp.png new file mode 100644 index 0000000..c75ba65 Binary files /dev/null and b/etc/quotes/images/g_pfp.png differ diff --git a/etc/quotes/images/m_pfp.png b/etc/quotes/images/m_pfp.png new file mode 100644 index 0000000..625c7b2 Binary files /dev/null and b/etc/quotes/images/m_pfp.png differ diff --git a/etc/quotes/images/s_pfp.png b/etc/quotes/images/s_pfp.png new file mode 100644 index 0000000..03398bc Binary files /dev/null and b/etc/quotes/images/s_pfp.png differ diff --git a/etc/quotes/images/t_pfp.png b/etc/quotes/images/t_pfp.png new file mode 100644 index 0000000..e77edff Binary files /dev/null and b/etc/quotes/images/t_pfp.png differ diff --git a/etc/quotes/images/v_pfp.png b/etc/quotes/images/v_pfp.png new file mode 100644 index 0000000..9bffe2f Binary files /dev/null and b/etc/quotes/images/v_pfp.png differ diff --git a/etc/quotes/images/w_pfp.png b/etc/quotes/images/w_pfp.png new file mode 100644 index 0000000..d4a6f6c Binary files /dev/null and b/etc/quotes/images/w_pfp.png differ diff --git a/etc/quotes/index.php b/etc/quotes/index.php new file mode 100644 index 0000000..bcd0bfc --- /dev/null +++ b/etc/quotes/index.php @@ -0,0 +1,189 @@ + + + + + #quotes + + + + + + +

#quotes

+

highlights from the #quotes channel in the discord chat

+ pfp = "w_pfp"; + $will->name = "president of the universe ඞ"; + $will->color = "00ffb7"; + $vivi->pfp = "v_pfp"; + $vivi->name = "madame muh fuckin SANDBOX"; + $vivi->color = "ff009e"; + $sad->pfp = "s_pfp"; + $sad->name = "first man of the universe ඞ"; + $sad->color = "f1c40f"; + $mage->pfp = "m_pfp"; + $mage->name = "nudibranch ඞ"; + $mage->color = "faaaaa"; + $celian->pfp = "c_pfp"; + $celian->name = "CumAccelerated(Mark) ಡඞ"; + $celian->color = "73fbff"; + $thom->pfp = "t_pfp"; + $thom->name = "Tomato ඞ"; + $thom->color = "567c2d"; + $goon->pfp = "g_pfp"; + $goon->name = "hatchgoon"; + $goon->color = "2c9c91"; + function echo_message($person, $message, $first_in_exchange = false) { + if($first_in_exchange) { + echo "
"; + } + echo "
"; + echo ""; + echo "

$person->name

$message
"; + echo "
"; + } + ?> + i couldn't fuck a freezer
too cold", true); + echo_message($celian, "", true); + echo_message($will, "MY computer is attractive, alright. yours is not.", true); + echo_message($will, "your computer is a milf"); + echo_message($will, "bowser was always hot. coward", true); + echo_message($celian, "oh is your jaw equiped?", true); + echo_message($sad, "I AM YOUR CHEESEBURGER", true); + echo_message($celian, "gimmie a sex
*SEC
*SEC
*SEC
*SEC
A SECOND
OH MY GOD", true); + echo_message($mage, "I think it's incredibly feminine to crawl around in storm drains", true); + echo_message($will, "I can't tell where participating in the bit where I'm a furry ends and actually insisting I'm not a furry begins", true); + echo_message($will, "what fucking cyberpunk world are you living in where panties have HUDs", true); + echo_message($vivi, "I want a panic attack now", true); + echo_message($will, "you're gonna be so tasty in two weeks", true); + echo_message($will, "nobody's going to be able to decipher our language because they'll do it right and translate phrases like \"i think dio's tits should switch places\" and assume they did it wrong and keep trying", true); + echo_message($will, "Sasuke shoved his hands into Naruto's pants and grinned when the blond whimpered from his touch. \"Already, Naruto?\" he asked.
Wrong chat
How yall doin", true); + echo_message($will, "I'm not in denail I'm a furry", true); + echo_message($will, "mold is a fursuit for bread", true); + echo_message($mage, "when someone eats moldy food does that mean they're voring a furry?"); + echo_message($will, "yes"); + echo_message($will, "can you believe sag their pirt is four years old? (it is from 2018)", true); + echo_message($celian, "wait isn't it 5?
we're in 2022
did you count 2020
wait
i may be stupid."); + echo_message($will, "I'm not FRENCH I'm a FURRY", true); + echo_message($vivi, "Maybe the real cum pepsi is the friends we made along the way", true); + echo_message($celian, "Ibuprofwn kind of slut.", true); + echo_message($will, "I wish my cock was a fidget spinner", true); + echo_message($vivi, "It's castration time!", true); + echo_message($vivi, "I girlbossed a little to close to the comfy and fell asleep", true); + echo_message($will, "that milk is the sequel to expired", true); + echo_message($will, "Tony the tiger is HOT.", true); + echo_message($sad, "Never ask a woman her age, never ask a man his salary, never ask a medieval man what his letters to his best friend said", true); + echo_message($celian, "Dio would have been hotter with crocs", true); + echo_message($sad, "Im just trying to picture like,, donald trump shitting", true); + echo_message($will, "who would you have picked to win the tumblr sexy man award
the fucking onceler?", true); + echo_message($thom, "...
how'd you know?"); + echo_message($celian, "I wanna see the bloopers of Stephen Merchant moaning into the mic", true); + echo_message($will, "come on, look at him. Sans is literally so sexy", true); + echo_message($will, "there are many ways to consume weed: you can smoke it out of a doob, you can smoke it out of a bong, you can smoke it out of a brownie- ...wait", true); + echo_message($mage, "I think you'll be a fan of gangster balls soon bestie", true); + echo_message($celian, "there i removed my vagina", true); + echo_message($will, "For you, the person who wants to be naked in a ball, that is very bad for you", true); + echo_message($mage, "If I had to rate it, I'd rate it fucking gay", true); + echo_message($mage, "you're only playing Scout correctly if you've had gay sex", true); + 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
and milk them", true); + echo_message($celian, "bebito house reveel
bebito hous reveel when the bebito has.
hous reveaal
hous 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); + echo_message($celian, "bruh (respectfully)", true); + echo_message($celian, "this isn't a furby this is walter white cum jar", true); + echo_message($vivi, "can I have the walter white cum jar please 👉👈🥺"); + echo_message($will, "i'd rather not explode today, Thanks", true); + echo_message($celian, "got some hair :)", true); + echo_message($will, "Walter White is a DILF, Celian.", true); + echo_message($sad, "if there was porn i wouldnt leave", true); + echo_message($will, "haunting you with the looming threat of horse", true); + echo_message($celian, "Walter White sex jumpscare", true); + echo_message($celian, "Evangelion spoilers walter white and saul goodman kiss", true); + echo_message($will, "I think they should stop commissioning criminal intelligence and start commissioning furries", true); + echo_message($sad, "YOOO THAT'S MY GIIIIIIRL!!!! MY GIRL SNAPE MY GIRL!!!!", true); + echo_message($vivi, "I feel like DeviantArt right now, 2014 edition.", true); + echo_message($will, "I want a transparent penis", true); + echo_message($mage, "The buzzing sound of the penis won't go away", true); + echo_message($thom, "vivi I really think you should stop shitting on reddit", true); + echo_message($celian, "I don't agree because I disagree with you", true); + echo_message($celian, "", true); + echo_message($mage, ""); + echo_message($celian, ""); + echo_message($thom, "

"); + echo_message($will, ""); + echo_message($vivi, ""); + echo_message($celian, ""); + echo_message($vivi, ""); + echo_message($will, "Imagine touching [audio loss] me", true); + echo_message($thom, "theres something homoerotic about cars", true); + echo_message($will, "im in spain without the sain", true); + echo_message($mage, "REMEMBER TO MAKE BACKUP COPIES IF YOU INTEND TO EDIT THIS PENIS!!", true); + echo_message($vivi, "god is actually surprisingly submissive and breedable", true); + 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
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 boner knife in this house", 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 drink it", true); + echo_message($sad, "imagine having a digestive system couldnt be me", true); + echo_message($mage, "Hot"); + echo_message($mage, "damn, guess i gotta send you some autism in the mail", true); + echo_message($mage, "I just diagnosed you with bottom disorder", true); + echo_message($mage, "Girls are always whole ass wet from the roof", true); + echo_message($celian, "This is an amazing day for humanity, and by humanity, I mean my titties", true); + ?> +
+ + + diff --git a/etc/todo.html b/etc/todo.html new file mode 100644 index 0000000..ab4e226 --- /dev/null +++ b/etc/todo.html @@ -0,0 +1,25 @@ + + + + + Changelog + + + + + + + + diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..e51089a Binary files /dev/null and b/favicon.ico differ diff --git a/favicon.png b/favicon.png new file mode 100644 index 0000000..c46d8fa Binary files /dev/null and b/favicon.png differ diff --git a/guestbook/bg.png b/guestbook/bg.png new file mode 100644 index 0000000..e24ddb3 Binary files /dev/null and b/guestbook/bg.png differ diff --git a/guestbook/feed.php b/guestbook/feed.php new file mode 100644 index 0000000..33c1896 --- /dev/null +++ b/guestbook/feed.php @@ -0,0 +1,47 @@ +'; +echo 'niceopod\'s guestbook'; +echo 'The guestbook on isopod.cool'; +echo 'en-us'; +echo 'https://isopod.cool/guestbook/'; +echo 'My crappy PHP code'; + +$postlist = json_decode(file_get_contents("posts.json")); +$index = 1; +$totaloutput = ""; +foreach($postlist as $post) { + $output = ""; + $date = date("D, d M Y H:m:s", $post->date) . " GMT"; + $name = $post->name; + $message = $post->message; + $found = $post->found; + $website = $post->website; + $cool = $post->cool; + $coolsanitized = htmlentities(preg_replace("/https?:\/\//i", "", $cool)); + $reply = htmlentities($post->reply); + + if($website) { $output = $output."$name:

"; } + else { $output = $output.$name.":

"; } + + if($cool) { + $output = $output."cool thing: $coolsanitized

"; + } + + if($found) { + $output = $output."How did you find me?
$found

"; + } + + $output = $output.$message."

"; + + if($reply) { + $output = $output."
Reply:
$reply"; + } + $totaloutput = "Entry #" . $index . " - " . $name . "https://isopod.cool/guestbook/" . $date . "".htmlentities($output)."" . $index . $post->date . $name . "".$totaloutput; + $index++; +} + +echo $totaloutput; +echo "
"; \ No newline at end of file diff --git a/guestbook/index.php b/guestbook/index.php new file mode 100644 index 0000000..569a03f --- /dev/null +++ b/guestbook/index.php @@ -0,0 +1,182 @@ + + + + + Guestbook + + + + + + +

guestbook

+

say hi!

+ + +
+ + + "; } ?> + + + + + + "; } ?> + + + + + + "; } ?> + + + + + + + + + + + "; } ?> + + + + + + "; } ?> + + + + + + "; } ?> + + + + + +
Name required!
Name*
Invalid URL!
Website
Invalid URL!
Link something cool
How did you find me?
Message required!
Message*
You failed the bot check!
Bot test (type isopod)*
Successfully posted!
+
+ date); + $name = $post->name; + $message = $post->message; + $found = $post->found; + $website = $post->website; + $cool = $post->cool; + $coolsanitized = htmlentities(preg_replace("/https?:\/\//i", "", $cool)); + $reply = htmlentities($post->reply); + + $output = $output."
"; + if($cool) { + $output = $output.""; + } + if($found) { + $output = $output.""; + } + $output = $output.""; + if($reply) { + $output = $output.""; + } + $output = $output."
"; + if($website) { $output = $output."$name"; } + else { $output = $output.$name; } + $output = $output."Entry #$index
cool thing: $coolsanitized
How did you find me?
$found
$message
Reply:
$reply
"; + $index++; + $totaloutput = $output.$totaloutput; + } + echo $totaloutput; ?> +
+ + + diff --git a/guestbook/submit.php b/guestbook/submit.php new file mode 100644 index 0000000..48e656a --- /dev/null +++ b/guestbook/submit.php @@ -0,0 +1,85 @@ +date = time(); + $currentPost->name = htmlentities($_POST["name"]); + $currentPost->message = htmlentities($_POST["message"]); + $currentPost->found = htmlentities($_POST["found"]); + if($_POST["website"]) $currentPost->website = $_POST["website"]; + if($_POST["cool"]) $currentPost->cool = $_POST["cool"]; + $currentPost->reply = ""; + + $filename = "posts.json"; + + $handle = @fopen($filename, 'r+'); + + // create the file if needed + if ($handle === null) + { + $handle = fopen($filename, 'w+'); + } + + if ($handle) + { + // seek to the end + fseek($handle, 0, SEEK_END); + + // are we at the end of is the file empty + if (ftell($handle) > 0) + { + // move back a byte + fseek($handle, -2, SEEK_END); + + // add the trailing comma + fwrite($handle, ",\n", 2); + + // add the new json string + fwrite($handle, json_encode($currentPost) . "]\n"); + } + else + { + // write the first event inside an array + fwrite($handle, json_encode(array($currentPost))); + } + + // close the handle on the file + fclose($handle); + } + } + } + header("Location: ./?return=$returnCode"); +?> + + + + + Guestbook + + + + + +

Your post has been submitted! It's weird that you're seeing this page though. Maybe your browser can't process location headers? At any rate, click here"; ?> to get where you're supposed to be right now.

+ + \ No newline at end of file diff --git a/images/benlet1.png b/images/benlet1.png new file mode 100644 index 0000000..5c757cd Binary files /dev/null and b/images/benlet1.png differ diff --git a/images/bg.png b/images/bg.png new file mode 100644 index 0000000..e3d85ec Binary files /dev/null and b/images/bg.png differ diff --git a/images/birthday_isopod.png b/images/birthday_isopod.png new file mode 100644 index 0000000..c6161c1 Binary files /dev/null and b/images/birthday_isopod.png differ diff --git a/images/birthday_isopod_small.png b/images/birthday_isopod_small.png new file mode 100644 index 0000000..58feed0 Binary files /dev/null and b/images/birthday_isopod_small.png differ diff --git a/images/blahaj.png b/images/blahaj.png new file mode 100644 index 0000000..8df8ca1 Binary files /dev/null and b/images/blahaj.png differ diff --git a/images/bubblecolumn1.gif b/images/bubblecolumn1.gif new file mode 100644 index 0000000..ad31eb1 Binary files /dev/null and b/images/bubblecolumn1.gif differ diff --git a/images/isopod.php b/images/isopod.php new file mode 100644 index 0000000..db01d31 --- /dev/null +++ b/images/isopod.php @@ -0,0 +1,15 @@ + + + + + + + h1{background-image:url('old/1/images/$day.png');}"; + break; + case 'PLACEHIM': + $cap = 'place him on your site immediately'; + $tit = $cap; + echo ""; + break; + case 'BLAHAJ': + $cap = ' certified Good Website by blåhaj'; + $tit = "certified Good Website by blåhaj"; + echo ""; + break; + case 'Verified': + $cap = ''; + break; + case 'vewified': + $cap = ''; + break; + case 'Kind of dragon free!': + $cap = 'Kind of dragon free!'; + break; + case 'UPSIDEDOWN': + $cap = 'Upside Down!'; + $tit = '¡uʍop ǝpısdn'; + break; + case 'RGB': + $cap = 'RGB Gaming Webpage'; + $tit = 'RGB Gaming Webpage'; + break; + } + } + } + ?> + <?php if($tit) { echo "isopod.cool v3 - $tit"; } else { echo "isopod.cool v3"; } ?> + + + + +
+

isopod.cool v3

+

+ + + +
+ +
+ An isopod! + Charles + Kevin + benlet + Shadow +
+
+
+ + + diff --git a/links/bg.png b/links/bg.png new file mode 100644 index 0000000..ec02526 Binary files /dev/null and b/links/bg.png differ diff --git a/links/buttons/64thsanctum.gif b/links/buttons/64thsanctum.gif new file mode 100644 index 0000000..8da463e Binary files /dev/null and b/links/buttons/64thsanctum.gif differ diff --git a/links/buttons/Icelog.gif b/links/buttons/Icelog.gif new file mode 100644 index 0000000..a024349 Binary files /dev/null and b/links/buttons/Icelog.gif differ diff --git a/links/buttons/josef.gif b/links/buttons/josef.gif new file mode 100644 index 0000000..169ef12 Binary files /dev/null and b/links/buttons/josef.gif differ diff --git a/links/buttons/kalechips.png b/links/buttons/kalechips.png new file mode 100644 index 0000000..de73102 Binary files /dev/null and b/links/buttons/kalechips.png differ diff --git a/links/buttons/melonland-forum.gif b/links/buttons/melonland-forum.gif new file mode 100644 index 0000000..6246e39 Binary files /dev/null and b/links/buttons/melonland-forum.gif differ diff --git a/links/buttons/morrysillusion.png b/links/buttons/morrysillusion.png new file mode 100644 index 0000000..a07484d Binary files /dev/null and b/links/buttons/morrysillusion.png differ diff --git a/links/buttons/onlysans.png b/links/buttons/onlysans.png new file mode 100644 index 0000000..44f12ef Binary files /dev/null and b/links/buttons/onlysans.png differ diff --git a/links/buttons/robophobia.png b/links/buttons/robophobia.png new file mode 100644 index 0000000..4a974d0 Binary files /dev/null and b/links/buttons/robophobia.png differ diff --git a/links/buttons/sadgrl.gif b/links/buttons/sadgrl.gif new file mode 100644 index 0000000..a80e8bf Binary files /dev/null and b/links/buttons/sadgrl.gif differ diff --git a/links/buttons/seaslug.png b/links/buttons/seaslug.png new file mode 100644 index 0000000..76fceb4 Binary files /dev/null and b/links/buttons/seaslug.png differ diff --git a/links/index.php b/links/index.php new file mode 100644 index 0000000..7107a8b --- /dev/null +++ b/links/index.php @@ -0,0 +1,343 @@ + + + + + Links + + + + + + +

links

+

the sequel to google (under construction)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Me

deeptwisty.com/artMy art page
@isopodhoursMy Tumblr account
@will@social.isopod.coolMy personal fediverse instance
deeptwisty.bandcamp.comMy Bandcamp page. If you want to support me, you can buy my music here.
deep twistyThe Youtube channel for my music
WillemMy Youtube channel for other stuff
deeptwistygamingMy Twitch channel
deeptwisty.itch.ioMy itch.io page
willem@deeptwisty.comMy public email address. Say hi!
+

Others

+
Cool [websites,people,etc]
+
+
+ Sea slug on the net! + Only Sans + Kalechips + Morry's Illusion + Josef + 64th Sanctum + Sadgrl + Iceologist + Robophobia + Melonland Forum +
+

Utility

Easy USSRA comprehensive beginner's guide to Legally Acquiring Media
12ft.ioShow me a 10ft paywall, I'll show you a 12ft ladder.
LandChad.netA collection of tutorials for setting up various self-hosted services.
3DS Hacks GuideA comprehensive guide for modding 2ds and 3ds consoles. I know it's legit because I used it on mine.
hShopA repository of software for your freshly hacked 3ds
switching.softwareA curated list of alternatives to popular software and services from companies like Google and Amazon.
Awesome SelfhostedA comprehensive list of self-hosted alternatives to various software.
Newpipe & InvidiousBetter YouTube frontends for Android and the browser respectively.
Hype Machine Merch TableScans a Spotify playlist and links the Bandcamp page of any artist in it who has one.
Dark Pattern GamesA database of mobile games that flags them for predatory design patterns.
RegExrA website to test regular expressions for you
How old is it?For when your prospective employer asks for 10 years of experience.
Reverse InterviewA list of questions to ask at (tech) job interviews
based.cookingA recipe website without all the typical recipe website garbage.
8mbvideoCompresses any video file just enough to comply with Discord's filesize limits.
jort.linkA shield to prevent accidental DDOSing of links posted to the fediverse

Fun

Burning Text GeneratorDoes
Zalgo Text GeneratorDoes t̵̝̻̘͒̓̈́h̵͇͙͔́̾i̵͎̪̞͊́̾s̵̫̼̀̾
crouton.netcrouton
cornonthec.observer/corn on the cob server
Dracula DailyRead Bram Stoker's Dracula in real time, in your email inbox.
Wobble TownA cute little virtual pet!
Cornell Lab Bird CamsLive bird cams!
Snailets fontThe best font
Imgflip is DEADA clone of Imgflip's meme generator, "because watermarks and tracking suck".
iNaturalistAn extensive crowdsourced library of high-quality photos of over 400,000 species of plants and animals
Space Cadet PinballWindows XP Space Cadet Pinball, reverse engineered to run in your browser!
trilobites.infoTrilobite knowledge!

More stuff

Yesterlinks [Random]A "user-curated directory of interesting off-the-beaten path websites", with over 500 links and counting!
Marginalia Search [Random]A custom-built search engine for small, non-commercial websites.
+
+ + + diff --git a/mcrpcredit.txt b/mcrpcredit.txt new file mode 100644 index 0000000..06efd4d --- /dev/null +++ b/mcrpcredit.txt @@ -0,0 +1,10 @@ +Deep twisty gaming minecraft server resource pack full credits: + +OptiFine CIT: + celianascended.tumblr.com - Celian's Elytra, SadFlowerBoy's Elytra, sord, moths, snails, worm on a string, plushies, danny devito, "sand", "The" framed picture, "Pumpkin Man :)" framed picture, "The Animal" framed picture, crab + https://www.planetminecraft.com/texture-pack/colored-axolotl-buckets-with-babies/ + https://vanillatweaks.net/ - golden helmet crown, vex custom elytra, phantom custom elytra, dragon custom elytra + me - "Night's Edge" (from terraria) and "A very sharp dildo" custom swords, diamond i swear +Vanilla: + https://vanillatweaks.net/ - banner shield fix, horizontal world border, visually distinguishable melon/pumpkin stems, hunger preview in food names, noteblock indicators, taller saplings + deep twisty (me) - Bridges, Cumulonimbus, and Extradimensional discs in place of 11, 13, and Mellohi respectively \ No newline at end of file diff --git a/nav.php b/nav.php new file mode 100644 index 0000000..643e95e --- /dev/null +++ b/nav.php @@ -0,0 +1,24 @@ +"; +if($_SERVER["DOCUMENT_ROOT"] !== getcwd()) { + echo "home"; +} +foreach($uris as $uri) { + if($uri == str_replace("/", "", $_SERVER['REQUEST_URI'])) { + echo "$uri"; + } else { + echo "$uri"; + } +} +echo "" +?> \ No newline at end of file diff --git a/not_found.html b/not_found.html new file mode 100644 index 0000000..963b3a9 --- /dev/null +++ b/not_found.html @@ -0,0 +1,27 @@ + + + + + + Not Found + + + + +

404

+

Item not found :/

+ + diff --git a/old/1/icons/deeptwisty.png b/old/1/icons/deeptwisty.png new file mode 100644 index 0000000..31c1ad8 Binary files /dev/null and b/old/1/icons/deeptwisty.png differ diff --git a/old/1/icons/kirby.png b/old/1/icons/kirby.png new file mode 100644 index 0000000..618d02d Binary files /dev/null and b/old/1/icons/kirby.png differ diff --git a/old/1/icons/message.png b/old/1/icons/message.png new file mode 100644 index 0000000..d3c7e3a Binary files /dev/null and b/old/1/icons/message.png differ diff --git a/old/1/icons/tumblr.png b/old/1/icons/tumblr.png new file mode 100644 index 0000000..ab9b6d6 Binary files /dev/null and b/old/1/icons/tumblr.png differ diff --git a/old/1/icons/twitter.png b/old/1/icons/twitter.png new file mode 100644 index 0000000..e77b6ca Binary files /dev/null and b/old/1/icons/twitter.png differ diff --git a/old/1/icons/youtube.png b/old/1/icons/youtube.png new file mode 100644 index 0000000..4270b70 Binary files /dev/null and b/old/1/icons/youtube.png differ diff --git a/old/1/images/allism.jpg b/old/1/images/allism.jpg new file mode 100644 index 0000000..ef86284 Binary files /dev/null and b/old/1/images/allism.jpg differ diff --git a/old/1/images/bg_default.png b/old/1/images/bg_default.png new file mode 100644 index 0000000..82a1b2a Binary files /dev/null and b/old/1/images/bg_default.png differ diff --git a/old/1/images/bg_old1.png b/old/1/images/bg_old1.png new file mode 100644 index 0000000..e501205 Binary files /dev/null and b/old/1/images/bg_old1.png differ diff --git a/old/1/images/bg_old2.png b/old/1/images/bg_old2.png new file mode 100644 index 0000000..e812687 Binary files /dev/null and b/old/1/images/bg_old2.png differ diff --git a/old/1/images/friaday.png b/old/1/images/friaday.png new file mode 100644 index 0000000..f54c4ba Binary files /dev/null and b/old/1/images/friaday.png differ diff --git a/old/1/images/moday.png b/old/1/images/moday.png new file mode 100644 index 0000000..d8a0616 Binary files /dev/null and b/old/1/images/moday.png differ diff --git a/old/1/images/paperbg.jpg b/old/1/images/paperbg.jpg new file mode 100644 index 0000000..217c05f Binary files /dev/null and b/old/1/images/paperbg.jpg differ diff --git a/old/1/images/satuaday.png b/old/1/images/satuaday.png new file mode 100644 index 0000000..bd8faf2 Binary files /dev/null and b/old/1/images/satuaday.png differ diff --git a/old/1/images/suday.png b/old/1/images/suday.png new file mode 100644 index 0000000..2382f37 Binary files /dev/null and b/old/1/images/suday.png differ diff --git a/old/1/images/thuday.png b/old/1/images/thuday.png new file mode 100644 index 0000000..1d547f9 Binary files /dev/null and b/old/1/images/thuday.png differ diff --git a/old/1/images/tueaday.png b/old/1/images/tueaday.png new file mode 100644 index 0000000..7270c3e Binary files /dev/null and b/old/1/images/tueaday.png differ diff --git a/old/1/images/weaday.png b/old/1/images/weaday.png new file mode 100644 index 0000000..35fddb8 Binary files /dev/null and b/old/1/images/weaday.png differ diff --git a/old/1/index.html b/old/1/index.html new file mode 100644 index 0000000..a09a9d8 --- /dev/null +++ b/old/1/index.html @@ -0,0 +1,233 @@ + + + + + + The Website + + + + + + + + + +

Neko

+ + + +
+ +
+ +
+ +
+
+ + +
+ +
+ +

i got a minecraft server now. if we know each other dm me and I'll whitelist you

+
+

Tool Enchantments Resource Pack for Minecraft v1

+ +
+
+
+
+ +
+
+ +
+ + + + + + + + + + + + + +
+ +
+
+
+ +
+

controls

+ + + + + +
+
+ + +
+ + + + diff --git a/old/1/mobile.html b/old/1/mobile.html new file mode 100644 index 0000000..c56aede --- /dev/null +++ b/old/1/mobile.html @@ -0,0 +1,118 @@ + + + + + + The Website (Mobile!) + + + + + + + + +

Neko

+ + + +
+ + +

Willem | he/him | 🇨🇦

+
+

wait its fucking tueaday. god.

+
+
+
https://kfconsole.tumblr.com/post/639332939095818241
+
+

homophobes dni

+ +
+ +
+ + + + + + + + + + + + +
+ + + + diff --git a/old/1/stamps/antinft.gif b/old/1/stamps/antinft.gif new file mode 100644 index 0000000..1a4caf0 Binary files /dev/null and b/old/1/stamps/antinft.gif differ diff --git a/old/1/stamps/bestviewed.gif b/old/1/stamps/bestviewed.gif new file mode 100644 index 0000000..0b43d5a Binary files /dev/null and b/old/1/stamps/bestviewed.gif differ diff --git a/old/1/stamps/bob.gif b/old/1/stamps/bob.gif new file mode 100644 index 0000000..90b6dd5 Binary files /dev/null and b/old/1/stamps/bob.gif differ diff --git a/old/1/stamps/chrome2.gif b/old/1/stamps/chrome2.gif new file mode 100644 index 0000000..791016f Binary files /dev/null and b/old/1/stamps/chrome2.gif differ diff --git a/old/1/stamps/deeptwistybutton.png b/old/1/stamps/deeptwistybutton.png new file mode 100644 index 0000000..2cee235 Binary files /dev/null and b/old/1/stamps/deeptwistybutton.png differ diff --git a/old/1/stamps/google_stand.gif b/old/1/stamps/google_stand.gif new file mode 100644 index 0000000..08ffd8b Binary files /dev/null and b/old/1/stamps/google_stand.gif differ diff --git a/old/1/stamps/h-free-anim.gif b/old/1/stamps/h-free-anim.gif new file mode 100644 index 0000000..ef3b620 Binary files /dev/null and b/old/1/stamps/h-free-anim.gif differ diff --git a/old/1/stamps/handcode.png b/old/1/stamps/handcode.png new file mode 100644 index 0000000..be51b0e Binary files /dev/null and b/old/1/stamps/handcode.png differ diff --git a/old/1/stamps/linux_powered.gif b/old/1/stamps/linux_powered.gif new file mode 100644 index 0000000..2dbe456 Binary files /dev/null and b/old/1/stamps/linux_powered.gif differ diff --git a/old/1/stamps/neocities_stamp.gif b/old/1/stamps/neocities_stamp.gif new file mode 100644 index 0000000..758271b Binary files /dev/null and b/old/1/stamps/neocities_stamp.gif differ diff --git a/old/1/stamps/piracy.gif b/old/1/stamps/piracy.gif new file mode 100644 index 0000000..37b73b8 Binary files /dev/null and b/old/1/stamps/piracy.gif differ diff --git a/old/1/stamps/tiredaf.gif b/old/1/stamps/tiredaf.gif new file mode 100644 index 0000000..af8793e Binary files /dev/null and b/old/1/stamps/tiredaf.gif differ diff --git a/old/1/stamps/usatoday.gif b/old/1/stamps/usatoday.gif new file mode 100644 index 0000000..9e6fa57 Binary files /dev/null and b/old/1/stamps/usatoday.gif differ diff --git a/old/1/style.css b/old/1/style.css new file mode 100644 index 0000000..9c72a07 --- /dev/null +++ b/old/1/style.css @@ -0,0 +1,57 @@ +@keyframes rainbowtext { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);;} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} +body { + overflow-x: hidden; + color: black; + font-family: Century Gothic,CenturyGothic,AppleGothic,sans-serif; + background-color: black; + background-image: url('images/bg_default.png'); + background-repeat: no-repeat; + background-attachment: fixed; + background-size: cover; + overflow-wrap: break-word; +} +a { + color: dodgerblue; +} +a.tueaday { + color:inherit; + text-decoration:none; +} +a:hover { + color: dodgerblue; +} +#Header { + color: white; + text-shadow: 2px 2px 2px black; + width: 80%; + text-align: center; + margin: auto; + font-size: 1.5em; +} +#navbar{ + border-bottom: 1px solid gainsboro; + overflow: hidden; + display:flex; + justify-content:center; +} +.navbarItem { + flex-grow:1; + text-align: center; + cursor:pointer; +} +.navbarItem:hover { + background-color: gainsboro; +} \ No newline at end of file diff --git a/old/1/tueaday.js b/old/1/tueaday.js new file mode 100644 index 0000000..b0f342b --- /dev/null +++ b/old/1/tueaday.js @@ -0,0 +1,62 @@ +function tueaday() { + var dateObj = new Date() + var weekday = dateObj.toLocaleString("default", { weekday: "short" }).replace('.','') + switch(weekday) { + case "Sun": + return "suday"; + break; + case "Mon": + return "moday"; + break; + case "Tue": + return "tueaday"; + break; + case "Wed": + return "weaday"; + break; + case "Thu": + return "thuday"; + break; + case "Fri": + return "friaday"; + break; + case "Sat": + return "satuaday"; + break; + default: + return dateObj.toLocaleString("default", { weekday: "short" }); + break; + } +} + +function waititsfucking() { + var s = tueaday(); + document.getElementById("tueaday").innerHTML = "wait".concat(' its fucking ', s, '. god.'); +} + +function funnytitle() { + const titles = [ + "Voted Only Page on the Internet in 2022", + "Willy's Epic Website", + "Will's Cool Webpage", + "Welcome to my page :)", + "😎", + "Hi!", + "Over Construction", + "mySite.html", + "RGB Gaming Webpage", + "Stream deep twisty", + "I programmed this feature instead of sleeping", + "I didn't want a .carrd.co URL", + "I use Arch btw", + "Bruh moment", + "Supports VPNs", + "You should try reloading" + ] + document.getElementById("Header").innerHTML = "

".concat(titles[Math.floor(Math.random() * titles.length)], "

"); +} + +function load() { + funnytitle(); + waititsfucking(); +} \ No newline at end of file diff --git a/old/2/audio/bridges.mp3 b/old/2/audio/bridges.mp3 new file mode 100644 index 0000000..d83b98e Binary files /dev/null and b/old/2/audio/bridges.mp3 differ diff --git a/old/2/buttons/ace.png b/old/2/buttons/ace.png new file mode 100644 index 0000000..86b293a Binary files /dev/null and b/old/2/buttons/ace.png differ diff --git a/old/2/buttons/antinft.gif b/old/2/buttons/antinft.gif new file mode 100644 index 0000000..1a4caf0 Binary files /dev/null and b/old/2/buttons/antinft.gif differ diff --git a/old/2/buttons/aro.png b/old/2/buttons/aro.png new file mode 100644 index 0000000..b096a70 Binary files /dev/null and b/old/2/buttons/aro.png differ diff --git a/old/2/buttons/bantimetravel.png b/old/2/buttons/bantimetravel.png new file mode 100644 index 0000000..b63bde0 Binary files /dev/null and b/old/2/buttons/bantimetravel.png differ diff --git a/old/2/buttons/bestviewed.gif b/old/2/buttons/bestviewed.gif new file mode 100644 index 0000000..0b43d5a Binary files /dev/null and b/old/2/buttons/bestviewed.gif differ diff --git a/old/2/buttons/canadian.gif b/old/2/buttons/canadian.gif new file mode 100644 index 0000000..be1d040 Binary files /dev/null and b/old/2/buttons/canadian.gif differ diff --git a/old/2/buttons/chrome.gif b/old/2/buttons/chrome.gif new file mode 100644 index 0000000..791016f Binary files /dev/null and b/old/2/buttons/chrome.gif differ diff --git a/old/2/buttons/deeptwisty_button.png b/old/2/buttons/deeptwisty_button.png new file mode 100644 index 0000000..63a0351 Binary files /dev/null and b/old/2/buttons/deeptwisty_button.png differ diff --git a/old/2/buttons/google_stand.gif b/old/2/buttons/google_stand.gif new file mode 100644 index 0000000..08ffd8b Binary files /dev/null and b/old/2/buttons/google_stand.gif differ diff --git a/old/2/buttons/handcode.png b/old/2/buttons/handcode.png new file mode 100644 index 0000000..be51b0e Binary files /dev/null and b/old/2/buttons/handcode.png differ diff --git a/old/2/buttons/krisbtn.png b/old/2/buttons/krisbtn.png new file mode 100644 index 0000000..a7b0943 Binary files /dev/null and b/old/2/buttons/krisbtn.png differ diff --git a/old/2/buttons/linux_powered.gif b/old/2/buttons/linux_powered.gif new file mode 100644 index 0000000..2dbe456 Binary files /dev/null and b/old/2/buttons/linux_powered.gif differ diff --git a/old/2/buttons/neocities_stamp.gif b/old/2/buttons/neocities_stamp.gif new file mode 100644 index 0000000..c8e8ea4 Binary files /dev/null and b/old/2/buttons/neocities_stamp.gif differ diff --git a/old/2/buttons/niceopod_button.png b/old/2/buttons/niceopod_button.png new file mode 100644 index 0000000..a31848a Binary files /dev/null and b/old/2/buttons/niceopod_button.png differ diff --git a/old/2/buttons/notoweb3.gif b/old/2/buttons/notoweb3.gif new file mode 100644 index 0000000..4f5a2f1 Binary files /dev/null and b/old/2/buttons/notoweb3.gif differ diff --git a/old/2/buttons/nowebp.gif b/old/2/buttons/nowebp.gif new file mode 100644 index 0000000..e63f1f2 Binary files /dev/null and b/old/2/buttons/nowebp.gif differ diff --git a/old/2/buttons/piracy.gif b/old/2/buttons/piracy.gif new file mode 100644 index 0000000..37b73b8 Binary files /dev/null and b/old/2/buttons/piracy.gif differ diff --git a/old/2/buttons/righttorepair.png b/old/2/buttons/righttorepair.png new file mode 100644 index 0000000..154ad36 Binary files /dev/null and b/old/2/buttons/righttorepair.png differ diff --git a/old/2/buttons/tested_on_firefox.gif b/old/2/buttons/tested_on_firefox.gif new file mode 100644 index 0000000..92dbae0 Binary files /dev/null and b/old/2/buttons/tested_on_firefox.gif differ diff --git a/old/2/buttons/usatoday.gif b/old/2/buttons/usatoday.gif new file mode 100644 index 0000000..9e6fa57 Binary files /dev/null and b/old/2/buttons/usatoday.gif differ diff --git a/old/2/icons/deeptwisty.png b/old/2/icons/deeptwisty.png new file mode 100644 index 0000000..31c1ad8 Binary files /dev/null and b/old/2/icons/deeptwisty.png differ diff --git a/old/2/images/2022-05-21_blog_image_1.png b/old/2/images/2022-05-21_blog_image_1.png new file mode 100644 index 0000000..7232f8b Binary files /dev/null and b/old/2/images/2022-05-21_blog_image_1.png differ diff --git a/old/2/images/2022-05-21_blog_image_2.png b/old/2/images/2022-05-21_blog_image_2.png new file mode 100644 index 0000000..a55cf33 Binary files /dev/null and b/old/2/images/2022-05-21_blog_image_2.png differ diff --git a/old/2/images/albums/aeon_core.jpg b/old/2/images/albums/aeon_core.jpg new file mode 100644 index 0000000..e9ad918 Binary files /dev/null and b/old/2/images/albums/aeon_core.jpg differ diff --git a/old/2/images/albums/concrete_and_gold.jpg b/old/2/images/albums/concrete_and_gold.jpg new file mode 100644 index 0000000..5b170f2 Binary files /dev/null and b/old/2/images/albums/concrete_and_gold.jpg differ diff --git a/old/2/images/albums/fucked_up_friends_3.jpg b/old/2/images/albums/fucked_up_friends_3.jpg new file mode 100644 index 0000000..146a133 Binary files /dev/null and b/old/2/images/albums/fucked_up_friends_3.jpg differ diff --git a/old/2/images/albums/funeral.png b/old/2/images/albums/funeral.png new file mode 100644 index 0000000..9ba0dcc Binary files /dev/null and b/old/2/images/albums/funeral.png differ diff --git a/old/2/images/albums/millenialism.jpg b/old/2/images/albums/millenialism.jpg new file mode 100644 index 0000000..3654a62 Binary files /dev/null and b/old/2/images/albums/millenialism.jpg differ diff --git a/old/2/images/albums/revolution_radio.jpg b/old/2/images/albums/revolution_radio.jpg new file mode 100644 index 0000000..eef448c Binary files /dev/null and b/old/2/images/albums/revolution_radio.jpg differ diff --git a/old/2/images/albums/spectrum.png b/old/2/images/albums/spectrum.png new file mode 100644 index 0000000..73a1fd9 Binary files /dev/null and b/old/2/images/albums/spectrum.png differ diff --git a/old/2/images/albums/tortured_waters.jpg b/old/2/images/albums/tortured_waters.jpg new file mode 100644 index 0000000..4376dbe Binary files /dev/null and b/old/2/images/albums/tortured_waters.jpg differ diff --git a/old/2/images/albums/unstoppable_force.png b/old/2/images/albums/unstoppable_force.png new file mode 100644 index 0000000..a240bc9 Binary files /dev/null and b/old/2/images/albums/unstoppable_force.png differ diff --git a/old/2/images/albums/vast.png b/old/2/images/albums/vast.png new file mode 100644 index 0000000..4a7db5b Binary files /dev/null and b/old/2/images/albums/vast.png differ diff --git a/old/2/images/albums/walks_of_lung.jpg b/old/2/images/albums/walks_of_lung.jpg new file mode 100644 index 0000000..66550bf Binary files /dev/null and b/old/2/images/albums/walks_of_lung.jpg differ diff --git a/old/2/images/isopod.png b/old/2/images/isopod.png new file mode 100644 index 0000000..d911ebd Binary files /dev/null and b/old/2/images/isopod.png differ diff --git a/old/2/images/isopod_with_aviators.png b/old/2/images/isopod_with_aviators.png new file mode 100644 index 0000000..03d73df Binary files /dev/null and b/old/2/images/isopod_with_aviators.png differ diff --git a/old/2/images/this_burning.gif b/old/2/images/this_burning.gif new file mode 100644 index 0000000..6b123b4 Binary files /dev/null and b/old/2/images/this_burning.gif differ diff --git a/old/2/index.html b/old/2/index.html new file mode 100644 index 0000000..a3f7e43 --- /dev/null +++ b/old/2/index.html @@ -0,0 +1,58 @@ + + + + + Real isopod hours + + + + + + + + + + + + + + +
+ +
+
+
+ +
+
+
+
+ + + + diff --git a/old/2/pages/blog.html b/old/2/pages/blog.html new file mode 100644 index 0000000..0ae326b --- /dev/null +++ b/old/2/pages/blog.html @@ -0,0 +1,41 @@ +

Inane ramblings

+
+
+

Late May Updates

+

2022-05-21

+

It's getting dangerously close to a month since my last post, which is upsetting to me. Time is supposed to pass slower than this. As they are wont to do, some things have happened since then, and as your reward for finding your way here, you get to read about them.

+

Coming out

+

Most notably, I've come to the understanding that I'm aroaceAromantic-asexual; Defined simply as experiencing little to no romantic or sexual attraction.. I'm still a bit caught up on the minutae, but I'm fairly certain I lie on that spectrum somewhere.

+

The main issue for me at the moment is I'm trying to derive these labels by comparing my experiences with what's normal, but I've grown up believing my experiences were normal and my next most reliable frame of reference is how I see other people reacting to and depicting those emotions, and I kind of have to take it on faith that I'm not feeling them exactly the same way and just responding differently, or something. Thinking about it, it's actually pretty similar to finding out I'm autistic, having to figure out that most people don't engage with the world this way.

+

I could go into way more detail - I've been thinking about this a lot lately - but I've already shared rather a lot more than is remotely necessary. I probably could have stopped at the pride buttons at the bottom of the homepage, but it's nice to get these thoughts out.

+

Patch notes

+

You may notice I've made some changes to the website since my last post, too. I've added a couple new themes, as well as a little guy chilling on the bottom. His name is Charles, and you can click him to visit his house! There's also some new pages: a links page to other websites I think are cool, and a stat table. Also, freegb.net seems to have abruptly and tragically dropped off the face of the earth mere days after I set up the guestbook, so I've replaced it with a cbox channel off to the right of the page.

+

Miscellaneous updates

+

I've upgraded the CPU cooler in my PC. I noticed it was thermal throttling pretty bad with the stock one, so I bought a fancy Noctua aftermarket one, but as I was installing it I noticed that one of the screws on the stock heatsink wasn't screwed in all the way. It was probably overheating because I hadn't installed the damn cooler correctly! Well, at any rate, it does run significantly cooler now, and it doesn't throttle anymore, so mission accomplished I suppose. Inb4 I find out I installed the new one wrong too.

+

I've been accumulating a CD collection. Turns out they're super cheap used on Ebay. It's mostly Foo Fighters at the moment; I'm considering just outright buying their entire discography at this point. I rather like having a copy of all the music I enjoy lest I lose it forever at the whim of some shitass rightsholder, and it's nice to actually substantively support the artist when I buy them new. I make a point to rip all the CDs too; it's very convenient to have a digital copy and it's not like my phone has an optical drive. My ripping program of choice is Asunder, though it's only available for Linux so I can't help you if you're on Windows.

+

I tried pilk recently. One part Pepsi, one part milk. It was wack.

+

There's a dead pixel on my monitor. It's in the bottom left and only lights up blue. Annoying.

+

I've been messing around with my Firefox configuration lately. I've got a real sleek setup going that condenses all the top bar stuff into one line and an extension that matches the top bar color to the color of whatever page I'm on. It's like it's not even there! If y'all want I can write another post or something going into more detail about my setup. Let me know if you'd be interested in that.

+

I've been noticing a lot of my fellow free software likers are big into cryptocurrency. I can understand the appeal for someone with that set of principles, but it shows kind of a flagrant disregard for the environment and a seemingly willful ignorance of crypto's many obvious inherent flaws. Are these really the kind of people I want to associate with? Am I going to have to spend the rest of my life publically denouncing their ilk in order to avoid appearing to be one of them?

+

I'm considering buying a Raspberry Pi (once they become available again) to experiment with web hosting and other such things. Perhaps I could have some fun with that GPIO array. Maybe I could host my own guestbook on there. Could be fun.

+

That's all I've got for now. To close out this post, have this photo of a skink I found on iNaturalist:

+
+
+

Second

+

2022-04-25

+

After 12 days I have become well and truly sick of seeing my blog page with its poor, lonely one post on it, so you get to read more of what should probably be my private thoughts now. Since the, as of now, only other post, I have implemented most of the stuff I said I was going to then, including but not limited to eating breakfast. I think I had a bowl of original Special K that day. As of writing, I have added four new CSS themes to choose from, a page of albums I like, a link to a freegb.net guestbook that currently has one entry, and a "misc" page for small things that wouldn't fit on social media but don't warrant their own page. There's also a fancy URL hash system like Wikipedia has so I can link people to different sections of the page like this. I've yet to get that custom 404 page up and running, though. I don't really have any ideas for it. I also haven't slept.

+

Something fun on the computer

+

This is a weblog, not a changelog, so this post needs some more content. I'm thinking I talk about a videogame you've never heard of. Sound good? Great, 'cause this is my website and I don't care what you think.

+

I've been playing a game recently called Neon Boost. It's a first-person platformer based around rocket-jumping to navigate the levels. If that sounds like a cool concept to you, I'm not alone. However, this is probably one of the worst games in its genre. It's horribly unpolished, buggy, and the level design is criminally bad. It's so broken that it wraps back around to being god damn addicting to play. Neon Boost is a game best enjoyed by utterly ignoring the intent of its designers. If that description somehow sold you on this experience and you'd rather not be spoiled, go play it now. It's free on Steam for Windows and runs great in Proton.

+

So anyway, the fun in this game is in doing everything in your power to completely circumvent the intended path of the level, and there is a shocking amount that is in your power. Your moveset in this game consists of running, jumping, and shooting rockets. If you're caught in the blast of a rocket, it applies a set upward force to you. This presents all sorts of fun exploits. Chiefly, if you jump normally and then shoot a rocket at your feet a split second later, it launches you way higher than either normal jumping or rocket jumping on their own. Combine this with moving diagonally in the airMovement vectors in this game are weird. They're, like, mostly normalized, so running diagonally on the ground doesn't seem to do anything, but in the air, you do go noticeably faster diagonally than just moving straight forward. and you can almost completely skip a few levels.

+

A lot of levels have even funnier exploits, though. In certain spots, you can exploit-jump and then use another rocket to gain even more height. A couple levels in world 1 have train tracks above the level that you can reach this way from the starting platform and walk on to complete the level with a time of 0. See, the in-game timer only starts once you get close enough to something that's part of the stage, and while all of these train tracks have collision, none of them trigger the timer to start because they're not part of the intended route, so you can traverse them for as long as you please without starting the timer. In a couple other levels, the scenery has collision that creates shortcuts over top of it. Two levels in worlds 1 and 3 respectively have shafts you're supposed to drop down that you can ignore if you just exploit-jump around them. My favourite out of all of these, though, is the last level of the second world. This level places you inside a moving cage made of lasers that you're supposed to remain inside until the end of the level, but... just look at this shit.

+

I don't want to spoil the entire game, nor do I want to take up any more space rambling about it. I didn't even talk about the horrible wall-running that seems to only work properly when you're bypassing the level, or the fucked up "lights off" mode that makes you play with something akin to Minecraft's blindness effect. In summary, Neon Boost is the worst first-person platformer ever and you should play it.Try and beat my times. The soundtrack's alright, too.

+
+
+

First

+

2022-04-13

+

As I write this it is six in the morning and I have been up all night coding the page switching on me.deeptwisty.com v2. The system I built takes a URL parameter and loads HTML from a corresponding file into a section on the main page. It would most assuredly have been easier to just hyperlink a bunch of static pages together, but that’s for pussies and also I didn’t want to have to update the navbars and webfont links and such on every single one individually.

+

This is me.deeptwisty.com v2, by the way. I completely rebuilt the entire website from scratch. I don't know if I was just getting bored of the old look of the place or if I was, like, mad at it for what happened with deeptwisty.com proper, but I wanted a change.

+

For context there, here's the story: this place used to be located at deeptwisty.com/me. I felt like moving it to me.deeptwisty.com, because that would look nicer. Now, Neocities requires you to create an entirely new profile in order to hook it up to a subdomain like that. This was fine by me, because deeptwisty.com and /me were functionally two entirely separate sites to begin with, but in the process of transferring the files from /me to the new site, I accidentally uploaded a bunch of them to the wrong profile and overwrote the main homepage and the main CSS file for the entire site. So those are gone now. I took that turn of events as an excuse to rebuild that site from the ground up, because it was incredibly boring, and when I had finished with that I realized I was having fun. So now we're here.

+

If you're reading this post the minute it goes up, this place isn't anywhere near done. It's pretty sleek as it is, but I want to add way more stuff, now that I've got room in my design for it. I intend to add some kind of guestbook or comment box, a theme switcher to load the site with entirely different styling, and pages upon pages of oversharing, among other things. I also want to make a fancy custom 404 page. Maybe put a game on there. You name it, really. Right now, though, I need to eat breakfast and then go to bed. Hopefully I don't forget about this blog immmediately after posting this.

+
diff --git a/old/2/pages/home.html b/old/2/pages/home.html new file mode 100644 index 0000000..b534958 --- /dev/null +++ b/old/2/pages/home.html @@ -0,0 +1,152 @@ +

.

+
+
+

Hello there!

+

My name's Willhe/him pronouns, but I typically go by niceopod on the internet, or deep twisty if you're looking at my music. I make stuff sometimes, like music, or art, or this website. I have been called many things, such as "canadian", "autistic", and "tremendously, stupendously, superhumanly talented".

+

This is my website, where I put links to my accounts on other websites. It started as a way to circumvent the limitations of a free carrd account, but now we're here and I don't think I could go back. It's pretty barren at the moment, but I'd like to put some actual stuff here. Maybe I'll start a blog. That part is outdated. Replacement text pending.

+

You can navigate around using the bar on the left, or the top if you're on mobile. There's a chatbox over → there, say hi! If you're using a mouse, you can also hover over some stuff for more information. I've also got some 88x31 buttons you can useI'd advise you post the image to your site, if you hotlink it will probably break when I inevitably redesign the site again. if for some reason you want to link back here:
Made with this.

+
+
+

What's a "deep twisty"?

+

I felt like I needed a pseudonym for my music, so I made one and now I'm stuck with it. If you must know where it comes from, I was really into Subnautica a couple of years back while its sequel Below Zero was in early access, and I was following this official Twitter account that tweets every git commit that gets made to it. They kept referring to a new biome they were working on, the Deep Twisty Bridges, as just "deep twisty". I thought that sounded really funny.

+

You may notice this is me.deeptwisty.com. deeptwisty.com proper is the site for things I release ~officially~ under that name. Why the distinction? Mostly so that if I ever grow the balls to show my art to my family, they don't manage to find their way to my twitter account.

+
+
+

Software I use

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BrowserFirefoxPlease for the love of god use Firefox. It's currently the only major browser that isn't based on Chrome, and we can't let Google gain monopolistic control over web standards. Plus, Firefox isn't trying to track you the way Chrome is.
VPNMozilla VPNChosen mostly because it seemed good and I wanted to support Mozilla. If I had to pick again, I'd probably choose Mullvad.
DAWLMMSI won't say LMMS is bad, but it is only any good at one thing: composing MIDI audio. VST support is good, but only for instruments, it barely supports samples and audio tracks, and it can't record audio, among other gripes., but I'm trying to switch to REAPERREAPER is great. It solves every problem I had with LMMS. The main thing making it difficult to pick up is the fact that it doesn't play nice with a lot of VSTs, and it doesn't have LMMS's built-in WINE for running my Windows VSTs either.
3D softwareBlenderBlender is incredible. It can do everything: it's got modeling, animation, sculpting, video editing, a built-in Python scripting interface, and a billion and one other things. I probably could've built this website in Blender if I wanted to.
Photo editorGIMPI'd prefer Paint.NET, but it's not available for Linux and I can't get it running in WINE.
IDEVSCodiumAn open-source "clean" build of Visual Studio Code without all of Microsoft's telemetry.
OSManjaro LinuxI use arch btw
+
+ +
+

Changelog

+
+

2022-06-12

+
    +
  • Renamed /misc to /stuff
  • +
  • Added my address to the stats page
  • +
+

2022-05-29

+
    +
  • Added RegExr to the links page
  • +
+

2022-05-25

+
    +
  • Added an RSS feed for the blog!
  • +
  • Demoted the link to me.deeptwisty.com v1 from having its own section on the homepage to being relegated to /misc/
  • +
+

2022-05-23

+ +

2022-05-22

+
    +
  • Added status.cafe widget to the home and blog pages
  • +
  • Added a changelog
  • +
+

2022-05-21

+
    +
  • Added stats table page
  • +
  • Added a cbox channel →
  • +
  • New blog post!
  • +
+
+
+
+ + + + + + + + + + + + Regrettably + + + + + + +
diff --git a/old/2/pages/links.html b/old/2/pages/links.html new file mode 100644 index 0000000..660a7c8 --- /dev/null +++ b/old/2/pages/links.html @@ -0,0 +1,64 @@ +

Cool stuff

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Easy USSRA comprehensive beginner's guide to Legally Acquiring Media
Jam IconsThe icon set I use for the navbar over ← there
Burning Text GeneratorDoes
Zalgo Text GeneratorDoes t̵̝̻̘͒̓̈́h̵͇͙͔́̾i̵͎̪̞͊́̾s̵̫̼̀̾
crouton.netcrouton
Dracula DailyRead Bram Stoker's Dracula in real time, in your email inbox.
3DS Hacks GuideA comprehensive guide for modding 2ds and 3ds consoles. I know it's legit because I used it on mine.
hShopA repository of software for your freshly hacked 3ds
Wobble TownA cute little virtual pet!
NewpipeA better YouTube client for Android
switching.softwareA curated list of alternatives to popular software and services from companies like Google and Amazon.
Cornell Lab Bird CamsLive bird cams!
RegExrA website to test regular expressions for you
YesterlinksMore cool links
+
+ \ No newline at end of file diff --git a/old/2/pages/music.html b/old/2/pages/music.html new file mode 100644 index 0000000..58a8a4d --- /dev/null +++ b/old/2/pages/music.html @@ -0,0 +1,49 @@ +

Albums I like

+ \ No newline at end of file diff --git a/old/2/pages/stats.html b/old/2/pages/stats.html new file mode 100644 index 0000000..041225a --- /dev/null +++ b/old/2/pages/stats.html @@ -0,0 +1,95 @@ + + +

Stats

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Height191cm
Storage space4.9TiB
Packages1451
Desktop environmentKDE Plasma
CDs owned6
Consoles modded1
Computers upgraded2
Computers downgraded1I upgraded my old laptop with a second hard drive, then transplanted the drive into my new PC later when I was building it. All my stuff was on the secondary drive, I figured why bother transferring it?
Websites2
Talent[Integer overflow error]
Bitches0
HotelTrivago
SpeciesBathynomus Giganteus
Pronounshe/him
3.5mm headphone jackyes
Font familymonospace
Drop rates1-3 bags of Doritos - 80%
Wired earbuds - 10%
Random Linux install media - 1%
Song
Efficiency rating80+ Gold
Home address12h 28m 24.97s, +31° 28′ 37.7″
Time playing Space Engineers587 hours
archbtw
+
diff --git a/old/2/script.js b/old/2/script.js new file mode 100644 index 0000000..125b87c --- /dev/null +++ b/old/2/script.js @@ -0,0 +1,102 @@ +function header(index) { + var rh = document.getElementById('randomheader'); + var Title = document.getElementById('header').innerHTML; + if(rh != undefined) { + const titles = [ + 'bruh moment', + 'Try reloading!', + 'Supports VPNs', + 'I use arch btw', + 'niceopod v2', + 'RGB Gaming Webpage', + 'Stream deep twisty', + 'MySite.html', + 'Over Construction', + 'Real isopod hours', + 'Version 2.0: the Verbose Update', + 'depytwisty', + '[object Object]', + 'Uses cookies', + '* You found the [Moss]!', + 'Minceraft', + 'Best viewed with Firefox', + 'Isopod gaming', + 'Website of some guy', + 'your mom', + 'Badly programmed', + 'Upside Down!', + 'Fuck crypto', + 'Oh, you know ;)', + 'gamer (terminal)' + ]; + if(index < 0 || index >= titles.length) { + index = Math.floor(Math.random() * titles.length); + } + var choice = titles[index]; + Title = choice; + document.getElementById('randomheader').innerHTML = choice; + } + if(Title === "Stats") { + Title = `Stats: ${document.getElementsByTagName('tr').length}`; + document.getElementById('header').innerHTML = Title; + } + document.title = Title; + document.getElementById('header').style.animationName = 'happear'; +} +function loadCafeStatus() { + statuscontainer = document.getElementById("status"); + if(statuscontainer !== null) { + statuscontainer.innerHTML = '
'; + fetch("https://status.cafe/users/niceopod/status.json") + .then( r => r.json() ) + .then( r => { + if (!r.content.length) { + document.getElementById("statuscafe-content").innerHTML = "No status yet." + return + } + document.getElementById("statuscafe-username").innerHTML = '' + r.author + ' ' + r.face + ' ' + r.timeAgo + document.getElementById("statuscafe-content").innerHTML = r.content + } + ) + } +} +function getUrlVars() { + var vars = {}; + var url = window.location.href; + if(window.location.hash !== "") { + url = url.substring(0, url.lastIndexOf('#')); + } + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { //I copied this function from somewhere. I have no idea what this expression is doing. I'm scared of it + vars[key] = value; + }); + return vars; +} +function page() { + var preferredTheme = window.localStorage.getItem("theme"); + if(preferredTheme == undefined) { + preferredTheme = "default"; + } + document.getElementById("theme").href = `themes/${preferredTheme}/style.css`; + + document.getElementById("pretheme").remove(); + + var currentPage = getUrlVars()['page']; + if(currentPage == undefined) { currentPage = 'home'; } + + if(currentPage.indexOf('#') > -1) { + currentPage = currentPage.substring(0, currentPage.lastIndexOf('#')); + } + + fetch(`pages/${currentPage}.html`) + .then(response => response.text()) + .then(data => { document.getElementById('centercolumn').innerHTML = data; if(document.getElementById('404') !== null) { window.location.replace('not_found.html'); } header(-69); loadCafeStatus(); scrollToHash();}); +} +function switchTheme (theme) { + document.getElementById("theme").href = `themes/${theme}/style.css`; + window.localStorage.setItem("theme", theme); +} +function scrollToHash() { + if(window.location.hash !== "") { + document.getElementById(window.location.hash.substring(1)).scrollIntoView(); + } +} \ No newline at end of file diff --git a/old/2/shared.css b/old/2/shared.css new file mode 100644 index 0000000..c8db590 --- /dev/null +++ b/old/2/shared.css @@ -0,0 +1,224 @@ +body, html { + height: 100%; + font-family: var(--stdfont); +} +body { + margin: 0; + padding: 0; + color: var(--fontcolor); +} +#main { + height: 100%; + display: flex; + justify-content: center; + margin: 0; + padding: 0; +} +#centercolumn { + min-height: 100%; + height: fit-content; + width: 80%; + max-width: 650px; +} +#header { + padding: 40px; + background-image: url("images/isopod_with_aviators.png"); + background-size: 128px; + background-repeat: no-repeat; + background-position: 90% bottom; +} +#themeselector { + position: fixed; + left: -250px; + height: 100%; + z-index: 1; + display: flex; + flex-direction: column; + justify-content: center; + animation-fill-mode: both; +} +#themeselector a { + cursor: pointer; +} +@keyframes tsappear { + from {left: -250px;} + to {left: 0px;} +} +@keyframes tsdisappear { + from {left: 0px;} + to {left: -250px;} +} +#nav { + position: fixed; + display: flex; + flex-direction: column; + justify-content: center; + height: 100%; + z-index: 2; +} +#nav a { + color: black; + margin-top: 5px; + margin-bottom: 5px; + margin-left: 0; + margin-right: 0; + font-size: 0; + padding: 10px; + transition-duration: 0.2s; +} +#nav svg { + width: 32px; + height: 32px; +} +@media (max-width: 900px) or (orientation: portrait) { + #nav { + flex-direction: row; + height: initial; + width: 100%; + } + #header { + margin-top: 60px; + } + #nav a { + margin-top: 0; + margin-bottom: 0; + margin-left: 5px; + margin-right: 5px; + } +} +@media (max-width: 700px) { + #centercolumn { + width: 100%; + padding-left: 10%; + padding-right: 10%; + box-shadow: none; + } + body { + overflow-x: hidden; + } + #header {margin-left: auto; margin-right: auto;} +} +@media (max-width: 600px) { + .tdc {display: none;} +} +.hoverable { + color: var(--linkcolor); +} +.hoverable:hover { + color: var(--linkhovercolor); +} +.tooltip { + font-size: 14pt; + color: var(--fontcolor); + position: absolute; + display: none; + max-width: 600px; +} +.hoverable:hover .tooltip { + display: initial; +} +#buttons { + display: flex; + flex-wrap: wrap; + justify-content: center; + align-items: center; + font-size: 0; + margin-bottom: 16px; +} +#buttons img { + margin: 2px; +} +td:nth-child(2n) { + padding-left: 10px; +} +.rainbowtext { + animation-name: rainbow-text; + animation-duration: 20s; + animation-iteration-count: infinite; +} +.flipped { + display: inline-block; + transform: rotate(180deg); +} +#albums { + padding-top: 30px; + margin-bottom: 30px; +} +#albums img { + max-width: 100%; +} +#albums td { + padding: 0; + width: 50%; +} +#albums .ara { + text-align: right; + padding: 15px; +} +#albums .ala { + text-align: left; + padding: 15px; +} +#albums .aimg { + font-size: 0; +} +#linktable td { + padding: 10px 0; +} +.serif { + font-family: serif; +} +.centered { + text-align: center; +} +.spaced_on_hover, .spaced_on_hover a { + transition-duration: 0.5s; +} +.spaced_on_hover:hover { + letter-spacing: 0.4ch; +} +table { + border-collapse: collapse; +} +#chatbox { + position: fixed; + height: fit-content; + width: 18rem; + padding: 0; + bottom: calc(50% - 450px / 2); + right: -18rem; + transition-duration: 1s; +} +#chatbox:hover { + right: 0.5rem; +} +#chatboxpulltab { + min-width: 3rem; + min-height: 3rem; + position: absolute; + bottom: calc(50% - 1.5rem); + left: -3rem; + display: flex; + align-items: center; + justify-content: center; +} +#statstable { + width: 100%; +} +#statstable td { + padding: .5rem 1rem; +} +#statstable tr:nth-child(2n+1) { + background: rgba(255, 255, 255, 0.1); +} +#statuscafe-username { + font-size: 0.85em; + margin-bottom: 0.2rem; +} +#changelogwindow { + max-height: 15rem; + overflow-y: scroll; +} +#changelogwindow p:first-child { + margin-top: 0; +} \ No newline at end of file diff --git a/old/2/themes/alterra/bg.jpg b/old/2/themes/alterra/bg.jpg new file mode 100644 index 0000000..56e94f2 Binary files /dev/null and b/old/2/themes/alterra/bg.jpg differ diff --git a/old/2/themes/alterra/style.css b/old/2/themes/alterra/style.css new file mode 100644 index 0000000..f046a8e --- /dev/null +++ b/old/2/themes/alterra/style.css @@ -0,0 +1,193 @@ +:root { + --stdfont: 'Ubuntu', Century Gothic, CenturyGothic, AppleGothic, sans-serif; + --fontcolor: white; + --linkcolor: #35e0be; + --linkhovercolor: #64cdeb; +} +body { + background-image: url("bg.jpg"); + background-attachment: fixed; + background-size: cover; + background-position: center; + overflow-x: hidden; +} +#header { + font-family: 'Days One', var(--stdfont); + text-align: center; + font-size: 3.4em; + color: var(--fontcolor); + text-shadow: 4px 4px 4px black; + margin-bottom: 5px; + margin-top: 0; + animation-duration: 1s; + animation-fill-mode: both; + text-transform: uppercase; + opacity: 0; + max-width: 750px; + padding-left: 51px; + padding-right: 51px; + padding-top: 40px; + padding-bottom: 40px; +} +@keyframes happear { + from { + opacity: 0; + margin-left: -50px; + margin-right: -50px; + } to { + opacity: 1; + margin-left: -50px; + margin-right: -50px; + } +} +#centercolumn { + width: fit-content; + max-width: fit-content; + padding: 0; +} +.section { + font-size: 1.2em; + background-image: radial-gradient(#149489c7 2px, transparent 2px); + background-size: 100px 100px; + background-color: #0020289a; + padding: 20px 50px; + border-radius: 50px; + border: 2px solid rgb(152, 222, 255); + box-shadow: 0 0 45px blue inset, 0 0 10px blue; + margin-bottom: 35px; + width: 650px; +} +.section h2 { + color: #64cdeb; + border-bottom: 2px solid #cdd649; + width: fit-content; + font-family: 'Days One', var(--stdfont); +} +.section h3 { + color: #35e0be; + font-family: 'Days One', var(--stdfont); + font-weight: 400; + font-size: 0.8em; + margin-top: -20px; +} +.section h4 { + font-size: 1.1em; + color: #64cdeb; + border-bottom: 2px solid #cdd649; + width: fit-content; + font-family: 'Days One', var(--stdfont); +} +a { + color: var(--linkcolor); + text-decoration: none; + transition-duration: 0.2s; +} +a:hover { + color: var(--linkhovercolor); +} +#themeselector { + background-image: radial-gradient(#149489c7 2px, transparent 2px); + background-size: 100px 100px; + background-color: #0020284b; + border-right: 2px solid rgb(152, 222, 255); + box-shadow: -45px 0 45px -45px blue inset, 0 0 10px blue; + padding-left: 90px; + padding-right: 50px; + font-size: 1.2em; + animation-duration: 0.7s; +} +#nav a { + color: gainsboro; + border: 2px solid #10b0b3e3; + box-shadow: 0 0 14px #10b0b3e3 inset, 0 0 1px 6px #00202877; + border-radius: 50%; + background-color: #00202877; + margin-left: 6px; +} +#nav a:hover { + background-color: #ffffff1c; +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } + #nav a { + margin-left: 0; + margin-top: 6px; + } +} +@media (max-width: 750px) { + #centercolumn { + width: 100%; + max-width: 100%; + } + .section { + width: 100%; + max-width: 100%; + padding: 20px 0; + border-radius: 0; + border-left: none; + border-right: none; + box-shadow: 0 -45px 45px -45px blue inset, 0 45px 45px -45px blue inset, 0 0 10px blue; + } +} +.hoverable { + transition-duration: 0.2s; +} +.tooltip { + background-image: radial-gradient(#149489c7 2px, transparent 2px); + background-size: 100px 100px; + background-color: #0020289a; + padding: 10px 20px; + border-radius: 25px; + border: 2px solid rgb(152, 222, 255); + box-shadow: 0 0 24px blue inset, 0 0 6px blue; + margin-left: -5px; +} +.emph { + font-style: italic; +} +@keyframes rainbow-text { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);;} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} +table { + margin-bottom: 30px; +} +#albums { + margin-top: 0; + padding: 50px; +} +#albums table { + margin-bottom: 0; +} +#statstable { + margin-bottom: 0; +} +#linktable { + margin-bottom: 15px; +} +#chatboxpulltab { + left: -5rem; + padding: 1rem; +} +#chatboxpulltab svg { + color: gainsboro; + border: 2px solid #10b0b3e3; + box-shadow: 0 0 14px #10b0b3e3 inset, 0 0 1px 6px #00202877; + border-radius: 50%; + background-color: #00202877; + padding: 10px; + height: 32px; + width: 32px; +} \ No newline at end of file diff --git a/old/2/themes/deeptwisty/bg.png b/old/2/themes/deeptwisty/bg.png new file mode 100644 index 0000000..d33e1c8 Binary files /dev/null and b/old/2/themes/deeptwisty/bg.png differ diff --git a/old/2/themes/deeptwisty/style.css b/old/2/themes/deeptwisty/style.css new file mode 100644 index 0000000..a99876d --- /dev/null +++ b/old/2/themes/deeptwisty/style.css @@ -0,0 +1,127 @@ +:root { + --stdfont: 'Ubuntu', Century Gothic, CenturyGothic, AppleGothic, sans-serif; + --fontcolor: gainsboro; + --linkcolor: #226dff; + --linkhovercolor: #5cc3ff; +} +body { + background: black url("bg.png"); + background-attachment: fixed; + background-size: cover; + background-position: center; +} +#centercolumn { + background: #000000f2;; + margin-top: -20px; + padding-top: 20px; + box-shadow: 0 0px 45px 70px #000000f2; +} +#header { + text-align: center; + font-size: 3.4em; + color: transparent; + -webkit-text-stroke-color: var(--fontcolor); + -webkit-text-stroke-width: 2px; + text-shadow: 0 0 12px white; + margin-bottom: -10px; + margin-top: 0; + animation-duration: 2s; + animation-fill-mode: both; + opacity: 0; +} +@keyframes happear { + from { + opacity: 0; + } to { + opacity: 1; + } +} +.section { + width: 100%; + font-size: 1.2em; +} +.section h2 { + text-shadow: 0 0 7px white; +} +.section h3 { + text-shadow: 0 0 2px white; + font-weight: 400; + font-size: 0.8em; + margin-top: -20px; +} +.section h4 { + text-shadow: 0 0 4px white; + font-size: 1.2em; +} +a { + color: var(--linkcolor); + text-shadow: 0 0 3px var(--linkcolor); + text-decoration: none; + transition-duration: 0.2s; +} +a:hover { + color: var(--linkhovercolor); + text-shadow: 0 0 7px var(--linkhovercolor); +} +#themeselector { + background: #000000f2; + box-shadow: 0 0 20px 20px #000000f2; + padding-left: 90px; + padding-right: 20px; + font-size: 1.2em; + animation-duration: 0.7s; +} +#nav { + background: #000000f2; + box-shadow: 0 0 20px 20px #000000f2; +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } +} +#nav a { + color: gainsboro; +} +#nav a:hover { + background-color: #ffffff10; + box-shadow: 0 0 6px 6px #ffffff10; +} +.hoverable { + text-shadow: 0 0 3px var(--linkcolor); + transition-duration: 0.2s; +} +.hoverable:hover { + text-shadow: 0 0 7px var(--linkhovercolor); +} +.tooltip { + background-color: #000000f2; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 8px; + padding-right: 8px; + box-shadow: 0 0 10px 10px #000000f2; +} +.hoverable:hover .tooltip { + text-shadow: none; +} +.emph { + font-style: italic; +} +@keyframes rainbow-text { + 100%,0%{-webkit-text-stroke-color: rgb(255,0,0); text-shadow: 0 0 12px rgb(216, 1, 1);} + 8%{-webkit-text-stroke-color: rgb(255,127,0); text-shadow: 0 0 12px rgb(211, 105, 0);} + 16%{-webkit-text-stroke-color: rgb(255,255,0); text-shadow: 0 0 12px rgb(214, 214, 0);} + 25%{-webkit-text-stroke-color: rgb(127,255,0); text-shadow: 0 0 12px rgb(105, 211, 0);} + 33%{-webkit-text-stroke-color: rgb(0,255,0); text-shadow: 0 0 12px rgb(0, 204, 0);;} + 41%{-webkit-text-stroke-color: rgb(0,255,127); text-shadow: 0 0 12px rgb(0, 209, 105);} + 50%{-webkit-text-stroke-color: rgb(0,255,255); text-shadow: 0 0 12px rgb(0, 202, 202);} + 58%{-webkit-text-stroke-color: rgb(0,127,255); text-shadow: 0 0 12px rgb(0, 103, 206);} + 66%{-webkit-text-stroke-color: rgb(0,0,255); text-shadow: 0 0 12px rgb(0, 0, 206);} + 75%{-webkit-text-stroke-color: rgb(127,0,255); text-shadow: 0 0 12px rgb(103, 0, 206);} + 83%{-webkit-text-stroke-color: rgb(255,0,255); text-shadow: 0 0 12px rgb(211, 0, 211);} + 91%{-webkit-text-stroke-color: rgb(255,0,127); text-shadow: 0 0 12px rgb(211, 0, 105);} +} +div#buttons { + margin-top: 2rem; +} \ No newline at end of file diff --git a/old/2/themes/default/bg.jpg b/old/2/themes/default/bg.jpg new file mode 100644 index 0000000..feeaadb Binary files /dev/null and b/old/2/themes/default/bg.jpg differ diff --git a/old/2/themes/default/div-bg.png b/old/2/themes/default/div-bg.png new file mode 100644 index 0000000..1225179 Binary files /dev/null and b/old/2/themes/default/div-bg.png differ diff --git a/old/2/themes/default/style.css b/old/2/themes/default/style.css new file mode 100644 index 0000000..08bfef1 --- /dev/null +++ b/old/2/themes/default/style.css @@ -0,0 +1,127 @@ +:root { + --stdfont: 'Raleway', Century Gothic, CenturyGothic, AppleGothic, sans-serif; + --fontcolor: white; + --linkcolor: #df1955; + --linkhovercolor: #00ffd5; +} +body { + background-image: url("bg.jpg"); + background-attachment: fixed; + background-size: cover; + background-position: center; +} +#centercolumn { + background: #222222 url("div-bg.png"); + padding-left: 50px; + padding-right: 50px; + margin-top: -20px; + padding-top: 20px; + box-shadow: 0 10px 8px 4px black inset; +} +#header { + text-align: center; + font-size: 3.4em; + color: var(--fontcolor); + margin-bottom: -10px; + margin-top: 0; + animation-duration: 1s; + animation-fill-mode: both; + opacity: 0; + text-shadow: 4px 4px 4px black; +} +@keyframes happear { + from { + opacity: 0; + letter-spacing: 0.2ch; + margin-left: -200px; + margin-right: -200px; + } to { + opacity: 1; + letter-spacing: normal; + margin-left: -50px; + margin-right: -50px; + } +} +.section { + width: 100%; + font-size: 1.2em; +} +.section h2 { + text-shadow: 2px 2px 3px black; +} +.section h3 { + text-shadow: 1px 1px 2px black; + font-weight: 400; + font-size: 0.8em; + margin-top: -20px; +} +.section h4 { + font-size: 1.2em; + text-shadow: 2px 2px 3px black; +} +a { + color: var(--linkcolor); + text-decoration: none; + transition-duration: 0.2s; +} +a:hover { + color: var(--linkhovercolor); +} +#themeselector { + background: #222222 url("div-bg.png"); + box-shadow: 0 0 8px 4px black; + padding-left: 90px; + padding-right: 40px; + font-size: 1.2em; + animation-duration: 0.7s; +} +#nav { + background: #222222 url("div-bg.png"); + box-shadow: 0 0 8px 4px black; +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } +} +#nav a:hover { + background-color: #ffffff10; +} +#nav a { + color: gainsboro; +} +.hoverable { + transition-duration: 0.2s; +} +.tooltip { + background-color: #222222; + border: 2px outset gainsboro; + padding-top: 5px; + padding-bottom: 5px; + padding-left: 8px; + padding-right: 8px; + box-shadow: 2px 2px 8px black; +} +.emph { + font-style: italic; +} +@keyframes rainbow-text { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} +#albums img { + box-shadow: 2px 2px 8px 2px black; +} +div#buttons { + margin-top: 2rem; +} \ No newline at end of file diff --git a/old/2/themes/geocities/beam.png b/old/2/themes/geocities/beam.png new file mode 100644 index 0000000..fa09122 Binary files /dev/null and b/old/2/themes/geocities/beam.png differ diff --git a/old/2/themes/geocities/bg.gif b/old/2/themes/geocities/bg.gif new file mode 100644 index 0000000..8471f83 Binary files /dev/null and b/old/2/themes/geocities/bg.gif differ diff --git a/old/2/themes/geocities/butterfly.gif b/old/2/themes/geocities/butterfly.gif new file mode 100644 index 0000000..baa965e Binary files /dev/null and b/old/2/themes/geocities/butterfly.gif differ diff --git a/old/2/themes/geocities/butterflyrockplant.gif b/old/2/themes/geocities/butterflyrockplant.gif new file mode 100644 index 0000000..99d65a3 Binary files /dev/null and b/old/2/themes/geocities/butterflyrockplant.gif differ diff --git a/old/2/themes/geocities/fire.gif b/old/2/themes/geocities/fire.gif new file mode 100644 index 0000000..d8bf16b Binary files /dev/null and b/old/2/themes/geocities/fire.gif differ diff --git a/old/2/themes/geocities/ocean-div.gif b/old/2/themes/geocities/ocean-div.gif new file mode 100644 index 0000000..b757786 Binary files /dev/null and b/old/2/themes/geocities/ocean-div.gif differ diff --git a/old/2/themes/geocities/orb.gif b/old/2/themes/geocities/orb.gif new file mode 100644 index 0000000..52e9182 Binary files /dev/null and b/old/2/themes/geocities/orb.gif differ diff --git a/old/2/themes/geocities/rainbowball.gif b/old/2/themes/geocities/rainbowball.gif new file mode 100644 index 0000000..9261df9 Binary files /dev/null and b/old/2/themes/geocities/rainbowball.gif differ diff --git a/old/2/themes/geocities/rose.gif b/old/2/themes/geocities/rose.gif new file mode 100644 index 0000000..3f12a4b Binary files /dev/null and b/old/2/themes/geocities/rose.gif differ diff --git a/old/2/themes/geocities/snail.gif b/old/2/themes/geocities/snail.gif new file mode 100644 index 0000000..460f0e5 Binary files /dev/null and b/old/2/themes/geocities/snail.gif differ diff --git a/old/2/themes/geocities/snake.gif b/old/2/themes/geocities/snake.gif new file mode 100644 index 0000000..8e1330b Binary files /dev/null and b/old/2/themes/geocities/snake.gif differ diff --git a/old/2/themes/geocities/star.gif b/old/2/themes/geocities/star.gif new file mode 100644 index 0000000..5f06739 Binary files /dev/null and b/old/2/themes/geocities/star.gif differ diff --git a/old/2/themes/geocities/star2.gif b/old/2/themes/geocities/star2.gif new file mode 100644 index 0000000..f8321d4 Binary files /dev/null and b/old/2/themes/geocities/star2.gif differ diff --git a/old/2/themes/geocities/star3.gif b/old/2/themes/geocities/star3.gif new file mode 100644 index 0000000..289f8b6 Binary files /dev/null and b/old/2/themes/geocities/star3.gif differ diff --git a/old/2/themes/geocities/star4.gif b/old/2/themes/geocities/star4.gif new file mode 100644 index 0000000..b50d808 Binary files /dev/null and b/old/2/themes/geocities/star4.gif differ diff --git a/old/2/themes/geocities/style.css b/old/2/themes/geocities/style.css new file mode 100644 index 0000000..a38d2ba --- /dev/null +++ b/old/2/themes/geocities/style.css @@ -0,0 +1,138 @@ +:root { + --stdfont: sans-serif; + --headerfont: serif, var(--stdfont); +} +body { + background: url('snail.gif') no-repeat fixed bottom 0 left calc(50% - 750px), url('world.gif') no-repeat fixed top 200px left calc(50% + 550px), url('sun.gif') fixed no-repeat top 69px left 100px, url('torch.gif') no-repeat fixed bottom left calc(50% - 350px), url('butterflyrockplant.gif') no-repeat fixed bottom -10px left calc(50% + 500px), url('star4.gif') no-repeat fixed bottom 200px left calc(50% - 800px), url('star3.gif') no-repeat fixed top 69px left calc(50% + 800px), url('star2.gif') no-repeat fixed top 300px right calc(50% + 700px), url('rose.gif') bottom -20px left calc(50% - 600px) fixed no-repeat, url('star.gif') no-repeat fixed bottom 300px left calc(50% + 630px), url('fire.gif') no-repeat bottom left 10px fixed, url('butterfly.gif') no-repeat fixed bottom 150px left calc(50% - 500px), url('snake.gif') fixed no-repeat bottom left calc(50% + 840px), url('bg.gif') fixed; + font-family: var(--stdfont); + color: gainsboro; +} +#centercolumn { + background: url('rainbowball.gif') 52px 30px no-repeat, url('beam.png') repeat-y 75px 0; +} +.section { + width: 100%; + font-size: 1.1em; + background: #000000f9; + padding: 10px 30px; + border: 4px outset rgb(48, 4, 119); + margin-bottom: 40px; +} +.section:last-of-type { + background: #000000f9 url('ocean-div.gif') repeat-x bottom center; +} +#buttons { + padding-bottom: 30px; +} +a { + color: gold; +} +a:visited { + color: goldenrod; +} +#header { + font-family: 'Orbitron', sans-serif; + font-weight: 700; + text-align: center; + font-size: 2.5em; + width: 100%; +} +.section h2 { + background: url('orb.gif') no-repeat center right; + font-family: var(--headerfont); + font-size: 1.8em; + margin-top: 20px; + margin-bottom: 10px; +} +.section h3 { + font-family: var(--headerfont); + margin-top: -10px; + font-size: 0.8em; +} +.section h4 { + font-family: var(--headerfont); + font-size: 1.2em; +} +.section table { + margin-bottom: 20px; +} +#linktable { + margin-bottom: initial; +} +#nav a { + color: gainsboro; +} +#themeselector { + padding-left: 90px; + padding-right: 40px; + font-size: 1.1em; + animation-duration: 0.7s; + background-color: #000000f9; + border-right: 4px outset rgb(48, 4, 119); +} +#themeselector a { + color: gold; + text-decoration: underline; +} +#themeselector h3 { + font-family: var(--headerfont); +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } + #centercolumn { + padding: 0; + } + .section { + width: calc(100% - 68px); + } +} +.hoverable { + color: #0000EE; + text-decoration: underline; +} +.hoverable:hover { + color: #551A8B; +} +.tooltip { + color: black; + background-color: white; + border: 1px solid black; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 4px; + padding-right: 4px; +} +.emph { + font-style: italic; +} +.serif { + font-family: serif; +} +.hoverable { + color: gold; +} +.hoverable:hover { + color: goldenrod; +} +.hoverable .tooltip { + color: gainsboro; + padding: 6px 12px; + background-color: #000000f9; + border: 3px outset gold; +} +@keyframes rainbow-text { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);;} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} \ No newline at end of file diff --git a/old/2/themes/geocities/sun.gif b/old/2/themes/geocities/sun.gif new file mode 100644 index 0000000..946b0e7 Binary files /dev/null and b/old/2/themes/geocities/sun.gif differ diff --git a/old/2/themes/geocities/torch.gif b/old/2/themes/geocities/torch.gif new file mode 100644 index 0000000..93e5e59 Binary files /dev/null and b/old/2/themes/geocities/torch.gif differ diff --git a/old/2/themes/geocities/world.gif b/old/2/themes/geocities/world.gif new file mode 100644 index 0000000..9cbe4c9 Binary files /dev/null and b/old/2/themes/geocities/world.gif differ diff --git a/old/2/themes/gruvbox/bg.png b/old/2/themes/gruvbox/bg.png new file mode 100644 index 0000000..b7a8500 Binary files /dev/null and b/old/2/themes/gruvbox/bg.png differ diff --git a/old/2/themes/gruvbox/style.css b/old/2/themes/gruvbox/style.css new file mode 100644 index 0000000..3fee1a5 --- /dev/null +++ b/old/2/themes/gruvbox/style.css @@ -0,0 +1,121 @@ +:root { + --stdfont: 'Montserrat', Century Gothic, CenturyGothic, AppleGothic, sans-serif; + --fontcolor: #ebdbb2; + --linkcolor: #458488; + --linkhovercolor: #83a598; +} +body { + background: #282828 url('bg.png'); + background-attachment: fixed; + background-size: cover; + background-position: center; +} +#centercolumn { + display: flex; + flex-direction: column; + align-items: center; +} +#header { + text-align: center; + font-size: 3.4em; + color: var(--fontcolor); + margin-bottom: 10px; + margin-top: 0; + animation-duration: 1s; + animation-fill-mode: both; + opacity: 0; + min-width: 100%; + margin-left: -1000px; + margin-right: -1000px; +} +@keyframes happear { + from { + opacity: 0; + letter-spacing: 0.2ch; + } to { + opacity: 1; + letter-spacing: normal; + } +} +.section { + padding: 30px; + border-radius: 16px; + background: #1d2021f1; + width: 100%; + font-size: 1.2em; + margin-bottom: 20px; +} +.section h2 { + margin-top: 0; +} +.section h3 { + font-weight: 400; + font-size: 0.8em; + margin-top: -20px; +} +.section h4 { + font-size: 1.2em; +} +.section p { + margin-bottom: 0; +} +a { + color: var(--linkcolor); + text-decoration: none; + transition-duration: 0.2s; +} +a:hover { + color: var(--linkhovercolor); +} +#themeselector { + background: #1d2021f1; + padding-left: 90px; + padding-right: 40px; + font-size: 1.2em; + animation-duration: 0.7s; +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } + #header { + margin-left: 0; + margin-right: 0; + width: 100%; + } +} +#nav a { + color: var(--fontcolor); + border-radius: 50%; +} +#nav a:hover { + transform: rotate(-6deg); + background-color: #ffffff10; +} +#nav svg { + width: 32px; + height: 32px; +} +.hoverable { + transition-duration: 0.2s; +} +.tooltip { + background-color: #1d2021f1; + border-radius: 16px; + padding-top: 8px; + padding-bottom: 8px; + padding-left: 11px; + padding-right: 11px; + box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.267); +} +.emph { + font-style: italic; +} +@keyframes rainbow-text { + 100%,0%{color: #cc241d; text-shadow: 0 0 4px #cc241d;} + 8%{color: #fe8019; text-shadow: 0 0 4px #fe8019;} + 16%{color: #fabd2f; text-shadow: 0 0 4px #fabd2f;} + 33%{color: #b8bb26; text-shadow: 0 0 4px #b8bb26;} + 58%{color: #458588; text-shadow: 0 0 4px #458588;} + 75%{color: #b16286; text-shadow: 0 0 4px #b16286;} +} \ No newline at end of file diff --git a/old/2/themes/none/style.css b/old/2/themes/none/style.css new file mode 100644 index 0000000..82ba913 --- /dev/null +++ b/old/2/themes/none/style.css @@ -0,0 +1,62 @@ +.section { + width: 100%; + font-size: 1.2em; +} +.section h3 { + margin-top: -10 px; +} +#themeselector { + padding-left: 90px; + padding-right: 40px; + font-size: 1.2em; + animation-duration: 0.7s; + background-color: white; +} +#themeselector a { + color: #0000EE; + text-decoration: underline; +} +@media (max-width: 900px) or (orientation: portrait) { + #themeselector { + padding-left: 40px; + } +} +.hoverable { + color: #0000EE; + text-decoration: underline; +} +.hoverable:hover { + color: #551A8B; +} +.tooltip { + color: black; + background-color: white; + border: 1px solid black; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 4px; + padding-right: 4px; +} +.emph { + font-style: italic; +} +.serif { + font-family: sans-serif; +} +@keyframes rainbow-text { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);;} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} +div#buttons { + margin-top: 2rem; +} \ No newline at end of file diff --git a/seasonal.php b/seasonal.php new file mode 100644 index 0000000..9954795 --- /dev/null +++ b/seasonal.php @@ -0,0 +1,9 @@ +#bubblecolumn {display: none;} body {background-color: black;} a {color: orange;} a:hover {color: yellow;} #leftsidebg, #rightsidebg {filter: grayscale(100%);}'; +} +?> \ No newline at end of file diff --git a/stats/bg.png b/stats/bg.png new file mode 100644 index 0000000..cf688b2 Binary files /dev/null and b/stats/bg.png differ diff --git a/stats/index.php b/stats/index.php new file mode 100644 index 0000000..7a01140 --- /dev/null +++ b/stats/index.php @@ -0,0 +1,172 @@ + + + + + Stats + + + + + + +

stat tracker

+

100% RealTrue™ statistics

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $boogeraids"; + ?> + + + + + +
Height194cm
Storage space4.9TiB
Packages
Desktop environmentKDE Plasma
CDs owned14
Consoles modded1
Computers upgraded2
Computers downgraded1
Websites2
Talent[Integer overflow error]
Bitches0
SpeciesBathynomus Giganteus
Pronounsany
Genderhere', + 'AMD Ryzen 7 5700G, 32GB DDR4-3600 RAM, AMD Radeon RX 6600XT GPU, 500GB NVMe SSD, 1TB SATA SSD, 4TB HDD', + 'I forgor 💀', + 'Bathynomus Giganteus' + ); + echo $boogeraids[array_rand($boogeraids)]; + ?>
3.5mm headphone jackyes
Audio channelsmono
Font familymono
Sodium glutamate7.1 surround
Drop rates1-3 bags of Doritos - 80%
Wired earbuds - 10%
Random Linux install media - 1%
Efficiency rating80+ Gold
Home address12h 28m 24.97s, +31° 28′ 37.7″
Time playing Space Engineers587 hours
Page views + +
$aidsbooger
Number I'm thinking of
+
+ + + diff --git a/stats/packages.txt b/stats/packages.txt new file mode 100644 index 0000000..ee91235 --- /dev/null +++ b/stats/packages.txt @@ -0,0 +1 @@ +1830 diff --git a/stuff/EnchantedToolsPack v1.zip b/stuff/EnchantedToolsPack v1.zip new file mode 100644 index 0000000..cc83984 Binary files /dev/null and b/stuff/EnchantedToolsPack v1.zip differ diff --git a/stuff/bg.png b/stuff/bg.png new file mode 100644 index 0000000..1225179 Binary files /dev/null and b/stuff/bg.png differ diff --git a/stuff/firefoxrss/feed.php b/stuff/firefoxrss/feed.php new file mode 100644 index 0000000..0f7cb17 --- /dev/null +++ b/stuff/firefoxrss/feed.php @@ -0,0 +1,62 @@ + $cacheperiod); + +if($cache_too_old) { + $url = "https://mozilla.org/firefox/notes/"; + if(function_exists('curl_init')) { + $ch = curl_init($url); + + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HEADER, 0); + + $str = curl_exec($ch); + if(curl_error($ch)) { + echo curl_error($ch); + die(); + } + curl_close($ch); + } else { // If the cURL library isn't installed, just use file_get_contents() + $str = file_get_contents($url); + } + + preg_match('/(
([0-9]|\.)+<\/div>)/', $str, $rcs); // extract the element containing the version number + preg_match('/([0-9]|\.)+/', $rcs[0], $rs); // extract the version number from that + $rel = $rs[0]; + + $link = "https://www.mozilla.org/en-US/firefox/".$rel."/releasenotes"; // construct a permalink to the patch notes for the current latest release in particular + + preg_match('/(

.+<\/p>)/', $str, $odcs); // extract the element containing the release date + $origdate = str_replace('

', "", str_replace('

', "", $odcs[0])); // extract the date string + $udate = strtotime($origdate) + 43200; // convert said date string to the unix timestamp for noon GMT on that date + $rssdate = "D, d M Y H:i:s"; + $date = date($rssdate, $udate); // convert unix timestamp to the date format RSS uses + + $updatetime = date($rssdate, filemtime($fname)); // generating some data to fill out optional elements of the RSS feed. + $ttl = $cacheperiod / 60; // This is the sole reason why a few variables exist. + + $output = "Firefox Release Noteshttps://www.mozilla.org/firefox/releases/Release notes for new versions of Firefox, updated every $ttl minutesen-us$date$updatetimehttps://www.rssboard.org/rss-specificationniceopod's Firefox release notes RSS feed bridge$ttlhttps://upload.wikimedia.org/wikipedia/commons/8/84/Mozilla_Firefox_3.5_logo.pngFirefox Release Noteshttps://www.mozilla.org/firefox/releases/Firefox $rel$dateRelease $rel of Firefox, from $origdate$link$link"; + // Outputs an RSS feed with one entry. I wanted to do the latest ten, but the releases weren't in + // chronological order on the release list page and I couldn't be bothered trying to reorder them, + // plus I would have had to scrape all those pages for the release date too and fuck that lol + file_put_contents($fname, $output); +} else { + $output = file_get_contents($fname); +} + +header('Content-Type: text/xml'); // Not sure if this is necessary but it feels like good practice and it gets Chromium to display it all pretty +echo $output; \ No newline at end of file diff --git a/stuff/fonts/UbuntuMono-Bold.ttf b/stuff/fonts/UbuntuMono-Bold.ttf new file mode 100644 index 0000000..01ad81b Binary files /dev/null and b/stuff/fonts/UbuntuMono-Bold.ttf differ diff --git a/stuff/fonts/UbuntuMono-BoldItalic.ttf b/stuff/fonts/UbuntuMono-BoldItalic.ttf new file mode 100644 index 0000000..731884e Binary files /dev/null and b/stuff/fonts/UbuntuMono-BoldItalic.ttf differ diff --git a/stuff/fonts/UbuntuMono-Italic.ttf b/stuff/fonts/UbuntuMono-Italic.ttf new file mode 100644 index 0000000..b89338d Binary files /dev/null and b/stuff/fonts/UbuntuMono-Italic.ttf differ diff --git a/stuff/fonts/UbuntuMono-Regular.ttf b/stuff/fonts/UbuntuMono-Regular.ttf new file mode 100644 index 0000000..4977028 Binary files /dev/null and b/stuff/fonts/UbuntuMono-Regular.ttf differ diff --git a/stuff/fonts/cafe.ttf b/stuff/fonts/cafe.ttf new file mode 100644 index 0000000..e31d5fd Binary files /dev/null and b/stuff/fonts/cafe.ttf differ diff --git a/stuff/fonts/firsttimewriting.ttf b/stuff/fonts/firsttimewriting.ttf new file mode 100644 index 0000000..180df00 Binary files /dev/null and b/stuff/fonts/firsttimewriting.ttf differ diff --git a/stuff/fonts/slkscr.ttf b/stuff/fonts/slkscr.ttf new file mode 100644 index 0000000..85a2037 Binary files /dev/null and b/stuff/fonts/slkscr.ttf differ diff --git a/stuff/fonts/slkscrb.ttf b/stuff/fonts/slkscrb.ttf new file mode 100644 index 0000000..2619b36 Binary files /dev/null and b/stuff/fonts/slkscrb.ttf differ diff --git a/stuff/fonts/ubuntu-bold.ttf b/stuff/fonts/ubuntu-bold.ttf new file mode 100644 index 0000000..c2293d5 Binary files /dev/null and b/stuff/fonts/ubuntu-bold.ttf differ diff --git a/stuff/fonts/ubuntu.ttf b/stuff/fonts/ubuntu.ttf new file mode 100644 index 0000000..f98a2da Binary files /dev/null and b/stuff/fonts/ubuntu.ttf differ diff --git a/stuff/index.php b/stuff/index.php new file mode 100644 index 0000000..35ae0e2 --- /dev/null +++ b/stuff/index.php @@ -0,0 +1,148 @@ + + + + + Items + + + + +

Services

+ + + + + + + + + + + + + + + + + + + + + + + + + +
social.isopod.coolMy personal Akkoma instance. Run by me, for me. Feel free to register for an account if we know each other, though.
search.isopod.coolAn instance of SearXNG, a metasearch engine that aggregates results from several other search engines.
rss-bridge.isopod.coolAn rss-bridge instance. Generates RSS feeds for websites that don't have them.
rssfilter.phpA basic RSS feed filtering tool. Works on RSS and Atom feeds and can take both plain text and regex.
firefoxrss/An RSS bridge for Firefox release notes
feed.phpDownload the source code
+

Items

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
../Go back
EnchantedToolsPack v1.zipA custom resource pack I made for Minecraft that uses the Optifine mod's custom texture functionality to add custom textures for enchanted tools and weapons. Works as of 1.19.
../old/Previous iterations of my website
1The final form of the first iteration. Little more than a glorified link directory.
2The final form of the second iteration. Scrapped mainly because it was too dependent on Javascript.
webpkiller/Various scripts I've written to intercept .webp images on opening and replace them with a superior format, because fuck webp. Use by setting them as the default program for opening .webp files. They'll make a copy of the image converted to .png, delete the original, and open the new one in your default program. Untested with animated webp files. These are all open source, so feel free to edit and redistribute.
webpkiller.shBash script for Linux. Only works on .webp files. Requires ImageMagick to be installed.
webpkiller.cmdBatch script for Windows. Only works on .webp files. Requires ImageMagick to be installed. Replaces every instance of ".webp" in the filepath because I couldn't figure out how to do string manipulation properly in Windows batch language, so watch out for that.
webpkiller.pyPlatform-agnostic Python script. Requires Python 3 and the pillow library to be installed. Works on any image format supported by pillow.
webpkiller_win.zipwebpkiller.py, but compiled for Windows with pyinstaller.
neon_boost_times.htmlA table of my level times in the game Neon Boost, in case you care.
userstyles.world/style/5238
/status-cafe-latte
Stylus theme I made for status.cafe, the site behind the little status widget on my blog.
+ + + diff --git a/stuff/neon_boost_times.html b/stuff/neon_boost_times.html new file mode 100644 index 0000000..70af6bd --- /dev/null +++ b/stuff/neon_boost_times.html @@ -0,0 +1,90 @@ + + + + + + My level times in Neon Boost + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + +
Level123456789101112
Laser City4.2193.9393.8996.3593.9593.2596.1397.1592.4198.325.41917
Laser City
(Lights Off)
4.4394.1194.1797.0795.7993.4195.8597.2992.5198.465.85921.98
Tesla Factory3.9995.2196.3593.3595.9594.7196.8391.9996.2594.7797.21916.44
Tesla Factory
(Lights Off)
4.1595.6796.5193.6195.7195.6396.7992.0396.3195.5197.01916.92
Cosmic Highway9.146.2796.97911.025.4399.587.19911.2417.84.67925.0640.78
Cosmic Highway
(Lights Off)
10.466.6996.85912.85.77910.327.83913.2819.024.77929.3642.56
+

Times are in seconds, truncated to the millisecond because the in-game timer is rife with rounding errors.
Times in yellow are from levels I can effectively skip, or beat without triggering the timer to start.
Read the blog post I made this for here. Get Neon Boost here.

+
+ + \ No newline at end of file diff --git a/stuff/rssfilter.php b/stuff/rssfilter.php new file mode 100644 index 0000000..efe6079 --- /dev/null +++ b/stuff/rssfilter.php @@ -0,0 +1,287 @@ +category as $category) { // loops through all the tags and returns true if any of them contain the filter string + if( + (!$useregex and strpos($category, $filter) !== false) or // Don't use regex and filter string is found + ($useregex and preg_match($filter, $category)) // DO use regex and filter expression is found + ) { + return true; + } + } + if( + (!$useregex and (strpos($item->description, $filter) !== false or strpos($item->title, $filter) !== false)) or // Don't use regex and filter string is found + ($useregex and (preg_match($filter, $item->description) or preg_match($filter, $item->title))) // DO use regex and filter expression is found + ) { + return true; + } + return false; +} + +function atom_testforfilter($entry) { + global $useregex; + global $filter; + foreach($entry->category as $category) { // loops through all the tags and returns true if any of them contain the filter string + if( + (!$useregex and strpos($category['term'], $filter) !== false) or // Don't use regex and filter string is found + ($useregex and preg_match($filter, $category['term'])) // DO use regex and filter expression is found + ) { + return true; + } + } + if( + (!$useregex and (strpos($entry->description, $filter) !== false or strpos($entry->title, $filter) !== false)) or // Don't use regex and filter string is found + ($useregex and (preg_match($filter, $entry->description) or preg_match($filter, $entry->title))) // DO use regex and filter expression is found + ) { + return true; + } + return false; +} + +if($feed // A basic check to make sure the URL is formed properly. It doesn't actually check for a valid URL or valid regex. + and $filter // If this check fails, the HTML document below this gets served. + and ($filtertype === "white" or $filtertype === "black") +){ + header('Content-Type: text/xml'); // Not sure if I actually need to do this, but it seems like good practice and it makes Chromium display the XML tree all nice. + + $content = simplexml_load_string(file_get_contents($feed)); // I've encountered a problem where something between the server this command pulls from and this script seems to + // be caching the result. I'm guessing it's some kind of Nginx configuration error, but I'm not sure. Maybe I + // should be using a different function to do this? rss-bridge uses the cURL library, which I know because I had + // to install it myself. + + if($content->getName() == 'rss') { // Here I just assume everything not explicitly an RSS feed is an Atom feed. I am 100% certain there is an edge case I'm missing here. + + echo ''; // This is the most embarrassing part of this code by far. I wanted to do this by looping over all the entries + echo $content->channel->title->asXML(); // in the XML object and specifically removing the ones that didn't pass the filter *from* the object, but + echo $content->channel->link->asXML(); // I couldn't for the life of me get that to work, so I settled for the next best thing: just echoing all the + echo $content->channel->description->asXML(); // fields that are part of the spec out to a brand new XML document and then adding all the entries that did + echo $content->channel->language->asXML(); // pass. I mean, if it works it works, but sorry to anyone that was using some nonstandard feature here. + echo $content->channel->pubDate->asXML(); + echo $content->channel->lastBuildDate->asXML(); + echo $content->channel->docs->asXML(); + echo "niceopod's RSS filter script"; + echo $content->channel->managingEditor->asXML(); + echo $content->channel->webMaster->asXML(); + + foreach($content->channel->item as $item) { + + $found = rss_testforfilter($item, $filter); + + if(($found and $filtertype == 'white') or (!$found and $filtertype == 'black')) { + echo $item->asXML(); + } + + } + + echo ''; + + die(); + } else { + + echo ''; + echo $content->title->asXML(); + echo $content->link->asXML(); + echo $content->updated->asXML(); + echo $content->author->asXML(); + echo $content->id->asXML(); + foreach($content->category as $category) { + echo $category->asXML(); + } + foreach($content->contributor as $contributor) { + echo $contributor->asXML(); + } + echo "niceopod's Atom filter script"; + echo $content->icon->asXML(); + echo $content->logo->asXML(); + echo $content->rights->asXML(); + echo $content->subtitle->asXML(); + + foreach($content->entry as $entry) { + + $found = atom_testforfilter($entry, $filter); + + if(($found and $filtertype == 'white') or (!$found and $filtertype == 'black')) { + echo $entry->asXML(); + } + + } + + echo ''; + + die(); + } +} + +?> + + + + + RSS Filter + + + +

RSS Filter

+
+ + + + + + + + + + + + + + + + + + + + + +
You need to have Javascript enabled for this generator to work, sorry.
Feed URL
Filter String
Filter Type + + + + +
+

+ +

+

+ Made by an isopod
+ Download source code +

+ + + \ No newline at end of file diff --git a/stuff/webgarden/image1.html b/stuff/webgarden/image1.html new file mode 100644 index 0000000..6266117 --- /dev/null +++ b/stuff/webgarden/image1.html @@ -0,0 +1,20 @@ + + + + + Image1 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image2.html b/stuff/webgarden/image2.html new file mode 100644 index 0000000..8a114a0 --- /dev/null +++ b/stuff/webgarden/image2.html @@ -0,0 +1,20 @@ + + + + + Image2 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image3.html b/stuff/webgarden/image3.html new file mode 100644 index 0000000..fc04b05 --- /dev/null +++ b/stuff/webgarden/image3.html @@ -0,0 +1,20 @@ + + + + + Image3 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/image4.html b/stuff/webgarden/image4.html new file mode 100644 index 0000000..c5ddb11 --- /dev/null +++ b/stuff/webgarden/image4.html @@ -0,0 +1,20 @@ + + + + + Image4 + + + + +
+ < + > +
+ + diff --git a/stuff/webgarden/images/bubblecolumn1.gif b/stuff/webgarden/images/bubblecolumn1.gif new file mode 100644 index 0000000..ad31eb1 Binary files /dev/null and b/stuff/webgarden/images/bubblecolumn1.gif differ diff --git a/stuff/webgarden/images/image1.png b/stuff/webgarden/images/image1.png new file mode 100644 index 0000000..90e76d9 Binary files /dev/null and b/stuff/webgarden/images/image1.png differ diff --git a/stuff/webgarden/images/image2.png b/stuff/webgarden/images/image2.png new file mode 100644 index 0000000..d291b27 Binary files /dev/null and b/stuff/webgarden/images/image2.png differ diff --git a/stuff/webgarden/images/image3.png b/stuff/webgarden/images/image3.png new file mode 100644 index 0000000..c929dc1 Binary files /dev/null and b/stuff/webgarden/images/image3.png differ diff --git a/stuff/webgarden/images/image4.png b/stuff/webgarden/images/image4.png new file mode 100644 index 0000000..a64f7ff Binary files /dev/null and b/stuff/webgarden/images/image4.png differ diff --git a/stuff/webgarden/images/isopod_with_aviators_small.png b/stuff/webgarden/images/isopod_with_aviators_small.png new file mode 100644 index 0000000..7714a62 Binary files /dev/null and b/stuff/webgarden/images/isopod_with_aviators_small.png differ diff --git a/stuff/webgarden/images/webgarden-bg.png b/stuff/webgarden/images/webgarden-bg.png new file mode 100644 index 0000000..5ba4b7b Binary files /dev/null and b/stuff/webgarden/images/webgarden-bg.png differ diff --git a/stuff/webgarden/index.php b/stuff/webgarden/index.php new file mode 100644 index 0000000..9acc4b5 --- /dev/null +++ b/stuff/webgarden/index.php @@ -0,0 +1,167 @@ + + + RGB Gaming Webpage', + 'MySite.html', + 'Over Construction', + 'Real isopod hours', + 'depytwisty', + '[object Object]', + '* You found the [Moss]!', + 'Isopod gaming', + 'Website of "some guy"', + 'your mom', + 'Badly programmed', + 'Upside Down!', + 'Oh, you know ;)', + 'gamer (terminal)', + 'This is not a place of honor', + 'ඞ', + '127.0.0.1', + 'swag', + '\'\'', + 'Kind of dragon free!', + 'The Only Website', + 'Hover over me!', + 'Water me!' + ); + $cap = $captions[array_rand($captions)]; + ?> + + + Pot + + + + + +
+

isopod.cool

+

+ + + < +
+
+ + + + + diff --git a/stuff/webgarden/music.mp3 b/stuff/webgarden/music.mp3 new file mode 100644 index 0000000..0c7d0f5 Binary files /dev/null and b/stuff/webgarden/music.mp3 differ diff --git a/stuff/webgarden/status.php b/stuff/webgarden/status.php new file mode 100644 index 0000000..52742c1 --- /dev/null +++ b/stuff/webgarden/status.php @@ -0,0 +1,55 @@ + + + + + Status + + + + +
+
$username $face $timeago
$content
"; + ?> + < +
+ + diff --git a/stuff/webgarden/style.css b/stuff/webgarden/style.css new file mode 100644 index 0000000..d9667d6 --- /dev/null +++ b/stuff/webgarden/style.css @@ -0,0 +1,19 @@ +@font-face { + font-family: 'Silkscreen'; + src: url('../fonts/slkscr.ttf'); +} +html, body { + margin: 0; + padding: 0; + overflow: hidden; +} +body { + font-family: 'Silkscreen'; + color: white; + background: #101010; + text-shadow: 1px 1px 4px black; +} +#plant { + height: 250px; + width: 250px; +} \ No newline at end of file diff --git a/stuff/webpkiller/webpkiller.cmd b/stuff/webpkiller/webpkiller.cmd new file mode 100644 index 0000000..382e048 --- /dev/null +++ b/stuff/webpkiller/webpkiller.cmd @@ -0,0 +1,31 @@ +@echo off + +::Set variable filepath to the first argument +SET filepath=%~f1 + +::Abort if the given file doesn't exist +IF NOT EXIST "%filepath%" ( + ECHO %~n0: file not found - %filepath% >&2 + EXIT /B 1 +) + +::Replace all instances of .webp with .png in the filename. kind of banking on the user not putting the extension anywhere else in the file or folder names for this to work properly... +::I should be finding the last period in the filename and replacing everything AFTER it with the extension I want, but can't figure out how to do that because Windows batch is a nightmare language +::You can replace this with "SET outfile=%filepath%.png" (no quotes) if that bothers you more than double file extensions +::You can replace these two file extensions with any two image types you want to do this with +SET outfile=%filepath:.webp=.png% + +::Abort if filename.png already exists +IF EXIST "%outfile%" ( + ECHO %~n0: %outfile% already exists. Aborting... + EXIT /B 2 +) + +::Use ImageMagick's command line tools to generate the converted file +magick "%filepath%" "%outfile%" + +::Delete the original file (optional, this can be removed if for some reason you want to keep the shitty gross webp) +del "%filepath%" + +::Open the new, fixed image like nothing ever happened +%outfile% diff --git a/stuff/webpkiller/webpkiller.py b/stuff/webpkiller/webpkiller.py new file mode 100644 index 0000000..0153ff7 --- /dev/null +++ b/stuff/webpkiller/webpkiller.py @@ -0,0 +1,27 @@ +import PIL as pillow +from PIL import Image +import subprocess, os, platform, sys + +infile = sys.argv[len(sys.argv)-1] +outfile = infile[:infile.rfind('.')] + ".png" + +if(os.path.exists(infile) == False): + print("File %s not found. Aborting..." %infile) + exit() + +if(os.path.exists(outfile)): + print("File %s already exists. Aborting..." %outfile) + exit() + +im = Image.open(infile) + +im.save(outfile) + +os.remove(infile) + +if(platform.system() == 'Darwin'): # macOS + subprocess.call(('open', outfile)) +elif(platform.system() == 'Windows'): # Windows + os.startfile(outfile) +else: # linux variants + subprocess.call(('xdg-open', outfile)) \ No newline at end of file diff --git a/stuff/webpkiller/webpkiller.sh b/stuff/webpkiller/webpkiller.sh new file mode 100644 index 0000000..017fba0 --- /dev/null +++ b/stuff/webpkiller/webpkiller.sh @@ -0,0 +1,20 @@ +#!/bin/bash +if [ ! -f "$1" ]; then + echo "File $1 does not exist. Aborting..." + exit +fi + +suffix=".webp" +filename=${1%"$suffix"} +outfile="$filename.png" + +if [ -f "$outfile" ]; then + echo "File $outfile already exists. Aborting..." + notify-send --app-name=webpkiller "File $outfile already exists. Aborting..." + exit +fi + +magick $1 $outfile +rm -rf $1 + +xdg-open $outfile diff --git a/stuff/webpkiller/webpkiller_win.zip b/stuff/webpkiller/webpkiller_win.zip new file mode 100644 index 0000000..5d54054 Binary files /dev/null and b/stuff/webpkiller/webpkiller_win.zip differ diff --git a/style.css b/style.css new file mode 100644 index 0000000..464f4ef --- /dev/null +++ b/style.css @@ -0,0 +1,218 @@ +:root { + --stdfont: mono, monospace; + --bgcolor: #222222; + --bodywidth: 43rem; + --stddropshadow: 4px 4px 8px black; +} +html, body { + height: 100%; +} +body { + font-family: var(--stdfont); + background-color: var(--bgcolor); + color: gainsboro; + max-width: var(--bodywidth); + margin: auto; + margin-top: 1rem; + margin-bottom: 1rem; + overflow-x: hidden; + text-shadow: 1px 1px 3px black; +} +body#centeredcontent { + display: flex; + align-items: center; + justify-content: center; + margin-top: 0; + margin-bottom: 0; +} +header { + width: 100%; +} +nav { + margin-bottom: 1rem; +} +#leftsidebg, #rightsidebg { + position: fixed; + z-index: -10; + bottom: 0; + top: 0; + background-position: center; + background-size: cover; + --shadowsize: 3rem; + --distancefromcenter: calc((var(--bodywidth) / -2) - 2rem); +} +#leftsidebg { + right: calc(50% - var(--distancefromcenter)); + left: 0; + box-shadow: calc(0rem - var(--shadowsize)) 0 var(--shadowsize) calc(0rem - var(--shadowsize)) black inset; +} +#rightsidebg { + right: 0; + left: calc(50% - var(--distancefromcenter)); + box-shadow: var(--shadowsize) 0 var(--shadowsize) calc(0rem - var(--shadowsize)) black inset; +} +h1 { + font-size: 4.4rem; + margin: 0; + padding: 0 3rem 3rem 3rem; + background-image: url(images/isopod.php); + background-repeat: no-repeat; + background-size: contain; + text-shadow: 2px 2px 5px black; + text-align: center; +} +h1 > a { + color: inherit; + text-decoration: inherit; +} +h1 > a:hover { + color: inherit; +} +h1 + h2#caption { + font-weight: 500; + margin-top: -4.2rem; + margin-right: -20rem; + text-align: center; + font-size: 1.2rem; + z-index: 2; + text-shadow: 1px 1px 3px black; +} +h2#caption + * { + margin-top: 3rem; +} +h2#caption + nav { + margin-top: 0; +} +h2 + h5, h3 + h5 { + margin-top: -1.5rem; +} +nav { + text-align: center; +} +nav a, nav span { + margin: 0 0.7rem; +} +a { + color: #df1955; +} +a:hover { + color: #00ffd5; +} +.buttons { + text-align: center; + font-size: 0; +} +.buttons > * { + display: inline-block; + margin: 0.1rem; + font-size: 0; +} +.buttons > a > img { + transition-duration: .5s; + box-shadow: none; + display: inline-block; + transform: translate(0, 0); +} +.buttons > a > img:hover { + box-shadow: 2px 2px 4px black; + z-index: 5; + transform: translate(-2px, -2px); +} +.embed { + display: block; + width: 100%; + border: none; +} +img { + max-width: 100%; +} +summary:hover { + cursor: pointer; +} +[title] { + text-decoration: underline; +} +[title]:hover { + cursor: help; +} +code { + background-color: black; + padding: 0.15rem; +} +main > code, body > code { + display: block; + width: 32rem; + margin: auto; + padding: 0.7rem; + border: 1px solid #00ffd5; +} +tr:hover { + background-color: #2222227c; +} + +@media(max-width: 650px) { + body { + padding: 0 1.5rem; + } + h1 + h2#caption { + margin-right: initial; + } +} + +.CboxOpenBtn img { + opacity: 0; + transition-duration: 0.2s; +} +.CboxOpenBtn:hover img { + opacity: 1; +} +.emph { + font-style: italic; +} +.serif { + font-family: serif; +} +.flipped { + display: inline-block; + transform: rotate(180deg); +} +.rainbowtext { + animation-name: rainbow-text; + animation-duration: 20s; + animation-iteration-count: infinite; +} +.blinking { + animation-name: opacityblink; + animation-duration: 2s; + animation-iteration-count: infinite; +} +.minecraftsplash { + animation-name: growshrink; + animation-duration: 1.5s; + animation-iteration-count: infinite; + color: yellow; + display: inline-block; +} + +@keyframes growshrink { + 0%, 100% { transform: scale(1) rotate(-10deg); } + 50% { transform: scale(1.2) rotate(-10deg); } +} +@keyframes opacityblink { + 0%, 50% {opacity: 0;} + 50.001%, 100% {opacity: 1;} +} +@keyframes rainbow-text { + 100%,0%{color: rgb(255,0,0); text-shadow: 0 0 4px rgb(216, 1, 1);} + 8%{color: rgb(255,127,0); text-shadow: 0 0 4px rgb(211, 105, 0);} + 16%{color: rgb(255,255,0); text-shadow: 0 0 4px rgb(214, 214, 0);} + 25%{color: rgb(127,255,0); text-shadow: 0 0 4px rgb(105, 211, 0);} + 33%{color: rgb(0,255,0); text-shadow: 0 0 4px rgb(0, 204, 0);} + 41%{color: rgb(0,255,127); text-shadow: 0 0 4px rgb(0, 209, 105);} + 50%{color: rgb(0,255,255); text-shadow: 0 0 4px rgb(0, 202, 202);} + 58%{color: rgb(0,127,255); text-shadow: 0 0 4px rgb(0, 103, 206);} + 66%{color: rgb(0,0,255); text-shadow: 0 0 4px rgb(0, 0, 206);} + 75%{color: rgb(127,0,255); text-shadow: 0 0 4px rgb(103, 0, 206);} + 83%{color: rgb(255,0,255); text-shadow: 0 0 4px rgb(211, 0, 211);} + 91%{color: rgb(255,0,127); text-shadow: 0 0 4px rgb(211, 0, 105);} +} \ No newline at end of file