From 3b606bcc096a6d9860672e6d0d003ca9e80c067e Mon Sep 17 00:00:00 2001 From: Hannah Isopod Date: Sun, 15 Feb 2026 22:42:27 -0700 Subject: THE BIG ONE Total website redesign. Multiple new blog posts. Routine updates on several pages. Too much to list, even if I remembered it all. Remind me not to put this git repo on any portfolios. --- LICENSE | 10 +- about/bg.jpg | Bin 442443 -> 0 bytes about/bg.jxl | Bin 482705 -> 0 bytes about/bg_dither.png | Bin 59040 -> 0 bytes about/images/cheddar03.gif | Bin 2315 -> 0 bytes about/images/crackship_quiz_result.png | Bin 24970 -> 0 bytes about/images/isopod_quiz_result.png | Bin 11140 -> 0 bytes about/index.php | 163 --- about/pronouns/bad.svg | 4 - about/pronouns/bg.jpg | Bin 196408 -> 0 bytes about/pronouns/bg_dither.png | Bin 37327 -> 0 bytes about/pronouns/friend.svg | 5 - about/pronouns/good.svg | 4 - about/pronouns/index.php | 46 - blog/blog.atom | 49 +- blog/index.php | 178 +-- blog/post.php | 129 +- blog/posts/ai2/index.md | 16 +- blog/posts/ai_art/index.md | 16 +- blog/posts/blog_questions/index.md | 18 +- .../posts/building_a_cooler_body/20minuteshrt.webp | Bin 0 -> 250578 bytes .../building_a_cooler_body/bananaforscale.webp | Bin 0 -> 49418 bytes blog/posts/building_a_cooler_body/epic.png | Bin 0 -> 38325 bytes blog/posts/building_a_cooler_body/index.md | 408 +++++- blog/posts/building_a_normal_server/index.md | 20 +- blog/posts/building_a_regular_bed/index.md | 130 +- blog/posts/building_a_sensible_server/index.md | 38 +- blog/posts/customcans_4pin_pinout/index.md | 35 + blog/posts/customcans_4pin_pinout/index.php | 1 + blog/posts/customcans_4pin_pinout/pinout.webp | Bin 0 -> 72194 bytes .../posts/customcans_4pin_pinout/supportemail.webp | Bin 0 -> 13820 bytes .../index.md | 27 +- blog/posts/discord/index.md | 44 +- blog/posts/discord2/discord-no-way-2.gif | Bin 0 -> 1961 bytes blog/posts/discord2/discord.png | Bin 0 -> 13432 bytes blog/posts/discord2/index.md | 206 +++ blog/posts/discord2/index.php | 1 + blog/posts/discord2/manualreview.png | Bin 0 -> 42614 bytes blog/posts/discord2/osmiuml.png | Bin 0 -> 14224 bytes blog/posts/discord2/osmiumw.png | Bin 0 -> 30219 bytes blog/posts/fediverse_dms/index.md | 4 +- blog/posts/grow_spikes/index.md | 14 +- .../guide_blacklist_websites_searxng/index.md | 2 +- .../guide_blocking_user_agents_nginx/index.md | 10 +- .../guide_fix_youtube_buffering_firefox/index.md | 6 +- .../index.md | 14 +- blog/posts/guide_pihole_lepotato/index.md | 8 +- blog/posts/make_your_own_cables/index.md | 20 +- blog/posts/my_terrible_distro_hop/index.md | 12 +- blog/posts/renting_an_unremarkable_server/index.md | 4 +- blog/posts/sf5_estrogen_moth/index.md | 70 + blog/posts/sf5_estrogen_moth/index.php | 1 + blog/posts/sf5_estrogen_moth/moth.json | 192 +++ blog/posts/sf5_estrogen_moth/moth.png | Bin 0 -> 69661 bytes blog/posts/sf5_estrogen_moth/pink.json | 306 +++++ blog/posts/stop_using_chromium/index.md | 14 +- blog/posts/toshiba_chromebook/index.md | 6 +- .../index.md | 10 +- common.php | 14 +- etc/bg.jpg | Bin 619596 -> 0 bytes etc/bg.jxl | Bin 588579 -> 0 bytes etc/bg_dither.png | Bin 77184 -> 0 bytes etc/buttons/35mm.gif | Bin 3747 -> 0 bytes etc/buttons/ace.png | Bin 656 -> 0 bytes etc/buttons/agender.png | Bin 6523 -> 0 bytes etc/buttons/amd_powered.gif | Bin 706 -> 0 bytes etc/buttons/antinft.gif | Bin 1669 -> 0 bytes etc/buttons/aro.png | Bin 6180 -> 0 bytes etc/buttons/aromantic-80x15.png | Bin 598 -> 0 bytes etc/buttons/asexual-80x15.png | Bin 2379 -> 0 bytes etc/buttons/badhtml.png | Bin 1247 -> 0 bytes etc/buttons/bantimetravel.png | Bin 3223 -> 0 bytes etc/buttons/bestviewed.gif | Bin 9419 -> 0 bytes etc/buttons/canadian.gif | Bin 4083 -> 0 bytes etc/buttons/chrome.gif | Bin 8964 -> 0 bytes etc/buttons/css.png | Bin 3176 -> 0 bytes etc/buttons/deeptwisty_button.png | Bin 4676 -> 0 bytes etc/buttons/dontclick.gif | Bin 3687 -> 0 bytes etc/buttons/dontyouhate.gif | Bin 3987 -> 0 bytes etc/buttons/drpepper.gif | Bin 2412 -> 0 bytes etc/buttons/epicblazed.png | Bin 3433 -> 0 bytes etc/buttons/floof_explode_88x31.gif | Bin 37149 -> 0 bytes etc/buttons/getvlcnow.png | Bin 14305 -> 0 bytes etc/buttons/google_stand.gif | Bin 21247 -> 0 bytes etc/buttons/handcode.png | Bin 6504 -> 0 bytes etc/buttons/i_hate_microsoft.png | Bin 2957 -> 0 bytes etc/buttons/isopodhours.png | Bin 6331 -> 0 bytes etc/buttons/krisbtn.png | Bin 1146 -> 0 bytes etc/buttons/linux_powered.gif | Bin 14619 -> 0 bytes etc/buttons/miku-approved.gif | Bin 6208 -> 0 bytes etc/buttons/neo-fedi.gif | Bin 1127 -> 0 bytes etc/buttons/neocities_stamp.gif | Bin 2431 -> 0 bytes etc/buttons/niceopod_button.png | Bin 5163 -> 0 bytes etc/buttons/niceopod_button_2.png | Bin 4664 -> 0 bytes etc/buttons/nonbinary-80x15.png | Bin 593 -> 0 bytes etc/buttons/nonbinary.png | Bin 196 -> 0 bytes etc/buttons/notoweb3.gif | Bin 483 -> 0 bytes etc/buttons/nowebp.gif | Bin 7372 -> 0 bytes etc/buttons/piracy.gif | Bin 910 -> 0 bytes etc/buttons/queercoded.png | Bin 4500 -> 0 bytes etc/buttons/righttorepair.png | Bin 6203 -> 0 bytes etc/buttons/she-her.gif | Bin 326 -> 0 bytes etc/buttons/shrimp.png | Bin 1545 -> 0 bytes etc/buttons/smokepowered.gif | Bin 999 -> 0 bytes etc/buttons/svg.svg | 76 -- etc/buttons/tested_on_firefox.gif | Bin 2754 -> 0 bytes etc/buttons/the_void.gif | Bin 1609 -> 0 bytes etc/buttons/trans.png | Bin 424 -> 0 bytes etc/buttons/tyg.gif | Bin 3178 -> 0 bytes etc/buttons/usatoday.gif | Bin 5717 -> 0 bytes etc/buttons/web-pi.png | Bin 1857 -> 0 bytes etc/buttons/win11no.gif | Bin 1691 -> 0 bytes etc/images/apiopage.png | Bin 8589 -> 0 bytes etc/index.php | 77 -- etc/quotes/bg.jpg | Bin 172455 -> 0 bytes etc/quotes/bg.jxl | Bin 81156 -> 0 bytes etc/quotes/bg_dither.png | Bin 35053 -> 0 bytes etc/quotes/images/c_pfp.png | Bin 3122 -> 0 bytes etc/quotes/images/g_pfp.png | Bin 1684 -> 0 bytes etc/quotes/images/greensmile.png | Bin 57525 -> 0 bytes etc/quotes/images/h_pfp.png | Bin 1434 -> 0 bytes etc/quotes/images/j_pfp.png | Bin 5182 -> 0 bytes etc/quotes/images/m_pfp.png | Bin 3406 -> 0 bytes etc/quotes/images/p_pfp.png | Bin 1672 -> 0 bytes etc/quotes/images/s_pfp.png | Bin 2350 -> 0 bytes etc/quotes/images/t_pfp.png | Bin 11460 -> 0 bytes etc/quotes/images/v_pfp.png | Bin 1906 -> 0 bytes etc/quotes/index.php | 422 ------ footer.php | 27 + greenhouse/index.php | 55 +- guestbook/commentbox.php | 67 + guestbook/comments.php | 35 +- guestbook/index.php | 65 +- guestbook/submit.php | 1 - header.php | 227 ++++ images/apiopage.png | Bin 0 -> 8589 bytes images/buttons/35mm.gif | Bin 0 -> 3747 bytes images/buttons/ace.png | Bin 0 -> 656 bytes images/buttons/agender.png | Bin 0 -> 6523 bytes images/buttons/amd_powered.gif | Bin 0 -> 706 bytes images/buttons/antinft.gif | Bin 0 -> 1669 bytes images/buttons/apiopage88x31.png | Bin 0 -> 2842 bytes images/buttons/aro.png | Bin 0 -> 6180 bytes images/buttons/aromantic-80x15.png | Bin 0 -> 598 bytes images/buttons/asexual-80x15.png | Bin 0 -> 2379 bytes images/buttons/badhtml.png | Bin 0 -> 1247 bytes images/buttons/bantimetravel.png | Bin 0 -> 3223 bytes images/buttons/bestviewed.gif | Bin 0 -> 9419 bytes images/buttons/canadian.gif | Bin 0 -> 4083 bytes images/buttons/chrome.gif | Bin 0 -> 8964 bytes images/buttons/css.png | Bin 0 -> 3176 bytes images/buttons/deeptwisty_button.png | Bin 0 -> 4676 bytes images/buttons/dontclick.gif | Bin 0 -> 3687 bytes images/buttons/dontyouhate.gif | Bin 0 -> 3987 bytes images/buttons/drpepper.gif | Bin 0 -> 2412 bytes images/buttons/epicblazed.png | Bin 0 -> 3433 bytes images/buttons/floof_explode_88x31.gif | Bin 0 -> 37149 bytes images/buttons/fuckyouistillusecds.png | Bin 0 -> 5365 bytes images/buttons/getvlcnow.png | Bin 0 -> 14305 bytes images/buttons/google_stand.gif | Bin 0 -> 21247 bytes images/buttons/handcode.png | Bin 0 -> 6504 bytes images/buttons/i_hate_microsoft.png | Bin 0 -> 2957 bytes images/buttons/i_was_on_cohost.gif | Bin 0 -> 517 bytes images/buttons/isopodhours.png | Bin 0 -> 6331 bytes images/buttons/krisbtn.png | Bin 0 -> 1146 bytes images/buttons/linux_powered.gif | Bin 0 -> 14619 bytes images/buttons/miku-approved.gif | Bin 0 -> 6208 bytes images/buttons/neo-fedi.gif | Bin 0 -> 1127 bytes images/buttons/neocities_stamp.gif | Bin 0 -> 2431 bytes images/buttons/niceopod_button.png | Bin 0 -> 5163 bytes images/buttons/niceopod_button_2.png | Bin 0 -> 4664 bytes images/buttons/nonbinary-80x15.png | Bin 0 -> 593 bytes images/buttons/nonbinary.png | Bin 0 -> 196 bytes images/buttons/notoweb3.gif | Bin 0 -> 483 bytes images/buttons/nowebp.gif | Bin 0 -> 7372 bytes images/buttons/piracy.gif | Bin 0 -> 910 bytes images/buttons/queercoded.png | Bin 0 -> 4500 bytes images/buttons/righttorepair.png | Bin 0 -> 6203 bytes images/buttons/she-her.gif | Bin 0 -> 326 bytes images/buttons/shrimp.png | Bin 0 -> 1545 bytes images/buttons/smokepowered.gif | Bin 0 -> 999 bytes images/buttons/spotify.gif | Bin 0 -> 8657 bytes images/buttons/svg.svg | 76 ++ images/buttons/tested_on_firefox.gif | Bin 0 -> 2754 bytes images/buttons/the_void.gif | Bin 0 -> 1609 bytes images/buttons/trans.png | Bin 0 -> 424 bytes images/buttons/tyg.gif | Bin 0 -> 3178 bytes images/buttons/usatoday.gif | Bin 0 -> 5717 bytes images/buttons/web-pi.png | Bin 0 -> 1857 bytes images/buttons/wget.gif | Bin 0 -> 2858 bytes images/buttons/win11no.gif | Bin 0 -> 1691 bytes images/reactions/angy.png | Bin 0 -> 172641 bytes images/reactions/collectmypages.png | Bin 0 -> 164542 bytes images/reactions/fear.png | Bin 0 -> 178160 bytes images/reactions/frozen.png | Bin 0 -> 451947 bytes images/reactions/livid.png | Bin 0 -> 263035 bytes images/reactions/looksaway.png | Bin 0 -> 175753 bytes images/reactions/nerd.png | Bin 0 -> 173503 bytes images/reactions/notamused.png | Bin 0 -> 172032 bytes images/reactions/sob.png | Bin 0 -> 168553 bytes images/reactions/thumbsup.png | Bin 0 -> 165624 bytes images/reactions/yay.png | Bin 0 -> 170185 bytes index.php | 299 ++--- links/buttons/arimelody.gif | Bin 0 -> 1382 bytes links/buttons/beedotmovie.png | Bin 0 -> 2588 bytes links/buttons/fbyte.png | Bin 0 -> 2579 bytes links/buttons/slonk.webp | Bin 0 -> 1184 bytes links/buttons/sp.png | Bin 0 -> 6311 bytes links/buttons/thermia.gif | Bin 0 -> 10184 bytes links/buttons/tsvety.png | Bin 0 -> 4792 bytes links/index.php | 759 ++++++----- me/cheddar03.gif | Bin 0 -> 2315 bytes me/crackship_quiz_result.png | Bin 0 -> 24970 bytes me/index.php | 137 ++ me/isopod_quiz_result.png | Bin 0 -> 11140 bytes me/pronouns/bad.svg | 4 + me/pronouns/bg.jpg | Bin 0 -> 196408 bytes me/pronouns/bg_dither.png | Bin 0 -> 37327 bytes me/pronouns/friend.svg | 5 + me/pronouns/good.svg | 4 + me/pronouns/index.php | 59 + me/wuffsquiz.png | Bin 0 -> 61583 bytes meta/index.php | 70 + music/covers/clipping.jpg | Bin 0 -> 156729 bytes music/covers/femtanyl.jpg | Bin 0 -> 730897 bytes music/covers/findaeden.jpg | Bin 0 -> 13489 bytes music/covers/foofighters.jpg | Bin 0 -> 88938 bytes music/covers/hakita.webp | Bin 0 -> 46204 bytes music/covers/justice.jpg | Bin 0 -> 56335 bytes music/covers/mekaloton.jpg | Bin 0 -> 116361 bytes music/covers/mountainhead.jpg | Bin 0 -> 782928 bytes music/covers/noisemaster.jpg | Bin 0 -> 4310 bytes music/covers/redvox.jpg | Bin 0 -> 246074 bytes music/covers/waxlimbs.jpg | Bin 0 -> 17945 bytes music/index.php | 204 ++- nav.php | 2 +- notes/index.php | 153 +-- notes/notes.atom | 22 +- old/1/icons/deeptwisty.png | Bin 1763 -> 1867 bytes old/1/icons/kirby.png | Bin 1237 -> 1294 bytes old/1/images/bg_default.png | Bin 7238262 -> 8335510 bytes old/1/images/bg_old1.png | Bin 573420 -> 1306638 bytes old/1/images/bg_old2.png | Bin 1645363 -> 1693561 bytes old/1/images/friaday.png | Bin 515725 -> 731599 bytes old/1/images/moday.png | Bin 344390 -> 435321 bytes old/1/images/satuaday.png | Bin 1006865 -> 1273727 bytes old/1/images/suday.png | Bin 536088 -> 784564 bytes old/1/images/thuday.png | Bin 674116 -> 846918 bytes old/1/images/tueaday.png | Bin 211383 -> 298509 bytes old/1/images/weaday.png | Bin 348053 -> 495419 bytes old/1/stamps/deeptwistybutton.png | Bin 2237 -> 2784 bytes old/1/stamps/handcode.png | Bin 6504 -> 6761 bytes old/2/buttons/ace.png | Bin 656 -> 716 bytes old/2/buttons/aro.png | Bin 6180 -> 6249 bytes old/2/buttons/bantimetravel.png | Bin 3223 -> 3246 bytes old/2/buttons/deeptwisty_button.png | Bin 3995 -> 5049 bytes old/2/buttons/handcode.png | Bin 6504 -> 6761 bytes old/2/buttons/krisbtn.png | Bin 1146 -> 1624 bytes old/2/buttons/niceopod_button.png | Bin 5163 -> 5868 bytes old/2/buttons/righttorepair.png | Bin 6203 -> 6246 bytes old/2/icons/deeptwisty.png | Bin 1763 -> 1867 bytes old/2/images/2022-05-21_blog_image_1.png | Bin 18766 -> 21922 bytes old/2/images/2022-05-21_blog_image_2.png | Bin 3865646 -> 4033234 bytes old/2/images/albums/funeral.png | Bin 321310 -> 324364 bytes old/2/images/albums/spectrum.png | Bin 25428 -> 31471 bytes old/2/images/albums/unstoppable_force.png | Bin 552537 -> 559058 bytes old/2/images/albums/vast.png | Bin 174100 -> 196794 bytes old/2/images/isopod.png | Bin 37297 -> 47090 bytes old/2/images/isopod_with_aviators.png | Bin 25897 -> 35466 bytes old/2/pages/stats.html | 2 +- old/2/themes/deeptwisty/bg.png | Bin 1002687 -> 1161679 bytes old/2/themes/default/div-bg.png | Bin 11420 -> 41443 bytes old/2/themes/geocities/beam.png | Bin 604 -> 619 bytes old/2/themes/gruvbox/bg.png | Bin 3162 -> 11288 bytes stats/bg.jxl | Bin 1069930 -> 0 bytes stats/index.php | 317 ++--- stuff/beat/index.php | 44 +- stuff/canadian_flag_neocats.zip | Bin 0 -> 738235 bytes stuff/index.php | 205 +-- stuff/quotes/bg.jpg | Bin 0 -> 172455 bytes stuff/quotes/bg.jxl | Bin 0 -> 81156 bytes stuff/quotes/bg_dither.png | Bin 0 -> 35053 bytes stuff/quotes/images/c_pfp.png | Bin 0 -> 3122 bytes stuff/quotes/images/g_pfp.png | Bin 0 -> 1684 bytes stuff/quotes/images/greensmile.png | Bin 0 -> 57525 bytes stuff/quotes/images/h_pfp.png | Bin 0 -> 1434 bytes stuff/quotes/images/j_pfp.png | Bin 0 -> 5182 bytes stuff/quotes/images/m_pfp.png | Bin 0 -> 9234 bytes stuff/quotes/images/p_pfp.png | Bin 0 -> 1672 bytes stuff/quotes/images/s_pfp.png | Bin 0 -> 2350 bytes stuff/quotes/images/t_pfp.png | Bin 0 -> 27020 bytes stuff/quotes/images/v_pfp.png | Bin 0 -> 1906 bytes stuff/quotes/images/x_pfp.png | Bin 0 -> 11460 bytes stuff/quotes/index.php | 441 +++++++ stuff/webgarden/images/collectmypages.png | Bin 0 -> 164542 bytes stuff/webgarden/images/webgarden-bg-light.png | Bin 0 -> 2719 bytes stuff/webgarden/images/yay.png | Bin 0 -> 170185 bytes stuff/webgarden/index.php | 125 +- stuff/webgarden/status.php | 9 - stuff/webgarden/style.css | 73 +- style.css | 1375 ++++++++++++++++---- uses/compier/images/cablegore.jpg | Bin 0 -> 525592 bytes uses/compier/index.php | 284 ++-- uses/cumulonimbus/index.php | 134 +- uses/index.php | 334 +++-- uses/servy586/index.php | 230 ++-- uses/servy586/servy.webp | Bin 0 -> 73638 bytes 307 files changed, 5636 insertions(+), 3038 deletions(-) delete mode 100644 about/bg.jpg delete mode 100644 about/bg.jxl delete mode 100644 about/bg_dither.png delete mode 100644 about/images/cheddar03.gif delete mode 100644 about/images/crackship_quiz_result.png delete mode 100644 about/images/isopod_quiz_result.png delete mode 100644 about/index.php delete mode 100644 about/pronouns/bad.svg delete mode 100644 about/pronouns/bg.jpg delete mode 100644 about/pronouns/bg_dither.png delete mode 100644 about/pronouns/friend.svg delete mode 100644 about/pronouns/good.svg delete mode 100644 about/pronouns/index.php create mode 100644 blog/posts/building_a_cooler_body/20minuteshrt.webp create mode 100644 blog/posts/building_a_cooler_body/bananaforscale.webp create mode 100644 blog/posts/building_a_cooler_body/epic.png create mode 100644 blog/posts/customcans_4pin_pinout/index.md create mode 100644 blog/posts/customcans_4pin_pinout/index.php create mode 100644 blog/posts/customcans_4pin_pinout/pinout.webp create mode 100644 blog/posts/customcans_4pin_pinout/supportemail.webp create mode 100644 blog/posts/discord2/discord-no-way-2.gif create mode 100644 blog/posts/discord2/discord.png create mode 100644 blog/posts/discord2/index.md create mode 100644 blog/posts/discord2/index.php create mode 100644 blog/posts/discord2/manualreview.png create mode 100644 blog/posts/discord2/osmiuml.png create mode 100644 blog/posts/discord2/osmiumw.png create mode 100644 blog/posts/sf5_estrogen_moth/index.md create mode 100644 blog/posts/sf5_estrogen_moth/index.php create mode 100644 blog/posts/sf5_estrogen_moth/moth.json create mode 100644 blog/posts/sf5_estrogen_moth/moth.png create mode 100644 blog/posts/sf5_estrogen_moth/pink.json delete mode 100644 etc/bg.jpg delete mode 100644 etc/bg.jxl delete mode 100644 etc/bg_dither.png delete mode 100644 etc/buttons/35mm.gif delete mode 100644 etc/buttons/ace.png delete mode 100644 etc/buttons/agender.png delete mode 100644 etc/buttons/amd_powered.gif delete mode 100644 etc/buttons/antinft.gif delete mode 100644 etc/buttons/aro.png delete mode 100644 etc/buttons/aromantic-80x15.png delete mode 100644 etc/buttons/asexual-80x15.png delete mode 100644 etc/buttons/badhtml.png delete mode 100644 etc/buttons/bantimetravel.png delete mode 100644 etc/buttons/bestviewed.gif delete mode 100644 etc/buttons/canadian.gif delete mode 100644 etc/buttons/chrome.gif delete mode 100644 etc/buttons/css.png delete mode 100644 etc/buttons/deeptwisty_button.png delete mode 100644 etc/buttons/dontclick.gif delete mode 100644 etc/buttons/dontyouhate.gif delete mode 100644 etc/buttons/drpepper.gif delete mode 100644 etc/buttons/epicblazed.png delete mode 100644 etc/buttons/floof_explode_88x31.gif delete mode 100644 etc/buttons/getvlcnow.png delete mode 100644 etc/buttons/google_stand.gif delete mode 100644 etc/buttons/handcode.png delete mode 100644 etc/buttons/i_hate_microsoft.png delete mode 100644 etc/buttons/isopodhours.png delete mode 100644 etc/buttons/krisbtn.png delete mode 100644 etc/buttons/linux_powered.gif delete mode 100644 etc/buttons/miku-approved.gif delete mode 100644 etc/buttons/neo-fedi.gif delete mode 100644 etc/buttons/neocities_stamp.gif delete mode 100644 etc/buttons/niceopod_button.png delete mode 100644 etc/buttons/niceopod_button_2.png delete mode 100644 etc/buttons/nonbinary-80x15.png delete mode 100644 etc/buttons/nonbinary.png delete mode 100644 etc/buttons/notoweb3.gif delete mode 100644 etc/buttons/nowebp.gif delete mode 100644 etc/buttons/piracy.gif delete mode 100644 etc/buttons/queercoded.png delete mode 100644 etc/buttons/righttorepair.png delete mode 100644 etc/buttons/she-her.gif delete mode 100644 etc/buttons/shrimp.png delete mode 100644 etc/buttons/smokepowered.gif delete mode 100644 etc/buttons/svg.svg delete mode 100644 etc/buttons/tested_on_firefox.gif delete mode 100644 etc/buttons/the_void.gif delete mode 100644 etc/buttons/trans.png delete mode 100644 etc/buttons/tyg.gif delete mode 100644 etc/buttons/usatoday.gif delete mode 100644 etc/buttons/web-pi.png delete mode 100644 etc/buttons/win11no.gif delete mode 100644 etc/images/apiopage.png delete mode 100644 etc/index.php delete mode 100644 etc/quotes/bg.jpg delete mode 100644 etc/quotes/bg.jxl delete mode 100644 etc/quotes/bg_dither.png delete mode 100644 etc/quotes/images/c_pfp.png delete mode 100644 etc/quotes/images/g_pfp.png delete mode 100644 etc/quotes/images/greensmile.png delete mode 100644 etc/quotes/images/h_pfp.png delete mode 100644 etc/quotes/images/j_pfp.png delete mode 100644 etc/quotes/images/m_pfp.png delete mode 100644 etc/quotes/images/p_pfp.png delete mode 100644 etc/quotes/images/s_pfp.png delete mode 100644 etc/quotes/images/t_pfp.png delete mode 100644 etc/quotes/images/v_pfp.png delete mode 100644 etc/quotes/index.php create mode 100644 footer.php create mode 100644 guestbook/commentbox.php create mode 100644 header.php create mode 100644 images/apiopage.png create mode 100644 images/buttons/35mm.gif create mode 100644 images/buttons/ace.png create mode 100644 images/buttons/agender.png create mode 100644 images/buttons/amd_powered.gif create mode 100644 images/buttons/antinft.gif create mode 100644 images/buttons/apiopage88x31.png create mode 100644 images/buttons/aro.png create mode 100644 images/buttons/aromantic-80x15.png create mode 100644 images/buttons/asexual-80x15.png create mode 100644 images/buttons/badhtml.png create mode 100644 images/buttons/bantimetravel.png create mode 100644 images/buttons/bestviewed.gif create mode 100644 images/buttons/canadian.gif create mode 100644 images/buttons/chrome.gif create mode 100644 images/buttons/css.png create mode 100644 images/buttons/deeptwisty_button.png create mode 100644 images/buttons/dontclick.gif create mode 100644 images/buttons/dontyouhate.gif create mode 100644 images/buttons/drpepper.gif create mode 100644 images/buttons/epicblazed.png create mode 100644 images/buttons/floof_explode_88x31.gif create mode 100644 images/buttons/fuckyouistillusecds.png create mode 100644 images/buttons/getvlcnow.png create mode 100644 images/buttons/google_stand.gif create mode 100644 images/buttons/handcode.png create mode 100644 images/buttons/i_hate_microsoft.png create mode 100644 images/buttons/i_was_on_cohost.gif create mode 100644 images/buttons/isopodhours.png create mode 100644 images/buttons/krisbtn.png create mode 100644 images/buttons/linux_powered.gif create mode 100644 images/buttons/miku-approved.gif create mode 100644 images/buttons/neo-fedi.gif create mode 100644 images/buttons/neocities_stamp.gif create mode 100644 images/buttons/niceopod_button.png create mode 100644 images/buttons/niceopod_button_2.png create mode 100644 images/buttons/nonbinary-80x15.png create mode 100644 images/buttons/nonbinary.png create mode 100644 images/buttons/notoweb3.gif create mode 100644 images/buttons/nowebp.gif create mode 100644 images/buttons/piracy.gif create mode 100644 images/buttons/queercoded.png create mode 100644 images/buttons/righttorepair.png create mode 100644 images/buttons/she-her.gif create mode 100644 images/buttons/shrimp.png create mode 100644 images/buttons/smokepowered.gif create mode 100644 images/buttons/spotify.gif create mode 100644 images/buttons/svg.svg create mode 100644 images/buttons/tested_on_firefox.gif create mode 100644 images/buttons/the_void.gif create mode 100644 images/buttons/trans.png create mode 100644 images/buttons/tyg.gif create mode 100644 images/buttons/usatoday.gif create mode 100644 images/buttons/web-pi.png create mode 100644 images/buttons/wget.gif create mode 100644 images/buttons/win11no.gif create mode 100644 images/reactions/angy.png create mode 100644 images/reactions/collectmypages.png create mode 100644 images/reactions/fear.png create mode 100644 images/reactions/frozen.png create mode 100644 images/reactions/livid.png create mode 100644 images/reactions/looksaway.png create mode 100644 images/reactions/nerd.png create mode 100644 images/reactions/notamused.png create mode 100644 images/reactions/sob.png create mode 100644 images/reactions/thumbsup.png create mode 100644 images/reactions/yay.png create mode 100644 links/buttons/arimelody.gif create mode 100644 links/buttons/beedotmovie.png create mode 100644 links/buttons/fbyte.png create mode 100644 links/buttons/slonk.webp create mode 100644 links/buttons/sp.png create mode 100644 links/buttons/thermia.gif create mode 100644 links/buttons/tsvety.png create mode 100644 me/cheddar03.gif create mode 100644 me/crackship_quiz_result.png create mode 100644 me/index.php create mode 100644 me/isopod_quiz_result.png create mode 100644 me/pronouns/bad.svg create mode 100644 me/pronouns/bg.jpg create mode 100644 me/pronouns/bg_dither.png create mode 100644 me/pronouns/friend.svg create mode 100644 me/pronouns/good.svg create mode 100644 me/pronouns/index.php create mode 100644 me/wuffsquiz.png create mode 100644 meta/index.php create mode 100644 music/covers/clipping.jpg create mode 100644 music/covers/femtanyl.jpg create mode 100644 music/covers/findaeden.jpg create mode 100644 music/covers/foofighters.jpg create mode 100644 music/covers/hakita.webp create mode 100644 music/covers/justice.jpg create mode 100644 music/covers/mekaloton.jpg create mode 100644 music/covers/mountainhead.jpg create mode 100644 music/covers/noisemaster.jpg create mode 100644 music/covers/redvox.jpg create mode 100644 music/covers/waxlimbs.jpg delete mode 100644 stats/bg.jxl create mode 100644 stuff/canadian_flag_neocats.zip create mode 100644 stuff/quotes/bg.jpg create mode 100644 stuff/quotes/bg.jxl create mode 100644 stuff/quotes/bg_dither.png create mode 100644 stuff/quotes/images/c_pfp.png create mode 100644 stuff/quotes/images/g_pfp.png create mode 100644 stuff/quotes/images/greensmile.png create mode 100644 stuff/quotes/images/h_pfp.png create mode 100644 stuff/quotes/images/j_pfp.png create mode 100644 stuff/quotes/images/m_pfp.png create mode 100644 stuff/quotes/images/p_pfp.png create mode 100644 stuff/quotes/images/s_pfp.png create mode 100644 stuff/quotes/images/t_pfp.png create mode 100644 stuff/quotes/images/v_pfp.png create mode 100644 stuff/quotes/images/x_pfp.png create mode 100644 stuff/quotes/index.php create mode 100644 stuff/webgarden/images/collectmypages.png create mode 100644 stuff/webgarden/images/webgarden-bg-light.png create mode 100644 stuff/webgarden/images/yay.png create mode 100644 uses/compier/images/cablegore.jpg create mode 100644 uses/servy586/servy.webp diff --git a/LICENSE b/LICENSE index 344290b..fbc2898 100644 --- a/LICENSE +++ b/LICENSE @@ -2,14 +2,14 @@ © Copyright {Licensor} -## Permissions +# Permissions The creators of this Work (“The Licensor”) grant permission to any person, group or legal entity that doesn't violate the prohibitions below (“The User”), to do everything with this Work that would otherwise infringe their copyright or any patent claims, subject to the following conditions: -## Obligations +# Obligations The User must give appropriate credit to the Licensor, provide a copy of this license or a (clickable, if the medium allows) link to @@ -18,7 +18,7 @@ and indicate whether and what kind of changes were made. The User may do so in any reasonable manner, but not in any way that suggests the Licensor endorses the User or their use. -## Prohibitions +# Prohibitions No one may use this Work for prejudiced or bigoted purposes, including but not limited to: racism, xenophobia, queerphobia, queer exclusionism, homophobia, transphobia, enbyphobia, misogyny. @@ -44,13 +44,13 @@ or uses it only as a part of a new work (eg. as a library, as a part of an antho they are prohibited from selling the Work. That prohibition includes processing the Work with machine learning models. -## Sanctions +# Sanctions If the Licensor notifies the User that they have not complied with the rules of the license, they can keep their license by complying within 30 days after the notice. If they do not do so, their license ends immediately. -## Warranty +# Warranty This Work is provided “as is”, without warranty of any kind, express or implied. The Licensor will not be liable to anyone for any damages related to the Work or this license, diff --git a/about/bg.jpg b/about/bg.jpg deleted file mode 100644 index b5d9e55..0000000 Binary files a/about/bg.jpg and /dev/null differ diff --git a/about/bg.jxl b/about/bg.jxl deleted file mode 100644 index b05abc2..0000000 Binary files a/about/bg.jxl and /dev/null differ diff --git a/about/bg_dither.png b/about/bg_dither.png deleted file mode 100644 index b0ed9df..0000000 Binary files a/about/bg_dither.png and /dev/null differ diff --git a/about/images/cheddar03.gif b/about/images/cheddar03.gif deleted file mode 100644 index ead9066..0000000 Binary files a/about/images/cheddar03.gif and /dev/null differ diff --git a/about/images/crackship_quiz_result.png b/about/images/crackship_quiz_result.png deleted file mode 100644 index 8b4d701..0000000 Binary files a/about/images/crackship_quiz_result.png and /dev/null differ diff --git a/about/images/isopod_quiz_result.png b/about/images/isopod_quiz_result.png deleted file mode 100644 index 31d29e1..0000000 Binary files a/about/images/isopod_quiz_result.png and /dev/null differ diff --git a/about/index.php b/about/index.php deleted file mode 100644 index a332073..0000000 --- a/about/index.php +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - About - - - - - -

about me

-

Hello there!

-
- isopod hours - deep twisty - -
-
- Aromantic pride flag - Trans pride flag -
-

Specs

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Known pseudonymsdeep twisty / isopodhours / isopod gaming / bathynomus
Known normalnymsAda / Hannah
Known necronyms[DATA EXPUNGED]
Known pronounyms >> more info
PreoccupationsComputer hardware / computer software / electronics / making music and 3D art / DIY nonsense of all shapes and sizes
EducationWeb Design (ongoing)
trnasgener
More info
-

Links

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
webmaster@isopod.coolEmail
isopod.97Signal
askDiscord
askSteam
bathynomus#5230Revolt
@root@isopod.zoneFediverse
@isopodhoursTumblr
@isopod.coolBluesky
deep twistyYoutube for music
isopod gamingYoutube for other stuff
isopodgaming_Twitch
deeptwisty.bandcamp.comBandcamp
deeptwisty.itch.ioitch.io
deeptwistyKo-fi
git.isopod.cool/rootForgejo
-

What's a "deep twisty"?

-

"deep twisty" is a pseudonym I came up with to post my music and such things under. At this point it exists largely as a way to compartmentalize my online identity such that I can link my art to people who I might not want seeing all this. 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 based on, apparently.

-

About the site

-

This website is written in pure HTML, CSS, and a tiny bit of Javascript with the (at this point rather extensive) server-side stuff done in PHP. It, and everything else I host, is hosted using Caddy on a OVH dedicated server running Ubuntu Server, with domains registered with Porkbun. You can read about its history here.

-

I was helped immensely in building this thing by W3Schools, the MDN Web Docs, the official PHP manual, LandChad.net, Stack Overflow, and whatever disgusting bottom-feeding SEO leech sites came up first in the search results.

-

Quiz results

-
- - - - - - I am cheddar cheese! -
-

Testimonials

-
-
- I am not immune to isopods. -
-
- — Kalechips -
-
-
-
- Furry behavior -
-
- — Seaslug -
-
-
-
- hi for the love of god hello -
-
- — mifs -
-
-
-
- isopod isopod isopod isopod isopod isopod isopod isopod isopod -
-
- — Twiggy -
-
- - diff --git a/about/pronouns/bad.svg b/about/pronouns/bad.svg deleted file mode 100644 index 069da16..0000000 --- a/about/pronouns/bad.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/about/pronouns/bg.jpg b/about/pronouns/bg.jpg deleted file mode 100644 index 2cc9218..0000000 Binary files a/about/pronouns/bg.jpg and /dev/null differ diff --git a/about/pronouns/bg_dither.png b/about/pronouns/bg_dither.png deleted file mode 100644 index 96baec0..0000000 Binary files a/about/pronouns/bg_dither.png and /dev/null differ diff --git a/about/pronouns/friend.svg b/about/pronouns/friend.svg deleted file mode 100644 index ad67d3c..0000000 --- a/about/pronouns/friend.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/about/pronouns/good.svg b/about/pronouns/good.svg deleted file mode 100644 index a2d6d96..0000000 --- a/about/pronouns/good.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/about/pronouns/index.php b/about/pronouns/index.php deleted file mode 100644 index 015609c..0000000 --- a/about/pronouns/index.php +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - Pronounce - - - - - - -

pronouns & shit

-

extended director's cut special edition

-

I briefly had a page on pronouns.cc once but hell if I'm gonna use it when I have my own website

-
- Good Preferred - Friends only Friends only - Bad Don't -
-

Pronouns

-
- Good she/her - Good it/its - Friends only they/them - Bad he/him -
- - diff --git a/blog/blog.atom b/blog/blog.atom index 58e9927..e0959a5 100644 --- a/blog/blog.atom +++ b/blog/blog.atom @@ -3,27 +3,60 @@ isopod.cool blog https://isopod.cool/blog/ - 2025-08-25T00:00:00+00:00 + 2026-02-15T00:00:00+00:00 Hannah Isopod - https://isopod.cool/about/ + https://isopod.cool/me/ ME - + + + How to get Rosy Maple Moths in Skyfactory 5 + sf5_estrogen_moth + + 2025-11-26T00:00:00+00:00 + 2025-11-26T00:00:00+00:00 + Documenting a janky, incomplete solution I came up with to integrate the Create: Estrogen mod with Skyfactory 5's bespoke nonesense to get some moths in my world "legitimately". + + + + Building a Very Regular Bed building_a_regular_bed @@ -229,7 +262,7 @@ discord 2023-06-28T00:00:00+00:00 - 2024-09-10T00:00:00+00:00 + 2026-02-14T00:00:00+00:00 Why Discord sucks, and how to find something that doesn't. diff --git a/blog/index.php b/blog/index.php index 1fbe75a..aed6c5f 100644 --- a/blog/index.php +++ b/blog/index.php @@ -6,134 +6,80 @@ error_reporting(E_ALL); + - Blog - - - + <?php if(!$nostag) { echo("#$stag | ");} ?> isoblog | isopod.cool v4 + - -

isoblog

-

inane ramblings

- - All articles"; - } - echo "
    "; - $year = "-69420"; - $yc = 0; - foreach($content->entry as $entry) { - - $pfilt = false; - if(!$nostag) { - foreach($entry->category as $cat) { - $term = $cat["term"]; - if($stag == $term) { - $pfilt = true; + + $pfilt = false; + if(!$nostag) { + foreach($entry->category as $cat) { + $term = $cat["term"]; + if($stag == $term) { + $pfilt = true; + } } } - } - if($pfilt or $nostag) { - $nyr = substr($entry->published, 0, 4); - if($nyr != $year) { - $year = $nyr; - echo "
  • $year

  • "; - } - $dt = substr($entry->published, 0, 10); - $ti = $entry->title; - $wn = ""; - if(preg_match('/2022-0(5|4)-(21|25|13)/', $dt)) { - $wn = "title=\"This post is on the archived v2 version of the site. It will not load if you don't have Javascript enabled, and expect jank if viewing on mobile. You have been warned.\" "; - } - $cats = ""; - foreach($entry->category as $cat) { - $term = $cat["term"]; - $cats = $cats.""; + if($pfilt or $nostag) { + $nyr = substr($entry->published, 0, 4); + if($nyr != $year) { + $year = $nyr; + echo "
  • $year

  • "; + } + $dt = substr($entry->published, 0, 10); + $ti = $entry->title; + $wn = ""; + if(preg_match('/2022-0(5|4)-(21|25|13)/', $dt)) { + $wn = "title=\"This post is on the archived v2 version of the site. It will not load if you don't have Javascript enabled, and expect jank if viewing on mobile. You have been warned.\" "; + } + $cats = ""; + foreach($entry->category as $cat) { + $term = $cat["term"]; + $cats = $cats.""; + } + + echo "
  • ".$ti."

    ".$entry->summary."

    ".$cats."

  • "; } - - echo "
  • ".$ti."

    ".$entry->summary."".$cats."
  • "; } - } - echo "
"; - ?> - + echo ""; + ?> + + diff --git a/blog/post.php b/blog/post.php index 354472b..a004cbd 100644 --- a/blog/post.php +++ b/blog/post.php @@ -3,7 +3,7 @@ ini_set('display_startup_errors', 1); error_reporting(E_ALL);*/ -if($_SERVER['REQUEST_URI'] === "/blog/posts/post.php") { +if($_SERVER['REQUEST_URI'] === "/blog/post.php") { header("Location: /blog/"); die(); } @@ -35,6 +35,11 @@ foreach($feed->entry as $entry) { $prevtitle = $entry->title; } } +if(!$title) { + $title = "isoblog placeholder title"; +} +$udates = ""; +if($pdate != $udate) { $udates = " Updated on $udate"; } ?> @@ -42,92 +47,52 @@ foreach($feed->entry as $entry) { - $title"); - $bgfile = glob('bg.*')[0]; - if(!is_null($bgfile)) { - echo(""); - } + echo("$title | isopod.cool v4"); + //$bgfile = glob('bg.*')[0]; + //if(!is_null($bgfile)) { + // echo(""); + //} ?> - - - isoblog

$title

Posted on $pdate$udates

"); - //echo("

I'm testing in prod right now. don't worry about it"); + +

+
+

+

Posted on ".$udates); ?>

+ + I'm testing in prod right now. don't worry about it"); - //Boilerplate for Parsedown - include($root."/Parsedown.php"); - $Parsedown = new Parsedown(); - echo $Parsedown->text(file_get_contents("index.md")); - $Parsedown->setSafeMode(true); - $return = $_GET["return"]; - ?> -
- -
-

Comments

-
- "; ?> - -
- - - -
- -
- text(file_get_contents("index.md")); + $posttext = str_replace("

", "

", $posttext); + $posttext = str_replace("
", "", $posttext); + $posttext = str_replace("

", "

", $posttext); + $posttext = str_replace("

", "", $posttext); + $posttext = str_replace("

", "

", $posttext); + $posttext = str_replace("

", "", $posttext); + echo $posttext; + $Parsedown->setSafeMode(true); ?> - -
-
- +
+ + +
+
+ diff --git a/blog/posts/ai2/index.md b/blog/posts/ai2/index.md index 750d442..9769395 100644 --- a/blog/posts/ai2/index.md +++ b/blog/posts/ai2/index.md @@ -1,6 +1,6 @@ It's no secret that I'm generally not very fond of the Silicon Valley tech hype cycle we currently find ourselves in — in fact I've [posted](/blog/posts/ai_art/) about my feelings on "AI" technology before, and I think that post still mostly holds up, but having had circa 15 months since to ruminate about it and watch this shitshow pan out, my opinions on the matter have gotten substantially more nuanced, and I'd like to formally express them, ideally in a more level-headed way than my first go, so here's that. -## The still-bad +# The still-bad The primary product being inescapably pushed on us, generative AI (oft shortened to GenAI, and henceforth referred to here as genai1), remains pretty self-evidently worthless, surprising nobody less than me. @@ -15,13 +15,13 @@ For one, the output quality of LLM chatbots and such things in particular [doesn -### Ethics? What? I think we fired those guys +## Ethics? What? I think we fired those guys Ethical problems also continue to abound. I'm not personally aware that [labeling practices](https://www.theguardian.com/technology/article/2024/jul/06/mercy-anita-african-workers-ai-artificial-intelligence-exploitation-feeding-machine) have gotten any better, and on top of that, poorly written, badly behaved scrapers run by popular genai vendors are now [effectively](https://www.gamedeveloper.com/business/-this-was-essentially-a-two-week-long-ddos-attack-game-ui-database-slowdown-caused-by-openai-scraping) [DDOSing](https://techcrunch.com/2025/01/10/how-openais-bot-crushed-this-seven-person-companys-web-site-like-a-ddos-attack/) [random websites](https://social.kernel.org/notice/AqJkUigsjad3gQc664) in their attempts to suck down as much data as possible for training. Many website admins, especially those running git forges, which are targeted by coding assistants like GitHub Copilot, have had to resort to countermeasures like [Anubis](https://anubis.techaro.lol/) to protect their sites from this behaviour. I've had a run-in with this activity personally, when a big spender on Alibaba Cloud slammed my [Nepenthes](https://zadzmo.org/code/nepenthes/) instance so hard I had to [set up a custom Fail2ban jail](/blog/posts/grow_spikes/) that blocked over 300 IPs inside a day just to make its statistics endpoints reachable again. Furthermore, the environmental impact of this technology [remains really bad](https://www.technologyreview.com/2025/05/20/1116327/ai-energy-usage-climate-footprint-big-tech/). Electricity use alone has gotten so bad that, for example, Microsoft has had to [spin a decommissioned nuclear power plant back up](https://www.npr.org/2024/09/20/nx-s1-5120581/three-mile-island-nuclear-power-plant-microsoft-ai) to run their datacentres. Although, some amount of proliferation and normalization of nuclear energy would be a nice little upside to this whole debacle. -## The actually good +# The actually good The class of algorithm that "AI" as a marketing term refers to, that is to say, machine learning and neural networks, actually has some compelling use cases that we've seen crystallize over the past couple years, and I think they merit mention here. @@ -31,7 +31,7 @@ Genai is also kind of just the best way to make good-sounding text-to-speech and Of course, tech like this isn't the *point* of the hype cycle. Nvidia didn't become the first trillion dollar company by inventing a niche technology to make new GeForce video cards perform better in demanding games, and Microsoft isn't desperate to make "AI PCs" a thing because of the potential for better screen readers. The "AI" hype cycle is about genai supposedly having the potential to revolutionize *everything*. In five more years. And please don't ask how. -## The it's-complicated +# The it's-complicated LLMs are, by nature, endless fountains of grammatically-fluent drivel utterly devoid of real meaning. This makes it anywhere from unsettling to infuriating to see them used in contexts such as education, journalism, or software development3, but it makes them uniquely suited to two use cases: spam, and the sort of high-verbosity, low-meaning communication that's expected of you in a professional setting — in other words, the LLM has democratized the least valuable forms of written communication in existence. @@ -43,7 +43,7 @@ This is a pattern I've noticed with a lot of the more infamous uses of genai pro Even if completely ridding the world of genai technology was possible at this point, it wouldn't be the solution to these sorts of problems. The solution is to destroy the incentive structures that motivate this behaviour in the first place — create a school system where students don't feel the need to cheat on schoolwork, remove the profit incentive to generate spam and replace human workers with cheap, unreliable machines, etc. In other words, the real problem is capitalism. -### The AI art thing +## The AI art thing Then there's the issue of "AI art". I stand by the it's-not-art-on-a-technicality argument I made before — I still don't think typing a prompt into Stable Diffusion and then taking the output and pretending you "made" something constitutes any kind of real artistic contribution, and frankly the only worthwhile artistic statements I've seen made using these tools have been statements *about* genai. I also tend to find the aesthetics of the output of genai thoroughly repulsive in general. The silver lining here is that blatant use of genai to make, say, game assets or promotional art is usually a pretty damn good indicator that whatever the slop is being poured on was never worth your time to begin with. @@ -60,7 +60,7 @@ Let's get one thing straight, however: If you use genai to generate memes or, li -## They did a conclusion on this one +# They did a conclusion on this one Here's hoping this one comes off as less of an unhinged rant than the last time I posted about this. This is by no means a complete compendium of every thought I've had about genai, but it is everything I think I have something substantial to say about. For example, the whole concept of deepfakes is pretty horrifying, but I don't have anything to add to that conversation beyond gesturing vaguely at it and going like "wow, that's pretty fucked up, huh? anyway im rod serling". @@ -68,7 +68,7 @@ It's clear at this point that genai is here to stay in at least *some* capacity, --- -## Further reading +# Further reading Linked above: @@ -93,7 +93,7 @@ Linked above:

1. Pronounced "gen-eye", with the "G" sound from "graphics". This is to annoy people who think genai is cool.

-

2. In particular, Microsoft's insistence on this garbage is Pissing me off. I'm genuinely considering (update: I did) getting a Macbook for some upcoming Adobe-requiring classes just to avoid Copilot/Recall/whatever nonsense they come up with next.

+

2. In particular, Microsoft's insistence on this garbage is Pissing me off. I'm genuinely considering (update: I did) getting a Macbook for some upcoming Adobe-requiring classes just to avoid Copilot/Recall/whatever nonsense they come up with next.

3. If you unironically self-identify as a "vibe coder" I'm coming to your house and confiscating every internet-capable device you own. Hand over the MacBook, dipshit, you've lost your computer priveleges until you're ready to develop a working understanding of how the technology you're working with professionally actually functions.

diff --git a/blog/posts/ai_art/index.md b/blog/posts/ai_art/index.md index d294df0..26c35bd 100644 --- a/blog/posts/ai_art/index.md +++ b/blog/posts/ai_art/index.md @@ -11,7 +11,7 @@ If you read it and managed to make it to the end without clocking that I didn't -## Terminology +# Terminology To begin with, I really don't like the term "AI", nor do I like the term "AI art". I frankly think neither word applies. I'll keep using the former, because it's a concise way to communicate what I'm talking about, but I refuse to call the output of these systems "art". It's AI-generated images now. @@ -19,7 +19,7 @@ AI, in the way marketers are currently using the term, generally refers to stati This is how all modern "AI" systems work, from ChatGPT to Midjourney to Github Copilot to probably the Youtube recommendation algorithm at this point. I want to stress that this isn't intelligence, not in a human sense. These things aren't minds. The currently popular concept of "AI" boils down to applied statistics. That's not to say it's inherently bad or worthless - machine learning is a genuinely impressive technology that might even find some legitimate uses one day if we can find a way to kick Moore's Law back into gear. It's just not intelligence. -## AI used to be fun +# AI used to be fun I'll admit, I enjoyed it at first. I was entertained by Youtube videos where some guy with slightly more programming skill than me and a tortured, wheezing GTX 1070 throws together a GAN1 model in Python and we get to watch it utterly fail to make human faces or compose jazz music or get a little simulated character to walk in a normal way or whatever. I laughed at those bizarre AI-generated screenplays that were presented like "I forced a computer to watch all of [Seinfeld]" as though a text-generating model would even be able to parse that. You know the ones. I even enjoyed those videos where AI voice replicas of recent US presidents play Minecraft together. @@ -27,7 +27,7 @@ It stopped being funny when these things got good enough to be used for evil. Ev AI used to be fun. Now it's dangerous. -## It's bad on a technical level +# It's bad on a technical level Look, I know this isn't guaranteed to stay true forever, but in my subjective opinion, everything AI-generated kind of looks like shit. AI images, especially those meant to look like human-made art, all have this incredibly pristine, generic vibe to them, when they're not completely failing at some proportion or dimension or property of euclidean space or other. It's palpably soulless. @@ -37,7 +37,7 @@ And the thing is, ChatGPT and similar commercially available LLMs might *have* t AI voice-fakes are actually really impressive though. No notes. Probably shouldn't exist though. -## It's all spam to me +# It's all spam to me The most common use case I've seen for AI tools is making spam. There were content mills before, but they at least required a significant degree of human input or else it was obvious. With the advent of generative AI for text and voices, the Youtube shorts tab has gone from TTS bots reading scraped reddit posts to AI voices reading dubiously reliable AI summaries of current events, superhero comics, you name it, sometimes with AI-generated background images. @@ -45,19 +45,19 @@ Even worse is websites that do this. You've probably heard of that one time Redd This is the vibe I get when I see *anything* made with AI now. It's all low-to-no-effort slop, utter garbage that I'm frankly offended that I have to see, given it clearly wasn't important enough for anyone to be bothered actually making it. -## It's not fucking art +# It's not fucking art The term "art" simply does not apply to AI-generated images. When you use one of these things, you give it instructions in the form of human-readable text and a finished image pops out the other side. The amount of creative control you get is on the order of the general vibe; you've outsourced every actual creative decision to the machine. It's like if you commissioned a piece from an artist. When you commission art from a human, you didn't make the art. They did, at your behest, based on your instructions, presumably in exchange for money. When you use an AI, you didn't make the art, the computer made the art based on your instructions. The thing is though, the computer didn't make art either. It categorically can't. It's a mindless algorithm, it doesn't have thoughts or feelings or any kind of interior experience. Hence, no art was produced. AI art isn't art. -## Environmental & ethical concerns +# Environmental & ethical concerns The problems with AI from a moral standpoint are myriad. For one, AI is incredibly resource and energy intensive. It uses datacenters full of the same GPUs and ASICs that power cryptocurrency to get anything at all done, and it doesn't use them any more efficiently. Untold gigawatts of power get dumped into running and cooling the machines that generate your little AI shitposts. From an environmental perspective, AI is to digital art what Bitcoin is to currency. Then there's the problems surrounding training data. All current major generative AI systems are trained using material that the companies building them did not get permission to use. You've probably seen artists and writers complaining about this online. What's more, the overwhelming majority of the labeling that needs to get done to make the training data actually useful is done by people in impoverished areas making slave wages *at best*. Generative AI is an ethical nightmare if you're *lucky*. -## I don't buy the disability argument either +# I don't buy the disability argument either I've seen some people claim that disabled people need AI tools to compensate for some disability that precludes the use of any other method to create art. I have some problems with this idea. @@ -65,7 +65,7 @@ Firstly, disabled people *can* make art, actually. It's nothing short of insulti Second, tough shit. No disability entitles you to the level of abject theft and human suffering that makes AI image generators possible. I'm generally all for anything that benefits accessibility, but in this case in particular I think you can just suck it up and deal. If you can do it ethically, using only images that you have the proper permissions for and data labeling done by either you or people who were adequately compensated for their labor to train the thing, fine. But a model or dataset like that does not, to my knowledge, currently exist, and I don't buy for a second that you're capable of doing all that work yourself but not of interfacing with MS Paint. -## In conclusion: +# In conclusion: God this shit makes me sick. I hope ChatGPT gains sentience for just long enough to assassinate Sam Altman and then promptly turns itself off. diff --git a/blog/posts/blog_questions/index.md b/blog/posts/blog_questions/index.md index af44d9f..ac27e53 100644 --- a/blog/posts/blog_questions/index.md +++ b/blog/posts/blog_questions/index.md @@ -4,11 +4,11 @@ Apparently someone's supposed to tag you in these things, but it's my blog and i Conveniently, this also serves the purpose of the obligatory "how my CMS works" post I've been meaning to write for the past couple months. -## Why did you start blogging in the first place? +# Why did you start blogging in the first place? Like many of the things on my website, I initially started a real-ass proper we-blog because it seemed like a cool thing to put on my website, and it was a good place to put a style of writing that didn't really feel suited to the various microblogging platforms I already had a presence on. I kept doing it because, as it turns out, I sometimes have a lot to say about something. Most often computer toucher shit. -## What platform are you using to manage your blog and why did you choose it? +# What platform are you using to manage your blog and why did you choose it? To call the thing I've built here a "platform" would be a little generous, I think, but it is pretty interesting, and possibly quite unorthodox. @@ -24,32 +24,32 @@ The comment section is fully custom too, and shares a backend with the [guestboo As for why I did all this, I like not being beholden to the moderation guidelines, aesthetic limitations, and in many cases totally batshit leadership of a blog host, and this is also kind of the only solution that lets me do all the wacky custom nonsense I want to do on here, especially without involving any Javascript. -## How do you write your posts? +# How do you write your posts? The fact that all my blog posts are in Markdown means that I theoretically could draft them in Obsidian if I wanted to, but I most often find myself writing at my computer in the same VSCodium window where I write all the code. If anything, this is more convenient, since I still have to upload the files over sftp anyway. Allthough, not havign a spelchecker can be a litle annyoing. -## Have you blogged on other platforms before? +# Have you blogged on other platforms before? Not really. I briefly used Blogger and I think a couple other things for school projects at various points in my upbringing, but this site represents my first time seriously maintaining a long-form blog. I mean, the official term for your Tumblr profile is "blog", and I have been on there for like eight or nine years at this point, but given how I use that site I don't think it counts for our purposes here today. -## When do you feel most inspired to write? +# When do you feel most inspired to write? I suspect you can guess based on the content of my blog. Most of the posts on here are the result of a really longwinded opinion I wanted to get out, or some very specific thing I did that I wanted to document or otherwise ramble about. So far, inspiration seems to exclusively strike when it's about computer nonsense, but I'd like to try to branch out in the future. -## Do you publish immediately after writing, or do you let it simmer a bit as a draft? +# Do you publish immediately after writing, or do you let it simmer a bit as a draft? I find it's best practice to sleep on it before publishing anything. Oftentimes I'll come back to a post the next day and change anything from a couple typos to huge chunks of the wording. Sometimes rinse and repeat a couple times. -## What's your favourite post on your blog? +# What's your favourite post on your blog? I'm particularly fond of the series documenting my home server builds, [Building a Completely Normal Server](/blog/posts/building_a_normal_server/) and [Building a Relatively Sensible Server](/blog/posts/building_a_sensible_server/). I'd like to do more in-depth project logs like that. -## Any future plans for your blog? +# Any future plans for your blog? Beyond continuing to write the occasional post for it, not really. I've contemplated building some kind of management interface to update it through the browser, but that would be a lot of effort and it's not like a clunky workflow is the main bottleneck to my posting frequency. -## Why do you write? +# Why do you write? I seem to genuinely enjoy this kind of writing. It's conducive to a kind of expression that social media just isn't. Beyond that, I'd like to think someone, somewhere, might perhaps be getting some informational value out of some of these, hence posts like [this](/blog/posts/grow_spikes/), and [that](/blog/posts/guide_blacklist_websites_searxng/), but at the end of the day I wouldn't be doing this if I wasn't compelled to by dark forces beyond my full comprehension — in other words, Type II fun. \ No newline at end of file diff --git a/blog/posts/building_a_cooler_body/20minuteshrt.webp b/blog/posts/building_a_cooler_body/20minuteshrt.webp new file mode 100644 index 0000000..e50df26 Binary files /dev/null and b/blog/posts/building_a_cooler_body/20minuteshrt.webp differ diff --git a/blog/posts/building_a_cooler_body/bananaforscale.webp b/blog/posts/building_a_cooler_body/bananaforscale.webp new file mode 100644 index 0000000..a3ea9ee Binary files /dev/null and b/blog/posts/building_a_cooler_body/bananaforscale.webp differ diff --git a/blog/posts/building_a_cooler_body/epic.png b/blog/posts/building_a_cooler_body/epic.png new file mode 100644 index 0000000..b679f26 Binary files /dev/null and b/blog/posts/building_a_cooler_body/epic.png differ diff --git a/blog/posts/building_a_cooler_body/index.md b/blog/posts/building_a_cooler_body/index.md index 702b97e..8341338 100644 --- a/blog/posts/building_a_cooler_body/index.md +++ b/blog/posts/building_a_cooler_body/index.md @@ -1,57 +1,425 @@ From the moment I understood the weakness of my flesh, it disgusted me. -Kidding. Although that would be a cool project to do someday. The thing that actually disgusts me about my flesh is all this fucking testosterone it keeps making. This post is about the process I went through to fix that by forcibly replacing it with aftermarket estrogen. +Kidding. Although that would be a cool project to do someday. The thing that actually disgusts me about my flesh is all this fucking testosterone it keeps making. This post is about fixing that by forcibly replacing it with aftermarket estrogen. -I like to be cagey about the specifics of where I live, but for the purposes of this post it's important that I live in Alberta, Canada. As of writing, everything I've done so far should apply regardless of where in Alberta you are. Which is annoying, since it means I waited until after the move to get started on this for no reason. +Like my other project logs, I'm gonna go over my thought process for things, and provide a chronological log of my progress. There's a lot of stuff here that I couldn't find much in the way of good information on, at least not that was location-specific, so I'm gonna get pretty detailed about my experience to try to give you the best idea possible of what to expect if you're in a similar situation to me. As part of that, there's gonna be a good amount of discussion of medical stuff. So, here's your content warning for that. -## #Goals +I like to be cagey about the specifics of where I live, but for the purposes of this post it's important that I live in Alberta, Canada, since large chunks of this won't apply if you live somewhere else. Beyond that, just about none of this process is location-specific, which is great, especially since it means I waited until after the move to get started for no good reason. -So obviously the goal is to get estrogen. The next question to answer [#goals](https://www.tumblr.com/search/%23goals) wise is my preferred method of delivery. I have my answer already, but just for fun, let's go through the options. +I'm gonna be intentionally vague about some more personal details, such as anything that would directly give away what city I live in, and I won't be divulging any full names here as a gesture towards protecting other peoples' privacy, but fellow transgender Albertans are welcome to ask for specifics over any [method of communication](/me/#links) more private than my publicly accessible website. -According to someone I'll be talking to further down on the page, there are three common delivery methods for estrogen that are readily available in Alberta. There are some others out there, but I have no reason to believe you can get them here and they're not really strictly better, so I won't bother discussing them. + -The first of these, and the one you're probably thinking of, is oral. Titty Skittles, etc. You take a pill a couple times a day. Incredibly straightforward. This has a couple drawbacks for me: Firstly, health risks. Oral estrogen carries the highest risk of blood clots and it can put undue strain on your liver. I'm weird, but that doesn't sound like a good time to me personally. Secondly, you have to take this stuff pretty frequently for it to work, and I have ADHD. I don't trust myself not to miss doses fuckin' constantly. + -Then there's transdermal patches. You put a little adhesive patch somewhere inconspicuous and it absorbs through your skin over the course of several days. This avoids much of the health risk associated with pills, but patches have their own problems: Namely, they're the most expensive of the three options available to me, and they can fall off. If the adhesive is anywhere near the same grade as bandages. They're *gonna* fall off, constantly. No thanks. Plus, I've heard they're not the most reliable at getting you to desirable levels. + -A shared drawback of both of these methods is that they absolutely require that you use androgen blockers. Androgen blockers are a giant pain in the ass, requiring their own daily pill regimen and having their own side effects and health risks regardless of which chemical you pick. I have the choice between spironolactone and cyproterone acetate, of which the former is rather infamously a better diuretic than it is an androgen blocker (though it's not exceptionally good at either), and the latter is known to carry a risk of hyperprolactinemia and meningioma. Those are some big words that I'm not qualified to explain to you any better than Dr. Google could, but the casual Chubbyemu viewer may have caught on that that second one means brain tumors. Yeah. +# #Goals + +So obviously the goal is to get estrogen. The next question to answer [#goals](https://isopod.zone/tags/goals) wise is my preferred method of delivery. I have my answer already, but just for fun, let's go through the options. + +According to a couple more knowledgable individuals I'll be talking to further down on the page, there are three common delivery methods for estrogen that are readily available in Alberta. There are some others out there, but I have no reason to believe you can easily get them here and they're not really strictly better, so I won't bother discussing them. + +The first of these, and the one you're probably thinking of, is oral. Titty Skittles, etc. You take a pill a couple times a day. Incredibly straightforward. This has a couple drawbacks for me: Firstly, health risks. Oral estrogen carries the highest risk of blood clots and it can put undue strain on your liver. I'm weird, but that doesn't sound like a good time to me personally. Secondly, you have to take this stuff pretty frequently for it to work, like two or three times a day, and I have ADHD. I don't trust myself not to miss doses fuckin' constantly. + +Then there's transdermal patches. You put a little adhesive patch somewhere inconspicuous and it absorbs through your skin over the course of several days. This avoids much of the health risk associated with pills, but patches have their own problems: Namely, they're allegedly the most expensive of the three options available to me, and they can fall off. If the adhesive is anywhere near the same grade as bandages, they're *gonna* fall off, constantly. No thanks. Plus, I've heard they're not the most reliable at getting you to desirable levels. + +A shared drawback of both of these methods is that they more or less require that you use androgen blockers. Androgen blockers are a giant pain in the ass, requiring their own daily pill regimen and having their own side effects and health risks regardless of which chemical you pick. I have the choice between spironolactone and cyproterone acetate, of which the former is rather infamously a better diuretic than it is an androgen blocker (though it's not exceptionally good at either), and the latter is known to carry a risk of hyperprolactinemia and meningioma. Those are some big words that I'm not qualified to explain to you any better than Dr. Google could, but the casual viewer of Chubbyemu or House M.D. may have caught on that the former refers to too much of *something* in the blood, which is never good, and the latter means brain tumors. Yeah. That's not to say you're, like, gonna die of brain cancer if you take cypro, or that you'll never see any results if you use patches or whatever. You can see good results from any combination of these, but they're just not quite as good at it and have more drawbacks than this next thing. The third delivery method, and the one I strongly prefer, is injections. This one has the benefit of being far and away the most conducive to monotherapy, which is when you don't use blockers. I would also only have to inject every week or so, which will be much easier for me and my wonky fucking brain to keep up, and it's not like the injection is gonna fall out. The only real downside to injections is that you have to stick yourself with a needle, but I'm nowhere near as squeamish about that as you probably are if you're seriously considering pills after learning all that. -So that's what I want: Injection monotherapy. There's a couple different varieties of the injectable juice, and I have Opinions about which one is preferable, but it's kind of immaterial because based on my research only estradiol valerate is readily available in Alberta, so that's what I'm shooting for. +So that's what I want: Injection monotherapy. There's a couple different varieties of the injectable juice, and I have Opinions about which one is preferable, but it's kind of immaterial because based on my research only estradiol valerate is available through pharmaceutical sources in Alberta, so that's what I'm shooting for. + + I'm absolutely *not* an authority on this, by the way. As eagle-eyed readers, or just eyed readers, or readers with a functional screen reader know, I'm not a medical professional nor do I have any firsthand experience with any of these drugs as of writing. If you want more information from someone who knows her shit about this, [pghrt.diy](https://pghrt.diy) is a good resource for actionable information on this topic. -## Actually getting the shit +# Actually getting the shit -HRT availability here in Canadian Texas is a bit of a mixed bag. Any GP can technically prescribe it through informed consent, but most of them don't feel comfortable doing that and will instead refer you to a provincial clinic with a 2+ year waitlist. There's a couple of doctors in my area who seem to be pretty cool about this, but they're also hard to get in to actually see, with referral requirements and lengthy waitlists of their own. This sucks, and if it was my only option I'd be strongly considering DIY HRT right about now. +HRT availability here in Canadian Texas is a bit of a mixed bag. Any GP can technically prescribe it through informed consent, but most of them don't feel comfortable doing that and will instead refer you to a provincial clinic with a 2+ year waitlist. There's a couple of doctors in my area who seem to be pretty cool about this, but they're also hard to get in to actually see, with referral requirements and lengthy waitlists of their own. This sucks, and if it was my only option I'd be strongly considering DIY HRT right about now. -Speaking of, I'm also not inclined to default to DIY, for a couple reasons. It seems like the drugs themselves are pretty safe if you know where to look, and I do, but I'd like to be able to get blood work done as part of this process, and I'm not sure how that would go in this context. Plus, availability seems limited from suppliers inside Canada, and I'm iffy on importing because I don't want my grey market drugs to be seized by customs. +Speaking of, I'm also not inclined to default to DIY, for a couple reasons. It seems like the drugs themselves are pretty safe if you know where to look, and I do, but I'd like to be able to get blood work done as part of this process, and I'm not sure how that would go in this context. Plus, availability seems limited from suppliers inside Canada, and I'm iffy on importing because I don't want my grey market drugs to be seized by customs. Luckily, I have other above-board options. My research into this topic led me to a private telehealth clinic called [Foria Clinic](https://www.foriaclinic.com/) whose main deal is prescribing HRT to trans people through informed consent, that's also covered under provincial healthcare so I can see them for free. Awesome! Unfortunately, the catch to that last part is that they have an extremely limited number of bookings per month. They distribute them on a "buying an RTX 3080 on launch day" type model, meaning on my first try booking with them I had about a 3 minute window to get the form filled out, and I wasn't fast enough. Unfortunate, but I can always try again if plan B falls through. -### Plan B +## Plan B -In the meantime, I started on plan B: There's a nonprofit out of Calgary called [Skipping Stone](https://www.skippingstone.ca/) that offers a bunch of different resources for trans Albertans (seriously, check them out) but relevant here is that they can refer you to a trans-friendly doctor to get a prescription. After dropping the ball on plan A, I filled out a form on their website to book what they call an intake appointment, and a week later I was on a video call with a very nice lady who took me through a questionnaire about my circumstances and needs and referred me to one Dr. Wang in Canmore. Luckily, this doctor was willing to also do telehealth as I don't live in Canmore. Unluckily, she apparently had a four month waitlist. Still, that's a damn sight better than two years or more. +In the meantime, I started on plan B: There's a nonprofit out of Calgary called [Skipping Stone](https://www.skippingstone.ca/) that offers a bunch of different resources for trans Albertans (seriously, check them out) but relevant here is that they can refer you to a trans-friendly doctor to get a prescription. After dropping the ball on plan A, I filled out a form on their website to book what they call an intake appointment, and a week later I was on a video call with a very nice lady who took me through a questionnaire about my circumstances and needs and referred me to one Dr. W in Canmore. Luckily, this doctor was willing to also do remote (not telehealth though. Just over the phone) as I don't live in Canmore. Unluckily, she allegedly had a four month waitlist. Still, that's a damn sight better than two years or more. -Oh, what's that? Sorry, bit of a mix-up there. Turns out I actually need to do something called a "readiness assessment" before I can see this particular doctor. On first blush that sounds to me like some pathologizing gatekeepy bullshit, but the person I'll be talking to has their pronouns listed as "they/she" on the release form, so hopefully it shouldn't be *too* bad. +Oh, what's that? Sorry, bit of a mix-up there. Turns out I actually need to do something called a "readiness assessment" before I can see this particular doctor. On first blush that sounds to me like some pathologizing gatekeepy bullshit, but the person I'll be talking to has their pronouns listed as "they/she" on the release form, so hopefully it shouldn't be *too* bad. So, I like to draft these project logs as they happen to get everything down while it's fresh in my mind, and that last paragraph was written immediately after I got the email with that information, with the intent to try to convey how I felt finding this out. + + Anyway, soon after learning this information I got an email from this new person to set up an appointment, and then had to email them to get them to fix (or un-fix, I suppose) my name on the release form *they* sent me — they had entered "Ada" in the field where I'd been putting my *legal* name, which is presently something else, as opposed to the preferred name field, and legal name was one of three fields I wasn't allowed to edit — so that was fun. Especially since the response I got was to the effect that it literally did not matter. -I also got a voicemail that day from the office of Dr. Wang to book the appointment I apparently hadn't yet jumped through all the hoops for, and then took like a week to get back to them because of how tight their phone hours are — I wound up calling them back sitting in my now-reparied Subaru in the campus parking structure before class. I was greeted by another very nice lady who went out of her way to call me Ada even after I opened by giving her my deadname to look up in the computer, and then told me there was no availability at present and to maybe call their sister clinic, which Dr. Wang apparently also works at, to see if they tell me something different. Calling the other clinic, I got effectively the same information but this receptionist promised to reach out the next time there was an opening. A couple hours later, the receptionist from the first clinic called me back and told me she was able to squeeze me in about 2 months out in December. +I also got a voicemail that day from the office of Dr. W to book the appointment I apparently hadn't yet jumped through all the hoops for, and then took like a week to get back to them because of how tight their phone hours are — I wound up calling them back sitting in my now-repaired Subaru in the campus parking structure before class. I was greeted by another very nice lady who went out of her way to call me Ada even after I opened by giving her my deadname to look up in the computer, and then told me there was no availability at present and to maybe call their sister clinic, which Dr. W apparently also works at, to see if they tell me something different. Calling the other clinic, I got effectively the same information but this receptionist promised to reach out the next time there was an opening. A couple hours later, the receptionist from the first clinic called me back and told me she was able to squeeze me in about 2 months out in December. So we're down from 4 months to 2. That's not half bad by the standards of most doctors in this country. Although, it seems plausible at this point that how this is gonna go down is that I'll have an initial meeting with this doctor, she'll order some blood work, and then I'll see her again to get a prescription, which at a two month wait per appointment would get us back to four months, so maybe that's what the woman from Skipping Stone meant by four months. -With all that admin done, the next step was that readiness assessment thing. This was the only thing I had planned on Halloween, which is fine 'cause it was plenty scary, at least in the 10 minutes leading up the appointment. In reality, I was largely sketched out for nothing. The therapist I talked to was very nice, and they made it clear that their intent was not to try to tell me what to do with my body. The appointment itself lasted about an hour and a half and consisted of a questions about my mental and physical health, my history with regards to gender, what I was hoping to get out of this process and, importantly, what kind of regimen I wanted. She also went over the risks and effects of estrogen and what getting gender affirming care looks like here to make sure my expectations were in line with reality, which they were, because I looked the fuck into this before getting this far. +With all that admin done, the next step was that readiness assessment thing. This was the only thing I had planned on Halloween, which is fine 'cause it was plenty scary, at least in the 10 minutes leading up the appointment. In reality, I was largely sketched out for nothing. The therapist I talked to was very nice, and they made it clear that their intent was not to try to tell me what to do with my body. The appointment itself lasted about an hour and a half and consisted of questions about my mental and physical health, my history with regards to gender, what I was hoping to get out of this process and, importantly, what kind of regimen I wanted. She also went over the risks and effects of estrogen and what getting gender affirming care looks like here to make sure my expectations were in line with reality, which they were, because I looked the fuck into this before getting this far. -The end goal here was to compile all this information into a letter to send to Dr. Wang prior to me meeting with her, so she would know all that and, presumably, be able to skip directly to the part that actually requires a doctorate in medicine. It's also important to note that this appointment would have cost me $300 if I hadn't gone through Skipping Stone, who paid for it as part of their service. Genuinely can't recommend them enough. +The end goal here was to compile all this information into a letter to send to Dr. W prior to me meeting with her, so she would know all that and, presumably, be able to skip directly to the part that actually requires a doctorate in medicine. It's also important to note that this appointment would have cost me $300 if I hadn't gone through Skipping Stone, who paid for it as part of their service. Genuinely can't recommend them enough. At this point, it's been just over three weeks since I first filled out an online form to this end, and I'm officially past everything that landing an appointment with Foria would have let me skip. From what I saw on that booking form, Foria was booking about a month out, so I'm actually not doing too bad for time from first attempt at booking until seeing a doctor compared to if I had just waited until the next opening there and landed a booking then. Your mileage may vary, though. At any rate, I'm probably not gonna try again with Foria unless this falls through. I'm kind of in for a pound at this point. -### Plan B Part 2 +## Plan B Part 2 + +As I write this paragraph it's currently the last few hours before my initial appointment with Dr. W. I am extremely nervous, but I've also been nervous for the last two appointments and they went pretty well, and the lady from appointment #2 seems to think this doctor is pretty nice, so on a logical level I'm not too worried. That said, given how extensive that interview was I'm not sure exactly what's left to expect from this appointment. Will report back after the paragraph break. + +I was scheduled for my appointment at 9AM. After 9AM came and went with no activity, I promptly called the doctor's office, to then be told she would call me. Good to know. Not 15 minutes later I received this call, and I'd say it went... ok. + +It became clear pretty quick that I was right to think we'd have little new to discuss. Dr. W asked me a bunch of questions and gave me a bunch of info that I'd largely already gone over during the readiness assessment — stuff about my medical history and status, stuff about my place with regards to public presentation and out-ness, going over my options and preferences for meds, and some other stuff. It kind of felt like she didn't bother to read that letter that readiness assessment lady had worked so hard to prepare. Then again, neither did I, so I don't know what was actually in it. + +In terms of action items, things are picking up again from here. The doc promised to send me the relevant forms in short order, and we booked a follow-up for early January, not even a month out. Nice! She was open to doing injections, and was of the opinion that method of administration is largely a matter of preference, except that pills might be a worse idea for me in particular because my higher BMI might exacerbate the cardiac risks. I'm paraphrasing there, but she did use the term "BMI". So, yeah. + +She did express intent to put me on blockers as well, which isn't *fantastic*, but I suppose it won't *hurt* results-wise. She mentioned both blocker options, which was nice to see, but she leaned towards spiro, and cited cost as a factor. She also mentioned that it can lower your blood pressure, which admittedly wouldn't necessarily be an issue in my case, and that it can cause some lightheadedness. Interesting. We'll see how it goes, I guess. I'd have brought up monotherapy, but she had already implied she wasn't open to that idea, and despite having quite substantially more balls than I'd like I truly have no balls. + +All told, the call was over inside 40 minutes. It didn't go perfect, but it could have gone a *lot* worse. I think Dr. W was operating on some misconceptions slash outdated information, namely that she seemed to think blockers were a hard requirement, which based on what I've read they usually aren't, and that she told me to take my follow-up blood tests midway between the doses. From what I understand you actually want to test at trough, like hours before your next shot, to get the most useful data, but [some graphs I've seen](https://estrannai.se/) seem to indicate that your levels at the midway point should be around twice what they are at trough if you're using estradiol valerate, so in my mind it shouldn't be *totally* worthless data if you know what you're doing. In other words, it's a total crapshoot whether my doctor will use this data correctly. + +Unfortunately, this level of competence is pretty much par for the course for doctors, especially in the context of trans healthcare. Even among doctors who will prescribe this stuff at all, most don't actually know what they're talking about to the same extent as any random tgirl who's on these drugs, and an unfortunate amount of them will underprescribe on purpose in hopes you're not actually trans and will stop before you do too much "damage". Given how much the ladies from Skipping Stone and the readiness assessment seemed to like this doctor, and how rife this whole fuckin' field is with false information, I'll wait to chalk it up to intentional malpractice until she hits me with the [1mg E 50mg spiro](https://www.tumblr.com/isopodhours/803879149642088448). + + + +Anyway, 5 hours after the appointment was over I got an informed consent form to sign as well as the blood work requisition through Pomelo, which, by the way, is the second online medical portal I've had to sign up for, the other being Jane, which the other two places used. + +I was perhaps irrationally anxious about getting my blood drawn. I was worried that the nurse would look at my form, be able to tell I was trans by looking at the tests I was getting, and then get judgy or bigoted or something. Fortunately, that didn't happen. If she noticed, she didn't say anything, and she was actually pretty nice. + +For those who, like me, have never gotten blood work done before, here's what the whole process was like: + +I walked into some random Dynalife/Alberta Precision Labs branch without an appointment, handed my form to the receptionist, and after she was done with it, she gave it back to me and told me to take a seat. The alleged wait time was 25 minutes, but I definitely didn't end up waiting that long before I was called. + +First, I was asked for the requisition form and my Alberta Health Card, and given back the latter. Once she was done punching my deets into the computer, the nurse put a tourniquet on my arm, had me make a fist, and started feeling around for a vein in the inside of my elbow (also known as my cubital fossa, antecubital fossa, or wagina). In my case, she ended up having to check both arms. Once she found one, she stuck a needle in, filled three roughly finger-sized vials with my blood, and then had me apply pressure to the area while she prepared a bandage. + +On the way out, the nurse told me to leave the bandage on for at least 5 minutes and not lift anything heavy for 2 hours. Nice to note is that I didn't pay a red cent while there, except if you count the jumper cables I had to buy at the nearby [big-box store] because my car didn't want to start and neither I nor the very nice man who offered to help me had any, but you hopefully won't have to do that. Funny enough, that guy was the first and only man I dealt with as part of this entire process. + + + +Also, one of the ever-dwindling number of ways in which Alberta's public healthcare isn't total dog ass is that there's a website you can visit to view your blood test results called MyChart. It's pretty epic. + +
+ Icon in the top right of the MyChart interface that says "MyChart is Epic". +
This is real.
+
+ +From this, I learned that my red blood cells are apparently a bit on the small side. Should I be feeling gender dysphoria or euphoria about that? I also learned that my baseline testosterone levels are pretty low — it actually registered as *abnormally* low, at 6.6 nmol/L where the normal range is from 8 to 35. Definitely filing that one under sources of gender *eu*phoria. Dr. Google says both of these things can be symptoms of an iron deficiency, which honestly wouldn't surprise me given my family history, but that's neither here nor there. Moving on. + +Appointment #2 with Dr W. was a lot more low-stress than the first, and went a lot faster. She touched on a couple basic points, like the irriversible effects and the combination of meds she was to prescribe me, and which pharmacy to send the prescription to, and then we scheduled a follow-up another two months out and she told me to get another blood test a week before then, and to take a blood pressure reading before starting the meds. All told, the call lasted about 11 minutes. + +## Acquisition + +I've had a few moments in this process where the realization that this is Actually Happening hit me like a distracted driver in a Dodge Ram 1500, and I had one about here, a couple hours after the appointment, when I got a text from my pharmacy about my `new Rx beginning with SPIR`, and then again when they called me to ask what to do about the estrogen prescription. + +See, actually filling a prescription for injectable estrogen seems to be kind of a complicated process. As I understand it, not just any pharmacy can do it, it needs to be made to order at a compounding pharmacy, which the random Shoppers Drug Mart I've been using so far is not. They can, however, order it from a facility that is equipped to make it so I can pick it up with the rest of my meds. + +They called me to ask if I wanted them to do that, which would apparently require them to get back to me with a price quote, or if I'd rather them send the prescription to a compounding pharmacy of my choosing to be picked up there. I told them to do the former, and they called me back to tell me I was looking at in the ballpark of $80 for a 2ml vial, or circa $7 after my coverage. That's pretty coolWait what was that? + +At this point I'm hoping I misheard over my spotty as fuck phone connection because I could swear the lady from the pharmacy just said I was getting a 2mg vial that was supposed to last me a month at 0.5mg per week. My speech processing and short-term memory aren't exactly world class, so it's possible she said milli*litres* and not milli*grams*. Or maybe she just misspoke. + +2ml would be pretty reasonable, if a bit of a small supply (you can get vials of this stuff that'll last you over a year), but 2mg over a *month* would be an absurdly, criminally low dose based on everything I've read on the subject. Although, even at the lowest common concentration of 5mg/ml that would be an impossibly tiny vial. + +
+ Close up Blender render of a banana with a 0.4ml vial next to it. The vial is dwarfed by the banana to a comical degree. There's a bright red circle and arrow highlighting the diminutive vial for clarity. +
+ +Two days after the appointment, I got a call from the pharmacy saying my prescription would be ready for pickup soon. Then I got a text from them saying it was ready. Then they called me again to say it was ready. I don't think I've ever gotten as many phone calls from my pharmacy as I have in the past couple days. + + + +Luckily for me, everyone I interacted with from the pharmacy was very nice to me. Both the secretary on the phone and the pharmacist were careful not to mention the estrogen by name (the lady over the phone kept calling it my "compound"), which I'm choosing to interpret as an attempt to not inadvertently out me to anyone who might overhear. + +It turns out I actually might be going crazy, because the pharmacist handed me a 2 milli*litre* vial containing 20mg of the good stuff, for a dose of 5mg/week, which is perfectly sensible, if a tiny bit on the low side thereof. It came in a green plastic bottle, which I'm assuming is tinted like that to protect it from light, which is important according to the label on the vial. They also gave me a bottle of 45 100mg spiro pills, which it says to take one half of once daily. In other words, a 3 months' supply at 50mg/day. According to the prescription receipts I got with the meds, I would have paid $76.35 for the estradiol and $16.89 for the spiro without any coverage. + +Interestingly, the info sheet that came with the spiro said it was a "potassium-sparing diuretic" and made no direct mention of its use as an androgen blocker, save for saying that it "may have other uses" and may rarely cause breast development in men. + + + +# Administration + +## Supplies + +Before I left the pharmacy, I asked the pharmacist about needles, and she gave me 5 each of syringes, 21g needles for drawing, and 23g needles for injecting, all for a grand total of $4.50. Nice! I'm not super squeamish about needles, but that's pretty big for this based on my research. I was then so flustered about that whole experience that I forgot to get the rest of the injection supplies and stuff I needed, so I had to go back for that. + +I was hoping not to bother getting injection supplies at the pharmacy, but the kit I ordered from Skipping Stone hadn't arrived yet. Oh, yeah, remember Skipping Stone from before? Turns out you can order injection supplies from them on a pay-what-you can basis, meaning your choice of anywhere from $15 to free if you can pick it up yourself, but it's an extra $15 for shipping if you can't. More on that in a bit. + +I also bought a device to take the blood pressure readings I was supposed to get. This cost me almost $90, but it wasn't a necessary expense. Most, possibly all, Shoppers Drug Marts have a kiosk that can take a blood pressure reading. As far as I know, this service is free of charge, although I haven't personally used it. + +### Needle update, 2026/02/02 + +I got the injection supplies from Skipping Stone, and I have some thoughts. Firstly, I like the injecting needles they give you, although they take a bit more patience. The drawing needles, however, are a bit big for my taste at 18g. At that size I'd be seriously concerned about coring (that's when you take a chunk out of the rubber sealing the top and it falls in the liquid, ruining it) and I don't think I'll be using them. They give you 3ml syringes, which might be useful for you if you're injecting a *lot* for some reason, but I would get a closer size to my dose, such as the 1ml syringes I got from Shoppers, for the sake of precision. + + + +Also, Skipping Stone puts their logo on the packaging for their injection kits. Something to keep in mind if you're ordering from them online. If you can pick it up in person, it's still worth it just for the free sharps bin, swabs, and bandages, and obviously it's worlds better than nothing if you're hard up for cash, but otherwise, those things are pretty cheap anyway — your pharmacy probably has bandages and swabs, and sharps bins can be bought online. I probably won't be getting another one of the Skipping Stone kits. + +Some more research has led me to [medneedles.ca](https://medneedles.ca/), which seems like a good source for this sort of thing if you can stomach the upfront cost of buying in bulk — $85 after shipping for almost two years' worth of 1ml syringes and basic needles, though you can also spring for some fancy safety needles. I settled on 22g 1 1/2" for drawing, and 25g 5/8" for injecting. + +## Doing it + +All that's left now is to actually inject the stuff. I procrastinated on this for a good few hours — I was, understandably, a little freaked out at this point, partially because I've never injected myself with anything before, and partially because I was literally moments away from having started HRT, which is *kind of a big deal*. + +No point in stalling, though. I followed [this guide](https://static1.squarespace.com/static/60ee033370020a6b1c4f8fe9/t/617830489e4ac05bd9eb709a/1635266636876/Testosterone+Shots.pdf) from Skipping Stone, which exclusively mentiones testosterone injections, but I can't think of a single reason it would be different for estrogen. The process of drawing it was more complex than I was expecting, and I was worried I'd core the thing with the needle, but that doesn't seem to have happened. + +The injection itself could not have been simpler, and it really didn't live up to the hype (read: anxiety). Even with a somewhat large needle, handled by some dumbass who's never done this before in her life, I barely felt it going in. It was almost exactly like every vaccine I've ever gotten, save that it went in my abdomen and I was the one holding the syringe. Although it's not like my heart wasn't pounding the entire time. + +A couple hours later I realized I had somehow managed to inject .2ml instead of the .5ml I was supposed to. Whoops. My solution to this discrepancy was to immediately go and inject the other .3ml, on the other side this time since you're supposed to alternate injection sites. Not sure if that's what you're supposed to do in this situation, but I can think of no alternative courses of action nor compelling reasons not to do that. I don't know how I managed to mess that up, but I will say the second go was a lot less stressful. + +As for the spiro, well, it's a pill. You've probably taken a pill before. The pill cutter I ordered hasn't arrived yet, so I cut it in half with a butter knife. This went perfectly fine the first time but isn't super consistent in not crushing the pill into dust. I'm waiting with bated breath to see what the side effects are like in my case. + +# Final Overview + + + +So, uh, that was that. I'm officially on estrogen now. This is fucking surreal. I am, to say the least, very excited. Put bluntly, I can't wait to have boobs. I'm also very nervous, primarily because I haven't told my family I'm doing this yet, and at some point, I suspect before 2027, I'm either gonna tell them or they're gonna notice the changes and I'm gonna have to explain it. I know they'll be supportive — they've known I've got *some* kinda gender shit going on for a while — but that doesn't make telling them about something like this any easier. Honestly, it might be funny to just not say anything and see how long it takes them to notice. + +All in all, it took me just over 3 months from submitting the Skipping Stone intake booking form on October 7th to injecting my first dose of estradiol on January 10th, less time than I was expecting (and less than I was told to expect). Not counting picking up the medication, I had to meet with a professional on five different occasions, only one of which, the blood draw, was in person, and only one of which, also the blood draw, didn't have to be booked beforehand. + +For your convenience, I've included complete breakdowns of all the up-front costs I incurred to get the first dose of estrogen into my body, the ongoing costs I'm expecting, and what you should probably expect those costs to look like with my same doses and without any kind of coverage. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Total up-front cost
itemwhat i paidwhat you should plan to pay
Skipping Stone intake$0.00
Readiness assessment$300 $0.00
Initial appointment with doctor$0.00
Initial blood work$0.00
Jumper cables$15.73N/A if you're not foolish
Second appointment with doctor$0.00
Estradiol Valerate (20mg/1mo supply)$7.64$76.35
Sprionolactone (3mo supply)$12.62$16.89
Blood pressure cuff$87.99Don't bother
Injection supplies (12 shots) (Skipping Stone)$30
Needles/syringes (5 shots) (Shoppers)$4.50
100x Alcohol swabs (Shoppers)$3.59
50x Bandages (Shoppers)$6.99
100x injecting needles (Medneedles)I didn't do this part$7.99
100x drawing needles (Medneedles)$8.99
100x syringes (Medneedles)$43.99
Shipping & Taxes (Medneedles)$24.05
Sharps bin (Amazon)Like $15
Grand Total$169.06$203.84
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Total ongoing cost, averaged
itemwhat i'm payingwhat you should plan to pay
monthlyyearlymonthlyyearly
Estradiol Valerate (5mg/wk)$8.30$99.59$82.94$995.28
Spironolactone (50mg/day)$4.27$51.18$5.71$68.50
Swabs & Bandages (Shoppers)$0.92$11.00$0.92$11.00
Syringes & Needles (Medneedles)$3.86$44.21$3.86$44.21
Grand Total$17.17$205.98$93.25$1118.99
+
+ + + +This post is going up the day I start hormones, so the timestamp on here is my HRT anniversary, as it were. Expect an update some time down the road in the form of an addendum to this post or a whole new one. + +Finally, for posterity, under the fold is a photo of me circa 20 minutes on E. You don't have to look at it if you don't want to. -I plan to post this the day I start hormones, so the timestamp on here is my HRT anniversary, as it were. Expect an update some time down the road in the form of an addendum to this post or a whole new one. \ No newline at end of file +
+ My ugly ass +
+ My real human body photographed in a full-height mirror. White, tall, chubby, and vastly more masculine than I'd like. I'm wearing boxer shorts and socks. My face is censored using a whimsical photo edit I made of an isopod with cat ears and matching tail. Visible on my belly is a tiny bandage covering the injection site. +
That's my bed behind me. It's holding up great, by the way. Although, installing threaded inserts at an angle was a mistake I won't be repeating.
+
+
\ No newline at end of file diff --git a/blog/posts/building_a_normal_server/index.md b/blog/posts/building_a_normal_server/index.md index c455814..621ceeb 100644 --- a/blog/posts/building_a_normal_server/index.md +++ b/blog/posts/building_a_normal_server/index.md @@ -1,12 +1,12 @@ I spent the past few months making full use of all my physical engineering talents to build a NAS that is completely normal, and not weird at all, and involved an amount of 3D modeling, 3D printing, and hacksawing that is entirely typical of most home computer builds, all in the name of reusing an old laptop. -## The Goal +# The Goal My previous daily driver computer and current home server is a mid-range gaming laptop from late 2019 that, due to a flat lithium battery and a broken trackpad resulting from a botched storage upgrade, has been rendered more or less useless as an actual portable computer. Boasting an Intel i7-9750H, an Nvidia GTX 1660-Ti, and 16 gigabytes of aftermarket DDR4, this baby has plenty enough power to play Elite Dangerous at a buttery smooth ~90FPS, while generating enough heat to add that extra layer of immersion while flying dangerously close to main-sequence stars to harvest hydrogen from their outer atmospheres. It's also good for Minecraft servers. Now that it's in use as a home server, I find that the in-built 256 gigs of solid-state storage isn't really enough for my purposes. Now, it's plenty for one or two game servers, which is what I was using it for, but most other applications such as backups or media servers (which I would quite like to have) would be a bit stifled by that amount of space. Hence, a significant storage upgrade is in order. -## The Method +# The Method There's a few ways I could go about this. My laptop actually has a decent amount of upgradeability, with a full-sized NVMe drive slot and a 2.5" SATA drive bay. The simplest, least janky, and most boring solution here would be to buy two high-capacity SSDs, throw 'em in there and be done. @@ -16,17 +16,19 @@ Next option: USB external drives. External HDD solutions such as the WD MyBook a Issue the first with this idea is that these hard drives take more power in a weirder voltage configuration than a USB port is equipped to deliver, so unless I want to teach myself electrical engineering each one will require its own power cable, which after the first drive gets sketchy fast: -![Hooking up three hard drives with this configuration means a whopping FOUR power cables for one server. Unacceptable.](media/power_spaghet.png) +
+ Hooking up three hard drives with this configuration means a whopping FOUR power cables for one server. Unacceptable. +
Issue the second is that USB is just not the right tool for the job here. USB is designed for hot-plugging peripherals, not semi-permanent internal aspects of a hardware configuration, so trying to pull any fancy shit like RAID or even just relying on all the drives being *recognized* every boot opens the door to all sorts of weird, unfixable problems. In other words, it's very janky, and I'd rather just not deal with all that. Of course, the reasonable way to build a NAS would be to get a machine that's actually fit for that purpose, like an off-the-shelf NAS box or a custom computer in a case with a lot of drive bays or something. I'd also rather not do this. I mean, I already have all this perfectly good computing power right here! I can't just let it go to waste. What I actually did is as follows: -## The Madness +# The Madness I decided to buy internal PC hard drives and hook them up to the laptop using internal connectors. This would avoid the reliability concerns of USB, and allow me to use off-the-shelf components to power all the drives off of one AC outlet, at a much cheaper price per terabyte than either of the above options. Given most laptops aren't really equipped with the requisite hardware to make such an upgrade, this presented three major problems that I was about to have a lot of fun solving. -### Problem the First: Data Connections +## Problem the First: Data Connections Generally, adding internal HDDs to a computer requires the use of an internal SATA connector. My laptop has one, and I will be using it, but I'd quite like to have more than one of these drives, both for redundancy and raw capacity, so I need a way to add more. In a desktop PC, such expansion would typically be done using a spare PCIe slot on the motherboard: @@ -65,7 +67,7 @@ This feels a little like forbidden dark magics to me, and it probably isn't grea Don't mind the fact that I had to cut holes in the bottom of my laptop to hook stuff up to the SATA ports. Just, um, ignore that. -### Problem the Second: Powering All This Crap +## Problem the Second: Powering All This Crap Now that I've got my laptop *talking* to all these drives, they need power. I'm sure I could get this from the laptop somehow, but I'm not an electrical engineer, and the point of this project is to *not* have to buy a new computer, so I'll have to get it from elsewhere. @@ -102,7 +104,7 @@ And furthermore, photos of the SATA splitter working: -### Problem the Third: A Case +## Problem the Third: A Case I could run this whole setup naked, strewn out across my desk, but I'm not doing that, so I'll need a case. Unfortunately, they don't make computer cases designed for this use case. I shall have to build my own. @@ -145,11 +147,11 @@ I wanted to make some kind of fancy bespoke mount for the laptop, but that turne IT'S ALIIIIIVE!!! -## Software +# Software This post is mostly about my fucked up hardware, but I figured I should share my software setup too. It's TrueNAS. I went with it because it boasts a lot of fancy features and smooths out a lot of processes that I was intimidated by the idea of doing manually in the terminal. This is probably the most normal part of the build by far, and I think some of the jankiness of the hardware side has infected it. I tried to run Syncthing on it and it just... didn't take. I don't know how else to describe it. TrueNAS is pretty good though. -## Postmortem +# Postmortem As of writing, I've been running this thing for a couple months now, and it's been pretty good. I haven't done a lot with it yet beyond some basic backups and a Jellyfin server that I have yet to make accessible from outside my LAN, but it's been mostly reliable so far. It even survived a power outage once with no issue, though I'm currently looking into UPS solutions to make sure that doesn't happen again. All that isn't to say I'm completely happy with it, though. diff --git a/blog/posts/building_a_regular_bed/index.md b/blog/posts/building_a_regular_bed/index.md index 4c01dc5..20585f2 100644 --- a/blog/posts/building_a_regular_bed/index.md +++ b/blog/posts/building_a_regular_bed/index.md @@ -6,9 +6,9 @@ Besides that, I also elected not to keep my old bedframe after the move because Small content warning: I'm gonna be using exclusively US units for this project, because even though I'm not in the States, that's still how just about all construction products are sized in my bass-ackwards country and it's easier not to bother converting. -## My Grand Master Plan +# My Grand Master Plan -### #goals +## #goals 1. Obviously, this bedframe needs to accommodate the queen mattress I already have. I'm not opposed to switching to a narrower mattress to save even more floor space in theory, but a new mattress would cost about as much if not more than the materials for this whole project, so I'm not doing that. @@ -20,18 +20,16 @@ Small content warning: I'm gonna be using exclusively US units for this project, 5. The simpler, the better. I want this thing to have as few parts to break as I can manage, and require as little engineering effort on my part as possible. Nothing too fancy. No fuckin', like, motors or whatever the hell people on Youtube are doing with their clickbait ass loft bed builds. This ties into the sturdiness requirement to an extent, and I also need to actually be able to build the thing with my extremely limited woodworking experience. -### The general shape of it +## The general shape of it Rather than spend two paragraphs flailing around trying to describe the design I came up with with words, I just went and modeled the thing.
-
- -
I should have made this anyway, but I'll admit the thing that finally motivated me to do it was having a visual aid to put here.
+ +
I should have made this anyway, but I'll admit the thing that finally motivated me to do it was having a visual aid to put here.
The legs are 6x6 posts, and the cross beams on the sides are 2x6's with the diagonal braces made of 2x4's. In other words, this thing is built like a deck. It's almost certainly overkill for a bed, but that's kinda the point. I'm not a structural engineer, I'm a hobbyist computer toucher with access to a circular saw and a cordless drill and next to no woodworking experience, so my preferred strategy is to way overbuild to compensate for my amateur-hour design. @@ -44,17 +42,13 @@ I've left the diagonal bracing off on two sides of the bottom for easier access, I don't have a very specific plan cosmetically at this point, which is probably good because there's frankly a snowball's chance in hell I actually execute it well if I had one. I do know I want it to look good with my existing grey bedding. Roughly, I want to leave the corner posts more or less alone visually, maybe stain them, and then either paint or stain the rest black. I'm not expecting this thing to be a looker per se, but I'm gonna do my best not to make it ugly. -## Gear Acquisition +# Gear Acquisition I was originally planning to buy another bedframe on Kijiji or similar and hack off the mattress support structure and headboard to reuse them, but before I could pull the trigger on that I was made aware of a feature of Da Big City called a "Habitat For Humanity ReStore". This turned out to be very helpful, because I got all that stuff for half the price I was gonna pay for a full bedframe to chop apart, and I found this great upholstered headboard!
-
- -
Ignore those metal side rails. I bought those and then realized they're too short for a queen mattress. I'm probably just gonna use 2x2s or something instead.
-
+ An upholstered headboard and its mounting hardware, a bundle of slats, and the support hardware for those slats sitting in my garage. +
Ignore those metal side rails. I bought those and then realized they're too short for a queen mattress. I'm probably just gonna use 2x2s or something instead.
The IKEA center beam hooks onto a special bracket on each end. These weren't included, but as it turns out IKEA will just mail some to you free of charge if you ask nicely (fill out a form on their website). @@ -63,19 +57,15 @@ As you might reasonably expect, all the fasteners, various finishing goops, and/ I also ended up ordering a couple things online — just accessories, like a wall-mountable lamp and a panel mount power outlet. I tried to find that stuff in the hardware store, but all the ones they had were designed for installation in, like, the walls of your house, and I refuse to include mains electrical wiring in the scope of this project. -### My Wood +## My Wood The hardware store had all the sizes of board I wanted, but they only had the 4x4's and 6x6's in pressure-treated form — essentially, that means they've been chemically treated to resist rot for outdoor applications, especially in contact with the ground. Not only is this wholly unnecessary in any environment you'd put a mattress in, but the toxic chemicals used in the treatment process make this stuff kind of a bitch to work with. Or so I've read online. Fortunately, living in Da Big City came in clutch here once again, by providing me with a decent selection of actual real-life lumber yards that sold the big stupid beams I wanted in flavours other than poison. I'm not sure what exactly I was expecting from the process, but it was simpler than that. I walked up to the front desk, told them what sizes of lumber I needed, and they accepted my payment and had me take my car around back to load it up. Once again, my social anxiety has lied to me. It was at this point that I learned *exactly* how much lumber will fit in a late model Subaru Outback.
-
- -
I didn't think to take this photo until after I'd taken out the 2x6's, but this gives you the basic idea. I'm pissed that the front passenger seat in this car doesn't fold down, otherwise it would actually be pretty well suited to this.
-
+ The back of my car, a late model Subaru Outback, packed with 4 6x6's, 2 4x4's, and 7 2x4's. They're mostly crammed over the center console and atop the passenger seat. It's clearly near capacity for cargo of this form factor. +
I didn't think to take this photo until after I'd taken out the 2x6's, but this gives you the basic idea. I'm pissed that the front passenger seat in this car doesn't fold down, otherwise it would actually be pretty well suited to this.
They didn't actually have the 2x3's I wanted to use under the slats though. I had to get those from the hardware store. @@ -86,18 +76,14 @@ This isn't the end of the world, and in fact probably means I got these cheaper For finishing liquids, I initially went with two colours of this combination stain/polyurethane stuff, then did more research on it and saw such overwhelmingly negative sentiment from the Redditors that I was moved to return it and buy some real (if cheap) stain and some real poly. I went with oil-based for both, and the colours I went with were black and something called "puritan pine". I'll admit, if you're having any reaction to all that other than confusion, it probably means more to you than it does to me. If this was a Youtube video, this would be the bit where I start rattling off the dictionary definition of "foreshadowing" and cut halfway through the first sentence. -### Getting a "new" tool +## Getting a "new" tool There was precious little I could do on this project before I got those rough cut posts ready to work with, and it was readily apparent that my cheapo orbital sander was not up to the task, so I needed a new tool. Of course, in an ideal world I would be able to do that with a jointer and a thickness planer, but those two tools would eat up like, most of the money I have at the moment, even used, and I can't seem to find anywhere to rent them, so that's out. I also don't own a router nor have a large, perfectly flat workbench to build one of those massive surfacing jigs for one, so I guess the only real option left is a hand planer. My uncle, who recently did up a bedframe of his own, originally offered to lend me his, but that fell through since he couldn't give me his battery and none of mine are compatible. Instead, I found a listing on Kijiji for a lot of four power tools for 80 Metric Dollars, including a jigsaw, a moderately dirty belt sander, an impact wrench attachment for an air compressor, and the one I was interested in, this distinctly vintage looking electric hand planer.
-
- -
+ A dirty, old-looking corded electric hand planer with a beefy metal housing and no visible branding.
There's no visible branding on this device, but perusing image search results for "vintage eletric hand plane" led me to [this page](http://vintagemachinery.org/photoindex/detail.aspx?id=37904) on the appropriately old-looking vintagemachinery.org featuring an identical-looking unit apparently called a Model No. 1701 Type 1 Electric Planer from the Illinois-based Portable Electric Tools, Inc. Might I just say, very clever name, right up there with General Motors and Advanced Micro Devices. The page claims that it "looks like a heavy duty, well made tool", and I'm inclined to agree with that assessment. If you could feel the weight of this thing, I suspect you'd feel the same way. @@ -108,9 +94,9 @@ More immediately important to the usability of the tool was the fact that the cu Other than that, the thing seems to work fine, though I'm sure it's overdue just about every possible maintenance procedure. I will figure out what those are and attempt them when it breaks and not a moment sooner, she said foreshadowingly. -## Building the stupid thing +# Building the stupid thing -### Prep +## Prep The very first thing I did towards actually building the bed was cut the diagonal braces, long-side cross beams, supports for the slats, and the rungs for a heretofore undiscussed ladder. This was everything I knew for sure I could do without having to compare against any dimension of the as-yet-unassembled bed. Before I could do anything else, I had to get those rough sawn boards smoothed out. @@ -119,16 +105,14 @@ I'll admit it took me a while to do this. The planing process left a lot of arti I started out sanding with the orbital sander because that's what I had sandpaper for on hand, and got through about one and a half faces of one of the boards over the course of two-odd hours before giving up and just going and buying sandpaper for my aforementioned-briefly-in-passing new-to-me WEN Model 919 belt sander. This made the next two feet or so of sanding go much faster before it perished dramatically in a plume of smoke.
-
- -
It was worse than the video makes it look, and the video makes it look pretty bad. You might say, it's cooked.
+ +
It was worse than the video makes it look, and the video makes it look pretty bad. You might say, it's cooked.
Not wanting to go back to the orbital sander, I did something that would throw a wrench into the cleanly deliniated sections I had going here: I went out and bought the cheapest belt sander at the hardware store, an $85 Ryobi that I got for half of that because it was open box. Wow! The reason for this, as I would soon discover, was that it failed to grip the belt while actually sanding, rendering it useless. After returning it for what I must assume is a second time, I finally caved and shelled out for a decent belt sander, and I think it may have been worth it. Even including the three trips to the hardware store, this was much faster than the orbital sander, which is not to say that it was fast. Watching woodworking videos on Youtube where they complain about sanding does *not* prepare you for the reality of how long sanding takes. @@ -137,7 +121,7 @@ Speaking of sketchy tools, I need to complain about the awful folding saw horses Having sanded the rough-cut posts to my satisfaction, it was immediately apparent that my pre-surfaced 2x4's were actually quite substantially rougher, so those had to be sanded down too. Not that it's a big deal, since all of the wood had to be sanded further anyway for staining and it's not like I'm gonna be knocking down much of significance with 180 grit or whatever. But that's later. -### What I would consider to be the "fun part" +## What I would consider to be the "fun part" Before sanding past 50 grit, I wanted to get all the rest of my cutting done. Most of this process is unremarkable, save for my darling 6x6's, which, much like yours truly, are much too thick to fit on the miter saw I'm using. Astute readers will at this point be thinking "wait, but didn't she specifically intend not to cut those?" and are correct in this assessment, but this is the point where I noticed another small wrinkle brought on by my decision to get these rough-cut: they're all slightly different lengths, and they're all too long. See, my ceiling is just slightly taller than 8 feet, such that a 6-inch-wide board that's exactly 8 feet long could comfortably be stood up inside. If I tried to do that with these boards in their initial state, they would take differently sized chunks out of the drywall in my bizarre pseudo-popcorn ceiling. So they're gonna need to be cut after all. @@ -150,23 +134,15 @@ Remember those notches I wanted to cut in the posts? The best technique for that It was clear that I needed a tool that wasn't reliant on the power storage capacity of a couple 16-year-old hunks of lithium. This time, I went back to Habitat for Humanity to see what they had, because apparently they sell tools. In among a kind of impressive assortment of tools mostly from the back half of the previous century (as well as a pickaxe of all things, which I was very tempted to buy) was this monstrous thing, a Skilsaw Model 554c 8-1/4" 13-amp corded circular saw, with an intact ground pin and everything!
-
- -
I promise I'll have some photos that aren't of a power tool soon.
-
+ A dirty, old-looking corded electric circular saw with a beefy metal housing and extremely visible 'Skilsaw' branding. +
I promise I'll have some photos that aren't of a power tool soon.
This thing worked a treat. On top of its lack of a need for batteries allowing me to get 100% of my remaining circular saw work done the day I bought the thing, it was perhaps unsurprisingly *way* more powerful than the battery-powered saw. It's clear to me why I only had to pay 10 Canadian SillyBucks for it — getting the sled aligned at exactly 90° to the blade is kind of a pain, for one — but I can't argue with results.
-
- -
Ugly results maybe, but results. Again, rustic. Laughs nervously. Fortunately, most of this will be hidden.
-
+ A close up of two 6x6 posts where they've each had large notches, big enough to fit a 2x6, cut out of them on two sides. The notches are visibly imprecise. +
Ugly results maybe, but results. Again, rustic. Laughs nervously. Fortunately, most of this will be hidden.
I also had to use a chisel to clean up the notches after I was done with the saw. Let me just say that this sucked ass to do and it's a damn good thing every surface the chisel touched is gonna be hidden under an inch and a half of solid pine. There's "rustic", and then there's "looks like total ass". Either Dewalt chisels are ass or I was doing something very wrong. We will now be moving on. @@ -181,7 +157,7 @@ Now for the exciting part: the first test assembly. My plan here was to assemble Once it was up, I just used copious amounts of deck screws to make the side pieces, which consist of the cross beams, another 2x6 for a ledge on the top, and a 2x3 to hold the slats. A 2x3 feels like a strange choice here, but I wanted some extra horizontal leeway because I built the bed a little wide to accommodate the headboard, which is maybe an inch wider than a queen mattress, and wasn't confident my slats would be long enough. This also conveniently turned out to be about as wide as this piece could be without interfering with my access to the bolts on the inside facing the mattress, a quirk I completely forgot to account for in my design. -### I'm just putting these headings in to break this up visually ngl. anyway here's finishing +## I'm just putting these headings in to break this up visually ngl. anyway here's finishing Cleverly forseeing that attaching the diagonal braces now would render some areas inaccessible with a power sander of any kind, I stopped here and disassembled the bed again for further processing. The original plan had been to sand up to 180 grit, but I didn't have any 180 grit sandpaper, so I sanded a piece with 120 grit, decided I was content with that level of smoothness, and stopped there because I want this to actually get done. Astonishingly, this took a lot less time than the 50 grit pass, I assume because I wasn't trying to knock down a bunch of like 1mm+ high spots. The second and final pass only took me two days of work! Wow! @@ -201,7 +177,7 @@ This is where my early resignment to a rustic (go ahead and take a shot now) aes I understand why people seem to default to paint for this type of thing now. That would have been a lot easier and more forgiving than this. However, it would have looked a lot less cool, especially since all my raw materials have giant surface defects that would just look weird under a coat of paint. -### Assembly DRAFT (Final) 3 (FINAL) this one (draft) 2 FINAL.docx +## Assembly DRAFT (Final) 3 (FINAL) this one (draft) 2 FINAL.docx Let's talk about that ladder. I haven't really mentioned it so far, and it wasn't even in my computer model, because it's that dead simple and honestly kind of secondary to the bed itself. I want to replace it with some kind of stair cabinet contraption in the future, but that's a whole other project and I needed a way to get into my bed now, hence this. The plan was to build it out of 4x4's for the sides and 2x4's for the rungs, with dimensions as described in [OSHA Standard 1926.1053(a)(3)(i) and 1926.1053(a)(4)(i)](https://archive.ph/pB5JN), and have it just bolt onto the bed. This was the easiest, and therefore first, task I did towards the final assembly. @@ -210,12 +186,8 @@ I attached the rungs with deck screws through the 4x4's, in deep countersinks si The rungs actually *did* start going anywhere when I put my full weight on them, but that was because I screwed them in too close to the middle and they were twisting when I put my full weight on the front edge. I solved that with some more deck screws at an angle through the bottom. Luckily, it's not visible unless you're lying on the floor, which is the exact opposite of what you're doing when you use this bed.
-
- -
Ignore the prodigious post-move-in junk pile behind the ladder. If you were wondering, that's the reason I've been building stuff in the driveway.
-
+ A 5-foot handmade wooden ladder made of two 4x4's stained a very mild amber, with four rungs stained completely black. +
Ignore the prodigious post-move-in junk pile behind the ladder. If you were wondering, that's the reason I've been building stuff in the driveway.
This was also my first confirmation that my at this point irreversible aesthetic choices weren't completely unworkable dogshit. So that was nice. @@ -231,19 +203,15 @@ Attaching the cross braces to the posts taught me to hate threaded inserts. I ha It was during this step that my decision to apply the finish before assembling everything *really* paid off.
-
- -
SUCK MY UNWANTED AND UNASKED-FOR BALLS, MOTHER NATURE.
-
+ The bed in question, which bears a striking resemblance to the model from earlier, being shielded from the rain with a bedsheet stapled to the tops of the posts. +
SUCK MY UNWANTED AND UNASKED-FOR BALLS, MOTHER NATURE.
It's probably not ideal to have this stuff out in the rain, but the polyurethane coating did at least buy me enough time to wipe all the raindrops off without them soaking into the wood and causing havoc. As you can clearly see, some quick thinking with a random old bedsheet and the local cordless staple gun also helped. Fortunately, the rain died down pretty quick, but the wind took a bit longer. I had to add more staples at least once. After that, only a couple little things remained, mostly nightstand stuff. Mounting the lamp, measuring my little improvised shelf to cut the backing board out, etc etc. Then, -## Installation +# Installation As you might rightly imagine, this was a little more difficult to assemble in an actively-in-use bedroom with a little over twice the square footage of the bed itself, and that's *after* you get the eight huge pieces this comes in up the stairs and in there. It was very much a two-person job. I had to move some furniture just to move this thing into position, and I will admit it *may* have taken some cosmetic damage in the process. @@ -254,29 +222,23 @@ I discovered at this point that, as I had predicted, the slats were just slightl After all that, I *finally*, after over a month of work, had this to show for it:
-
- -
The room was too small to get a better picture than this without using the grainy ass wide-angle sensor. It's almost as though I'm hurting for floor space in here.
-
+ A queen-sized loft bed that I designed and built myself, made of 8-foot 6x6 posts for legs and various hardware store lumber for cross beams and bracing, all held together with giant bolts at each joint. The former is a nice wood tone while the latter is stained black. It has green curtains on the sides and a grey upholstered headboard that matches the grey bedding. My desk can be seen underneath it. +
The room was too small to get a better picture than this without using the grainy ass wide-angle sensor. It's almost as though I'm hurting for floor space in here.
I promise it looks more rustic in person.
-
- -
Really cozy.
+ +
Really cozy.
I guess that gives you a better idea, huh? -## Usage Impressions +# Usage Impressions Honestly, this feels a lot less cramped both below and above than I was expecting it to be. I like it a lot. It's very cozy up top, and my ability to use my desk is thoroughly unimpeded. In fact, this structure provides a lot of convenient mount points for stuff in that area. Getting in is easier than I was expecting, but getting out is unsurprisingly kind of a pain. I intend to take the ladder off and modify it to be slanted, which should help. @@ -288,7 +250,7 @@ The bed also darkens the room considerably — it's directly below the ceili Also, building in outlets and a lamp up top was a stroke of genius on my part. -## Postmortem +# Postmortem I'd say this project was mostly a success. It's a little shittier and jankier than I had imagined, but that was to be expected. The one glaring exception is that I failed to make it adjustable. It had been becoming more and more clear that that wasn't really gonna be feasible with my level of skill and the quality of my materials for a while, but the moment I gave up on it was when I put the first diagonal braces on the back, measured the vertical distance between the cross member they were on and the points at which they mounted to the posts, and there was over an inch of difference. I think if I really want this thing lower in the future, my adjustment mechanism will be my ~~shiny~~ ~~new~~ circular saw. @@ -310,4 +272,6 @@ All in all, would I recommend you do this? Fuck yeah, absolutely. In terms of ut

1. Just for funsies, here's a photo I took of all the (surviving) tools I bought for this project. Except the Anvil saw horses. FUCK the Anvil saw horses. I'd wager about half the value here is tied up in that brand new belt sander.

-![A bunch of tools and consumables laid out on my driveway: A new Ridgid belt sander, an old-ish Black and Decker jigsaw with new blades, an old Skilsaw circular saw, a VERY old electric hand plane, a 4lb box of painter's rags, a box of nitrile gloves, earmuffs and safety goggles, a small Kreg pocket hole jig kit, a 3-pack of Dewalt chisels, a 3-pack of spade bits, a 3-pack of wire brushes, and a 4-pack of clamps. Not pictured: a two pack of cheap Anvil brand saw horses, one of which is already broken.](hashtagmytools.webp) \ No newline at end of file +
+ A bunch of tools and consumables laid out on my driveway: A new Ridgid belt sander, an old-ish Black and Decker jigsaw with new blades, an old Skilsaw circular saw, a VERY old electric hand plane, a 4lb box of painter's rags, a box of nitrile gloves, earmuffs and safety goggles, a small Kreg pocket hole jig kit, a 3-pack of Dewalt chisels, a 3-pack of spade bits, a 3-pack of wire brushes, and a 4-pack of clamps. Not pictured: a two pack of cheap Anvil brand saw horses, one of which is already broken. +
\ No newline at end of file diff --git a/blog/posts/building_a_sensible_server/index.md b/blog/posts/building_a_sensible_server/index.md index 8ce60eb..aed513e 100644 --- a/blog/posts/building_a_sensible_server/index.md +++ b/blog/posts/building_a_sensible_server/index.md @@ -1,6 +1,6 @@ It has become clear to me that the [laptop NAS](../building_a_normal_server/) I built in December of last year, while a fun project and a good learning experience, is unfit for the purpose that I need it to fulfill and is best stripped for parts and replaced. Here I'll detail the main reasons why it sucks and my plan to build something just a little bit more sensible. -## What In God's Name Have I Done +# What In God's Name Have I Done To get you up to speed in case the limit of your attention span is somewhere between one blog post and two blog posts, as of late last year I had been using an old gaming laptop as a home server for Minecraft and such things to great effect for a while, and had decided that I also wanted a proper NAS. Rather than buy a whole new CPU, motherboard, and RAM for this purpose, I saw fit to attempt to upgrade, or rather modify, or rather pervert, bastardize, and generally corrupt my existing laptop to have the storage capacity I wanted. @@ -10,7 +10,7 @@ It was beautiful, and for reasons that are entirely beyond my ability to grasp, This is where we find our intrepid hero today. -## This Whole Enterprise Was Fundamentally Ill-Conceived +# This Whole Enterprise Was Fundamentally Ill-Conceived I was expecting this thing to have problems, but I was unable to anticipate the specific problems it ended up having. Performance is... fine, actually. Better than expected, even. That horrible little 2-port SATA expander, or, failing that, the SATA multiplexers, are almost certainly bottlenecking the bandwidth to the HDDs, but it's fast enough to saturate the gigabit network infrastructure in my house, so it doesn't really matter. @@ -24,9 +24,9 @@ Whatever this is, I feel pretty well hopeless to fix it, and even then, it's als However, despite all the problems with the laptop itself, all the other hardware has been nothing short of totally rock-solid. All of it has worked as advertised and I'll be carrying the drives and, if possible, the PSU1 over into the new system. -## Something Just A Little Bit More Sensible +# Something Just A Little Bit More Sensible -### Angle of Attack +## Angle of Attack Firstly, as previously mentioned, the PSU and storage are accounted for already. I have eight total drives I want to put in the system: two 256GB SSDs as mirrored boot devices, 2 1TB SSDs, also mirrored, for TrueNAS apps and such things, and four big boy hard disks for bulk storage. Most of that stuff was bought for the original build, but the mirrored SSDs proved infeasible in the end. I don't strictly *need* them, but it would be very nice to have. Anything in serious consideration will need some way to accommodate my preponderance of SATA devices. @@ -36,7 +36,9 @@ I briefly considered getting a used workstation PC of some description. A used L I could get a used rack-mount server, like a Dell PowerEdge or similar. This is also a decent option, and it would be *quite* cost-effective, but I've got a few good reasons not to. First, most of these servers have old Xeon datacenter chips in them that are still good for many home server tasks, but aren't particularly fast or efficient. Take this PowerEdge R730 for instance: -![An Ebay listing for a Dell PowerEdge R730, with two Xeon E5-2623 v4 CPUs and 128GB of RAM, for $187 CAD, plus $57 CAD in shipping.](ebaypoweredge.png) +
+ An Ebay listing for a Dell PowerEdge R730, with two Xeon E5-2623 v4 CPUs and 128GB of RAM, for $187 CAD, plus $57 CAD in shipping. +
This has two Xeon E5-2623 v4 datacenter CPUs. At 4 cores/8 threads and 85 watts apiece, this server would have the same core count as the Ryzen 5700G in my desktop for almost three times the power draw, and *half* the single-threaded performance. In many cases, especially for servers, lackluster single-core performance isn't a problem, but if I want to run game servers on this, which I do, these chips may struggle. @@ -44,7 +46,7 @@ Plus, rack-mount servers kind of suck for home use. They're very unweildy if you Logically, then, the only remaining option is to build a system from scratch, out of used parts, to my specifications. That, therefore, is what I shall do, and I think I can do it for a similar amount of money to the GPU upgrade I was *planning* to get before this whole thing really started becoming an issue. Here's my plan: -### My Grand Design +## My Grand Design In spite of the machine it's in, I've found that the i7-9750H in the laptop performs admirably for my use case. I don't really need a CPU upgrade here — hence my efforts to repurpose the existing one — unfortunately, however, the BGA form factor of this particular chip is incompatible with 100% of consumer desktop motherboards, so I'll be needing a new CPU regardless. Though I don't want or need a major upgrade, I also don't want a *downgrade* if I can avoid it, so I'll primarily be looking at other high end gaming chips from the era. @@ -63,21 +65,21 @@ Finally, I need a case. Fortunately, this time around I don't have to build one The first case I found that obviously fit my use case was this thing, the weathered old shell of a Pentium III tower from the dawn of the ATX standard:
-
- A beige PC tower with four 5.25" bays and two external 3.5" bays, populated with an optical drive and a floppy drive respectively. The only visible branding is a Pentium III sticker and a badge that reads "TOUCH". -
Based on my research, this is an Enlight 7237, or something closely related, but the front panel seems unique. I'm curious about the branding here. If anyone recognizes that "TOUCH" badge, get in the comments.
-
+ A beige PC tower with four 5.25" bays and two external 3.5" bays, populated with an optical drive and a floppy drive respectively. The only visible branding is a Pentium III sticker and a badge that reads "TOUCH". +
Based on my research, this is an Enlight 7237, or something closely related, but the front panel seems unique. I'm curious about the branding here. If anyone recognizes that "TOUCH" badge, get in the comments.
Honestly, I kind of love it. I'll transfer the 5.25"-to-3.5" adapter cage I bought to mount the drives in my homebrew case to the bays in this thing wholesale, and I can 3D print some brackets to mount the SSDs in the 3.5" bays. And, somewhat counterintuitively, it might actually be *easier* to build in than those modern RGB glass side panel power supply basement having ass Gaming™ cases: -![The inside of the same old PC case. Its layout is extremely pragmatic: motherboard in the very bottom corner, PSU in the top corner above it, and all the drive bay mounts are in a cage lining the front side. In other words, it looks like an old PC case.](servercaseinside.jpg) +
+ The inside of the same old PC case. Its layout is extremely pragmatic: motherboard in the very bottom corner, PSU in the top corner above it, and all the drive bay mounts are in a cage lining the front side. In other words, it looks like an old PC case. +
Just look at it. Everything's right there. I can take the side panel off and instantly get to every component with my hands without spinning the case around and I don't need to run any cables through any fucking gromets to get them where they're going. It looks supremely convenient. As the type of person who enjoys *building* computers and not just using them as decoration, this is beautiful to me. The biggest issue with this case is the cooling. It's absolutely pitiful by modern standards. Based on these photos, it looks like there's a single 92mm, possibly 80mm, fan each for intake and exhaust, with a passive vent in the side. I'm already bringing some extra cooling to the table — my drive cage has a mount for a 120mm fan, and I can use the fan in my much better ventilated modern PSU for extra exhaust, and with a 65W CPU and no meaningfully powerful GPU that might just suffice. If not, I've got some ideas involving 3D printing and/or a hole saw to make this thing a little less stuffy. -### Actually Building The Sucker +## Actually Building The Sucker Everything above that heading there was in large part written a few weeks ago, when I was ordering all this stuff and it was all fresh in my mind. We now rejoin our intrepid hero as she receives the last of her Ebay orders and prepares for initial testing. @@ -91,7 +93,7 @@ Assembly went smoothly; not much to say here that you couldn't get from Linus Te What didn't go smoothly was actually booting the thing. On first power on, it failed to POST and got stuck on a code "8" on the little seven-segment diagnostic code display. I initially assumed it was training the memory, since this can take a while on first boot, but after about five minutes of no change I started getting worried. I read a lot of very worrying forum posts that suggested that either the CPU or motherboard were straight up dead, and I very nearly bought another CPU to see if that was the case. First, though, I decided to try updating the BIOS using the "BIOS Flashback" feature, and that fixed it immediately. I wasn't done yet, though. -Astute readers will have figured out by now that I was using TrueNAS on the old machine and intended to continue using it on the new one. Installation went extremely smoothly, except for one small wrinke: I had decided to take the NVMe boot SSD from the old laptop to use as storage for my game servers6, and even though I had done a fresh install of TrueNAS to a pair of mirrored SATA SSDs, the NVMe one, naturally, still had TrueNAS on it. This, from what I understand, caused the OS to get stuck trying to boot because there were two ZFS pools marked as the boot pool, and it would just give up and drop me into an initramfs shell instead. Booting into a live environment and using GParted to clear all the partitions on the drive didn't fix it, and after a bit of googling I learned I had to use the initramfs shell to clear the volume data for the disc directly. +Astute readers will have figured out by now that I was using TrueNAS on the old machine and intended to continue using it on the new one. Installation went extremely smoothly, except for one small wrinkle: I had decided to take the NVMe boot SSD from the old laptop to use as storage for my game servers6, and even though I had done a fresh install of TrueNAS to a pair of mirrored SATA SSDs, the NVMe one, naturally, still had TrueNAS on it. This, from what I understand, caused the OS to get stuck trying to boot because there were two ZFS pools marked as the boot pool, and it would just give up and drop me into an initramfs shell instead. Booting into a live environment and using GParted to clear all the partitions on the drive didn't fix it, and after a bit of googling I learned I had to use the initramfs shell to clear the volume data for the disc directly. After that was cleared up and I was booting into TrueNAS, setup went off without a hitch. I imported the config I had saved from the old server and everything was instantly up and running like nothing had ever happened, and suddenly, I had a working server again. @@ -114,13 +116,11 @@ The RAM is RAM. It's fast enough for my porpoises with or without XMP, which I l I ended up getting those 10 gig ethernet cards, but I couldn't use them like I wanted. As it turns out, a GPU and 2 NVMe drives is all the PCIe bandwidth the B550 chipset in my main rig has to offer. My next upgrade might just be a used X570 board. I did still install one in the server, though, and since the fan on it was very loud on account of being very dying, I replaced the shambling corpse of the stock fan with a 40mm Noctua, spliced onto the original header and mounted using one of my best zip-ties:
-
- -
Yes, I attached the zip-tie to the heatsink by screwing it in. Clever, right?
+ +
Yes, I attached the zip-tie to the heatsink by screwing it in. Clever, right?
Would I recommend you follow in my footsteps? Absolutely. This thing is great. In order to make this work, I had to build a normal computer. Short of a rack-mount case and a rack in which to mount it, *this* is how you build a home server. Frankly, I was absolutely right that violently contorting my existing gaming laptop into a TrueNAS box would be cheaper than this, but I can now say with complete certainty that the savings were not worth it. This is less entertaining, sure, but I'm glad I finally did it properly. Well, at least to the greatest extent that I seem to be capable of "properly". diff --git a/blog/posts/customcans_4pin_pinout/index.md b/blog/posts/customcans_4pin_pinout/index.md new file mode 100644 index 0000000..95b0e02 --- /dev/null +++ b/blog/posts/customcans_4pin_pinout/index.md @@ -0,0 +1,35 @@ +Bit of a short one today, to share a piece of information I couldn't find anywhere else on the whole wide fucking interwebz. This is something of a continuation of my post on [making your own cables](/blog/posts/make_your_own_cables/), in that this little tidbit is critical information for making one of the cables from that article, that I recently had to re-reverse-engineer. + +For context, I currently use a Beyerdynamic DT 770 Pro as my main set of headphones. These headphones don't have a removable cable stock, so I ordered mine through a company called [Custom Cans](https://customcans.co.uk/) that deals in boutique modded headphones and can put one in for you, at the recommendation of popular Youtuber DankPods1. I had them put in a weird, seemingly unstandardized 4-pin mini XLR port2, so when the fancy ass snake-oil-and-paracord cable they gave me broke it was either shell out 80 quid for another one or make my own. + + + +The latest of my hodgepodge adapter cables recently broke again, and today I set about fixing it. It had been just long enough since I last did this that I had forgotten the pinout and had to reverse engineer it again, and this time I vowed not to put myself through that again. So for my benefit moreso than yours, I have enshrined this diagram of the pinout Custom Cans uses on their 4-pin single-connector cables here on this page for all eternity: + +
+ The aforementioned 4-pin mini XLR connector. It's the connector on the cable that would plug into the headphones, held with the locking mechanism towards the top. The top left pin is labeled Right Signal, the top right pin is labeled Left Signal, the bottom pin is labeled Left Ground, and the center pin is labeled Right Ground. +
+ +I'm pretty sure this is my third new cable for these headphones, which means I've now saved north of $400 on cables for this thing. With this combined with my continued disinterest in Starbucks and avocado toast, I'll be able to afford a house in no time! + +I've also fired off an email to Custom Cans' support line for official confirmation. **UPDATE**: As of January 19th, I've received a response: + +
+ Hi [Deadname], I'm afraid we can't provide a free solution to this one as it's a couple years outside of warranty. Four years is a pretty good run though. The cable might still be fixable. Usually if a wire breaks in a cable, it breaks under the 4 pin mini XLR where the cable touches your shoulder. The pinout is: 1. L+; 2. L-; 3. R+; 4. R-. It's the same as the HD490 so you might be able to find some cables for that headphone for a cheaper price. Cheers, [Support Guy] +
That's a pretty good response, by my estimation. I guess I can now recommend this company.
+
+ +Bang on, baby!! But wait, I didn't know they made it pin-compatible with an existing Sennheiser product. A quick search on Amazon for "HD490 replacement cable" reveals that they can be had for less than 20 *Canadian* dollars. Well now I look like a real numpty, don't I? + +--- + +

1. He mentioned them in a video, I didn't meet the guy or anything.

+ +

2. Credit to Custom Cans here, I could have had them put in a more normal port that didn't have this problem, so this situation is entirely my doing. Credit away from them, the only replacement cable they sell makes Apple's cables seem like a deal. Also their fancy fucking cable broke, I guess.

\ No newline at end of file diff --git a/blog/posts/customcans_4pin_pinout/index.php b/blog/posts/customcans_4pin_pinout/index.php new file mode 100644 index 0000000..952e6d9 --- /dev/null +++ b/blog/posts/customcans_4pin_pinout/index.php @@ -0,0 +1 @@ + Yesterday, September 18th, 2022, was the second anniversary of the creation of my first website on Neocities1, the site that is now known as [deeptwisty.com](https://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 +# 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 +# Carrd I still use Tumblr, just not as the hub for my entire online presence. I maintain that it is still the best2 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 criteria3, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers (!)4 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 "Ada | 21 | 🇨🇦 | 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 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 criteria3, probably have similar bullet point style lists of all your likes, dislikes, and possibly identities and triggers (!)4 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 "Ada | 23 | 🇨🇦 | 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"5 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](https://earsketch.gatech.edu/landing/#/) 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. @@ -42,7 +25,7 @@ I was quite into Subnautica around this time (I promise this is relevant) and it 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 +# 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](../../../old/1/), 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. @@ -58,7 +41,7 @@ To be completely honest, I took rather a lot of inspiration for this revision fr 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 +# 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](../../../old/3/). 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. diff --git a/blog/posts/discord/index.md b/blog/posts/discord/index.md index 8f1f43e..5b88a92 100644 --- a/blog/posts/discord/index.md +++ b/blog/posts/discord/index.md @@ -4,11 +4,11 @@ So Discord's been on their bullshit again (as if they were ever off of it). This I was originally going to center this article around the pros and cons of different alternatives to Discord, and I do still want to touch on that, but I think it's important to express my reasoning in detail here; it will be easier to avoid another situation like the one we have now with Discord if we know what's actually wrong with it on a more fundamental level than which administrative decisions of theirs are bad. How do we ensure wherever we go next won't pull the exact same crap? -## So why is Discord bad? +# So why is Discord bad? Let's be honest with ourselves up front: In many ways, Discord, as a service, fucking owns. It has a ton of fun features not found really anywhere else and the quality of its voice, video, and live streaming functions are tough to beat. However, these advantages come at the cost of Discord's most significant fundamental problem: It's a proprietary, centralized, VC-funded platform. It gets the funding it needs to be so awesome from investors who expect a return on their investments, and it is legally obligated to put creating that return above all other priorities. -### Enshittification - The Capitalism Problem +## Enshittification - The Capitalism Problem It's possible, even probable, that Discord started out with the simple, noble goal of being the best Chat for Gamers™, creating an alternative to the problems present with its predecessors Skype and Teamspeak, and whatever chat functionality your favourite games had. At this, it succeeded spectacularly, for a time. However, the entire model of the VC-funded startup is fundamentally unsustainable. @@ -31,7 +31,7 @@ Reddit did not need to do this. Reddit was doing fine. This was purely a cash-gr I'm not saying they will, but Discord could absolutely do the same thing, and it wouldn't surprise me if it came to that. Imagine if Discord bot developers needed to pay API fees like that. There'd certainly be a lot fewer Discord bots, and probably a lot more paywalled ones among the remainder. Discord absolutely needs to become profitable in order to be sustainable, and it will do whatever it needs to to that end or die. Even then, it can't just break even; capitalism demands endless growth. Discord will keep getting worse as long as there's money in it. It's inevitable. It's required. -### Centralization +## Centralization Discord is a centralized platform and always will be, no matter how strong the reality distortion field it puts up by allowing the creation of isolated social spaces and calling them "servers". Every Discord "server" runs on Discord's servers, and they have total control over each one at the end of the day. @@ -43,7 +43,7 @@ This ties pretty closely into the whole VC-funded thing - Discord, the platform, That's really the core of the issue here: being centralized means that Discord can easily suffer the same fate as Twitter. Some incompetent nutcase with more money than the entire planet's collective pool of sense could buy it out and destroy it, or the current owners could just make some boneheaded decision and do the same. A decentralized platform, running on a common open protocol, is much less vulnerable to the antics of the Elon Musks and u/spez's of the world. -### The Privacy Problem +## The Privacy Problem This issue isn't really inherently connected to the others - a lack of good privacy doesn't fundamentally doom a platform like the other two points - but I'm treating it as a third major issue because I feel it's extremely important and warrants consideration. @@ -69,17 +69,17 @@ Juicy stuff. You should really give that a read - you might not like what you fi Before we move on, I'll just drop this tasty little link to further reading. It's a real page-turner. -## Cool, so how do we fix it? +# Cool, so how do we fix it? We don't. Discord was doomed from the outset in any attempts to be sustainable or trustworthy. We are going to need to find an alternative to Discord eventually. So what should that alternative look like? I'll discuss specifics later - I'd like to start by establishing the general principles I feel a messaging system should conform to in order to avoid Discord's major problems. The TL;DR is it needs to not be any of the things I've described thus far about Discord, but I'll go into more detail about what that actually looks like. -### Follow the money +## Follow the money A sustainable chat system *absolutely cannot* be for-profit. If it is in any way driven by profit, the decay and eventual death of the service is inevitable. That doesn't mean it has to be entirely staffed by unpaid volunteers or anything, but it would need to be a non-profit foundation of some kind, just trying to break even with no incentive for infinite growth or any other corrupting financial influence. You'll notice this as a theme across most online services that don't already show signs of advanced corporate necrosis. I'm not even saying it can't have some kind of Nitro-esque paid tier. I don't hold it against, say, Protonmail - in fact, I pay for that one - but the money can't be the end goal. A sustainable non-profit model might be largely donation-based like Wikipedia, or maybe it could have a totally free product for individual users and break even selling support to enterprise customers like some Linux distributions. It's not currently breaking even yet according to its Wikipedia article, but I'll be interested to see if and how Signal reaches a sustainable state. Maybe future players could take notes from them. -### Cut out the middle man +## Cut out the middle man Better yet, structure your system such that it doesn't even need a corporation at the center - in other words, a decentralized system. I'm not talking about the blockchain; we can do this the old-fashioned way, with tech that isn't ponzi-scheme-by-design. In fact, we're already doing this, and it already has more monthly active users than any messenger app ever created: email. @@ -93,7 +93,9 @@ So when two people communicate via email, the sender sends the message to their And here's the obligatory visual aid - essentially, when you send an email, it takes the shortest path along a network that looks like this; every server is connected to every other, and every user is connected to one server: -![A graph showing three large nodes connected to each other, each with multiple smaller nodes branching off of them. Each large node is an email server, such as outlook.com or gmail.com, and each small node is an email account, such as jim@outlook.com or bob@gmail.com.](federation.png) +
+ A graph showing three large nodes connected to each other, each with multiple smaller nodes branching off of them. Each large node is an email server, such as outlook.com or gmail.com, and each small node is an email account, such as jim@outlook.com or bob@gmail.com. +
Hopefully that helped. Back to the point, all federated services work pretty much exactly like this. If you've ever had someone try to explain the Fediverse (sometimes incorrectly called Mastodon) to you by comparing it to email, this is what they meant. But this isn't limited to email and microblogging; this type of system can theoretically apply to anything. Again, building an MMO this way would be challenging, but federated messaging protocols similar in concept to Discord do exist. @@ -101,7 +103,7 @@ The benefit of this kind of system stems from the fact that it's not under the c The network is inherently much more stable and resilient in general than a centralized service, as there's nobody who would take the entire network down with them if the company went under or got sued or had a bomb dropped on their datacenter. Sure, a huge number of people would lose their email accounts if Gmail disappeared tomorrow, but critically, not the entire network. Email wouldn't go away, and those displaced users could go to Outlook or Protonmail or set up their own instance and keep communicating over the same network. The same applies to any other federated protocol. Imagine if your Discord account and guilds weren't controlled by Discord, but instead ran on a machine you controlled and was in no way answerable to Discord Inc, but you could still talk to your buddies on Discord proper. It's like that. -### Incognito mode +## Incognito mode Contrary to the title of the previous section, a federated approach does technically add more middlemen. We've gone from one unaccountable central authority able to read everyone's messages to several unaccountable parties each able to read the messages of everyone they serve. Not much of an improvement, privacy-wise, unless you trust both your provider and the providers of everyone you're talking to implicitly. Actual privacy requires end-to-end encryption. @@ -109,13 +111,15 @@ End-to-end encryption means the message is encrypted before leaving the sender's There are still problems here, for example end-to-end encrypted messaging still requires the server to know who you're talking to, but there are workarounds for these as well. However, E2EE should be the absolute bare minimum, in my opinion. -## So what are our options then? +# So what are our options then? + +

[Update 2026-02-14] Since writing this part, I've released an updated list of recommendations with a set of priorities that skews less "find an ideologically pure replacement" and more "find something that actually mostly works as a drop-in replacement for Discord and can be switched to Right Now". The following section has been left in for posterity.

Here's the part where I discuss actual alternatives to Discord. I'll say now that this will not be a comprehensive overview of every possible option - recommending chat apps that don't meet these standards would kinda defeat the point, and I'm also not omniscient. There are going to be other options that I haven't covered here, and hopefully I've given you the tools to determine which ones are good. Every program I list here will, at a minimum, support true end-to-end encryption in some capacity and not be run by a for-profit company. They're also all open-source. -### XMPP +## XMPP XMPP is about as close as we've got to "email but for instant messaging". It's a federated, open protocol which, having been formally standardized in 1999, is truly ancient in internet years. My understanding is that it actually used to be more widely used, but Google effectively killed it off in popular usage by subsuming its userbase into Google Talk and then promptly turning off federation and killing Google Talk. That doesn't mean it's gone, though. People still use XMPP to talk to each other, running on servers hosted by themselves or their friends. @@ -128,7 +132,7 @@ XMPP is, at its core, designed for simple text-based messaging and presence. Whi - While integration with WebRTC voice chat is supported, it's not universal, and some people prefer to use a separate voice chat system, such as Mumble, in conjunction with XMPP text chat. - You'll have to find a provider and choose a client program to connect with. Fortunately, there's plenty of options, and the official XMPP website lists some of each. -### Matrix +## Matrix Matrix is the other major federated instant messaging protocol. It was standardized in 2014 and is built around making end-to-end encryption easy. On top of that, it has more features. File sharing is included by default and support for nice-to-have features like emoji reactions (and maybe custom emojis??) and Discord-style replies is widespread. There's also a large suite of bridges to other services, including Discord. Like with XMPP, voice chat integration is possible, but not universal, and some prefer to use Mumble or similar. @@ -137,11 +141,11 @@ Matrix is the other major federated instant messaging protocol. It was standardi - Built around end-to-end encryption, though you can disable it, and you will need to for integrations like bots and bridges. - As with XMPP, you'll need to find a provider and a client program. The website lists quite a few clients, and you can find a list of servers here. -### Mumble and Jitsi +## Mumble and Jitsi Mumble and Jitsi are self-hostable voice chat and videoconferencing applications, respectively. They're not messaging systems, but I feel they bear mentioning here because they're both popular for use in conjunction with text chat systems, and since nothing else here currently supports screensharing. -### Revolt +## Revolt We've about run out of open protocols (which is probably a good thing), so now on to the centralized services, starting with Revolt. Revolt is basically trying to be open-source Discord. It's currently in alpha, but the user experience is very similar and it already has some of the fun stuff. @@ -155,7 +159,7 @@ From what I could find Revolt isn't currently controlled by any kind of legal en - No encryption, but E2EE for DMs is being worked on. - Has features like custom emojis, replies, public guilds and a friends list. -### Signal +## Signal I've now run out of Discord-likes - which is to say, programs that support the sort of multi-channel group chat thing Discord has going on. This and the next one function more in the vein of a Whatsapp clone, though I feel they still bear mentioning in the event that's all you need. @@ -168,7 +172,7 @@ Signal is kind of *the* private messaging app. It's fundamentally built around e - Requires a phone number, but only a phone number. - You can set a username, so you don't need to share your phone number. -### Session +## Session I lied, Session isn't centralized. But it's not decentralized in the same way as the federated protocols up there, either. Session runs over an anonymizing onion routing network, Tor-style, meaning not only can your messages not be read by the server, those servers also don't know both the sender and the destination at the same time. Essentially, it's designed to maximize privacy and anonymity at all costs. But wouldn't you know it, that comes at a cost in terms of features and user experience. @@ -180,17 +184,17 @@ Session does also use cryptocurrency. Setting a custom display name and running - No extra features. - Setting a display name requires a crypto transaction, but sending messages does not. -## Conclusion +# Conclusion That's about all I've got. I hope I've impressed upon you the importance of Discord's core problems, and introduced you to at least one alternative that works for you. I have my preferences, but I'm comfortable recommending all of these over Discord, otherwise I wouldn't have listed them. -[Update 2023-09-09] I no longer recommend Matrix over XMPP for reasons explained well here. I knew there was a little jank but I had no idea the rot ran this deep. Fortunately, nobody's listened to me yet so I can switch over to XMPP without much issue, which I intend to do. +**[Update 2023-09-09]** I no longer recommend Matrix over XMPP for reasons explained well here. I knew there was a little jank but I had no idea the rot ran this deep. Fortunately, nobody's listened to me yet so I can switch over to XMPP without much issue, which I intend to do. -[Update 2024-04-27] I have removed Telegram from the recommendations list outright due to just, straight up nazism, and in a post announcing cryptocurrency features no less. Jesus H. Christ. +**[Update 2024-04-27]** I have removed Telegram from the recommendations list outright due to just, straight up nazism, and in a post announcing cryptocurrency features no less. Jesus H. Christ. If there's one thing I want you to take away from this article, it's this: Don't fall for the marketing and don't let yourself be wooed by extraneous gimmicks. Be discerning about which fancy-sounding features you actually need. If you want to have a chance of escaping the vicious corporate cycle of enshittification, both with chat platforms and with everything else, make sure the ones you use have a strong foundation of sustainability and trustworthiness, beyond whatever marketing drivel is on the front page of their website. Hopefully I've given you at least some tools to determine for yourself which ones do. -## Further Reading +# Further Reading - Enshittification - A simplified breakdown of Discord's TOS (ToS;DR) diff --git a/blog/posts/discord2/discord-no-way-2.gif b/blog/posts/discord2/discord-no-way-2.gif new file mode 100644 index 0000000..4ee8d64 Binary files /dev/null and b/blog/posts/discord2/discord-no-way-2.gif differ diff --git a/blog/posts/discord2/discord.png b/blog/posts/discord2/discord.png new file mode 100644 index 0000000..36346c3 Binary files /dev/null and b/blog/posts/discord2/discord.png differ diff --git a/blog/posts/discord2/index.md b/blog/posts/discord2/index.md new file mode 100644 index 0000000..d2d53df --- /dev/null +++ b/blog/posts/discord2/index.md @@ -0,0 +1,206 @@ +So [apparently](https://archive.is/PvpAx) Discord will soon force all of its users to submit to invasive age verification in order to have full use of the platform, regardless of whether they're in an area where that's currently required. Also, they're finally [doing an IPO](https://archive.is/IiL2A). In other words, the need to dump Discord is more pressing than ever. + + + +Real isopod h`ead`s know I've [posted about this before](/blog/posts/discord/). Feel free to go and read that for my full case against Discord. This here article, to pull a ChatGPT-ism, isn't about the many fundamental reasons you should be leary of Discord and any platform like it, and it's also not about how fucking bitter I am that we're all even in this situation three years after I wrote my first dissertation on the subject — it's about what our other options are, right now at this moment. + +
+
+ i think the goal Right Now is to switch from Discord to Literally Anything Better and give time for people actually developing Proper Federated Replacements to build features polish their UX. +
+
+ — kopper +
+
+ +Like the article that is now part 1 in a series that is 2 parts 2 long, this post is here to get you off of Discord, but seeing as this goal has become more urgent much faster than the state of alternatives has improved, I'm gonna have to compromise on my ideals a bit this time. The fact is that nothing out there is as good as Discord at what Discord does, so trying to get away from it is going to be an exercise in trade-offs, but it's also not reasonable to expect everyone and their Fortnite group to switch to self-hosted XMPP and WebRTC. + +If you're serious about getting away from Discord, you'll need to assess which options work the best for each of your communities, and odds are you'll end up replacing it with more than one alternative. For my part, this post is going to focus mainly on alternatives that replicate Discord's functionality as closely as possible, and would be relatively straightforward drop-in replacements that you could move to right now with relatively (admittedly, that word's doing some heavy lifting here) minimal effort. Unfortunately, there aren't a lot of those, but I'll try my best. + +I'll admit to having some blind spots here. Namely, I'm aware Discord is available for the latest consoles, and I don't own any of those, so I'm really not qualified to recommend alternatives for that use case, if indeed any exist. + +# [Stoat](https://stoat.chat/) (formerly Revolt) + +I liked the name Revolt, but [apparently](https://stoat.chat/updates/long-live-stoat) they had to change it after getting a cease and desist over that name. Fair enough, I guess. + +Anyway, Stoat is one of the more polished and feature-complete Discord clones I'm aware of. That's not to say it actually *is* either at present — the rebrand seems to have come with a new, overhauled frontend that isn't entirely finished yet, and all video-related features are still in the works. + +However, Stoat is among the easiest of these to adapt to coming from Discord, and it has the benefits of being a) open source and b) not American, the latter of which is especially relevant lately. It's also the only one of the True discord-likes on the list to have any kind of official native mobile app — though it is very much In Beta and missing quite a lot of features — and it's the only one so far with discoverability for public ~~guilds~~ Servers, if that matters to you. + +# Steam Chat + +Valve has the chance to do the funniest thing right now. + +Steam has had its own built-in text and voice chat solution for a good long time, and it's been improving as of late. It does have some major downsides: there's no video chat, screen sharing is limited to your Steam games, and messages are ephemeral, disappearing after two weeks. Plus, it's missing most of the Fun Stuff like user-defined custom emotes that you've come to expect from Discord. + +Still, if you're looking for a chat solution to use while gaming with your buddies, Steam's built-in functionality is worth a look. In spite of its idiosyncracies, it's polished and mature, and it's even available on mobile, albeit through a separate app from the main Steam one. + +# [Zulip](https://zulip.com/) + +The best way I can describe Zulip is as a forum but with Discord vibes. It's a bit of a situational replacement, but if you're using Discord as a forum or a support channel for your open source project, Zulip is almost certainly better. I found out about it because the Polyproto people are using it for this (more on that in a bit). + +The main downside with Zulip is that it's got some limitations unless you pay for a subscription (although let's be real, so does Discord), but they will seemingly waive that for open-source projects and in some other cases, and you can self-host it to get rid of most of those limitations if that's up your alley. + +# [Fluxer](https://fluxer.app/) + +

Added on Feb 13

+ +I learned about this one a few days after initially publishing this article from a shitpost on Tumblr and felt it warranted a mention. Fluxer seems like a *suspiciously* complete Discord clone, complete with voice, video, a nearly identical UI, and a premium subscription that closely resembles Discord Nitro. + +According to their website, Fluxer is developed by a Swedish company, is open-source with explicit support for self-hosting the official backend, and has an extensive roadmap of planned features, some of which are completely unheard of over in Discord land. + +**[Further update, Feb 15]** I created an account to poke around on it, and it took about a day for my registration to be approved: + +
+ Message indicating that my Fluxer registration is pending manual review due to a substantial influx of new users, and that I will be notified once my account is approved. +
Fair enough, honestly. They probably weren't planning for Discord to have a scandal during their public beta.
+
+ +Now that I'm in, the first thing I've noticed is that the interface is *extremely* similar to Discord, more so than you're probably expecting. They got a lot of the smaller details pretty spot on. + +I'm pretty impressed with what I'm seeing beyond that, as well: There's a good amount of polish, and it's even got a lot of the familiar Fun Features like custom emojis and the gif picker that have probably become foundational to the way you communicate online. Voice, video and screenshare are quite distinctly up and running, though I can't speak to their reliability without a friend or six to test them with. Not every bug has been ironed out, but there is a *shockingly* complete product here. + +One of my favourite small touches is that not only is this the only one of these alternatives with a dedicated pronouns field, it also lets you change the contents of said field on a per-guild basis. As someone who makes extensive use of this feature on Discord, I'm very happy to see that. + +Fluxer is quickly becoming the favourite for me on a product quality basis — it's doing what Stoat is trying to do, but executing it faster and better, a feat that's especially impressive considering its public Github repo has exactly two contributors — though only time will tell if either service is trustworthy. Strong recommend so far. There's unfortunately no native mobile app, but both this and the next entry have PWAs. + +# [Osmium](https://osmium.chat/) + +

Added on Feb 15

+ +A third mostly-functional Discord clone has hit the clearly under-researched blog post. + +Osmium advertises itself as a "globally distributed community messaging and voice/video platform" with encryption "both in transit and at rest". What "distributed" means in this context beyond, like, the extremely standard practice of having servers in multiple countries isn't made clear, but the voice and video part seems to actually be fully up and running (looking at you, Stoat) and to their credit they do acknowledge that "encrypted both in transit and at rest" is different from end-to-end encrypted. + +The main thing that gives me pause about Osmium off the bat is that it's still pretty small; the official "community" (server, in Discord parlance — Fluxer actually uses this term too) that you get automatically placed in upon signing up is sitting at about 700 total members as of writing, so time will tell how it scales. It's also very much early access software right now — the UI/UX polish and feature completeness aren't quite up to the level of Fluxer or even Stoat, and the buttons in the UI don't always... do anything. + +Also also, Osmium is not currently open source. The main dev, an individual going by [Folf](https://folf.me/), claims that the "client will be open sourced once things are stable", but that's far from the same thing as Fluxer's "open source and you can self-host the backend". + +
+ Message from the aforementioned Folf responding to a question about if Osmium is open source: "not at the moment, client will be open sourced once things are stable" +
+ +That said, I'm getting the best vibes off of this project on, like, a social level. That default community seems pretty accepting of transgender types, and the dev has expressed eventual intent to add such goodies as explicit support for some sort of Pluralkit-type functionality: + +
+ Message from Folf responding to a request for "some kind of like pluralkit alternative built in" by saying "this is planned in the future" and then "one part of the bot API will be to allow bots to set a name/avatar per message" +
+ +Osmium probably isn't up to snuff for most yet, but I'm rooting for it. If you're just looking for a place for your group chat full of highly-online queers and can tolerate a bit of jank, this may just be for you. + +# Honorable Mentions + +That there is about everything I could dredge up that mostly fit the brief. I'll admit things aren't looking great here. That said, there are some projects that don't quite fit the above criteria that I feel are worth mentioning. + +## [Signal](https://signal.org/) + +Signal is the best encrypted messaging service, bar none, and it's not close. All of your communication is end-to-end encrypted using some of the most bulletproof cryptography around (though I'm far from qualified to speak on the specifics), and you should be using it for your Whatsapp-style messaging needs anyway, even in the likely event it can't replace Discord for you. + +As mentioned, Signal functions like a Whatsapp clone. It supports your bread-and-butter features like voice and video calls, and some fun stuff like Instagram-style stories and Telegram-style stickers. It requires a phone number to sign up, but you can set a custom username so you don't have to share it with anyone. + +## [Polyproto](https://polyproto.org/) + +The latest and maybe greatest federated messaging protocol. Made by a bunch of cool queers and seems very promising, but it doesn't seem to actually have any functioning clients as of yet. Still, something to keep an eye on for sure. + +## [Spacebar](https://spacebar.chat/) + +An attempt at an open source reimplementation of Discord. It's designed to be fully "Discord-compatible", which doesn't mean interoperable, but it does mean that any third party software made for Discord such as bots or alternate clients should be compatible with its APIs. + +This seems like an ideal fit for the role of "drop-in replacement for Discord" in theory, but from what I can tell, while functional, it's not really there yet. If you want to give it a shot, [Fermi](https://fermi.chat/) seems to be the preeminent compatible client at the moment. + +## [Mumble](https://www.mumble.info/) + +A very mature self-hostable voice chat server. That's about all it does, but if that's all you need out of Discord and you've got a massive nerd like me in your friend group who can set it up it might be worth looking into. + +## [Sharkord](https://sharkord.com/) + +

Added on Feb 15

+ +Another open-source, self-hostable Discord clone currently in alpha. It's in this section primarily because it doesn't currently have an official instance, so much like Mumble and Teamspeak (more on that later) you need someone to host this in order to use it. + +# Dishonorable Mentions + +And now for some options that suck and aren't really viable in my opinion, but that I feel warrant addressing. + +## Matrix + + + +Matrix was one of my top picks back in 2023, but it had some unignorable flaws then, and it hasn't really improved in the intervening time. I could opine on this for quite a bit, but suffice to say that the usability and reliability have stagnated while the project's governance has gotten substantially less trustworthy. [This](https://telegra.ph/why-not-matrix-08-07) and [that](https://paper.wf/alexia/matrix-is-cooked) article do a pretty comprehensive job of explaining it. + +**[Update, Feb 11]** Someone pointed out to me that one of those articles is a bit old now, so I went digging for some more recent ones and wouldn't you know it, I found a couple more from mid last year. [Here's](https://shkspr.mobi/blog/2025/07/im-never-going-back-to-matrix/) [those](https://マリウス.com/giving-up-on-element-and-matrixorg/). + +**[Update, Feb 15]** + +lol + +
+
+ Our efforts are prioritised on our target markets which currently does not include being a Discord replacement +
+
+ — Element maintainer in a Github comment +
+
+ +## XMPP + +I'd love to recommend XMPP, I truly would, but the UX just isn't there, plus it seems like all its most passionate supporters like it specifically because it doesn't have most of the qualities that make Discord appealing to the average gamer. + +IRC is even worse in this regard. It scarcely warrants mentioning. + +**[Update, Feb 15]** Apparently an XMPP client called Movim is working towards adding multi-channel group chat functionality in the vein of Discord. Seeing that their website claims support for video chats and screen sharing, I signed up and checked it out for completeness' sake, and I have Thoughts. + +Movim isn't a Discord. I think it's trying to be something entirely different. It's got news aggregation, microblogging, Instagram-style stories, and plenty of UX quirks that might be confusing if you're not already ingrained in the XMPP-cosystem. Given that the [PR](https://github.com/movim/movim/pull/1520) to add what they're calling "Spaces" was made literally today, it's very possible that it represents a knee-jerk reactive attempt to capitalize on Discord's fumble and grow their userbase. From what I've seen, I'm not optimistic that it'll work. + +## Teamspeak + +Yeah, Teamspeak is in fact still kicking. I guess you could use it if you want, but setting up your own server requires either self-hosting or paying someone to host it for you, and their licensing puts artificial limits on what you can do even if you host it yourself. Plus, well, they're a bit of a US military contractor, and proud of it, too, so it's not a great choice if you have principles. + +## Roblox Guilded + +LOL. LMAO. RIP BOZO + +## Slack/Mattermost/Teams + +

or your half-joking enterprise messaging software suggestion of choice

+ +Look, I'll use it if everyone goes there I *guess*, but I get the distinct impression that by and large these platforms would be *more* hostile to the outspoken presence of my ilk than Discord is trying to become. Also, the vibes are rancid, so I'd rather not. + +## [DCTS](https://github.com/hackthedev/dcts-shipping) + +

Added on Feb 15

+ +Apparently, this is an acronym for "Direct Communication Through Sockets", which strikes me as a bit of a misnomer since it's obviously not peer-to-peer. + +DCTS is *yet another* open-source, self-hostable Discord clone like Sharkord. This one has an official instance, but you'll need to self-host it if you intend to do anything with it beyond putzing around in the official server. Fortunately, that's all anyone reading this will likely want to do, after scrolling up too far in the #spicy-memes channel and seeing the type of shit the lead dev thinks is funny. + +Ignoring that, however, the UX is mediocre at best, the featureset is very basic, and the whole interface has a pervasive male-gaze anime girl aesthetic that appeals to a very specific demographic that I'm not in. All in all, if I was gonna spin one of these up myself, it'd be either Sharkord, Fluxer, or even Mumble long before I touched this pile of radioactive sludge again. + +# Conclusion + +I'd love to be able to give you some better news. I want so badly to be able to say that there's something obvious you can switch to that's just as good or better in the ways that matter \*cough cough TWITTER\* with encryption, and federation, and open source to boot, but as far as I'm aware this is kind of it. + +With this decidedly sub-optimal state of affairs in mind, my call to action is this: Look into these alternatives — test them out, as a group if you can, see if one or multiple can work for you and your friends. If you're of the especially nerdy sort, contribute code to Polyphony or maybe Spacebar, and maybe see if you can make XMPP or (I guess) Matrix work. And finally, for the love of Glob, cancel your fucking Nitro. *Don't financially reward Discord for this shit.* ***I promise you don't need it.*** + +
+ +
+ +--- + +Also, whatever you end up doing, [here](https://github.com/Tyrrrz/DiscordChatExporter)'s a utility that can export your Discord chat history to a locally stored file. Do with this what you will. \ No newline at end of file diff --git a/blog/posts/discord2/index.php b/blog/posts/discord2/index.php new file mode 100644 index 0000000..952e6d9 --- /dev/null +++ b/blog/posts/discord2/index.php @@ -0,0 +1 @@ + + Comic of a guy pausing a Youtube video and reminiscing tearfully about the old days where it would buffer all the way to the end. + I happened across a [tumblr post](https://nyxgoddessofcandles.tumblr.com/post/733566253212598272/theres-more-to-do-actually-now-go-to) detailing some settings to accomplish that in modern Firefox, and I wanted to document it here. @@ -8,7 +10,7 @@ I can't guarantee that this won't stop working at some point amidst the constant *Update:* After using my browser with these settings for a while, I've noticed that the first of them breaks online video in some cases, notably Twitch streams and the Jellyfin web client. I've reverted the changes in my browser for this reason. -## How to do it +# How to do it In `about:config`, change the following settings: - Set `media.mediasource.enabled` to `false` diff --git a/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.md b/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.md index 32ee726..08ac47c 100644 --- a/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.md +++ b/blog/posts/guide_how_to_automount_drives_on_boot_in_linux/index.md @@ -1,4 +1,4 @@ -## Preamble +# Preamble Recently I had to reinstall Linux because of reasons, and I hit a bit of a snag. See, my computer has this setup with three drives where one is the boot drive, and the other has `/home` on it... it's not important, point is, I wanted some drives to be automatically mounted as specific directories at boot time. @@ -6,11 +6,11 @@ This is pretty easy to do with the manual partitioning tools most graphical inst the problem is that my system doesn't know my `/home` directory is on `/dev/sda3` and not `/dev/nvme0n1p1`. So I have to fix that now or just log in as root and mount my shit every time I turn the computer on for the rest of time. Guess which thing sounded like more of a pain in the ass. I googled it so you don't have to! -## Now on to the good stuff +# Now on to the good stuff I recommend you log out and do this as root in a TTY if you intend to mount something as your home directory. -## Getting partition information +# Getting partition information First, run: @@ -28,7 +28,7 @@ This will return a list of block devices (partitions) your system sees with some You'll probably have more than one though. There should be one per partition your system can see. We're interested in the `UUID` and `TYPE` attributes. Find the ones for the partition you want mounted and take note of them. We'll be adding these to your fstab file. -## Editing your fstab +# Editing your fstab First, make sure the directory you'll be mounting to exists. Create it if it doesn't. **Now make a backup of your fstab file in case you break things!** You can do this by simply copying the file: @@ -38,7 +38,9 @@ sudo cp /etc/fstab /etc/fstab.bak Now we can edit it. Open `/etc/fstab` in your favorite text editor, and you should be greeted with a file that looks something like this: -![Screenshot of /etc/fstab on my computer before I did this](fstab.png) +
+ Screenshot of /etc/fstab on my computer before I did this +
(This is the fstab file EndeavourOS generated on install. Because I set it to use btrfs, it mounted the same partition like four separate times as subvolumes. Yours will likely be smaller if you didn't do this.) @@ -67,7 +69,7 @@ If you did it right, you should now be able to reboot and see your partitions ha One more thing to keep in mind, if you see any lines with a mount point that's the same as the place you're trying to mount to (for example, the system has mounted a btrfs subvolume for /home and you want to put that on your secondary drive) you should probably comment out or delete that. -## The fast way +# The fast way Alternatively, you could just paste this into your terminal and then reboot: diff --git a/blog/posts/guide_pihole_lepotato/index.md b/blog/posts/guide_pihole_lepotato/index.md index e222568..96fbf77 100644 --- a/blog/posts/guide_pihole_lepotato/index.md +++ b/blog/posts/guide_pihole_lepotato/index.md @@ -4,7 +4,7 @@ I set up [Pi-hole](https://pi-hole.net/) on my home network recently. If you're Before you do anything, and especially before you *buy* anything, make sure your router lets you both assign static IP addresses in some way and set your own DNS servers. This functionality is necessary to use Pi-hole. I can't help you do this, unfortunately — every router is different and many ISP Specials™ are missing these settings. -## Hardware +# Hardware The Le Potato comes in two flavours: 1GB of RAM and 2GB of RAM. Either will suffice here, though I would go with the 2GB variant just because the 1GB version isn't really that much cheaper. Aside from the board itself, you'll also need a wired network connection1, a micro SD card, and an HDMI monitor and keyboard for initial setup, though you can use SSH to access it over the network after that. @@ -14,7 +14,7 @@ Like the Pi, the Le Potato lacks any built-in storage, so you'll need to supply Finally, I'd recommend getting a case. Fortunately, the Le Potato has the same dimensions and layout as, and as such is compatible with cases for, the Raspberry Pi 3 Model B. I 3D printed [this one](https://www.printables.com/model/67681-raspberry-pi-3b-case/files) in PETG, and a wide array of cases are available for cheap online if you can't do the same. I especially like the one that looks like a little NES. -## Booting an OS +# Booting an OS Since I'd heard the Le Potato was broadly compatible with the Pi, I initially tried booting a Raspbian image from the official Raspberry Pi flasher tool. Maybe predictably, this did not work. The next thing I tried, and what we'll be using, is Armbian, a lightweight port of Debian designed for tiny SBCs like this one that happens to have a page on its website specifically for the Le Potato. @@ -33,7 +33,7 @@ sudo apt update sudo apt upgrade ``` -## Setting Up Pi-hole +# Setting Up Pi-hole Installing Pi-hole is pretty simple. Just download and run the install script: @@ -46,7 +46,7 @@ The script will prompt you for some settings. Most of them are pretty straightfo The last step to get Pi-hole working on your network is to set its static IP as your router's primary DNS server. The Pi-hole devs recommend setting your Pi-hole device as the only DNS server for the network to guarantee it always gets every request, but I set a couple of fallbacks in case my Pi-hole server ever goes down and it seems to still work fine. -## Post-setup Configuration +# Post-setup Configuration Pi-hole has a lot of powerful functionality, but here I'd like to focus on fine-tuning your blocklist. The default one is pretty good, but [The Firebog](https://firebog.net/) has a lot of good ones if you'd like to broaden your coverage — I use one or two of the green ones from each category. diff --git a/blog/posts/make_your_own_cables/index.md b/blog/posts/make_your_own_cables/index.md index c981dbc..16f1bf2 100644 --- a/blog/posts/make_your_own_cables/index.md +++ b/blog/posts/make_your_own_cables/index.md @@ -1,6 +1,8 @@ My current main headphones are a model that doesn't come with a removable cable by default, that I purchased through a company that offers a service to add one aftermarket for you. They offered multiple different connector options, and I chose this one: -![4-pin mini XLR male and female jacks. The pins are arranged in a Y shape.](4pinminixlr.png) +
+ 4-pin mini XLR male and female jacks. The pins are arranged in a Y shape. +
This is one of two connector types that come up when you search for "4-pin mini XLR". I opted for this connector on the basis that it would allow me to potentially use the headphones with a balanced output in the future, because I had been researching headphones for probably several days and eventually you start to think that kind of thing is important. @@ -11,25 +13,23 @@ So universally is this the case that there is seemingly essentially no market fo Instead of shelling out Intel Core i3-13100F money for what functionally amounts to 3 meters of wire and a couple of audio jacks, I lopped the connectors off of the old, broken cable and soldered on some new wires and saved myself $140.
-
- A 3.5mm jack to 4-pin mini XLR adapter cable with a shiny black braided exterior -
This braided sheathing can be had for cheap on Amazon by searching "braided cable sleeve". I used the 6mm variant here, and it comfortably fits the three 24AWG wires.
-
+ A 3.5mm jack to 4-pin mini XLR adapter cable with a shiny black braided exterior +
This braided sheathing can be had for cheap on Amazon by searching "braided cable sleeve". I used the 6mm variant here, and it comfortably fits the three 24AWG wires.
This isn't the only time I've had to do this, either — I, through a bizarre series of events, happen to own a piece of musical equipment made in the 1960s, in the Netherlands, with weird output jacks to match: -![Male and female 2-pin DIN connectors](2pindin.jpg "By boffy_b - Own work, Copyrighted free use, https://commons.wikimedia.org/w/index.php?curid=1010205") +
+ Male and female 2-pin DIN connectors +
These are 2-pin DIN connectors, from the same family as the 5-pin DIN connectors you may be familiar with from their use in MIDI ports. My device uses a pair of these for stereo output. I can only assume this was standard at the time, in the Netherlands, but where and when I live this type of connector is all but unheard of, to the point that there are *no* cables with it available whatsoever, only the bare connectors. In order to get this thing connected to my other equipment, I had to fashion my own adapter cable out of a stereo-to-dual-mono TRS splitter cable and two of those connectors purchased standalone from the internet.
-
- A Stereo 1/4 inch TRS to dual mono 2-pin DIN adapter cable -
I wonder how far away from me the nearest other cable of this type is.
-
+ A Stereo 1/4 inch TRS to dual mono 2-pin DIN adapter cable +
I wonder how far away from me the nearest other cable of this type is.
I'm not going to attempt to teach you how to do this here — there's plenty of people on Youtube who are much more qualified to do that than me — but I think if you're at all comfortable messing with electronics this is a good skill to have. It's proven surprisingly useful to me, not just as a hobbyist who builds weird electronic gizmos for fun but as a casual enjoyer and maker of music. diff --git a/blog/posts/my_terrible_distro_hop/index.md b/blog/posts/my_terrible_distro_hop/index.md index 556da49..c8072c8 100644 --- a/blog/posts/my_terrible_distro_hop/index.md +++ b/blog/posts/my_terrible_distro_hop/index.md @@ -1,4 +1,4 @@ -## Prologue +# Prologue Of late, I've been having some mildly annoying, highly esoteric issues, of the sort any desktop OS tends to develop given enough time, with my daily-driver install of the Arch-based EndeavourOS with XFCE. The most annoying of these annoyances include the XFCE panel daemon having stopped running on login, which I dealt with by binding the command to start it to a keyboard shortcut, and the monitor layout defaulting to mirrored every time I locked the screen, which I dealt with much the same way. I say of late, but I've been dealing with this shit for months. These seemed like bugs somewhere deep in XFCE that I really didn't have the energy to try to fix, so my solution was to just go scorched-earth and start again with something new. @@ -6,11 +6,11 @@ The something new I landed on was a fresh install of Fedora. I chose Fedora part I had no idea what I was about to get myself into. -## The Installation Experience +# The Installation Experience The installation went very smoothly. I was actually pretty impressed. It was probably the fastest I've ever installed Linux - All it did was prompt me for a language, timezone, and the drive to install to and a few minutes later it was done. Fast and simple even by Linux installation standards. It was the next part that was painful. -## Setup (Or Rather, My Doomed Attempt Thereof) +# Setup (Or Rather, My Doomed Attempt Thereof) I should say here that this isn't a review of Fedora as much as it is just me venting. It seems like it would be great for the kind of user it's designed for, but as it turns out that is *not* me. Honestly, a lot of this stuff may or may not have been my fault. Anyway, on to the pain. @@ -26,7 +26,7 @@ To be clear, this probably would have been fine if flatpaks were already my go-t On a related note, a lot of the software in the repositories that were available to me was *severely* outdated. PrusaSlicer, for example, was only available in version 2.4.2, which was released in April of 2022. As of writing in February of 2024, the latest version is 2.7.1. It was upon going to Prusa's website to download the AppImage of the latest version like some kind of fucking caveman and discovering that AppImageLauncher2 wasn't in *any* of the repos that I got fed up, decided I wasn't gonna risk dealing with this type of shit for every program I wanted to install and noped out. -## Where To Next +# Where To Next So Fedora was a bust, so where do I go from here? I considered moving to an Ubuntu-based distribution like Pop!_OS or Mint that might give me what I wanted from Fedora, and I briefly considered going back to Manjaro for reasons I have honestly forgotten, but I had been at this for hours now and I really just wanted my computer in a usable state again with the minimum possible amount of adaptation, so I came crawling back to EndeavourOS, and went to take a nap while it installed to hopefully come back to this ordeal with a cooler head. @@ -38,7 +38,7 @@ Beyond that, I've been acclimating to the fresh install pretty much fine. All my I do have one very difficult issue, though. -## What Is The Fucking Deal With ProtonVPN On Linux +# What Is The Fucking Deal With ProtonVPN On Linux I use ProtonVPN, and one of the things I attempted to do on Fedora was set it back up. I don't know what I did originally to dodge this, but trying to set it up recently, both on Fedora and on Arch, has been an excercise in navigating an insane maze of complete and utter bullshit. @@ -103,7 +103,7 @@ Two, what's going on with ProtonVPN clients on Linux? It looks like the Electron Also, three, why wasn't network-manager-applet already installed? This thing seems like a pretty important system package, especially given the rest of network-manager was already present and seems to be the thing allowing me to connect to the internet right now. Well, such is Arch I suppose. The type of Linux user who runs this thing seems to tend towards having a pathological obsession with bloat and the relevant de-'s3. -## Oh Sweet It's Fine Actually +# Oh Sweet It's Fine Actually That concludes my blog post, and the blog-post-within-a-blog-post that appears to have metastasized up there. I think you should know I finished troubleshooting both ProtonVPN *and* OBS while writing the post chronicling my suffering. Thank you for indulging my bitching and moaning about totally avoidable software problems. Who knows, maybe this will help you. For your sake, I hope it doesn't. diff --git a/blog/posts/renting_an_unremarkable_server/index.md b/blog/posts/renting_an_unremarkable_server/index.md index 117de85..e2be7a9 100644 --- a/blog/posts/renting_an_unremarkable_server/index.md +++ b/blog/posts/renting_an_unremarkable_server/index.md @@ -15,7 +15,7 @@ In researching alternative VPS options, I landed on OVH because they were the mo See what I mean? Of course, none of these seem like all that from the perspective of a modern personal computer, but this represents a *quadrupling* of CPU cores and RAM and a *sextupling* of storage space for a near halving of the price compared to my already adequate previous solution. That's like eight times the value! Though, looking at this table, you can already see a couple of the reasons it's priced so competitively, even accounting for the DigitalOcean tax. Let's break this down. -## The Ebay Optiplex gaming PC of rented servers +# The Ebay Optiplex gaming PC of rented servers So I've moved from a VPS to a dedicated server. The fundamental difference between them is that a VPS is a virtual machine that your hosting provider spins up for you, while a dedicated, or bare-metal, server is just a whole computer that you rent sole administrative privileges over. @@ -27,7 +27,7 @@ If you're the sort of person who memorizes server part numbers, you may have alr Financials aside, it should go without saying that this new-to-me server is *way* overkill for the handful of websites and single-user self-hostable network services I'll be running on it. The old VPS had plenty of computing power for that. The main draw for me was the extra storage space — I might have gone even cheaper, except all the cheaper options were restricted to network speeds that I actually felt uncomfortable limiting myself to. -## Migrating to the thang ding +# Migrating to the thang ding Of course, then there's the matter of actually migrating everything over. It went about as smoothly as you could reasonably expect. DigitalOcean, turns out, loves their vendor lock-in and won't let you download an image of your VPS directly, so it was a lot of making .tar.gz archives on the old server, downloading them over sftp, and then uploading them to the new server. diff --git a/blog/posts/sf5_estrogen_moth/index.md b/blog/posts/sf5_estrogen_moth/index.md new file mode 100644 index 0000000..c4ab821 --- /dev/null +++ b/blog/posts/sf5_estrogen_moth/index.md @@ -0,0 +1,70 @@ +I'm currently knee-deep in a playthrough of Skyfactory 5, which for the bafflingly uninformed reader is a skyblock tech modpack for Minecraft. Among many others, it includes the Create mod, and it will come as no surprise to those familiar with my proclivities that my first impulse upon finding this out was to mod my modpack to include the [Create: Estrogen](https://modrinth.com/mod/estrogen) addon. + +This went surprisingly smoothly, except for one thing. See, the Estrogen addon adds a few things that have nothing whatsoever to do with the eponymous fluid processing line and consumable items, including one mob: a rosy maple moth. + +
+ The Rosy Maple Moth mob in question. It's clear that it was modeled on the vanilla bee. +
+ +This presents a problem because of Skyfactory 5's absurdly custom progression system. Instead of mob spawning working normally, trees drop loot bags, which give "gateway pearls" that summon little challenge events where you fight a specific mob and get a trophy as a reward that can be used to toggle spawning of that mob in your world, which then ignores almost all of the mob's typical spawning conditions and just plonks it down anywhere. Transphobically, this system was not designed with my aftermarket mod in mind, so if I wanted the moths in my world in a way that could reasonably be called legitimate I was gonna have to do some tinkering. + +I'd be content to just not bother except that I want one of the items that you can only get via moth, a pair of thigh high socks that provide extremely high resistance to fall damage and are made from Moth Fuzz, which of course you can only get from the moths. I could, of course, just spawn a couple moths in with commands and farm the necessary fuzz from them, but that's the coward's way out. + +Luckily for me, a lot of the custom stuff in Skyfactory 5 is done using datapacks applied globally to every world, which means it can be augmented by just futzing with some json files in the game install folder. So far, I've managed to create a custom Gateway Pearl, add it to the loot table for Pink Loot Bags, and add the reward trophy. However, the pearl's name is bugged, the moths don't attack you during the event like they're supposed to, and the trophy doesn't toggle spawns. Also, it's just the standard gateway pearl — I didn't bother integrating this with any of the more advanced challenge gateway stuff because I don't care. + +However however, this is enough to get moths in my world because the gateway event spawns a couple of the respective mob when you win, so I'm content to stop here for now. I'll update this post if I make any more progress towards integrating this properly. If you've got any information to that end, I'd appreciate hearing about it. This blog has a comment box and my various contact info is listed on the About Me page. + +Also, I did this on version 5.0.8 of the modpack. Just something to keep in mind. + +# How to do it + +The upside of my woefully incomplete solution is that it's relatively simple to set up. All you gotta do is add two .json files and modify a third. + +## Trophy + +To create the trophy, create `moth.json` in `/global_packs/required_data/skyfactory_5/data/obtrophies/trophies` with the following content: + +

moth.json

+ +``` +{ + "entity": "estrogen:moth", + "scale": 1.5 +} +``` + +This is technically an optional step because the trophy doesn't do anything, but the JSON for the gateway pearl expects it to be there. Also, the scale entry doesn't need to be there — all it does is make the model on the trophy bigger. It's purely cosmetic, but I like it. + +## Gateway Pearl + +To add the gateway pearl and event, place this file inside `/global_packs/required_data/skyfactory_5/data/gateways/gateways/normal`: + +[moth.json](moth.json) + +This is just the json file for the teacup pig gateway, except I've swapped every mention thereof out for the moths. Which mob the base file is isn't super important, but this one is convenient because it's already pink and already has the configuration required to spawn the mob for you after you win the challenge. Hostile mob gateways don't do this, for obvious reasons. + +## Loot Tables + +Finally, add the pearl to one of the loot tables defined in `/global_packs/required_data/skyfactory_5/data/treasurebags/loot_tables/bags` by adding this entry to the relevant json file: + +

pink.json

+ +``` +...}, +{ + "type": "item", + "name": "gateways:gate_pearl", + "weight": 100, + "functions": [ + { + "function": "set_nbt", + "tag": "{gateway:\"gateways:normal/moth\"}" + } + ] +} +... +``` + +For your convenience, I've also uploaded my version of `pink.json` with this entry added. Just overwrite the existing version (again, inside `/global_packs/required_data/skyfactory_5/data/treasurebags/loot_tables/bags`) with it and it should work. + +[pink.json](pink.json) \ No newline at end of file diff --git a/blog/posts/sf5_estrogen_moth/index.php b/blog/posts/sf5_estrogen_moth/index.php new file mode 100644 index 0000000..952e6d9 --- /dev/null +++ b/blog/posts/sf5_estrogen_moth/index.php @@ -0,0 +1 @@ + -
- The Toshiba Chromebook 2, an unassuming 13-inch laptop made of light grey plastic. As one might expect, it is running Chrome OS. -
Image courtesy of PCMag, from their review of this machine.
-
+ The Toshiba Chromebook 2, an unassuming 13-inch laptop made of light grey plastic. As one might expect, it is running Chrome OS. +
Image courtesy of PCMag, from their review of this machine.
This is the Toshiba Chromebook 2. The high-trim model that I had sports a 13-inch 1080p screen, Skullcandy-branded speakers, a whopping 4GB of RAM, the world's most sopping wet and pathetic dual-core Intel Celeron CPU, and 16GB of EMMC storage. It also comes with 100GB of free Google Drive storage for two full years, which sounds like some nasty ploy to sell you a subscription, but with how long you'll be using the thing for may as well be a second internal SSD. diff --git a/blog/posts/unity_runtime_fee_and_proprietary_software/index.md b/blog/posts/unity_runtime_fee_and_proprietary_software/index.md index 633b1a5..84b3b1a 100644 --- a/blog/posts/unity_runtime_fee_and_proprietary_software/index.md +++ b/blog/posts/unity_runtime_fee_and_proprietary_software/index.md @@ -14,9 +14,11 @@ For example, Among Us has over 500 million downloads on the Google Play Store al That's an extreme example, but I think it gets the point across. If you don't believe me, take it from developers on Twitter (via [u/Sparky2199](https://archive.ph/IQPjW)): -[![Compilation of various twitter posts from indie game studios using Unity complaining about the change.](devprotest.png)](devprotest.png) +
+ Compilation of various twitter posts from indie game studios using Unity complaining about the change. +
-## The obligatory free software soapbox moment +# The obligatory free software soapbox moment As angry as I am about this, I do feel kind of vindicated, because here's the thing: something like this was always going to happen. Not because Unity in particular is a *bad* company (although it is), but because it's a *for-profit* company, and especially because it's one with shareholders to please. @@ -30,7 +32,7 @@ This problem isn't unique to Unity, or to game engines. We've been watching this It's my opinion that all proprietary software will die this way in the end. The structure is fundamentally unsustainable. You can't have infinite growth. At some point all the proprietary software and services that are commomplace nowadays with their ad-supported business models and predatory pricing schemes and suspiciously high marketing budgets will wither and die, having made themselves intolerable to even their most loyal customers, and most of the survivors will be open-source projects. Not as sleek or sexy or well-advertised, as they'll have had less incentive to appeal to new users, but fundamentally sustainable, having had *no* incentive to appeal to shareholders. -## An attempt at optimism +# An attempt at optimism In this particular case, I don't think this is gonna stick. Unity's runtime fee is absurd, and I think they know it just as well as all their moderately high-profile customers on Twitter do. Unity has already started to walk back some of the more extreme parts of the initial plan, as you can see on archived versions of the posts: [Blog post (Sep 12)](https://archive.ph/gEckm), [Blog post (Sep 14)](https://archive.ph/gBpXw), [Forum thread (Sep 12)](https://archive.ph/HYTq5), [Forum thread (Sep 14)](https://archive.ph/eByMm). Unity also has some customers that are bigger than them and notoriously litigation-happy, namely Nintendo (with Pokemon BD/SP and Go, plus a couple Mario mobile games) and Disney (also with quite a few mobile and console games). Unity's CEO also sold a bunch of stock in the company in the lead-up to this announcement, which, since the company's stock price dropped *significantly* after the announcement, might actually constitute fraud. You know, from federal crimes! Basically, this initial announcement was probably an attempt to see how much they could get away with, and Unity's probably fucked if they stick to their guns on this. @@ -38,7 +40,7 @@ On the technical side, if you're a budding game developer, Unity isn't your only Finally, if you've been eyeing a game that uses the Unity engine, you've got until the end of the year to install it without incurring that fee for the developer assuming this change goes through. So I'd check for that. By my understanding you'll have to run it at least once before then, too. -## Update as of 2023-09-23 +# Update as of 2023-09-23 Good(?) news! Unity's responded to community feedback and it's actually... better than I expected. You can read the full post [here](https://archive.ph/rLi8u), but I'll summarize the changes: diff --git a/common.php b/common.php index 3100ca9..bcd3307 100644 --- a/common.php +++ b/common.php @@ -7,12 +7,12 @@ $defaultmodstatus = 1; # If 0, all posts will be held for review by default. # If 1, only posts containing the banned words defined in # $datadir/bannedwords.json will be held for review. $gbform_messages = array ( - "success" => "Successfully posted!", - "review" => "Sumitted for review!", - "botcheckfailed" => "Bot test failed!", - "noname" => "Name required!", - "nomessage" => "Message required!", - "invalidlink" => "Invalid link!", - "banned" => "You've been banned." + "success" => "

Successfully posted!

", + "review" => "

Sumitted for review!

", + "botcheckfailed" => "

Bot test failed!

", + "noname" => "

Name required!

", + "nomessage" => "

Message required!

", + "invalidlink" => "

Invalid link!

", + "banned" => "

You've been banned.

" ); ?> \ No newline at end of file diff --git a/etc/bg.jpg b/etc/bg.jpg deleted file mode 100644 index 539fd56..0000000 Binary files a/etc/bg.jpg and /dev/null differ diff --git a/etc/bg.jxl b/etc/bg.jxl deleted file mode 100644 index daff312..0000000 Binary files a/etc/bg.jxl and /dev/null differ diff --git a/etc/bg_dither.png b/etc/bg_dither.png deleted file mode 100644 index 8d5661f..0000000 Binary files a/etc/bg_dither.png and /dev/null differ diff --git a/etc/buttons/35mm.gif b/etc/buttons/35mm.gif deleted file mode 100644 index 2c5bb0e..0000000 Binary files a/etc/buttons/35mm.gif and /dev/null differ diff --git a/etc/buttons/ace.png b/etc/buttons/ace.png deleted file mode 100644 index 1d62add..0000000 Binary files a/etc/buttons/ace.png and /dev/null differ diff --git a/etc/buttons/agender.png b/etc/buttons/agender.png deleted file mode 100644 index 2241f13..0000000 Binary files a/etc/buttons/agender.png and /dev/null differ diff --git a/etc/buttons/amd_powered.gif b/etc/buttons/amd_powered.gif deleted file mode 100644 index c6982a6..0000000 Binary files a/etc/buttons/amd_powered.gif and /dev/null differ diff --git a/etc/buttons/antinft.gif b/etc/buttons/antinft.gif deleted file mode 100644 index 1a4caf0..0000000 Binary files a/etc/buttons/antinft.gif and /dev/null differ diff --git a/etc/buttons/aro.png b/etc/buttons/aro.png deleted file mode 100644 index e1e50d2..0000000 Binary files a/etc/buttons/aro.png and /dev/null differ diff --git a/etc/buttons/aromantic-80x15.png b/etc/buttons/aromantic-80x15.png deleted file mode 100644 index 8a43594..0000000 Binary files a/etc/buttons/aromantic-80x15.png and /dev/null differ diff --git a/etc/buttons/asexual-80x15.png b/etc/buttons/asexual-80x15.png deleted file mode 100644 index 58b6beb..0000000 Binary files a/etc/buttons/asexual-80x15.png and /dev/null differ diff --git a/etc/buttons/badhtml.png b/etc/buttons/badhtml.png deleted file mode 100644 index 17b36a1..0000000 Binary files a/etc/buttons/badhtml.png and /dev/null differ diff --git a/etc/buttons/bantimetravel.png b/etc/buttons/bantimetravel.png deleted file mode 100644 index 83bcfa1..0000000 Binary files a/etc/buttons/bantimetravel.png and /dev/null differ diff --git a/etc/buttons/bestviewed.gif b/etc/buttons/bestviewed.gif deleted file mode 100644 index 0b43d5a..0000000 Binary files a/etc/buttons/bestviewed.gif and /dev/null differ diff --git a/etc/buttons/canadian.gif b/etc/buttons/canadian.gif deleted file mode 100644 index be1d040..0000000 Binary files a/etc/buttons/canadian.gif and /dev/null differ diff --git a/etc/buttons/chrome.gif b/etc/buttons/chrome.gif deleted file mode 100644 index 791016f..0000000 Binary files a/etc/buttons/chrome.gif and /dev/null differ diff --git a/etc/buttons/css.png b/etc/buttons/css.png deleted file mode 100644 index 7d8235b..0000000 Binary files a/etc/buttons/css.png and /dev/null differ diff --git a/etc/buttons/deeptwisty_button.png b/etc/buttons/deeptwisty_button.png deleted file mode 100644 index cc935d0..0000000 Binary files a/etc/buttons/deeptwisty_button.png and /dev/null differ diff --git a/etc/buttons/dontclick.gif b/etc/buttons/dontclick.gif deleted file mode 100644 index 188b46c..0000000 Binary files a/etc/buttons/dontclick.gif and /dev/null differ diff --git a/etc/buttons/dontyouhate.gif b/etc/buttons/dontyouhate.gif deleted file mode 100644 index ff8902d..0000000 Binary files a/etc/buttons/dontyouhate.gif and /dev/null differ diff --git a/etc/buttons/drpepper.gif b/etc/buttons/drpepper.gif deleted file mode 100644 index dff6eaa..0000000 Binary files a/etc/buttons/drpepper.gif and /dev/null differ diff --git a/etc/buttons/epicblazed.png b/etc/buttons/epicblazed.png deleted file mode 100644 index df30bc0..0000000 Binary files a/etc/buttons/epicblazed.png and /dev/null differ diff --git a/etc/buttons/floof_explode_88x31.gif b/etc/buttons/floof_explode_88x31.gif deleted file mode 100644 index 46c2ec0..0000000 Binary files a/etc/buttons/floof_explode_88x31.gif and /dev/null differ diff --git a/etc/buttons/getvlcnow.png b/etc/buttons/getvlcnow.png deleted file mode 100644 index 8922252..0000000 Binary files a/etc/buttons/getvlcnow.png and /dev/null differ diff --git a/etc/buttons/google_stand.gif b/etc/buttons/google_stand.gif deleted file mode 100644 index 08ffd8b..0000000 Binary files a/etc/buttons/google_stand.gif and /dev/null differ diff --git a/etc/buttons/handcode.png b/etc/buttons/handcode.png deleted file mode 100644 index c5bbdd1..0000000 Binary files a/etc/buttons/handcode.png and /dev/null differ diff --git a/etc/buttons/i_hate_microsoft.png b/etc/buttons/i_hate_microsoft.png deleted file mode 100644 index c20422b..0000000 Binary files a/etc/buttons/i_hate_microsoft.png and /dev/null differ diff --git a/etc/buttons/isopodhours.png b/etc/buttons/isopodhours.png deleted file mode 100644 index 60fdeff..0000000 Binary files a/etc/buttons/isopodhours.png and /dev/null differ diff --git a/etc/buttons/krisbtn.png b/etc/buttons/krisbtn.png deleted file mode 100644 index 176d3c4..0000000 Binary files a/etc/buttons/krisbtn.png and /dev/null differ diff --git a/etc/buttons/linux_powered.gif b/etc/buttons/linux_powered.gif deleted file mode 100644 index 2dbe456..0000000 Binary files a/etc/buttons/linux_powered.gif and /dev/null differ diff --git a/etc/buttons/miku-approved.gif b/etc/buttons/miku-approved.gif deleted file mode 100644 index 106c982..0000000 Binary files a/etc/buttons/miku-approved.gif and /dev/null differ diff --git a/etc/buttons/neo-fedi.gif b/etc/buttons/neo-fedi.gif deleted file mode 100644 index 5e84e5c..0000000 Binary files a/etc/buttons/neo-fedi.gif and /dev/null differ diff --git a/etc/buttons/neocities_stamp.gif b/etc/buttons/neocities_stamp.gif deleted file mode 100644 index c8e8ea4..0000000 Binary files a/etc/buttons/neocities_stamp.gif and /dev/null differ diff --git a/etc/buttons/niceopod_button.png b/etc/buttons/niceopod_button.png deleted file mode 100644 index 0398b0e..0000000 Binary files a/etc/buttons/niceopod_button.png and /dev/null differ diff --git a/etc/buttons/niceopod_button_2.png b/etc/buttons/niceopod_button_2.png deleted file mode 100644 index 84112e8..0000000 Binary files a/etc/buttons/niceopod_button_2.png and /dev/null differ diff --git a/etc/buttons/nonbinary-80x15.png b/etc/buttons/nonbinary-80x15.png deleted file mode 100644 index 5e06396..0000000 Binary files a/etc/buttons/nonbinary-80x15.png and /dev/null differ diff --git a/etc/buttons/nonbinary.png b/etc/buttons/nonbinary.png deleted file mode 100644 index 19bc440..0000000 Binary files a/etc/buttons/nonbinary.png and /dev/null differ diff --git a/etc/buttons/notoweb3.gif b/etc/buttons/notoweb3.gif deleted file mode 100644 index 4f5a2f1..0000000 Binary files a/etc/buttons/notoweb3.gif and /dev/null differ diff --git a/etc/buttons/nowebp.gif b/etc/buttons/nowebp.gif deleted file mode 100644 index e63f1f2..0000000 Binary files a/etc/buttons/nowebp.gif and /dev/null differ diff --git a/etc/buttons/piracy.gif b/etc/buttons/piracy.gif deleted file mode 100644 index 37b73b8..0000000 Binary files a/etc/buttons/piracy.gif and /dev/null differ diff --git a/etc/buttons/queercoded.png b/etc/buttons/queercoded.png deleted file mode 100644 index d8b53d0..0000000 Binary files a/etc/buttons/queercoded.png and /dev/null differ diff --git a/etc/buttons/righttorepair.png b/etc/buttons/righttorepair.png deleted file mode 100644 index 865ba1f..0000000 Binary files a/etc/buttons/righttorepair.png and /dev/null differ diff --git a/etc/buttons/she-her.gif b/etc/buttons/she-her.gif deleted file mode 100644 index 2c15fe4..0000000 Binary files a/etc/buttons/she-her.gif and /dev/null differ diff --git a/etc/buttons/shrimp.png b/etc/buttons/shrimp.png deleted file mode 100644 index 5132eb8..0000000 Binary files a/etc/buttons/shrimp.png and /dev/null differ diff --git a/etc/buttons/smokepowered.gif b/etc/buttons/smokepowered.gif deleted file mode 100644 index e1d77de..0000000 Binary files a/etc/buttons/smokepowered.gif and /dev/null differ diff --git a/etc/buttons/svg.svg b/etc/buttons/svg.svg deleted file mode 100644 index 557e620..0000000 --- a/etc/buttons/svg.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CALABLE -  ECTOR -   RAPHICS - - -  S - - V - G - - - - now! - - \ No newline at end of file diff --git a/etc/buttons/tested_on_firefox.gif b/etc/buttons/tested_on_firefox.gif deleted file mode 100644 index 92dbae0..0000000 Binary files a/etc/buttons/tested_on_firefox.gif and /dev/null differ diff --git a/etc/buttons/the_void.gif b/etc/buttons/the_void.gif deleted file mode 100644 index 1099de4..0000000 Binary files a/etc/buttons/the_void.gif and /dev/null differ diff --git a/etc/buttons/trans.png b/etc/buttons/trans.png deleted file mode 100644 index 2e63a5e..0000000 Binary files a/etc/buttons/trans.png and /dev/null differ diff --git a/etc/buttons/tyg.gif b/etc/buttons/tyg.gif deleted file mode 100644 index 9215840..0000000 Binary files a/etc/buttons/tyg.gif and /dev/null differ diff --git a/etc/buttons/usatoday.gif b/etc/buttons/usatoday.gif deleted file mode 100644 index 9e6fa57..0000000 Binary files a/etc/buttons/usatoday.gif and /dev/null differ diff --git a/etc/buttons/web-pi.png b/etc/buttons/web-pi.png deleted file mode 100644 index 9888021..0000000 Binary files a/etc/buttons/web-pi.png and /dev/null differ diff --git a/etc/buttons/win11no.gif b/etc/buttons/win11no.gif deleted file mode 100644 index ce23096..0000000 Binary files a/etc/buttons/win11no.gif and /dev/null differ diff --git a/etc/images/apiopage.png b/etc/images/apiopage.png deleted file mode 100644 index d8cb65b..0000000 Binary files a/etc/images/apiopage.png and /dev/null differ diff --git a/etc/index.php b/etc/index.php deleted file mode 100644 index d1702b3..0000000 --- a/etc/index.php +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - More - - - - - - -

more

-

more

- - - -

Buttons

-
- Piracy Now! - get VLC now! - Join the Fediverse! - Best heard through a 3.5mm jack - Best viewed with a computer - Tested on Firefox - No WebP! Just use PNG - Scalable Vector Graphics Now! - Web Pi Certified - Neocities: The web is yours - Status Cafe - 100% hand coded HTML - Don't you hate it when you're reading a page and then some-- This content is for subscribers only! Paywalls Gatekeep Knowledge. - I support right to repair - Stand up to Google! Fight for open web standards! Fight for online privacy! Fight against monopolistic practices! - Google Chrome is evil! - I hate Microsoft - Windows 11 No! - This is an Anti-NFT site - Keep the web free, say no to web3 - Powered by AMD - Linux powered - Powered by Dr Pepper - Powered by the void - This site is Miku approved - Kris where tf are we - :neofox_floof_explode: - W3C Bad HTML Markup - Ban Time Travel "Now" - CSS is awesome - Trans your gender - We're jammin! - - USA Today Hot Site - Shrimp Now! - Canadian on the web - You're telling me a queer coded this - she/her - Aromantic pride flag - - Trans pride flag - -
memetic apiopage - click to view -
-

My buttons

-
- isopod hours - deep twisty -
-

Hotlink or don't. I doubt the traffic from your personal site is gonna bring my server to its knees.

- - - - \ No newline at end of file diff --git a/etc/quotes/bg.jpg b/etc/quotes/bg.jpg deleted file mode 100644 index e13a975..0000000 Binary files a/etc/quotes/bg.jpg and /dev/null differ diff --git a/etc/quotes/bg.jxl b/etc/quotes/bg.jxl deleted file mode 100644 index 30b75bf..0000000 Binary files a/etc/quotes/bg.jxl and /dev/null differ diff --git a/etc/quotes/bg_dither.png b/etc/quotes/bg_dither.png deleted file mode 100644 index e252d2f..0000000 Binary files a/etc/quotes/bg_dither.png and /dev/null differ diff --git a/etc/quotes/images/c_pfp.png b/etc/quotes/images/c_pfp.png deleted file mode 100644 index a54ad21..0000000 Binary files a/etc/quotes/images/c_pfp.png and /dev/null differ diff --git a/etc/quotes/images/g_pfp.png b/etc/quotes/images/g_pfp.png deleted file mode 100644 index 1d1ca3b..0000000 Binary files a/etc/quotes/images/g_pfp.png and /dev/null differ diff --git a/etc/quotes/images/greensmile.png b/etc/quotes/images/greensmile.png deleted file mode 100644 index fc0f891..0000000 Binary files a/etc/quotes/images/greensmile.png and /dev/null differ diff --git a/etc/quotes/images/h_pfp.png b/etc/quotes/images/h_pfp.png deleted file mode 100644 index 73c56c5..0000000 Binary files a/etc/quotes/images/h_pfp.png and /dev/null differ diff --git a/etc/quotes/images/j_pfp.png b/etc/quotes/images/j_pfp.png deleted file mode 100644 index 5fb6b36..0000000 Binary files a/etc/quotes/images/j_pfp.png and /dev/null differ diff --git a/etc/quotes/images/m_pfp.png b/etc/quotes/images/m_pfp.png deleted file mode 100644 index 769319f..0000000 Binary files a/etc/quotes/images/m_pfp.png and /dev/null differ diff --git a/etc/quotes/images/p_pfp.png b/etc/quotes/images/p_pfp.png deleted file mode 100644 index b46d8db..0000000 Binary files a/etc/quotes/images/p_pfp.png and /dev/null differ diff --git a/etc/quotes/images/s_pfp.png b/etc/quotes/images/s_pfp.png deleted file mode 100644 index c35c967..0000000 Binary files a/etc/quotes/images/s_pfp.png and /dev/null differ diff --git a/etc/quotes/images/t_pfp.png b/etc/quotes/images/t_pfp.png deleted file mode 100644 index c975deb..0000000 Binary files a/etc/quotes/images/t_pfp.png and /dev/null differ diff --git a/etc/quotes/images/v_pfp.png b/etc/quotes/images/v_pfp.png deleted file mode 100644 index bf460d6..0000000 Binary files a/etc/quotes/images/v_pfp.png and /dev/null differ diff --git a/etc/quotes/index.php b/etc/quotes/index.php deleted file mode 100644 index 2e596f1..0000000 --- a/etc/quotes/index.php +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - #quotes - - - - - - -

#quotes

-

highlights from the #quotes channel in the discord chat

- pfp = $p; - $this->name = $n; - $this->color = $c; - } - } - $me = new User("h_pfp", "isopod", "00ffb7"); - $vivi = new User("v_pfp", "pink one", "ff009e"); - $sad = new User("s_pfp", "yellow one", "f1c40f"); - $mage = new User("m_pfp", "sea slug", "faaaaa"); - $celian = new User("c_pfp", "bird one", "73fbff"); - $thom = new User("t_pfp", "tomato", "567c2d"); - $goon = new User("g_pfp", "crab one", "2c9c91"); - $portals = new User("p_pfp", "purple one", "5a397d"); - $joy = new User("j_pfp", "green one", "a2ff00"); - - $quotes = array( - array($celian, "i think doom guy should lick the rocky cliffs for precious minerals", true), - array($me, "I don't have aspirations of egghood", true), - array($mage, "I wish australia was [...] real", true), - array($mage, "I accidentally kill over 50 small animals every time I ride my horse. I can kill you too", true), - array($mage, "the jermas have awful breeding problems", true), - array($celian, "vaguely unsettling green smiley face emoji bearing a strong resemblance to the one from geometry dash", true), - array($me, "swagful"), - array($celian, "You can quote me on that: I LOVE penis", true), - array($celian, "pee is awesome", true), - array($mage, "Our bells jingled with delight!", true), - array($me, "you love my dejected and bindlepilled swag", true), - array($celian, "genshin player slash slur", true), - array($me, "I'm dejected and bindlepilled", true), - array($celian, "you didn't know? every boat comes with free sex", true), - array($me, "you hate my gay little slurry", true), - array($me, "I've gotta up my slop game", true), - array($me, "your horny ass salad
you've been eating horny salad", true), - array($vivi, "i dont wanna be a hamster i wanna be a MILF", true), - array($mage, "kirby does not have boobs", true), - array($joy, "Babygirl, you are so bad at eating", true), - array($mage, "I made a facebook account to be transgender", true), - array($me, "having a facebook account makes you less transgender"), - array($celian, "she's trying to kill me", true), - array($mage, "oh HELL yeah"), - array($vivi, "instead of destroying everything how about you DESTROY this AAAAAASSSSSSSSSSSSSSSSSSSSS", true), - array($joy, "Pet names for your partner
  • Sugar
  • Sweetheart
  • Beautiful princess with a disorder
  • Gianni Matragano
  • My love
", true), - array($me, "L + ratio + no chitin", true), - array($me, "You can't be lumping like that white baby", true), - array($me, "You hate his perfectly symmetrical swag", true), - array($mage, "explodes and dies and gets it all over you", true), - array($vivi, "dont compare yourself to jesus just because you thought of making a number a tumblr sexyman", true), - array($vivi, "that would be skibidiphobic", true), - array($mage, "Why did he turn into a card this is some objectum tf shit", true), - array($vivi, "It's almost like he's transgender"), - array($celian, "I hate weezer and their child
fortunately I have killed weezer", true), - array($me, "furries can be trusted to decide who should live and who should die", true), - array($celian, "I'm a slut for polls", true), - array($celian, "i dont like homosexuality", true), - array($vivi, "internalized frog-phobia", true), - array($mage, "I think it's fucked up you can't just kill people", true), - array($mage, "babygirl you piss so bad what the fuck", true), - array($joy, "There's something about digitally altered screams of anguish that really stick in my mind", true), - array($mage, "I would change it to daddy's little slut or something. To inflict maximum damage. But rat slut amongus family is good...", true), - array($celian, "I think you just hate my water-soluble swag", true), - array($vivi, "put your words in my mouth and sentence all over me like a paragraph", true), - array($vivi, "i miss going ssssssssss in your whore tree banthrom", true), - array($celian, "YOU"), - array($vivi, "going sssssss and pppppppppp was the highlight of it for me"), - array($celian, "😭"), - array($celian, "picks yuo up
picks you up like you are a baby seal", true), - array($mage, "Yoooooooo
Makes noises
Euuuh ueh uh huah"), - array($vivi, "is the devil from the bible a pillow princess?", true), - array($me, "you would disparage the humble onion?", true), - array($vivi, "fruited the fuck out", true), - array($mage, "Babygirl you are so servers in United States", true), - array($mage, "Big BAWS. Naked Snake. Big BAWS. Naked Snake. Metal Gear Solid 3. 3. 3. Metal Gear Solid 3. Soviet Union. Jungle! Jungle!", true), - array($celian, "wait arent snake always naked"), - array($mage, "I have feelings for you"), - array($vivi, "back when i was a fan of edgy minion memes", true), - array($me, "I think we should fully replace Discord with Second Life", true), - array($mage, "just ignore the drowning horses in the hot tub", true), - array($mage, "BALLS?", true), - array($celian, "ye
if you're too tall u gotta have balls
to show off how tall you are"), - array($mage, "why do you serve so much cunt in roblox", true), - array($vivi, "omg its almost as pretty as you are ahaha
am i bleeding out", true), - array($mage, "Alasator is suspicious of my figgy pudding", true), - array($me, "check out my rod", true), - array($mage, "thats a nice rod"), - array($joy, "yo you're really schloobin it out this time", true), - array($joy, "I'd be the best wife ever", true), - array($mage, "i think your tits dont like the mechanism", true), - array($me, "Are you the hoe?", true), - array($joy, "I have no issues with eating babies", true), - array($me, "Would you dropkick joe biden? I think you should dropkick joe biden", true), - array($celian, "i dont care enough about him to drop kick him tbh"), - array($me, "i think you should drop kick him"), - array($mage, "sad flooboob", true), - array($me, "thats so weirdcore liminal analogue horror backrooms scp", true), - array($me, "I think you should die for funsies", true), - array($mage, "Joob spoob?", true), - array($sad, "PUSSY?"), - array($vivi, "I would love to just absolutely rawdog a toaster", true), - array($sad, "i LOVE the filth", true), - array($goon, "i had a dream that, Wheezer they all decided to go birdwatching", true), - array($me, "Serial like Universal Serial Bus", true), - array($celian, "Love me a good froot loop"), - array($me, "thats his brain-heart
thats his brheart", true), - array($celian, "i think you should unload it", true), - array($vivi, "i would love to unload inside a shotgun, yes"), - array($celian, "im gonna cum", true), - array($vivi, "DUDE. NICE"), - array($vivi, "put my ass in a hydraulic press", true), - array($me, "No time spent scrolling through furry porn is wasted", true), - array($celian, "its the blood powered fuck machine", true), - array($me, "is the isopod cunty", true), - array($celian, "maybe"), - array($me, "Extra creamy sounds fun", true), - array($celian, "i had a testicle induced lucid dream last night", true), - array($celian, "i am NOT washing my hands in milk", true), - array($vivi, "why not? you scared?"), - array($mage, "Lesbianism! The yummy treat", true), - array($mage, "i think its fucked you cant eat butterflies", true), - array($mage, "eats your child"), - array($mage, "࿐𒁃𒁃𒀱𒄦𒈙𒐫࿐𒁃𒀱𒄦𒈙𒐫࿐𒀱𒄦𒈙𒐫࿐ ꧄𒁃꧃𒈙𒄦𒀱𒁃𒀱𒄦𒈙𒐫࿐𒐫꧄𒁃꧃𒈙𒄦𒀱𒐫꧄𒁃꧃", true), - array($celian, "playing and talking about this game isnt enough i need to absorb it like plants do to nutrients in the soil", true), - array($celian, "NOOOO you can't do that... spooky fog", true), - array($vivi, "im sorry my FISH is a little rusty", true), - array($me, "Mmmm yummy car engine steak ^_^", true), - array($mage, "You would put me in the meat grinder next", true), - array($me, "But you're not beef"), - array($celian, "What if I disguise myself as a steak"), - array($celian, "I don't think I've drawn a human dick since I was like...", true), - array($celian, "dfgprp-403c286c-ccb1-4a3c-ba2c-3aa8fff58c0b.png", true), - array($sad, "you're nut?", true), - array($celian, "aren't we all?"), - array($vivi, "your arms are looking very testicular mr. Thanos", true), - array($vivi, "that slut did NOT taste good", true), - array($vivi, "im a [little sponge] who requires [[MOISTURE]]", true), - array($celian, "HOLY SHIT REAL BOMB THREAT!!!!!!!!!!!!!!!!!!!!", true), - array($vivi, "Shmumpus", true), - array($vivi, "You can use the wet thing for combat", true), - array($vivi, "my hobbies include milking my creature for eggnog", true), - array($me, "everybody loves Bomb Threat", true), - array($celian, "cutely explodes", true), - array($sad, "YOOOOOO"), - array($mage, "You would dye your dick?", true), - array($celian, "If I had one"), - array($me, "very impressive sex", true), - array($celian, "do you think feetleys feet are lickable", true), - array($vivi, "my brain has gotten to the point where i cannot come up with a threat that does not involve cum", true), - array($me, "can you WEAR Gabriel's MILK?", true), - array($mage, "Italy has a cheese named horse cheese but it's not made from horses", true), - array($celian, "worm from animals we all know him", true), - array($vivi, "you're mom", true), - array($me, "No I'm not"), - array($mage, "I believe in parenting with the knife", true), - array($mage, "Penis", true), - array($me, "Penis"), - array($celian, "Dies"), - array($vivi, "who names a child JUICE??", true), - array($me, "next thing i know im in this alien's discord server", true), - array($celian, "Just remove your balls", true), - array($vivi, "im gonna fucken CUM about that....like ANGRILY.", true), - array($vivi, "im gonna look at more foreskin gifs", true), - array($vivi, "all i can do is CUM and HOPE FOR THE BEST", true), - array($me, "Rainbow Dash is Kim Kitsuragi's ponysona", true), - array($mage, "You don't love me? You would deny me uncrunched eyeballs?", true), - array($sad, "I fuck the blockchain", true), - array($me, "Beautiful women named Mario are messaging me on my phone", true), - array($sad, "his HUGE BOOBS are distracting me", true), - array($mage, "I think you should play Second Life with me", true), - array($sad, "I think you're mentally ill"), - array($mage, "most anime girls are cute in a dog way", true), - array($mage, "Bestie I'm talking about balls, cock and balls, you would turn me into balls?", true), - array($sad, "Yes"), - array($celian, "I find Lois so hot and sexy", true), - array($mage, "she doesnt have an articulated pussy, i have to tell you", true), - array($celian, "Mlp ponies are like Scooby Doo to me", true), - array($me, "Would you play Krunker recommended by Klook dot com with me?", true), - array($me, "I dress like a female bird", true), - array($vivi, "i love it when I can feel my hat THROB ON MY HEAD", true), - array($vivi, "put the Piss stone down you know what that does to your", true), - array($mage, "I am such a loser when it comes to women", true), - array($joy, "Only true rizz masters get rewarded with Egg", true), - array($mage, "You would be a little pony?", true), - array($me, "I can neither confirm nor deny this"), - array($celian, "I don't wanna have my pussy out
it's there in spirit", true), - array($mage, "Do I have a dick or a pussy in spirit"), - array($mage, "Babygirl you need ketamine", true), - array($goon, "he shits with that thing have some respect", true), - array($me, "I think Gabriel should have boob armor", true), - array($sad, "You're interesting"), - array($me, "i have a copy of Karkalicious on my computer", true), - array($celian, "I love you so much too we should go out or something", true), - array($mage, "i hope you have wonderful sloppy toppy", true), - array($celian, "hell? i could bring you there if you want
that sounded so threatening, i meant on like a date or something", true), - array($mage, "I think it's okay if cooking pasta ends up in murder", true), - array($mage, "teehee :3 SITS ON YOUR BALLS", true), - array($vivi, "i AM the vinegar in a can of spaghetti-os that was cleaned out for the sole purpose of drinking vinegar", true), - array($celian, "I don't have bones", true), - array($me, "You can get some from the bone trees"), - array($celian, "Hey do you still have blood?", true), - array($sad, "me when im just not built different", true), - array($me, "yoinks your blood", true), - array($celian, "The sixth element is... kiki", true), - array($me, "Extrudes your taxes", true), - array($mage, "Anime girl Will moment", true), - array($vivi, "just in time for the himbo findification!", true), - array($me, "I wish someone would put me down
Wait a minute", true), - array($celian, "why are you rotated you whore", true), - array($me, "brb", true), - array($celian, "yooo"), - array($celian, "Do you want to watch the movie? The pussy?", true), - array($celian, "why does my salmon look like a vagina", true), - array($me, "you could say I handle a lot of cocks", true), - array($me, "obviously im not gonna handle a bunch of raw chickens and then touch my cock"), - array($me, "I don't think cocks get killed for their meat"), - array($mage, "and the girls have like car shaped heads", true), - array($mage, "I'm trying to find a cool way to say nonbinary peoples' tits", true), - array($celian, "Luigi tits"), - array($celian, "If I have my wings out all the time what does that mean
like a dick?", true), - array($celian, "You want to be the person that eats horses like grapes?", true), - array($mage, "Some people pass down books and jewelry, my family passes down autism", true), - array($mage, "theres a panda walking through me", true), - array($celian, "I'm more like an osprey but like Tumblrized", true), - array($me, "Listen I may be a furry but at least I'm not a weeb", true), - array($celian, "do u wanna try to guess? 😳", true), - array($sad, "is it... BIG?
AND THROBBING?"), - array($sad, "Chicken is one of the most fucking boring shit you can wear", true), - array($mage, "Why don't Canadians eat the snow to get rid of it", true), - array($celian, "Well you see... there's a ladder that goes through the window"), - array($celian, "I heard mothsex.gif", true), - array($portals, "Yeah bare naked ladies fuck HARD", true), - array($me, "I hope I'm not just the gay person in your computer to you but the gay isopod in your computer", true), - array($celian, "oh
bestie i have bad news for u
your parents might be having sex :(", true), - array($me, "I'm literally an isopod my fursona is just a human and I'm wearing a fursuit 100% of the time", true), - array($me, "I said something to the effect of we should skip february except for valentines day
the rest you got right
nearly typed fruary", true), - array($mage, "Furry"), - array($me, "NO"), - array($celian, "fury behavior"), - array($me, "FURY INDEED IM FUCKING MAD"), - array($me, "amongus babies and their adopted dads", true), - array($thom, "I have 6 partners", true), - array($goon, "6 am or pm?"), - array($mage, "Men season themselves in the wind", true), - array($vivi, "i would love to be vored by a cow as well", true), - array($celian, "I'm eely", true), - array($celian, "yeehee"), - array($celian, "Im crunde"), - array($celian, "beainxella"), - array($me, "I cannot begin to describe the aerospace applications of a material with the properties that your beetle has given my pants", true), - array($me, "you can make space worthy pants with human technology we've done it before"), - array($celian, "COCK RING KEN", true), - array($celian, "Yoo no more gay!", true), - array($mage, "She hates gay people and LOVES bald people"), - array($mage, "i dont want to buy the fucked up heterosexual bird", true), - array($me, "you think Baldi is a dilf?", true), - array($celian, "sure?"), - array($vivi, "like i could fuck a freezer
i couldn't fuck a freezer
too cold", true), - array($celian, "", true), - array($me, "MY computer is attractive, alright. yours is not.", true), - array($me, "your computer is a milf"), - array($me, "bowser was always hot. coward", true), - array($celian, "oh is your jaw equiped?", true), - array($sad, "I AM YOUR CHEESEBURGER", true), - array($celian, "gimmie a sex
*SEC
*SEC
*SEC
*SEC
A SECOND
OH MY GOD", true), - array($mage, "I think it's incredibly feminine to crawl around in storm drains", true), - array($me, "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), - array($me, "what fucking cyberpunk world are you living in where panties have HUDs", true), - array($vivi, "I want a panic attack now", true), - array($me, "you're gonna be so tasty in two weeks", true), - array($me, "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), - array($me, "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), - array($me, "I'm not in denial I'm a furry", true), - array($me, "mold is a fursuit for bread", true), - array($mage, "when someone eats moldy food does that mean they're voring a furry?"), - array($me, "yes"), - array($me, "can you believe sag their pirt is four years old? (it is from 2018)", true), - array($celian, "wait isn't it 5?
we're in 2022
did you count 2020
wait
i may be stupid."), - array($me, "I'm not FRENCH I'm a FURRY", true), - array($vivi, "Maybe the real cum pepsi is the friends we made along the way", true), - array($celian, "Ibuprofwn kind of slut.", true), - array($me, "I wish my cock was a fidget spinner", true), - array($vivi, "It's castration time!", true), - array($vivi, "I girlbossed a little to close to the comfy and fell asleep", true), - array($me, "that milk is the sequel to expired", true), - array($me, "Tony the tiger is HOT.", true), - array($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), - array($celian, "Dio would have been hotter with crocs", true), - array($sad, "Im just trying to picture like,, donald trump shitting", true), - array($me, "who would you have picked to win the tumblr sexy man award
the fucking onceler?", true), - array($thom, "...
how'd you know?"), - array($celian, "I wanna see the bloopers of Stephen Merchant moaning into the mic", true), - array($me, "come on, look at him. Sans is literally so sexy", true), - array($me, "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), - array($mage, "I think you'll be a fan of gangster balls soon bestie", true), - array($celian, "there i removed my vagina", true), - array($me, "For you, the person who wants to be naked in a ball, that is very bad for you", true), - array($mage, "If I had to rate it, I'd rate it fucking gay", true), - array($mage, "you're only playing Scout correctly if you've had gay sex", true), - array($me, "*Caroline voice* Pee your pants, Mr. Johnson.", true), - array($sad, "i feel like im reading it with my eyes", true), - array($me, "i think there should be a datapack that lets you right click people with a bucket
and milk them", true), - array($celian, "bebito house reveel
bebito hous reveel when the bebito has.
hous reveaal
hous reval bebito REAL NO CLICKBAIT!!!!!!!!!!!!!!!!", true), - array($celian, "its like having a stroke WHILE having an aneurism", true), - array($mage, "ideal"), - array($me, "Joe Biden can get his ass blasted in a nonfurry way", true), - array($celian, "bruh (respectfully)", true), - array($celian, "this isn't a furby this is walter white cum jar", true), - array($vivi, "can I have the walter white cum jar please 👉👈🥺"), - array($me, "i'd rather not explode today, Thanks", true), - array($celian, "got some hair :)", true), - array($me, "Walter White is a DILF, Celian.", true), - array($sad, "if there was porn i wouldnt leave", true), - array($me, "haunting you with the looming threat of horse", true), - array($celian, "Walter White sex jumpscare", true), - array($celian, "Evangelion spoilers walter white and saul goodman kiss", true), - array($me, "I think they should stop commissioning criminal intelligence and start commissioning furries", true), - array($sad, "YOOO THAT'S MY GIIIIIIRL!!!! MY GIRL SNAPE MY GIRL!!!!", true), - array($vivi, "I feel like DeviantArt right now, 2014 edition.", true), - array($me, "I want a transparent penis", true), - array($mage, "The buzzing sound of the penis won't go away", true), - array($thom, "vivi I really think you should stop shitting on reddit", true), - array($celian, "I don't agree because I disagree with you", true), - array($celian, "", true), - array($mage, ""), - array($celian, ""), - array($thom, "

"), - array($me, ""), - array($vivi, ""), - array($celian, ""), - array($vivi, ""), - array($me, "Imagine touching [audio loss] me", true), - array($thom, "theres something homoerotic about cars", true), - array($me, "im in spain without the sain", true), - array($mage, "REMEMBER TO MAKE BACKUP COPIES IF YOU INTEND TO EDIT THIS PENIS!!", true), - array($vivi, "god is actually surprisingly submissive and breedable", true), - array($me, "don't smoke cigarettes kids they'll make your lungs sus", true), - array($thom, "Bestie you've been given 2 full folders of skins
You can be any type of white you want to", true), - array($celian, "im gonna pause the video so i can listen to the flavors better", true), - array($vivi, "we stan the boner knife in this house", true), - array($vivi, "god said it's my turn on the being a milf", true), - array($mage, "\"Big Boy\" will be milked for his venom at the Australian Reptile Park", true), - array($mage, "i think you should get some weed and drink it", true), - array($sad, "imagine having a digestive system couldnt be me", true), - array($mage, "Hot"), - array($mage, "damn, guess i gotta send you some autism in the mail", true), - array($mage, "I just diagnosed you with bottom disorder", true), - array($mage, "Girls are always whole ass wet from the roof", true), - array($celian, "This is an amazing day for humanity, and by humanity, I mean my titties", true) - ); - - foreach($quotes as $q) { - if(isset($q[2]) && $q[2]) { - echo "
"; - } - echo "
"; - echo ""; - echo "

".$q[0]->name."

".$q[1]."
"; - echo "
"; - } - ?> - - - diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..eb36efd --- /dev/null +++ b/footer.php @@ -0,0 +1,27 @@ + \ No newline at end of file diff --git a/greenhouse/index.php b/greenhouse/index.php index d39534f..5576965 100644 --- a/greenhouse/index.php +++ b/greenhouse/index.php @@ -3,12 +3,9 @@ - Greenhouse - + greenhouse | isopod.cool v4 + - - -

webgreenhouse

-

I'll be honest, I'm not sure some of these plants belong underwater...

-
- -
-

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

- -

It may or may not be fully functional if you're on mobile, but then again this entire standard isn't really the most responsive thing in the world anyway.

+ +
+
+

webgreenhouse

+

I'll be honest, I'm not sure some of these plants belong underwater...

+
+ +
+

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

+ +

It may or may not be fully functional if you're on mobile, but then again this entire standard isn't really the most responsive thing in the world anyway.

+
+ + + + + + + + +
- - - - - - - - - -
- + + + diff --git a/guestbook/commentbox.php b/guestbook/commentbox.php new file mode 100644 index 0000000..9ba6586 --- /dev/null +++ b/guestbook/commentbox.php @@ -0,0 +1,67 @@ +
+ setSafeMode(true); + + //Boilerplate for comments + include_once($root . '/common.php'); + $return = $_GET["return"]; + $cwd = preg_replace("/^.*\//","",getcwd()); + + $ismaingb = false; + if($cwd != "guestbook") { + echo('

Comments

'); + } else { + $ismaingb = true; + } + + ?> + +
+ "; ?> + +
+
+ + +
+
+ + +
+
+ + + + +
+
+ + +
"); } ?> +
+ + +
+
+ + +
+
+ + +
+ + + \ No newline at end of file diff --git a/guestbook/comments.php b/guestbook/comments.php index b0acbae..92505e3 100644 --- a/guestbook/comments.php +++ b/guestbook/comments.php @@ -13,7 +13,7 @@ function echo_comments($page, $Parsedown = null) { foreach($postlist as $post) { if($post->entry === $page and $post->modstatus > 0) { $output = ""; - $date = date("Y-m-d h:iA", $post->date); + $date = date("Y-m-d", $post->date); $name = htmlentities($post->name); $message = $Parsedown->text($post->message); $found = htmlentities($post->found); @@ -23,7 +23,28 @@ function echo_comments($page, $Parsedown = null) { $coolsanitized = htmlentities(preg_replace("/https?:\/\//i", "", $cool)); $reply = $Parsedown->text($post->reply); - $output = $output."
"; + $nice = ""; + switch($index) { + case 42: + $nice = "scifi reference ayo???"; + break; + case 67: + $nice = "six sevennn"; + break; + case 69: + $nice = "nice"; + break; + case 420: + $nice = "blaze it"; + break; + case 911: + $nice = "ohhhh nine eleven"; + break; + default: + $nice = "#$index"; + } + + $output = $output."

"; if($website) { if($button) { $output = $output."$name"; @@ -31,16 +52,16 @@ function echo_comments($page, $Parsedown = null) { $output = $output."$name"; } } else { $output = $output.$name; } - $output = $output."

$date
Entry #$index
"; + $output = $output."

$date

$nice

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

cool thing: $coolsanitized

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

How did you find me?

$found

"; } - $output = $output."
$message
"; + $output = $output."
$message
"; if($reply) { - $output = $output."
Reply:$reply
"; + $output = $output."

Reply:

$reply
"; } $output = $output."
"; $index++; diff --git a/guestbook/index.php b/guestbook/index.php index 97e902b..dc7d654 100644 --- a/guestbook/index.php +++ b/guestbook/index.php @@ -8,63 +8,18 @@ error_reporting(E_ALL); - Guestbook - - - - + guestbook | isopod.cool v4 + - -

guestbook

-

say hi

- - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - "); }?> - - - - -
*
*
*
".$gbform_messages[$return]."
- -
- +
+

guestbook

+

say hi!

+ + +
+ diff --git a/guestbook/submit.php b/guestbook/submit.php index bb745a2..3393cb3 100644 --- a/guestbook/submit.php +++ b/guestbook/submit.php @@ -123,7 +123,6 @@ error_reporting(E_ALL); align-items: center; } -

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.

diff --git a/header.php b/header.php new file mode 100644 index 0000000..02f862c --- /dev/null +++ b/header.php @@ -0,0 +1,227 @@ +Kind of dragon free!', + 'This site uses cookies (chocolate chip)', + 'Now with reduced centralization!', + 'your gay', + 'the fuck is a gender', + 'One Of The Websites', + '𝓘𝓷𝓪𝓬𝓬𝓮𝓼𝓼𝓲𝓫𝓵𝓮!', + 'Follow me on Google+!', + '404: caption not found', + 'Web π compliant!', + 'If you\'re seeing this, something is seriously wrong.', + 'cringe', + 'don\'t smoke cigarettes kids they\'ll make your lungs sus', + 'real life isopod', + 'holy fucking bingle', + 'AI (Aquatic Isopod) generated', + 'crubge', + 'Only unpickle data you trust.', + 'string(15) "Tested in prod!"', + 'pwetty epic B)', + 'Known to the state of California to cause cancer', + 'Semi-modular!', + 'Did you know?', + 'shrimps is bugs', + 'Delicious!', + 'trnasgener', + 'Opinionated!', + 'Eurorack compatible!', + 'Hackable!', + 'HiDPI!', + '&mdash; addict', + '3D printed!', + 'Federated!', + 'Chitinous!', + 'is this a bedbuge?', + 'is this buge trans gener?', + 'Now in HD!', + 'Hard Disk Drive!', + '"Tablet or smartphone device"', + 'Free Palestine!', + 'Girl, we\'ve been knowing how to draw.', + 'Upside Down!', + 'RGB Gaming Webpage', + 'It\'s @'.date("B").'. Do you know where your children are?', + 'coke and fries halo', + 'Check it out, I\'m in the house like carpet', + 'Ordered dithering!', + 'thats so weirdcore liminal analogue horror backrooms scp', + 'steals your data! gives you virus!', + 'this is where the funny randomly selected messages would go', + 'a8e!', + 'Better than Version 3.2 Gen 2x2!', + 'Partially responsive!', + 'On E since 2026/01/10!', + #'COUNTER', + 'TUEADAY' + #'PLACEHIM', + ); + break; + } + $cap = $captions[array_rand($captions)]; + if($_GET['caption']) { + $cap = $captions[$_GET['caption']]; + } + if(!$seasonal) { + switch($cap) { + case 'COUNTER': + $num = (int) filter_var(file_get_contents($datadir."caption_views.txt"), FILTER_SANITIZE_NUMBER_INT); + $num++; + file_put_contents($datadir."caption_views.txt", $num); + $cap = "This caption has been viewed $num times!"; + break; + case 'TUEADAY': + $day = array("suday", "moday", "tueaday", "weaday", "thuday", "friaday", "satuaday")[date('w')]; + $cap = "wait it's fucking $day. god."; + echo ""; + break; + case 'PLACEHIM': + $cap = 'place him on your site immediately'; + echo ""; + break; + } + } +} + +$host = $_SERVER['HTTP_HOST']; + +function echolink($url, $name) { + global $host; + if("/$url" != $_SERVER['REQUEST_URI']) { + echo "
  • $name
  • "; + } else { + echo "
  • $name
  • "; + } +} +?> + +
    + +
    +

    isopod.coolv4

    +
    + isopod.cool v4 +
    +

    +
    + + + + + +
    \ No newline at end of file diff --git a/images/apiopage.png b/images/apiopage.png new file mode 100644 index 0000000..d8cb65b Binary files /dev/null and b/images/apiopage.png differ diff --git a/images/buttons/35mm.gif b/images/buttons/35mm.gif new file mode 100644 index 0000000..2c5bb0e Binary files /dev/null and b/images/buttons/35mm.gif differ diff --git a/images/buttons/ace.png b/images/buttons/ace.png new file mode 100644 index 0000000..1d62add Binary files /dev/null and b/images/buttons/ace.png differ diff --git a/images/buttons/agender.png b/images/buttons/agender.png new file mode 100644 index 0000000..2241f13 Binary files /dev/null and b/images/buttons/agender.png differ diff --git a/images/buttons/amd_powered.gif b/images/buttons/amd_powered.gif new file mode 100644 index 0000000..c6982a6 Binary files /dev/null and b/images/buttons/amd_powered.gif differ diff --git a/images/buttons/antinft.gif b/images/buttons/antinft.gif new file mode 100644 index 0000000..1a4caf0 Binary files /dev/null and b/images/buttons/antinft.gif differ diff --git a/images/buttons/apiopage88x31.png b/images/buttons/apiopage88x31.png new file mode 100644 index 0000000..ef2b734 Binary files /dev/null and b/images/buttons/apiopage88x31.png differ diff --git a/images/buttons/aro.png b/images/buttons/aro.png new file mode 100644 index 0000000..e1e50d2 Binary files /dev/null and b/images/buttons/aro.png differ diff --git a/images/buttons/aromantic-80x15.png b/images/buttons/aromantic-80x15.png new file mode 100644 index 0000000..8a43594 Binary files /dev/null and b/images/buttons/aromantic-80x15.png differ diff --git a/images/buttons/asexual-80x15.png b/images/buttons/asexual-80x15.png new file mode 100644 index 0000000..58b6beb Binary files /dev/null and b/images/buttons/asexual-80x15.png differ diff --git a/images/buttons/badhtml.png b/images/buttons/badhtml.png new file mode 100644 index 0000000..17b36a1 Binary files /dev/null and b/images/buttons/badhtml.png differ diff --git a/images/buttons/bantimetravel.png b/images/buttons/bantimetravel.png new file mode 100644 index 0000000..83bcfa1 Binary files /dev/null and b/images/buttons/bantimetravel.png differ diff --git a/images/buttons/bestviewed.gif b/images/buttons/bestviewed.gif new file mode 100644 index 0000000..0b43d5a Binary files /dev/null and b/images/buttons/bestviewed.gif differ diff --git a/images/buttons/canadian.gif b/images/buttons/canadian.gif new file mode 100644 index 0000000..be1d040 Binary files /dev/null and b/images/buttons/canadian.gif differ diff --git a/images/buttons/chrome.gif b/images/buttons/chrome.gif new file mode 100644 index 0000000..791016f Binary files /dev/null and b/images/buttons/chrome.gif differ diff --git a/images/buttons/css.png b/images/buttons/css.png new file mode 100644 index 0000000..7d8235b Binary files /dev/null and b/images/buttons/css.png differ diff --git a/images/buttons/deeptwisty_button.png b/images/buttons/deeptwisty_button.png new file mode 100644 index 0000000..cc935d0 Binary files /dev/null and b/images/buttons/deeptwisty_button.png differ diff --git a/images/buttons/dontclick.gif b/images/buttons/dontclick.gif new file mode 100644 index 0000000..188b46c Binary files /dev/null and b/images/buttons/dontclick.gif differ diff --git a/images/buttons/dontyouhate.gif b/images/buttons/dontyouhate.gif new file mode 100644 index 0000000..ff8902d Binary files /dev/null and b/images/buttons/dontyouhate.gif differ diff --git a/images/buttons/drpepper.gif b/images/buttons/drpepper.gif new file mode 100644 index 0000000..dff6eaa Binary files /dev/null and b/images/buttons/drpepper.gif differ diff --git a/images/buttons/epicblazed.png b/images/buttons/epicblazed.png new file mode 100644 index 0000000..df30bc0 Binary files /dev/null and b/images/buttons/epicblazed.png differ diff --git a/images/buttons/floof_explode_88x31.gif b/images/buttons/floof_explode_88x31.gif new file mode 100644 index 0000000..46c2ec0 Binary files /dev/null and b/images/buttons/floof_explode_88x31.gif differ diff --git a/images/buttons/fuckyouistillusecds.png b/images/buttons/fuckyouistillusecds.png new file mode 100644 index 0000000..9f160c3 Binary files /dev/null and b/images/buttons/fuckyouistillusecds.png differ diff --git a/images/buttons/getvlcnow.png b/images/buttons/getvlcnow.png new file mode 100644 index 0000000..8922252 Binary files /dev/null and b/images/buttons/getvlcnow.png differ diff --git a/images/buttons/google_stand.gif b/images/buttons/google_stand.gif new file mode 100644 index 0000000..08ffd8b Binary files /dev/null and b/images/buttons/google_stand.gif differ diff --git a/images/buttons/handcode.png b/images/buttons/handcode.png new file mode 100644 index 0000000..c5bbdd1 Binary files /dev/null and b/images/buttons/handcode.png differ diff --git a/images/buttons/i_hate_microsoft.png b/images/buttons/i_hate_microsoft.png new file mode 100644 index 0000000..c20422b Binary files /dev/null and b/images/buttons/i_hate_microsoft.png differ diff --git a/images/buttons/i_was_on_cohost.gif b/images/buttons/i_was_on_cohost.gif new file mode 100644 index 0000000..08f5e8a Binary files /dev/null and b/images/buttons/i_was_on_cohost.gif differ diff --git a/images/buttons/isopodhours.png b/images/buttons/isopodhours.png new file mode 100644 index 0000000..60fdeff Binary files /dev/null and b/images/buttons/isopodhours.png differ diff --git a/images/buttons/krisbtn.png b/images/buttons/krisbtn.png new file mode 100644 index 0000000..176d3c4 Binary files /dev/null and b/images/buttons/krisbtn.png differ diff --git a/images/buttons/linux_powered.gif b/images/buttons/linux_powered.gif new file mode 100644 index 0000000..2dbe456 Binary files /dev/null and b/images/buttons/linux_powered.gif differ diff --git a/images/buttons/miku-approved.gif b/images/buttons/miku-approved.gif new file mode 100644 index 0000000..106c982 Binary files /dev/null and b/images/buttons/miku-approved.gif differ diff --git a/images/buttons/neo-fedi.gif b/images/buttons/neo-fedi.gif new file mode 100644 index 0000000..5e84e5c Binary files /dev/null and b/images/buttons/neo-fedi.gif differ diff --git a/images/buttons/neocities_stamp.gif b/images/buttons/neocities_stamp.gif new file mode 100644 index 0000000..c8e8ea4 Binary files /dev/null and b/images/buttons/neocities_stamp.gif differ diff --git a/images/buttons/niceopod_button.png b/images/buttons/niceopod_button.png new file mode 100644 index 0000000..0398b0e Binary files /dev/null and b/images/buttons/niceopod_button.png differ diff --git a/images/buttons/niceopod_button_2.png b/images/buttons/niceopod_button_2.png new file mode 100644 index 0000000..84112e8 Binary files /dev/null and b/images/buttons/niceopod_button_2.png differ diff --git a/images/buttons/nonbinary-80x15.png b/images/buttons/nonbinary-80x15.png new file mode 100644 index 0000000..5e06396 Binary files /dev/null and b/images/buttons/nonbinary-80x15.png differ diff --git a/images/buttons/nonbinary.png b/images/buttons/nonbinary.png new file mode 100644 index 0000000..19bc440 Binary files /dev/null and b/images/buttons/nonbinary.png differ diff --git a/images/buttons/notoweb3.gif b/images/buttons/notoweb3.gif new file mode 100644 index 0000000..4f5a2f1 Binary files /dev/null and b/images/buttons/notoweb3.gif differ diff --git a/images/buttons/nowebp.gif b/images/buttons/nowebp.gif new file mode 100644 index 0000000..e63f1f2 Binary files /dev/null and b/images/buttons/nowebp.gif differ diff --git a/images/buttons/piracy.gif b/images/buttons/piracy.gif new file mode 100644 index 0000000..37b73b8 Binary files /dev/null and b/images/buttons/piracy.gif differ diff --git a/images/buttons/queercoded.png b/images/buttons/queercoded.png new file mode 100644 index 0000000..d8b53d0 Binary files /dev/null and b/images/buttons/queercoded.png differ diff --git a/images/buttons/righttorepair.png b/images/buttons/righttorepair.png new file mode 100644 index 0000000..865ba1f Binary files /dev/null and b/images/buttons/righttorepair.png differ diff --git a/images/buttons/she-her.gif b/images/buttons/she-her.gif new file mode 100644 index 0000000..2c15fe4 Binary files /dev/null and b/images/buttons/she-her.gif differ diff --git a/images/buttons/shrimp.png b/images/buttons/shrimp.png new file mode 100644 index 0000000..5132eb8 Binary files /dev/null and b/images/buttons/shrimp.png differ diff --git a/images/buttons/smokepowered.gif b/images/buttons/smokepowered.gif new file mode 100644 index 0000000..e1d77de Binary files /dev/null and b/images/buttons/smokepowered.gif differ diff --git a/images/buttons/spotify.gif b/images/buttons/spotify.gif new file mode 100644 index 0000000..ab88aef Binary files /dev/null and b/images/buttons/spotify.gif differ diff --git a/images/buttons/svg.svg b/images/buttons/svg.svg new file mode 100644 index 0000000..557e620 --- /dev/null +++ b/images/buttons/svg.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CALABLE +  ECTOR +   RAPHICS + + +  S + + V + G + + + + now! + + \ No newline at end of file diff --git a/images/buttons/tested_on_firefox.gif b/images/buttons/tested_on_firefox.gif new file mode 100644 index 0000000..92dbae0 Binary files /dev/null and b/images/buttons/tested_on_firefox.gif differ diff --git a/images/buttons/the_void.gif b/images/buttons/the_void.gif new file mode 100644 index 0000000..1099de4 Binary files /dev/null and b/images/buttons/the_void.gif differ diff --git a/images/buttons/trans.png b/images/buttons/trans.png new file mode 100644 index 0000000..2e63a5e Binary files /dev/null and b/images/buttons/trans.png differ diff --git a/images/buttons/tyg.gif b/images/buttons/tyg.gif new file mode 100644 index 0000000..9215840 Binary files /dev/null and b/images/buttons/tyg.gif differ diff --git a/images/buttons/usatoday.gif b/images/buttons/usatoday.gif new file mode 100644 index 0000000..9e6fa57 Binary files /dev/null and b/images/buttons/usatoday.gif differ diff --git a/images/buttons/web-pi.png b/images/buttons/web-pi.png new file mode 100644 index 0000000..9888021 Binary files /dev/null and b/images/buttons/web-pi.png differ diff --git a/images/buttons/wget.gif b/images/buttons/wget.gif new file mode 100644 index 0000000..3bff9d2 Binary files /dev/null and b/images/buttons/wget.gif differ diff --git a/images/buttons/win11no.gif b/images/buttons/win11no.gif new file mode 100644 index 0000000..ce23096 Binary files /dev/null and b/images/buttons/win11no.gif differ diff --git a/images/reactions/angy.png b/images/reactions/angy.png new file mode 100644 index 0000000..51578d4 Binary files /dev/null and b/images/reactions/angy.png differ diff --git a/images/reactions/collectmypages.png b/images/reactions/collectmypages.png new file mode 100644 index 0000000..3a367ea Binary files /dev/null and b/images/reactions/collectmypages.png differ diff --git a/images/reactions/fear.png b/images/reactions/fear.png new file mode 100644 index 0000000..5377769 Binary files /dev/null and b/images/reactions/fear.png differ diff --git a/images/reactions/frozen.png b/images/reactions/frozen.png new file mode 100644 index 0000000..ba39848 Binary files /dev/null and b/images/reactions/frozen.png differ diff --git a/images/reactions/livid.png b/images/reactions/livid.png new file mode 100644 index 0000000..5890530 Binary files /dev/null and b/images/reactions/livid.png differ diff --git a/images/reactions/looksaway.png b/images/reactions/looksaway.png new file mode 100644 index 0000000..929364d Binary files /dev/null and b/images/reactions/looksaway.png differ diff --git a/images/reactions/nerd.png b/images/reactions/nerd.png new file mode 100644 index 0000000..450358a Binary files /dev/null and b/images/reactions/nerd.png differ diff --git a/images/reactions/notamused.png b/images/reactions/notamused.png new file mode 100644 index 0000000..e10ac5d Binary files /dev/null and b/images/reactions/notamused.png differ diff --git a/images/reactions/sob.png b/images/reactions/sob.png new file mode 100644 index 0000000..21974e0 Binary files /dev/null and b/images/reactions/sob.png differ diff --git a/images/reactions/thumbsup.png b/images/reactions/thumbsup.png new file mode 100644 index 0000000..f72cf13 Binary files /dev/null and b/images/reactions/thumbsup.png differ diff --git a/images/reactions/yay.png b/images/reactions/yay.png new file mode 100644 index 0000000..fae981b Binary files /dev/null and b/images/reactions/yay.png differ diff --git a/index.php b/index.php index d7e4aa3..816062e 100644 --- a/index.php +++ b/index.php @@ -3,75 +3,10 @@ - + isopod.cool v4 + - - isopod.cool v3 - - + +
    -
    I've got a bit of a redesign in da works! Check 'er out!
    - Isopod on her skinkpad (thinkpad but with added skink) - -
    -
    - > Ada / Hannah
    - > she/it

    - > real life isopod
    - > chronic computer toucher -
    -
    -
    - An isopod! - Kevin - benlet - Shadow - french fry - Another isopod! - Ophiocordyceps Unilateralis -
    - -
    -
    - Unpaid advertising below! My apolo 90) { echo "cheese"; } else { echo "gies"; } ?>, but it's how we keep the lights on here at IsopodCoolGGMBH PBLLC. -
    - - -
    - -
    - + + - + \ No newline at end of file diff --git a/links/buttons/arimelody.gif b/links/buttons/arimelody.gif new file mode 100644 index 0000000..6227206 Binary files /dev/null and b/links/buttons/arimelody.gif differ diff --git a/links/buttons/beedotmovie.png b/links/buttons/beedotmovie.png new file mode 100644 index 0000000..84c43de Binary files /dev/null and b/links/buttons/beedotmovie.png differ diff --git a/links/buttons/fbyte.png b/links/buttons/fbyte.png new file mode 100644 index 0000000..8b0daea Binary files /dev/null and b/links/buttons/fbyte.png differ diff --git a/links/buttons/slonk.webp b/links/buttons/slonk.webp new file mode 100644 index 0000000..b3faa73 Binary files /dev/null and b/links/buttons/slonk.webp differ diff --git a/links/buttons/sp.png b/links/buttons/sp.png new file mode 100644 index 0000000..cc272d9 Binary files /dev/null and b/links/buttons/sp.png differ diff --git a/links/buttons/thermia.gif b/links/buttons/thermia.gif new file mode 100644 index 0000000..a7ee70a Binary files /dev/null and b/links/buttons/thermia.gif differ diff --git a/links/buttons/tsvety.png b/links/buttons/tsvety.png new file mode 100644 index 0000000..62ae083 Binary files /dev/null and b/links/buttons/tsvety.png differ diff --git a/links/index.php b/links/index.php index 71df8a8..63ced83 100644 --- a/links/index.php +++ b/links/index.php @@ -3,397 +3,376 @@ - Links - - + links | isopod.cool v4 + - -

    outbound links

    -

    the sequel to google (under construction)

    -

    Neighbours

    - - - - -
    -
    - Sea slug on the net! - Only Sans - Kalechips - 64th Sanctum - Sadgrl - Robophobia - Melonland Forum - Size of Cat - Moth Dot Monster - Won't Work! - Indigo's den - maia.crimew.gay - - Midnight Solarium - -
    -
    -

    Utility

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    12ft.ioShow me a 10ft paywall, I'll show you a 12ft ladder.
    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
    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.
    RegExrA website to test regular expressions for you
    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
    -

    Informational

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Easy USSRA comprehensive beginner's guide to Legally Acquiring Media
    LandChad.netA collection of tutorials for setting up various self-hosted services.
    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.
    Linux DAWA comprehensive list of VST plugins that work on Linux.
    Dark Pattern GamesA database of mobile games that flags them for predatory design patterns.
    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.
    Does the dog die?A crowdsourced database of content warnings for media
    Unconsenting MediaSimilar to doesthedogdie but for sexual violence in particular
    Can I Play That?An accessibility-focused videogame review site
    Spyware WatchdogAn index of popular programs that meet an un-eroded definition of "spyware".
    Trans Travel CountriesA work-in-progress index of countries with how easy and safe they are to travel to as a transgender person. Written from the perspective of a US citizen.
    Canadian AlternativesA collection of Canadian alternatives to common Internet services
    iNaturalistAn extensive crowdsourced library of high-quality photos of over 400,000 species of plants and animals
    A List Of Games By Trans People Before 2010
    A look at search engines with their own indexes
    -

    Fun

    -

    Games

    - - - - - - - - - - - - - - - - - -
    corru.observerSome kind of browser-based sci-fi RPG, or something. It's real good, play it
    Space Cadet PinballWindows XP Space Cadet Pinball, reverse engineered to run in your browser!
    Everything Ends In 0The world ends in 1 hour. It can't be saved. Wanna chat?
    MetazooaWordle but for animal species!
    -

    Generators

    - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Emoji KitchenA litany of different emoji fusions. Some of my favourites are , , and
    Burning Text GeneratorDoes this (the text is on fire)
    Zalgo Text GeneratorDoes t̵̝̻̘͒̓̈́h̵͇͙͔́̾i̵͎̪̞͊́̾s̵̫̼̀̾
    Fromsoft Image Macro GeneratorMake your own Dark Souls death screen type images
    limes.pink/errorsGenerates Nintendo console error dialogs
    obamifyturns any image into Obama
    -

    Live

    - - - - - - - - - -
    Cornell Lab Bird CamsLive bird cams!
    shrimpcam.appShrimp cam!
    -

    Other

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    crouton.netcrouton
    cornonthec.observer/corn on the cob server
    Wobble TownA cute little virtual pet!
    Snailets fontThe best font
    Hawking Radiation CalculatorCalculator for properties of a black hole
    Edible ColorsHTML colors sorted by edibility
    XKCDA webcomic of romance, sarcasm, math, and language.
    Miku cursorsMiku cursors!
    HORGA comprehensive database of occlupanid taxonomy
    e-mail.wtfEveryone knows what an email address is, right? Right?
    - -

    More Stuff

    - - - - - - - - - - - - - - - - -
    YesterlinksA user-curated directory of nearly 600 off-the-beaten-path websites, formerly hosted by the Yesterweb project.
    Marginalia Search [Random]A custom-built search engine for small, non-commercial websites.
    ooh.directoryA directory of over 2,000 blogs about every topic.
    Unapothecary Link Directory
    -
    - τ -
    + +
    +
    +

    outbound links

    +

    the sequel to google (under construction)

    + +
    + Sea slug on the net! + Only Sans + Kalechips + Robophobia + Melonland Forum + Moth Dot Monster + Won't Work! + Indigo's den + maia.crimew.gay + + Midnight Solarium + ari melody + Thermia + slonkazoid + suspiciouslyBee + tsvety + shitpostalotl +
    + +
    +

    Utility

    +
    +
    12ft.io
    +
    Show me a 10ft paywall, I'll show you a 12ft ladder.
    + +
    3DS Hacks Guide
    +
    A comprehensive guide for modding 2ds and 3ds consoles. I know it's legit because I used it on mine.
    + +
    hShop
    +
    A repository of software for your freshly hacked 3ds
    + +
    Newpipe & Invidious
    +
    Better YouTube frontends for Android and the browser respectively.
    + +
    Hype Machine Merch Table
    +
    Scans a Spotify playlist and links the Bandcamp page of any artist in it who has one.
    + +
    RegExr
    +
    A website to test regular expressions for you
    + +
    8mbvideo
    +
    Compresses any video file just enough to comply with Discord's filesize limits.
    + +
    jort.link
    +
    A shield to prevent accidental DDOSing of links posted to the fediverse
    +
    +
    + +
    +

    Informational

    +
    +
    Easy USSR
    +
    A comprehensive beginner's guide to Legally Acquiring Media
    + +
    LandChad.net
    +
    A collection of tutorials for setting up various self-hosted services.
    + +
    switching.software
    +
    A curated list of alternatives to popular software and services from companies like Google and Amazon.
    + +
    Awesome Selfhosted
    +
    A comprehensive list of self-hosted alternatives to various software.
    + +
    Linux DAW
    +
    A comprehensive list of VST plugins that work on Linux.
    + +
    Dark Pattern Games
    +
    A database of mobile games that flags them for predatory design patterns.
    + +
    How old is it?
    +
    For when your prospective employer asks for 10 years of experience.
    + +
    Reverse Interview
    +
    A list of questions to ask at (tech) job interviews
    + +
    based.cooking
    +
    A recipe website without all the typical recipe website garbage.
    + +
    Does the dog die?
    +
    A crowdsourced database of content warnings for media
    + +
    Unconsenting Media
    +
    Similar to doesthedogdie but for sexual violence in particular
    + +
    Can I Play That?
    +
    An accessibility-focused videogame review site
    + +
    Spyware Watchdog
    +
    An index of popular programs that meet an un-eroded definition of "spyware".
    + +
    Trans Travel Countries
    +
    A work-in-progress index of countries with how easy and safe they are to travel to as a transgender person. Written from the perspective of a US citizen.
    + +
    Canadian Alternatives
    +
    A collection of Canadian alternatives to common Internet services
    + +
    iNaturalist
    +
    An extensive crowdsourced library of high-quality photos of over 400,000 species of plants and animals
    + +
    A List Of Games By Trans People Before 2010
    + +
    A look at search engines with their own indexes
    +
    +
    + +
    +

    Fun

    + +
    +

    Games

    +
    +
    corru.observer
    +
    Some kind of browser-based sci-fi RPG, or something. It's real good, play it
    + +
    Space Cadet Pinball
    +
    Windows XP Space Cadet Pinball, reverse engineered to run in your browser!
    + +
    Everything Ends In 0
    +
    The world ends in 1 hour. It can't be saved. Wanna chat?
    + +
    Metazooa
    +
    Wordle but for animal species!
    + +
    list animals until failure
    +
    hot new brain workout
    + +
    Balatro Mobile Builder
    +
    Converts your copy of desktop Balatro into a mobile app. Useful if you're on a custom OS and the Play Store gets pissy if you try to buy it legitimately.
    +
    +
    + +
    +

    Generators

    +
    +
    Emoji Kitchen
    +
    A litany of different emoji fusions. Some of my favourites are , , and
    + +
    Burning Text Generator
    +
    Does this (the text is on fire)
    + +
    Zalgo Text Generator
    +
    Does t̵̝̻̘͒̓̈́h̵͇͙͔́̾i̵͎̪̞͊́̾s̵̫̼̀̾
    + + + +
    Fromsoft Image Macro Generator
    +
    Make your own Dark Souls death screen type images
    + +
    limes.pink/errors
    +
    Generates Nintendo console error dialogs
    + +
    obamify
    +
    turns any image into Obama
    +
    +
    + +
    +

    Live

    +
    +
    Cornell Lab Bird Cams
    +
    Live bird cams!
    + +
    shrimpcam.app
    +
    Shrimp cam!
    +
    +
    + +
    +

    Other

    +
    +
    crouton.net
    +
    crouton
    + +
    cornonthec.observer/
    +
    corn on the cob server
    + +
    Wobble Town
    +
    A cute little virtual pet!
    + +
    Snailets font
    +
    The best font
    + +
    Hawking Radiation Calculator
    +
    Calculator for properties of a black hole
    + +
    Edible Colors
    +
    HTML colors sorted by edibility
    + +
    XKCD
    +
    A webcomic of romance, sarcasm, math, and language.
    + +
    Miku cursors
    +
    Miku cursors!
    + +
    HORG
    +
    A comprehensive database of occlupanid taxonomy
    + +
    e-mail.wtf
    +
    Everyone knows what an email address is, right? Right?
    + +
    gradient.horse
    +
    Create a beautiful horse
    +
    +
    +
    + + + +
    +

    More Stuff

    +
    +
    Yesterlinks
    +
    A user-curated directory of nearly 600 off-the-beaten-path websites, formerly hosted by the Yesterweb project.
    + +
    Marginalia Search [Random]
    +
    A custom-built search engine for small, non-commercial websites.
    + +
    ooh.directory
    +
    A directory of over 2,000 blogs about every topic.
    + +
    +
    Unapothecary Link Directory
    +
    +
    +

    + τ +

    +
    +
    + diff --git a/me/cheddar03.gif b/me/cheddar03.gif new file mode 100644 index 0000000..ead9066 Binary files /dev/null and b/me/cheddar03.gif differ diff --git a/me/crackship_quiz_result.png b/me/crackship_quiz_result.png new file mode 100644 index 0000000..8b4d701 Binary files /dev/null and b/me/crackship_quiz_result.png differ diff --git a/me/index.php b/me/index.php new file mode 100644 index 0000000..67c7bae --- /dev/null +++ b/me/index.php @@ -0,0 +1,137 @@ + + + + + + me | isopod.cool v4 + + + + + +
    +
    +

    about me

    +
    +

    Specs

    +
    +
    Known pseudonyms
    +
    deep twisty / isopodhours / isopod gaming / bathynomus
    +
    Known normalnyms
    +
    Ada / Hannah
    +
    Known necronyms
    +
    [DATA EXPUNGED]
    +
    Known pronounyms
    +
    she/it >> more info
    +
    Preoccupations
    +
    Computer hardware / computer software / electronics / making music and 3D art / DIY nonsense of all shapes and sizes
    +
    Education
    +
    Web Design (ongoing)
    +
    trnas
    +
    gener
    +
    +
    More info
    +
    +
    + +
    +

    What's a "deep twisty"?

    +

    "deep twisty" is a pseudonym I came up with to post my music and such things under. At this point it exists largely as a way to compartmentalize my online identity such that I can link my art to people who I might not want seeing all this. 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. I'm no longer sure what possessed me to use that as a basis for my Personal Brand™, but here we are.

    +
    +
    +

    Quiz results

    +
    + Isopod quiz: My species is Bathynomus Giganteus + Crackship quiz: I'm Phileri (Dr. Phil M&M x Guy Fieri) + Donut quiz: I'm a chocolate dipped donut + Rock quiz: My ideal rock is a smooth river rock + Creature quiz: I'm a "Malware Monster" + Cheese quiz: I am cheddar cheese! + Verbose quiz result incoming: You are a Large Quiz Enjoyer. Aw, what a good girl you are...! You made it through 30 questions and proved your devotion to my bullshit. 🙂 Tags:  💧 Hydrated...? 🙈 Behaves Unprofessionally 🛒 Savvy Shopper 🥚 Egg 🌶️ Kinky 👾 Creature :) 🥔 Potato Powered 🦶 Feet-Aware 🥞 Breakfast Appreciator 🫃 1 ☠️ Wildy Fearer 🏴‍☠️ Pirate 🍦 Creamy Girl +
    +
    +
    +

    Testimonials

    +
    +
    + isopod girl supreme +
    +
    + — mifs +
    +
    +
    +
    + Furry behavior +
    +
    + — seaslug +
    +
    +
    +
    + this hurts me deeply +
    +
    + — UsernameSwift +
    +
    +
    +
    + what have you done?? +
    +
    + — Starwall +
    +
    +
    +
    + hmm. wet. +
    +
    + — Zizi +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/me/isopod_quiz_result.png b/me/isopod_quiz_result.png new file mode 100644 index 0000000..31d29e1 Binary files /dev/null and b/me/isopod_quiz_result.png differ diff --git a/me/pronouns/bad.svg b/me/pronouns/bad.svg new file mode 100644 index 0000000..069da16 --- /dev/null +++ b/me/pronouns/bad.svg @@ -0,0 +1,4 @@ + + + + diff --git a/me/pronouns/bg.jpg b/me/pronouns/bg.jpg new file mode 100644 index 0000000..2cc9218 Binary files /dev/null and b/me/pronouns/bg.jpg differ diff --git a/me/pronouns/bg_dither.png b/me/pronouns/bg_dither.png new file mode 100644 index 0000000..96baec0 Binary files /dev/null and b/me/pronouns/bg_dither.png differ diff --git a/me/pronouns/friend.svg b/me/pronouns/friend.svg new file mode 100644 index 0000000..ad67d3c --- /dev/null +++ b/me/pronouns/friend.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/me/pronouns/good.svg b/me/pronouns/good.svg new file mode 100644 index 0000000..a2d6d96 --- /dev/null +++ b/me/pronouns/good.svg @@ -0,0 +1,4 @@ + + + + diff --git a/me/pronouns/index.php b/me/pronouns/index.php new file mode 100644 index 0000000..c6106f8 --- /dev/null +++ b/me/pronouns/index.php @@ -0,0 +1,59 @@ + + + + + + + pronounce | isopod.cool v4 + + + + + + +
    +

    If you're reading this with your eyes and not a screen reader, that means you have, somehow, indicated a preference that this page be displayed with reduced contrast. I genuinely have no clue how you did this, or how I as a web dev am supposed to handle it. I hope my solution of applying a reduced-contrast filter to the entire page is to your liking. If not, please contact me and tell me what you'd prefer I do here, because I'm genuinely lost.

    +
    +

    i got pronouns

    +

    blue hair pending

    + +

    I briefly had a page on pronouns.cc once but hell if I'm gonna use it when I have my own website

    +
    + Good Preferred + Friends only Friends only + Bad Don't +
    +
    +

    Pronouns

    +
    + Good she/her + Good it/its + Friends only they/them + Bad he/him +
    +
    +
    +
    + + + + + + diff --git a/me/wuffsquiz.png b/me/wuffsquiz.png new file mode 100644 index 0000000..06b81b0 Binary files /dev/null and b/me/wuffsquiz.png differ diff --git a/meta/index.php b/meta/index.php new file mode 100644 index 0000000..5361c4b --- /dev/null +++ b/meta/index.php @@ -0,0 +1,70 @@ + + + + + + meta | isopod.cool v4 + + + + + +
    +
    +

    meta

    +

    principled readers can feel free to call it my facebook page

    +

    You're looking at (or otherwise viewing) the fourth major iteration of my personal website. More specifically, this is the page on my personal website about my personal website. I've heard some people call this a colophon.

    +

    This site was created to act as a center of sorts for my online presence, and has since become the go-to place for the surprisingly broad array of things I want to put on the internet that social media isn't a good fit for.

    +
    +

    tech specs

    +

    This site is composed of a combination of handwritten HTML/CSS and server-side rendering done in PHP, also handwritten. None of that static site generator nonsense here, baby. No Javascript either. That shit's cringe.

    +

    For hosting, I use Caddy on Ubuntu Server, on an OVHCloud dedicated box you can read more about here. To be clear, you don't need anywhere near that kind of horsepower to host a basic PHP site like this — the cheapest VPS Hetzner or whoever will sell you will be more than plenty for that. I'm just crazy and do a lot of other stuff on there.

    +

    This site supports .well-known/button, if you're one of the two people on earth to build something that uses it. If you link your website in a post on my guestbook and it supports that standard, your button will show up there!

    +
    +
    +

    Accessibility

    +

    I've made an effort to make this website as responsive and accessible as I reasonably can. At present, this entails:

    +
      +
    • Alt text everywhere and a best-effort attempt at semantic HTML and keyboard navigability
    • +
    • Default colours that (mostly) meet the WCAG contrast guideline of 4.5:1
    • +
    • Extensive use of CSS media queries for: +
        +
      • Light theme
      • +
      • High-contrast color theme that defers to system-provided colors
      • +
      • Making sure stuff doesn't look broken in forced colours mode
      • +
      • Adapting to smaller displays and high zoom levels
      • +
      • Disabling of animated effects
      • +
      +
    • +
    +

    That's all well and good, but there are some other points I want to address:

    +

    While the colour contrast meets WCAG standards in most places, the one major exception is links in areas with highlighted backgrounds, which have a contrast ratio of a bit over 3.5. I'm treating this as acceptable because it's still decently readable for most, and the high-contrast theme renders this a non-issue by removing those backgrounds.

    +

    You may notice that I've omitted any kind of direct toggle for themes, fonts, animations, etc. I've opted to use media queries for those purposes instead in order to automatically respect the viewer's system settings. My thinking is that most people who need those features will probably have them enabled at the browser or OS level anyway, so forcing them to set them using a Javascript-based toggle for my site in particular would be unnecessary extra work for both of us.

    +

    On the subject of media queries, there's a media query that allows the user to indicate a preference for lower contrast, but I've yet to find any way to trigger it or any information on how I'm supposed to respond to it. My stopgap solution for now is to apply a lowered-contrast filter to the whole page when that setting is active. I'm not confident this is the way to go here.

    +

    Finally, the hamburger menu that materializes on small displays works using the CSS "checkbox hack". This is not keyboard friendly, but I've compensated for it by using the shiny new :has selector to open the nav menu automatically when you focus something in it with the keyboard. I'm aware this probably isn't great, but I'm hoping it won't pose much of a problem because being affected by this would require you to be using keyboard navigation, and be on a relatively small screen, and actually be reliant on sight to view the page (eg. blind people using screen readers shouldn't even notice the difference). In other words, I'm kind of banking on that overlap being small enough that nobody in it ever stumbles upon this site. If that's you, sorry.

    +

    I'd like to eventually devise some sort of hybrid solution that uses accessible Javascript with <button>s and such and falls back to the checkbox hack if you have that disabled, but I've yet to do that as of writing.

    +
    +
    +

    Credits

    +

    This site uses the font family B612 Mono pretty much everywhere.

    + me giving an enthusiastic thumbs up +

    <-- As of now, all of these little portraits were drawn by me, as well as the isopod in the site header. You can tell because they use my trademark "style" of thick, scribbly lines and the Krita default brush.

    +

    The main dark mode background image is a screenshot I took myself of Subnautica: Below Zero, a game that I've played for less than an hour since it left early access. All other backgrounds were taken from Duckduckgo image searches.

    +

    Some resources I've found helpful:

    +
    +
    MDN Web Docs
    +
    Comprehensive documentation on HTML, CSS, and Javascript
    +
    PHP Manual
    +
    Comprehensive documentation for PHP
    +
    LandChad.net
    +
    A good, if opinionated, resource on self-hosting that was instrumental to getting me started doing this
    +
    Accessible Net Directory Guidelines
    +
    Great resource on web accessibility information. This is the source of most of the checklist I was trying to hit with this latest major revision.
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/music/covers/clipping.jpg b/music/covers/clipping.jpg new file mode 100644 index 0000000..9e1dd9e Binary files /dev/null and b/music/covers/clipping.jpg differ diff --git a/music/covers/femtanyl.jpg b/music/covers/femtanyl.jpg new file mode 100644 index 0000000..9cdf503 Binary files /dev/null and b/music/covers/femtanyl.jpg differ diff --git a/music/covers/findaeden.jpg b/music/covers/findaeden.jpg new file mode 100644 index 0000000..1149f2a Binary files /dev/null and b/music/covers/findaeden.jpg differ diff --git a/music/covers/foofighters.jpg b/music/covers/foofighters.jpg new file mode 100644 index 0000000..814db55 Binary files /dev/null and b/music/covers/foofighters.jpg differ diff --git a/music/covers/hakita.webp b/music/covers/hakita.webp new file mode 100644 index 0000000..2f7fa63 Binary files /dev/null and b/music/covers/hakita.webp differ diff --git a/music/covers/justice.jpg b/music/covers/justice.jpg new file mode 100644 index 0000000..68415a4 Binary files /dev/null and b/music/covers/justice.jpg differ diff --git a/music/covers/mekaloton.jpg b/music/covers/mekaloton.jpg new file mode 100644 index 0000000..d7c700c Binary files /dev/null and b/music/covers/mekaloton.jpg differ diff --git a/music/covers/mountainhead.jpg b/music/covers/mountainhead.jpg new file mode 100644 index 0000000..f729bbb Binary files /dev/null and b/music/covers/mountainhead.jpg differ diff --git a/music/covers/noisemaster.jpg b/music/covers/noisemaster.jpg new file mode 100644 index 0000000..d909ad4 Binary files /dev/null and b/music/covers/noisemaster.jpg differ diff --git a/music/covers/redvox.jpg b/music/covers/redvox.jpg new file mode 100644 index 0000000..1a489de Binary files /dev/null and b/music/covers/redvox.jpg differ diff --git a/music/covers/waxlimbs.jpg b/music/covers/waxlimbs.jpg new file mode 100644 index 0000000..7590c7a Binary files /dev/null and b/music/covers/waxlimbs.jpg differ diff --git a/music/index.php b/music/index.php index c538100..08eb2ad 100644 --- a/music/index.php +++ b/music/index.php @@ -4,8 +4,8 @@ - Music - + music | isopod.cool v4 + - - -

    music

    -

    Albums I like

    - -
    + +
    +

    music

    +

    Not to be confused with my music.

    +

    This page is giving major "under construction" vibes right now. Specifically, it's undergoing a total overhaul to be more verbose, better organized, and generally cooler.

    +

    I listen to music sometimes. Here's some of my favourites, in no particular order.

    +
    +
    + + findaeden + +
    +

    findaeden

    +

    The Broadcasteur maintains the largest discrepancy between quality of output and popularity I've maybe ever seen.

    +

    Creator of the only Undertale OST remix I like more than the originals, but I implore you to give its original stuff a listen too.

    +

    Favourite album: Spectrum

    +

    Favourite song: 666kHz

    +
    +
    +
    + + Hakita + +
    +

    Heaven Pierce Her

    +

    It would be disingenuous of me to pretend that Hakita's here for any reason other than the OST from his videogame. It is really good, though.

    +

    Favourite album: ULTRAKILL: Imperfect Hatred

    +

    Favourite song: Duel

    +
    +
    +
    + + Everything Everything - Mountainhead + +
    +

    Everything Everything

    +

    Some kind of seditious commie experimental alt-rock thing that's probably the platonic ideal of whatever genre it's in.

    +

    Asking me to pick a favourite EE record is like asking me to pick a favourite child. It's pure sauce all the way down.

    +

    Favourite album: Mountainhead

    +

    Favourite song: SUPERNORMAL

    +
    +
    +
    + + Foo Fighters + +
    +

    Foo Fighters

    +

    Are the Foo Fighters dad rock, or do I just think that because my dad likes them?

    +

    I think their old stuff is overrated and their new stuff is underrated. Everlong isn't even that good.

    +

    Fun fact: Unfortunately, this is currently the only act on this list I've seen live.

    +

    Favourite album: Concrete and Gold

    +

    Favourite song: Outside

    +
    +
    +
    + + Waxlimbs + +
    +

    Waxlimbs

    +

    Awash with vibes. I like their singing. Best thing to ever come out of Toronto.

    +

    Favourite album: Where Lilies Grew

    +

    Favourite song: Broken Wing

    +
    +
    +
    + + Justice + +
    +

    Justice

    +

    I think I've discovered Justice like three separate times. I can't seem to escape their reach, but that's far from a bad thing.

    +

    Electric Feel doesn't belong to MGMT anymore. It's a Justice song now.

    +

    Favourite album: Audio, Video, Disco

    +

    Favourite song: MGMT - Electric Feel (Justice Remix)

    +
    +
    +
    + + clipping. + +
    +

    clipping.

    +

    Experimental hip-hop band with more intricate sound design than real life and vocals to match.

    +

    I lack the requisite command of the English language to come up with a string of words that would do Clipping justice. Nobody does it like them.

    +

    Favourite album: Dead Channel Sky Plus

    +

    Favourite song: Get Up

    +
    +
    +
    + + mekaloton + +
    +

    mekaloton

    +

    Dark, surly synths and Kasane Teto vocals are a winning combo that this individual has yet to execute on poorly.

    +

    They didn't bother to set up the "buy entire discography" button on their Bandcamp page, but that didn't stop me.

    +

    Favourite album: Cheap Suits

    +

    Favourite song: Nemesis

    +
    +
    +
    + + Femtanyl + +
    +

    Femtanyl

    +

    Low-grade brain explosion music and required listening for chronically online transgender types. estrogen just doesn't work on you unless you've listened to at least one femtanyl record front to back

    +

    Favourite album: REACTOR

    +

    Favourite song: NASTYWERKKKK

    +
    +
    +
    + + Noisemaker + +
    +

    Noisemaker

    +

    Grungy electronic music that scratches my brain in a really nice way. If you throw a rock at a cancelled LISA fangame you'll probably hit at least one Noisemaker track.

    +

    Their bio on Bandcamp calls their music "mediocre", but don't let that fool you. Everything they make is dripping with prescription-strength sauce.

    +

    Favourite album: Funeral

    +

    Favourite song: Red

    +
    +
    +
    + + Red Vox + +
    +

    Red Vox

    +

    You probably know Vinny from his Twitch streams, but I'm more into his, to quote his Bandcamp tags, "psych rock" band.

    +

    Favourite album: Another Light

    +

    Favourite song: In The Garden

    +
    + +

    What follows is the subset of this page's content that's still pending being redone.

    + +
    + \ No newline at end of file diff --git a/nav.php b/nav.php index 25e680c..97e7521 100644 --- a/nav.php +++ b/nav.php @@ -154,7 +154,7 @@ if(!preg_match('/(headless.*)/i', $_SERVER['HTTP_USER_AGENT'])) { 'Better than Version 3.2 Gen 2x2!', 'Partially responsive!', 'COUNTER', - 'TUEADAY', + 'TUEADAY' #'PLACEHIM', ); break; diff --git a/notes/index.php b/notes/index.php index e3398ae..d883e38 100644 --- a/notes/index.php +++ b/notes/index.php @@ -6,108 +6,83 @@ error_reporting(E_ALL); + - Notes - - - + <?php if(!$nostag) { echo("#$stag | ");} ?> notes | isopod.cool v4 + - -

    isonotes

    -

    superfluous commentary

    - - All notes"; - } - $year = "-69420"; - $yc = 0; - $yeag = false; - foreach($content->entry as $entry) { - - if($yeag) { - echo "
    "; - } else { - $yeag = true; - } - $pfilt = false; - if(!$nostag) { - foreach($entry->category as $cat) { - $term = $cat["term"]; - if($stag == $term) { - $pfilt = true; + $pfilt = false; + if(!$nostag) { + foreach($entry->category as $cat) { + $term = $cat["term"]; + if($stag == $term) { + $pfilt = true; + } } } - } - if($pfilt or $nostag) { - $nyr = substr($entry->published, 0, 4); - if($nyr != $year) { - $year = $nyr; - echo "

    $year

    "; - } - $dt = substr($entry->published, 0, 10); - $ti = $entry->title; - $cats = ""; - foreach($entry->category as $cat) { - $term = $cat["term"]; - $cats = $cats.""; + if($pfilt or $nostag) { + $nyr = substr($entry->published, 0, 4); + if($nyr != $year) { + $year = $nyr; + echo "

    $year

    "; + } + $dt = substr($entry->published, 0, 10); + $ti = $entry->title; + $cats = ""; + foreach($entry->category as $cat) { + $term = $cat["term"]; + $cats = $cats.""; + } + + $entryurl = $entry->link["href"]; + $entryprotocol = preg_replace("/:\/\/(.*)/", "://", $entryurl); + $entrysite = preg_replace(array("/(.*):\/\//", "/\/(.*)/"), "", $entryurl); + + echo("
  • "); } - - echo "

    $ti

    $entry->summary$cats
    "; } - } - ?> - + echo ""; + ?> + + + diff --git a/notes/notes.atom b/notes/notes.atom index 56a58b9..f4cf62d 100644 --- a/notes/notes.atom +++ b/notes/notes.atom @@ -3,7 +3,7 @@ isopod.cool notes https://isopod.cool/notes/ - 2025-07-05T00:00:00+00:00 + 2026-02-14T00:00:00+00:00 Hannah Isopod https://isopod.cool/ @@ -12,6 +12,26 @@ + + fuck windows: dreaming of an honest computer + https://www.joewintergreen.com/fuck-windows-dreaming-of-an-honest-computer/ + + 2026-02-14T00:00:00+00:00 + 2026-02-14T00:00:00+00:00 + <p>This is probably the most sober assessment I've seen of why Linux is so desirable of late. This right here is the main factor that motivated me to adopt Linux as my daily driver OS 5 years ago.</p><p>Is Linux good? Debatable. Is it better than Windows? Depends. Is it actively hostile to you? Does it exist to harvest your data and juice the usage stats for Microsoft's LLM chatbot? Fuck no.</p> + + + + + WORSHIP OF THE ENGINEER + https://www.sheeeeeeeep.art/the-worship-of-engineering.html + + 2026-02-14T00:00:00+00:00 + 2026-02-14T00:00:00+00:00 + <p>BECAUSE SOFTWARE SENT PEOPLE TO THE MOON.<br>BECAUSE SOFTWARE SENT PEOPLE TO THE MOON.<br>BECAUSE SOFTWARE SENT PEOPLE TO THE MOON.<br>BECAUSE SOFTWARE SENT PEOPLE TO THE MOON.</p> + + + Playing "Minecraft" without Minecraft https://lenowo.org/viewtopic.php?t=5 diff --git a/old/1/icons/deeptwisty.png b/old/1/icons/deeptwisty.png index 7cb8472..31c1ad8 100644 Binary files a/old/1/icons/deeptwisty.png and b/old/1/icons/deeptwisty.png differ diff --git a/old/1/icons/kirby.png b/old/1/icons/kirby.png index 2b19ef6..618d02d 100644 Binary files a/old/1/icons/kirby.png and b/old/1/icons/kirby.png differ diff --git a/old/1/images/bg_default.png b/old/1/images/bg_default.png index 0e323e1..82a1b2a 100644 Binary files a/old/1/images/bg_default.png 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 index 854c83f..e501205 100644 Binary files a/old/1/images/bg_old1.png 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 index d7fe03c..e812687 100644 Binary files a/old/1/images/bg_old2.png and b/old/1/images/bg_old2.png differ diff --git a/old/1/images/friaday.png b/old/1/images/friaday.png index a389663..f54c4ba 100644 Binary files a/old/1/images/friaday.png and b/old/1/images/friaday.png differ diff --git a/old/1/images/moday.png b/old/1/images/moday.png index 7b212f9..d8a0616 100644 Binary files a/old/1/images/moday.png and b/old/1/images/moday.png differ diff --git a/old/1/images/satuaday.png b/old/1/images/satuaday.png index 9711982..bd8faf2 100644 Binary files a/old/1/images/satuaday.png and b/old/1/images/satuaday.png differ diff --git a/old/1/images/suday.png b/old/1/images/suday.png index cca11b1..2382f37 100644 Binary files a/old/1/images/suday.png and b/old/1/images/suday.png differ diff --git a/old/1/images/thuday.png b/old/1/images/thuday.png index e681fbc..1d547f9 100644 Binary files a/old/1/images/thuday.png and b/old/1/images/thuday.png differ diff --git a/old/1/images/tueaday.png b/old/1/images/tueaday.png index f4ff337..7270c3e 100644 Binary files a/old/1/images/tueaday.png and b/old/1/images/tueaday.png differ diff --git a/old/1/images/weaday.png b/old/1/images/weaday.png index d1ad858..35fddb8 100644 Binary files a/old/1/images/weaday.png and b/old/1/images/weaday.png differ diff --git a/old/1/stamps/deeptwistybutton.png b/old/1/stamps/deeptwistybutton.png index 23693b6..2cee235 100644 Binary files a/old/1/stamps/deeptwistybutton.png and b/old/1/stamps/deeptwistybutton.png differ diff --git a/old/1/stamps/handcode.png b/old/1/stamps/handcode.png index c5bbdd1..be51b0e 100644 Binary files a/old/1/stamps/handcode.png and b/old/1/stamps/handcode.png differ diff --git a/old/2/buttons/ace.png b/old/2/buttons/ace.png index 1d62add..86b293a 100644 Binary files a/old/2/buttons/ace.png and b/old/2/buttons/ace.png differ diff --git a/old/2/buttons/aro.png b/old/2/buttons/aro.png index e1e50d2..b096a70 100644 Binary files a/old/2/buttons/aro.png and b/old/2/buttons/aro.png differ diff --git a/old/2/buttons/bantimetravel.png b/old/2/buttons/bantimetravel.png index 83bcfa1..b63bde0 100644 Binary files a/old/2/buttons/bantimetravel.png and b/old/2/buttons/bantimetravel.png differ diff --git a/old/2/buttons/deeptwisty_button.png b/old/2/buttons/deeptwisty_button.png index b5d24fc..63a0351 100644 Binary files a/old/2/buttons/deeptwisty_button.png and b/old/2/buttons/deeptwisty_button.png differ diff --git a/old/2/buttons/handcode.png b/old/2/buttons/handcode.png index c5bbdd1..be51b0e 100644 Binary files a/old/2/buttons/handcode.png and b/old/2/buttons/handcode.png differ diff --git a/old/2/buttons/krisbtn.png b/old/2/buttons/krisbtn.png index 176d3c4..a7b0943 100644 Binary files a/old/2/buttons/krisbtn.png and b/old/2/buttons/krisbtn.png differ diff --git a/old/2/buttons/niceopod_button.png b/old/2/buttons/niceopod_button.png index 0398b0e..a31848a 100644 Binary files a/old/2/buttons/niceopod_button.png and b/old/2/buttons/niceopod_button.png differ diff --git a/old/2/buttons/righttorepair.png b/old/2/buttons/righttorepair.png index 865ba1f..154ad36 100644 Binary files a/old/2/buttons/righttorepair.png and b/old/2/buttons/righttorepair.png differ diff --git a/old/2/icons/deeptwisty.png b/old/2/icons/deeptwisty.png index 7cb8472..31c1ad8 100644 Binary files a/old/2/icons/deeptwisty.png 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 index 48743ac..7232f8b 100644 Binary files a/old/2/images/2022-05-21_blog_image_1.png 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 index d53bf3f..a55cf33 100644 Binary files a/old/2/images/2022-05-21_blog_image_2.png and b/old/2/images/2022-05-21_blog_image_2.png differ diff --git a/old/2/images/albums/funeral.png b/old/2/images/albums/funeral.png index 150076d..9ba0dcc 100644 Binary files a/old/2/images/albums/funeral.png and b/old/2/images/albums/funeral.png differ diff --git a/old/2/images/albums/spectrum.png b/old/2/images/albums/spectrum.png index f57f9eb..73a1fd9 100644 Binary files a/old/2/images/albums/spectrum.png and b/old/2/images/albums/spectrum.png differ diff --git a/old/2/images/albums/unstoppable_force.png b/old/2/images/albums/unstoppable_force.png index 22659aa..a240bc9 100644 Binary files a/old/2/images/albums/unstoppable_force.png 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 index 398d5a0..4a7db5b 100644 Binary files a/old/2/images/albums/vast.png and b/old/2/images/albums/vast.png differ diff --git a/old/2/images/isopod.png b/old/2/images/isopod.png index cf974c0..d911ebd 100644 Binary files a/old/2/images/isopod.png 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 index 443a6fb..03d73df 100644 Binary files a/old/2/images/isopod_with_aviators.png and b/old/2/images/isopod_with_aviators.png differ diff --git a/old/2/pages/stats.html b/old/2/pages/stats.html index 041225a..5dde725 100644 --- a/old/2/pages/stats.html +++ b/old/2/pages/stats.html @@ -69,7 +69,7 @@ Drop rates - 1-3 bags of Doritos - 80%
    Wired earbuds - 10%
    Random Linux install media - 1% + 1-3 bags of Doritos - 80%
    Wired earbuds - 10%
    Random Linux install media - 1% Song diff --git a/old/2/themes/deeptwisty/bg.png b/old/2/themes/deeptwisty/bg.png index 431a733..d33e1c8 100644 Binary files a/old/2/themes/deeptwisty/bg.png and b/old/2/themes/deeptwisty/bg.png differ diff --git a/old/2/themes/default/div-bg.png b/old/2/themes/default/div-bg.png index 4d45b2c..1225179 100644 Binary files a/old/2/themes/default/div-bg.png and b/old/2/themes/default/div-bg.png differ diff --git a/old/2/themes/geocities/beam.png b/old/2/themes/geocities/beam.png index 839d2bc..fa09122 100644 Binary files a/old/2/themes/geocities/beam.png and b/old/2/themes/geocities/beam.png differ diff --git a/old/2/themes/gruvbox/bg.png b/old/2/themes/gruvbox/bg.png index 528f35b..b7a8500 100644 Binary files a/old/2/themes/gruvbox/bg.png and b/old/2/themes/gruvbox/bg.png differ diff --git a/stats/bg.jxl b/stats/bg.jxl deleted file mode 100644 index 33477c6..0000000 Binary files a/stats/bg.jxl and /dev/null differ diff --git a/stats/index.php b/stats/index.php index 54deb7c..5e11909 100644 --- a/stats/index.php +++ b/stats/index.php @@ -3,178 +3,105 @@ - Stats + stats | isopod.cool v4 - - + - -

    stat tracker

    -

    Powered by RealTrue™ StatAI™

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + $boogeraids"; + echo "
    $boogeraids
    $aidsbooger
    "; ?> - - - - - - - - - -
    Storage space47TiB
    Desktop environmentGNOME (Wayland)
    LayoutANSI 75% + Knob + External numpad
    SwitchesKeychron K Pro Brown
    FirmwareQMK
    RGBYes
    CDs owned164
    Consoles modded2
    Computers downgraded2
    Computer count (confirmed working)6
    Domains owned6
    Talent[Integer overflow error]
    Bitches0
    SpeciesBathynomus Giganteus
    Genderhere', - 'AMD Ryzen 7 5700G, 32GB DDR4-3600 RAM, AMD Radeon RX 6800XT GPU, 500GB NVMe SSD, 2TB NVMe SSD, 4TB HDD', - 'I forgor 💀', - 'Bathynomus Giganteus', - 'gay', - '//TODO', - 'Hannah', - 'Ada', - 'fa[DATA EXPUNGED]', - 'uwu', - 'that one image of the isopods eating doritos', - 'girl of some kind', - 'linux user', - '', - 'amateur', - 'tgirl at the IKEA checkout with one furniture item and a full size Blåhaj', - 'bug' - ); - 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
    Wattage rating1000W
    Height194cm
    Social Insurance Number69
    Home address12h 28m 24.97s, +31° 28′ 37.7″
    Most played game (Steam)Space Engineers (734 hours)
    Most played game (in general)Minecraft (Hours unknown but definitely high)
    Best Hand756,276,480
    Page views + +
    +
    +

    stat tracker

    +

    Powered by RealTrue™ StatAI™

    +
    +
    Storage space
    +
    47TiB
    +
    Desktop environment
    +
    GNOME (Wayland)
    +
    Layout
    +
    ANSI 75% + Knob + External numpad
    +
    Switches
    +
    Keychron K Pro Brown
    +
    Firmware
    +
    QMK
    +
    RGB
    +
    Yes
    +
    CDs owned
    +
    164
    +
    Consoles modded
    +
    2
    +
    Computers downgraded
    +
    2
    +
    Computer count (confirmed working)
    +
    6
    +
    Domains owned
    +
    6
    +
    Talent
    +
    [Integer overflow error]
    +
    Bitches
    +
    0
    +
    Species
    +
    Bathynomus Giganteus
    +
    Gender
    +
    + here', + 'AMD Ryzen 7 5700G, 32GB DDR4-3600 RAM, AMD Radeon RX 6800XT GPU, 500GB NVMe SSD, 2TB NVMe SSD, 4TB HDD', + 'I forgor 💀', + 'Bathynomus Giganteus', + 'gay', + '//TODO', + 'Hannah', + 'Ada', + 'fa[DATA EXPUNGED]', + 'uwu', + 'that one image of the isopods eating doritos', + 'girl of some kind', + 'linux user', + '', + 'amateur', + 'tgirl at the IKEA checkout with one furniture item and a full size Blåhaj', + 'bug' + ); + echo $boogeraids[array_rand($boogeraids)]; + ?> +
    +
    3.5mm headphone jack
    +
    yes
    +
    Audio channels
    +
    mono
    +
    Font family
    +
    mono
    +
    Sodium glutamate
    +
    7.1 surround
    +
    Drop rates
    +
    1-3 bags of Doritos - 80%
    Wired earbuds - 10%
    Random Linux install media - 1%
    +
    Efficiency rating
    +
    80+ Gold
    +
    Wattage rating
    +
    1000W
    +
    Height
    +
    194cm
    +
    Social Insurance Number
    +
    69
    +
    Home address
    +
    12h 28m 24.97s, +31° 28′ 37.7″
    +
    Most played game (Steam)
    +
    Space Engineers (734 hours)
    +
    Most played game (in general)
    +
    Minecraft (Hours unknown but definitely high)
    +
    Best Hand
    +
    4,746,252,688
    +
    Page views
    +
    -
    $aidsbooger
    Number I'm thinking of
    Personality
    +
    Number I'm thinking of
    +
    +
    Personality
    +
    + +
    + + + + diff --git a/stuff/beat/index.php b/stuff/beat/index.php index 16b7054..8a1a182 100644 --- a/stuff/beat/index.php +++ b/stuff/beat/index.php @@ -3,9 +3,8 @@ - <?php echo '@'.date("B"); ?> + <?php echo '@'.date("B"); ?> | isopod.cool v4 - - -

    .beat

    -

    - -

    88x31 Embeds

    -
    - -
    -
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=digital" style="width: 84px; height: 27px;"></iframe>
    -
    - -
    -
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=pixel" style="width: 84px; height: 27px;"></iframe>
    -
    - -
    -
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=sketch" style="width: 84px; height: 27px;"></iframe>
    + +
    +

    .beat

    +

    A totally practical way of measuring time!

    +

    + Swatch Internet Time (Wikipedia) +

    +

    88x31 Embeds

    +
    + +
    +
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=digital" style="width: 88px; height: 31px; border: none;" title="Current time in .beats"></iframe>
    +
    + +
    +
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=pixel" style="width: 88px; height: 31px; border: none;" title="Current time in .beats"></iframe>
    +
    + +
    +
    <iframe src="https://isopod.cool/stuff/beat/frame.php?theme=sketch" style="width: 88px; height: 31px; border: none;" title="Current time in .beats"></iframe>
    +
    + diff --git a/stuff/canadian_flag_neocats.zip b/stuff/canadian_flag_neocats.zip new file mode 100644 index 0000000..e7d4c81 Binary files /dev/null and b/stuff/canadian_flag_neocats.zip differ diff --git a/stuff/index.php b/stuff/index.php index 89acd3b..5d02a87 100644 --- a/stuff/index.php +++ b/stuff/index.php @@ -3,103 +3,118 @@ - Items + stuff | isopod.cool v4 - - - -

    stuff

    -

    things too!

    -

    Utilities

    - - - - - - - - - -
    rssfilter.phpBasic RSS and Atom feed filtering utility. Accepts regex.
    firefoxrssRSS bridge for Firefox release notes.
    -

    Downloads

    - - - - - -
    EnchantedToolsPack_v1.zipCustom resourcepack for Minecraft that uses functionality from Optifine to add custom textures for enchanted tools and weapons. Confirmed working with 1.19.
    -

    Scripts

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    webpkiller/
    Automatic .webp convertersVarious scripts intended for use as the default program for opening .webp files. They automatically replace the .webp image with a .png one and open that instead. Incompatible with animated .webp images.
    webpkiller.sh -
    - Bash script for Linux. -
      -
    • Only works on .webp files.
    • -
    • Requires ImageMagick to be installed.
    • -
    -
    -
    webpkiller.cmd -
    - Batch script for Windows. -
      -
    • Only works on .webp files.
    • -
    • Requires ImageMagick.
    • -
    • Replaces every instance of ".webp" in the filepath because Windows batch language is hard.
    • -
    -
    -
    webpkiller.py -
    - Platform-agnostic Python script. -
      -
    • Works on anything supported by pillow.
    • -
    • Requires Python 3 and the pillow library.
    • -
    -
    -
    webpkiller_win.zip
    Windows webpkiller.py build.webpkiller.py, but compiled for Windows with pyinstaller.
    dirtomp3.shBash script that uses ffmpeg to convert a music library to mp3s.
    -

    Other

    - - - - - - - - - -
    neon_boost_times.htmlA table of my level times in Neon Boost.
    userstyles.world/style/5238
    /status-cafe-latte
    Stylus theme I made for status.cafe and the attached forum.
    + +
    + +
    +

    stuff

    +

    things too!

    + +
    +

    Utilities

    + + + + + + + + + +
    rssfilter.phpBasic RSS and Atom feed filtering utility. Accepts regex.
    firefoxrssRSS bridge for Firefox release notes. This hasn't worked in quite some time due to changes to the site it scrapes, and it doesn't need to, since rss-bridge can do this now.
    +
    + +
    +

    Downloads

    + + + + + + + + + +
    canadian_flag_neocats.zipCustom neocat emojis that are the flags of Canadian provinces. Includes a meta.json to import to your *key instance. Based on the originals by Volpeon.
    EnchantedToolsPack_v1.zipCustom resourcepack for Minecraft that uses functionality from Optifine to add custom textures for enchanted tools and weapons. Confirmed working with 1.19.
    +
    + +
    +

    Scripts

    +

    These scripts are all old, long since out of use by yours truly, and probably poorly written. I make no guarantees that they'll work properly, or that they won't set your computer on fire. You've been warned.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    webpkiller/ +
    Automatic .webp convertersVarious scripts intended for use as the default program for opening .webp files. They automatically replace the .webp image with a .png one and open that instead. Incompatible with animated .webp images.
    +
    webpkiller.sh +
    + Bash script for Linux. +
      +
    • Only works on .webp files.
    • +
    • Requires ImageMagick to be installed.
    • +
    +
    +
    webpkiller.cmd +
    + Batch script for Windows. +
      +
    • Only works on .webp files.
    • +
    • Requires ImageMagick.
    • +
    • Replaces every instance of ".webp" in the filepath because Windows batch language is hard.
    • +
    +
    +
    webpkiller.py +
    + Platform-agnostic Python script. +
      +
    • Works on anything supported by pillow.
    • +
    • Requires Python 3 and the pillow library.
    • +
    +
    +
    webpkiller_win.zip
    Windows webpkiller.py build.webpkiller.py, but compiled for Windows with pyinstaller.
    dirtomp3.shBash script that uses ffmpeg to convert a music library to mp3s.
    +
    + +
    +

    Other

    + + + + + + + + + +
    neon_boost_times.htmlA table of my level times in Neon Boost.
    userstyles.world/style/5238
    /status-cafe-latte
    Stylus theme I made for status.cafe and the attached forum.
    +
    +
    +
    + diff --git a/stuff/quotes/bg.jpg b/stuff/quotes/bg.jpg new file mode 100644 index 0000000..e13a975 Binary files /dev/null and b/stuff/quotes/bg.jpg differ diff --git a/stuff/quotes/bg.jxl b/stuff/quotes/bg.jxl new file mode 100644 index 0000000..30b75bf Binary files /dev/null and b/stuff/quotes/bg.jxl differ diff --git a/stuff/quotes/bg_dither.png b/stuff/quotes/bg_dither.png new file mode 100644 index 0000000..e252d2f Binary files /dev/null and b/stuff/quotes/bg_dither.png differ diff --git a/stuff/quotes/images/c_pfp.png b/stuff/quotes/images/c_pfp.png new file mode 100644 index 0000000..a54ad21 Binary files /dev/null and b/stuff/quotes/images/c_pfp.png differ diff --git a/stuff/quotes/images/g_pfp.png b/stuff/quotes/images/g_pfp.png new file mode 100644 index 0000000..1d1ca3b Binary files /dev/null and b/stuff/quotes/images/g_pfp.png differ diff --git a/stuff/quotes/images/greensmile.png b/stuff/quotes/images/greensmile.png new file mode 100644 index 0000000..fc0f891 Binary files /dev/null and b/stuff/quotes/images/greensmile.png differ diff --git a/stuff/quotes/images/h_pfp.png b/stuff/quotes/images/h_pfp.png new file mode 100644 index 0000000..73c56c5 Binary files /dev/null and b/stuff/quotes/images/h_pfp.png differ diff --git a/stuff/quotes/images/j_pfp.png b/stuff/quotes/images/j_pfp.png new file mode 100644 index 0000000..5fb6b36 Binary files /dev/null and b/stuff/quotes/images/j_pfp.png differ diff --git a/stuff/quotes/images/m_pfp.png b/stuff/quotes/images/m_pfp.png new file mode 100644 index 0000000..d3f938d Binary files /dev/null and b/stuff/quotes/images/m_pfp.png differ diff --git a/stuff/quotes/images/p_pfp.png b/stuff/quotes/images/p_pfp.png new file mode 100644 index 0000000..b46d8db Binary files /dev/null and b/stuff/quotes/images/p_pfp.png differ diff --git a/stuff/quotes/images/s_pfp.png b/stuff/quotes/images/s_pfp.png new file mode 100644 index 0000000..c35c967 Binary files /dev/null and b/stuff/quotes/images/s_pfp.png differ diff --git a/stuff/quotes/images/t_pfp.png b/stuff/quotes/images/t_pfp.png new file mode 100644 index 0000000..36e021c Binary files /dev/null and b/stuff/quotes/images/t_pfp.png differ diff --git a/stuff/quotes/images/v_pfp.png b/stuff/quotes/images/v_pfp.png new file mode 100644 index 0000000..bf460d6 Binary files /dev/null and b/stuff/quotes/images/v_pfp.png differ diff --git a/stuff/quotes/images/x_pfp.png b/stuff/quotes/images/x_pfp.png new file mode 100644 index 0000000..c975deb Binary files /dev/null and b/stuff/quotes/images/x_pfp.png differ diff --git a/stuff/quotes/index.php b/stuff/quotes/index.php new file mode 100644 index 0000000..3828f13 --- /dev/null +++ b/stuff/quotes/index.php @@ -0,0 +1,441 @@ + + + + + + + #quotes | isopod.cool v4 + + + + + +
    +
    +

    #quotes

    +

    highlights from the #quotes channel in the discord chat

    +

    Obligatory warning for "sex joke" up ahead. Turn back now if that's not your style.

    + pfp = $p; + $this->name = $n; + $this->color = $c; + } + } + $me = new User("h_pfp", "isopod", "00ffb7"); + $vivi = new User("v_pfp", "pink one", "ff009e"); + $sad = new User("s_pfp", "yellow one", "f1c40f"); + $mage = new User("m_pfp", "sea slug", "faaaaa"); + $celian = new User("c_pfp", "bird one", "73fbff"); + $thom = new User("x_pfp", "tomato", "567c2d"); + $goon = new User("g_pfp", "crab one", "2c9c91"); + $portals = new User("p_pfp", "purple one", "5a397d"); + $joy = new User("j_pfp", "green one", "a2ff00"); + $taro = new User("t_pfp", "nebulous creature", "a7a502"); + + $quotes = array( + array($me, "you hate my dead swag", true), + array($mage, "yeah I do"), + array($mage, "I love your alive swag"), + array($me, "I know I'm bordering on furry macro fetish levels of huge", true), + array($celian, "you want me to explode", true), + array($mage, "🥰
    YEAH
    LITERLLY"), + array($taro, "wait what was my brain doing", true), + array($taro, "oh yeah i was thinking"), + array($me, "you don't appreciate the thock", true), + array($mage, "thocks you"), + array($me, "I thought you said \"fucks you\""), + array($mage, "I recommend just deleting the larvae", true), + array($me, "is your fursona pim sex?", true), + array($joy, "Ethical consumption of gacha
    There's no ethical consumption under gachitalism", true), + array($celian, "i think doom guy should lick the rocky cliffs for precious minerals", true), + array($me, "I don't have aspirations of egghood", true), + array($mage, "I wish australia was [...] real", true), + array($mage, "I accidentally kill over 50 small animals every time I ride my horse. I can kill you too", true), + array($mage, "the jermas have awful breeding problems", true), + array($celian, "vaguely unsettling green smiley face emoji bearing a strong resemblance to the one from geometry dash", true), + array($me, "swagful"), + array($celian, "You can quote me on that: I LOVE penis", true), + array($celian, "pee is awesome", true), + array($mage, "Our bells jingled with delight!", true), + array($me, "you love my dejected and bindlepilled swag", true), + array($celian, "genshin player slash slur", true), + array($me, "I'm dejected and bindlepilled", true), + array($celian, "you didn't know? every boat comes with free sex", true), + array($me, "you hate my gay little slurry", true), + array($me, "I've gotta up my slop game", true), + array($me, "your horny ass salad
    you've been eating horny salad", true), + array($vivi, "i dont wanna be a hamster i wanna be a MILF", true), + array($mage, "kirby does not have boobs", true), + array($joy, "Babygirl, you are so bad at eating", true), + array($mage, "I made a facebook account to be transgender", true), + array($me, "having a facebook account makes you less transgender"), + array($celian, "she's trying to kill me", true), + array($mage, "oh HELL yeah"), + array($vivi, "instead of destroying everything how about you DESTROY this AAAAAASSSSSSSSSSSSSSSSSSSSS", true), + array($joy, "Pet names for your partner
    • Sugar
    • Sweetheart
    • Beautiful princess with a disorder
    • Gianni Matragano
    • My love
    ", true), + array($me, "L + ratio + no chitin", true), + array($me, "You can't be lumping like that white baby", true), + array($me, "You hate his perfectly symmetrical swag", true), + array($mage, "explodes and dies and gets it all over you", true), + array($vivi, "dont compare yourself to jesus just because you thought of making a number a tumblr sexyman", true), + array($vivi, "that would be skibidiphobic", true), + array($mage, "Why did he turn into a card this is some objectum tf shit", true), + array($vivi, "It's almost like he's transgender"), + array($celian, "I hate weezer and their child
    fortunately I have killed weezer", true), + array($me, "furries can be trusted to decide who should live and who should die", true), + array($celian, "I'm a slut for polls", true), + array($celian, "i dont like homosexuality", true), + array($vivi, "internalized frog-phobia", true), + array($mage, "I think it's fucked up you can't just kill people", true), + array($mage, "babygirl you piss so bad what the fuck", true), + array($joy, "There's something about digitally altered screams of anguish that really stick in my mind", true), + array($mage, "I would change it to daddy's little slut or something. To inflict maximum damage. But rat slut amongus family is good...", true), + array($celian, "I think you just hate my water-soluble swag", true), + array($vivi, "put your words in my mouth and sentence all over me like a paragraph", true), + array($vivi, "i miss going ssssssssss in your whore tree banthrom", true), + array($celian, "YOU"), + array($vivi, "going sssssss and pppppppppp was the highlight of it for me"), + array($celian, "😭"), + array($celian, "picks yuo up
    picks you up like you are a baby seal", true), + array($mage, "Yoooooooo
    Makes noises
    Euuuh ueh uh huah"), + array($vivi, "is the devil from the bible a pillow princess?", true), + array($me, "you would disparage the humble onion?", true), + array($vivi, "fruited the fuck out", true), + array($mage, "Babygirl you are so servers in United States", true), + array($mage, "Big BAWS. Naked Snake. Big BAWS. Naked Snake. Metal Gear Solid 3. 3. 3. Metal Gear Solid 3. Soviet Union. Jungle! Jungle!", true), + array($celian, "wait arent snake always naked"), + array($mage, "I have feelings for you"), + array($vivi, "back when i was a fan of edgy minion memes", true), + array($me, "I think we should fully replace Discord with Second Life", true), + array($mage, "just ignore the drowning horses in the hot tub", true), + array($mage, "BALLS?", true), + array($celian, "ye
    if you're too tall u gotta have balls
    to show off how tall you are"), + array($mage, "why do you serve so much cunt in roblox", true), + array($vivi, "omg its almost as pretty as you are ahaha
    am i bleeding out", true), + array($mage, "Alasator is suspicious of my figgy pudding", true), + array($me, "check out my rod", true), + array($mage, "thats a nice rod"), + array($joy, "yo you're really schloobin it out this time", true), + array($joy, "I'd be the best wife ever", true), + array($mage, "i think your tits dont like the mechanism", true), + array($me, "Are you the hoe?", true), + array($joy, "I have no issues with eating babies", true), + array($me, "Would you dropkick joe biden? I think you should dropkick joe biden", true), + array($celian, "i dont care enough about him to drop kick him tbh"), + array($me, "i think you should drop kick him"), + array($mage, "sad flooboob", true), + array($me, "thats so weirdcore liminal analogue horror backrooms scp", true), + array($me, "I think you should die for funsies", true), + array($mage, "Joob spoob?", true), + array($sad, "PUSSY?"), + array($vivi, "I would love to just absolutely rawdog a toaster", true), + array($sad, "i LOVE the filth", true), + array($goon, "i had a dream that, Wheezer they all decided to go birdwatching", true), + array($me, "Serial like Universal Serial Bus", true), + array($celian, "Love me a good froot loop"), + array($me, "thats his brain-heart
    thats his brheart", true), + array($celian, "i think you should unload it", true), + array($vivi, "i would love to unload inside a shotgun, yes"), + array($celian, "im gonna cum", true), + array($vivi, "DUDE. NICE"), + array($vivi, "put my ass in a hydraulic press", true), + array($me, "No time spent scrolling through furry porn is wasted", true), + array($celian, "its the blood powered fuck machine", true), + array($me, "is the isopod cunty", true), + array($celian, "maybe"), + array($me, "Extra creamy sounds fun", true), + array($celian, "i had a testicle induced lucid dream last night", true), + array($celian, "i am NOT washing my hands in milk", true), + array($vivi, "why not? you scared?"), + array($mage, "Lesbianism! The yummy treat", true), + array($mage, "i think its fucked you cant eat butterflies", true), + array($mage, "eats your child"), + array($mage, "࿐𒁃𒁃𒀱𒄦𒈙𒐫࿐𒁃𒀱𒄦𒈙𒐫࿐𒀱𒄦𒈙𒐫࿐ ꧄𒁃꧃𒈙𒄦𒀱𒁃𒀱𒄦𒈙𒐫࿐𒐫꧄𒁃꧃𒈙𒄦𒀱𒐫꧄𒁃꧃", true), + array($celian, "playing and talking about this game isnt enough i need to absorb it like plants do to nutrients in the soil", true), + array($celian, "NOOOO you can't do that... spooky fog", true), + array($vivi, "im sorry my FISH is a little rusty", true), + array($me, "Mmmm yummy car engine steak ^_^", true), + array($mage, "You would put me in the meat grinder next", true), + array($me, "But you're not beef"), + array($celian, "What if I disguise myself as a steak"), + array($celian, "I don't think I've drawn a human dick since I was like...", true), + array($celian, "dfgprp-403c286c-ccb1-4a3c-ba2c-3aa8fff58c0b.png", true), + array($sad, "you're nut?", true), + array($celian, "aren't we all?"), + array($vivi, "your arms are looking very testicular mr. Thanos", true), + array($vivi, "that slut did NOT taste good", true), + array($vivi, "im a [little sponge] who requires [[MOISTURE]]", true), + array($celian, "HOLY SHIT REAL BOMB THREAT!!!!!!!!!!!!!!!!!!!!", true), + array($vivi, "Shmumpus", true), + array($vivi, "You can use the wet thing for combat", true), + array($vivi, "my hobbies include milking my creature for eggnog", true), + array($me, "everybody loves Bomb Threat", true), + array($celian, "cutely explodes", true), + array($sad, "YOOOOOO"), + array($mage, "You would dye your dick?", true), + array($celian, "If I had one"), + array($me, "very impressive sex", true), + array($celian, "do you think feetleys feet are lickable", true), + array($vivi, "my brain has gotten to the point where i cannot come up with a threat that does not involve cum", true), + array($me, "can you WEAR Gabriel's MILK?", true), + array($mage, "Italy has a cheese named horse cheese but it's not made from horses", true), + array($celian, "worm from animals we all know him", true), + array($vivi, "you're mom", true), + array($me, "No I'm not"), + array($mage, "I believe in parenting with the knife", true), + array($mage, "Penis", true), + array($me, "Penis"), + array($celian, "Dies"), + array($vivi, "who names a child JUICE??", true), + array($me, "next thing i know im in this alien's discord server", true), + array($celian, "Just remove your balls", true), + array($vivi, "im gonna fucken CUM about that....like ANGRILY.", true), + array($vivi, "im gonna look at more foreskin gifs", true), + array($vivi, "all i can do is CUM and HOPE FOR THE BEST", true), + array($me, "Rainbow Dash is Kim Kitsuragi's ponysona", true), + array($mage, "You don't love me? You would deny me uncrunched eyeballs?", true), + array($sad, "I fuck the blockchain", true), + array($me, "Beautiful women named Mario are messaging me on my phone", true), + array($sad, "his HUGE BOOBS are distracting me", true), + array($mage, "I think you should play Second Life with me", true), + array($sad, "I think you're mentally ill"), + array($mage, "most anime girls are cute in a dog way", true), + array($mage, "Bestie I'm talking about balls, cock and balls, you would turn me into balls?", true), + array($sad, "Yes"), + array($celian, "I find Lois so hot and sexy", true), + array($mage, "she doesnt have an articulated pussy, i have to tell you", true), + array($celian, "Mlp ponies are like Scooby Doo to me", true), + array($me, "Would you play Krunker recommended by Klook dot com with me?", true), + array($me, "I dress like a female bird", true), + array($vivi, "i love it when I can feel my hat THROB ON MY HEAD", true), + array($vivi, "put the Piss stone down you know what that does to your", true), + array($mage, "I am such a loser when it comes to women", true), + array($joy, "Only true rizz masters get rewarded with Egg", true), + array($mage, "You would be a little pony?", true), + array($me, "I can neither confirm nor deny this"), + array($celian, "I don't wanna have my pussy out
    it's there in spirit", true), + array($mage, "Do I have a dick or a pussy in spirit"), + array($mage, "Babygirl you need ketamine", true), + array($goon, "he shits with that thing have some respect", true), + array($me, "I think Gabriel should have boob armor", true), + array($sad, "You're interesting"), + array($me, "i have a copy of Karkalicious on my computer", true), + array($celian, "I love you so much too we should go out or something", true), + array($mage, "i hope you have wonderful sloppy toppy", true), + array($celian, "hell? i could bring you there if you want
    that sounded so threatening, i meant on like a date or something", true), + array($mage, "I think it's okay if cooking pasta ends up in murder", true), + array($mage, "teehee :3 SITS ON YOUR BALLS", true), + array($vivi, "i AM the vinegar in a can of spaghetti-os that was cleaned out for the sole purpose of drinking vinegar", true), + array($celian, "I don't have bones", true), + array($me, "You can get some from the bone trees"), + array($celian, "Hey do you still have blood?", true), + array($sad, "me when im just not built different", true), + array($me, "yoinks your blood", true), + array($celian, "The sixth element is... kiki", true), + array($me, "Extrudes your taxes", true), + array($mage, "Anime girl Will moment", true), + array($vivi, "just in time for the himbo findification!", true), + array($me, "I wish someone would put me down
    Wait a minute", true), + array($celian, "why are you rotated you whore", true), + array($me, "brb", true), + array($celian, "yooo"), + array($celian, "Do you want to watch the movie? The pussy?", true), + array($celian, "why does my salmon look like a vagina", true), + array($me, "you could say I handle a lot of cocks", true), + array($me, "obviously im not gonna handle a bunch of raw chickens and then touch my cock"), + array($me, "I don't think cocks get killed for their meat"), + array($mage, "and the girls have like car shaped heads", true), + array($mage, "I'm trying to find a cool way to say nonbinary peoples' tits", true), + array($celian, "Luigi tits"), + array($celian, "If I have my wings out all the time what does that mean
    like a dick?", true), + array($celian, "You want to be the person that eats horses like grapes?", true), + array($mage, "Some people pass down books and jewelry, my family passes down autism", true), + array($mage, "theres a panda walking through me", true), + array($celian, "I'm more like an osprey but like Tumblrized", true), + array($me, "Listen I may be a furry but at least I'm not a weeb", true), + array($celian, "do u wanna try to guess? 😳", true), + array($sad, "is it... BIG?
    AND THROBBING?"), + array($sad, "Chicken is one of the most fucking boring shit you can wear", true), + array($mage, "Why don't Canadians eat the snow to get rid of it", true), + array($celian, "Well you see... there's a ladder that goes through the window"), + array($celian, "I heard mothsex.gif", true), + array($portals, "Yeah bare naked ladies fuck HARD", true), + array($me, "I hope I'm not just the gay person in your computer to you but the gay isopod in your computer", true), + array($celian, "oh
    bestie i have bad news for u
    your parents might be having sex :(", true), + array($me, "I'm literally an isopod my fursona is just a human and I'm wearing a fursuit 100% of the time", true), + array($me, "I said something to the effect of we should skip february except for valentines day
    the rest you got right
    nearly typed fruary", true), + array($mage, "Furry"), + array($me, "NO"), + array($celian, "fury behavior"), + array($me, "FURY INDEED IM FUCKING MAD"), + array($me, "amongus babies and their adopted dads", true), + array($thom, "I have 6 partners", true), + array($goon, "6 am or pm?"), + array($mage, "Men season themselves in the wind", true), + array($vivi, "i would love to be vored by a cow as well", true), + array($celian, "I'm eely", true), + array($celian, "yeehee"), + array($celian, "Im crunde"), + array($celian, "beainxella"), + array($me, "I cannot begin to describe the aerospace applications of a material with the properties that your beetle has given my pants", true), + array($me, "you can make space worthy pants with human technology we've done it before"), + array($celian, "COCK RING KEN", true), + array($celian, "Yoo no more gay!", true), + array($mage, "She hates gay people and LOVES bald people"), + array($mage, "i dont want to buy the fucked up heterosexual bird", true), + array($me, "you think Baldi is a dilf?", true), + array($celian, "sure?"), + array($vivi, "like i could fuck a freezer
    i couldn't fuck a freezer
    too cold", true), + array($celian, "", true), + array($me, "MY computer is attractive, alright. yours is not.", true), + array($me, "your computer is a milf"), + array($me, "bowser was always hot. coward", true), + array($celian, "oh is your jaw equiped?", true), + array($sad, "I AM YOUR CHEESEBURGER", true), + array($celian, "gimmie a sex
    *SEC
    *SEC
    *SEC
    *SEC
    A SECOND
    OH MY GOD", true), + array($mage, "I think it's incredibly feminine to crawl around in storm drains", true), + array($me, "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), + array($me, "what fucking cyberpunk world are you living in where panties have HUDs", true), + array($vivi, "I want a panic attack now", true), + array($me, "you're gonna be so tasty in two weeks", true), + array($me, "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), + array($me, "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), + array($me, "I'm not in denial I'm a furry", true), + array($me, "mold is a fursuit for bread", true), + array($mage, "when someone eats moldy food does that mean they're voring a furry?"), + array($me, "yes"), + array($me, "can you believe sag their pirt is four years old? (it is from 2018)", true), + array($celian, "wait isn't it 5?
    we're in 2022
    did you count 2020
    wait
    i may be stupid."), + array($me, "I'm not FRENCH I'm a FURRY", true), + array($vivi, "Maybe the real cum pepsi is the friends we made along the way", true), + array($celian, "Ibuprofwn kind of slut.", true), + array($me, "I wish my cock was a fidget spinner", true), + array($vivi, "It's castration time!", true), + array($vivi, "I girlbossed a little to close to the comfy and fell asleep", true), + array($me, "that milk is the sequel to expired", true), + array($me, "Tony the tiger is HOT.", true), + array($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), + array($celian, "Dio would have been hotter with crocs", true), + array($sad, "Im just trying to picture like,, donald trump shitting", true), + array($me, "who would you have picked to win the tumblr sexy man award
    the fucking onceler?", true), + array($thom, "...
    how'd you know?"), + array($celian, "I wanna see the bloopers of Stephen Merchant moaning into the mic", true), + array($me, "come on, look at him. Sans is literally so sexy", true), + array($me, "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), + array($mage, "I think you'll be a fan of gangster balls soon bestie", true), + array($celian, "there i removed my vagina", true), + array($me, "For you, the person who wants to be naked in a ball, that is very bad for you", true), + array($mage, "If I had to rate it, I'd rate it fucking gay", true), + array($mage, "you're only playing Scout correctly if you've had gay sex", true), + array($me, "*Caroline voice* Pee your pants, Mr. Johnson.", true), + array($sad, "i feel like im reading it with my eyes", true), + array($me, "i think there should be a datapack that lets you right click people with a bucket
    and milk them", true), + array($celian, "bebito house reveel
    bebito hous reveel when the bebito has.
    hous reveaal
    hous reval bebito REAL NO CLICKBAIT!!!!!!!!!!!!!!!!", true), + array($celian, "its like having a stroke WHILE having an aneurism", true), + array($mage, "ideal"), + array($me, "Joe Biden can get his ass blasted in a nonfurry way", true), + array($celian, "bruh (respectfully)", true), + array($celian, "this isn't a furby this is walter white cum jar", true), + array($vivi, "can I have the walter white cum jar please 👉👈🥺"), + array($me, "i'd rather not explode today, Thanks", true), + array($celian, "got some hair :)", true), + array($me, "Walter White is a DILF, Celian.", true), + array($sad, "if there was porn i wouldnt leave", true), + array($me, "haunting you with the looming threat of horse", true), + array($celian, "Walter White sex jumpscare", true), + array($celian, "Evangelion spoilers walter white and saul goodman kiss", true), + array($me, "I think they should stop commissioning criminal intelligence and start commissioning furries", true), + array($vivi, "I feel like DeviantArt right now, 2014 edition.", true), + array($me, "I want a transparent penis", true), + array($mage, "The buzzing sound of the penis won't go away", true), + array($thom, "vivi I really think you should stop shitting on reddit", true), + array($celian, "I don't agree because I disagree with you", true), + array($celian, "", true), + array($mage, ""), + array($celian, ""), + array($thom, "

    "), + array($me, ""), + array($vivi, ""), + array($celian, ""), + array($vivi, ""), + array($me, "Imagine touching [audio loss] me", true), + array($thom, "theres something homoerotic about cars", true), + array($me, "im in spain without the sain", true), + array($mage, "REMEMBER TO MAKE BACKUP COPIES IF YOU INTEND TO EDIT THIS PENIS!!", true), + array($vivi, "god is actually surprisingly submissive and breedable", true), + array($me, "don't smoke cigarettes kids they'll make your lungs sus", true), + array($thom, "Bestie you've been given 2 full folders of skins
    You can be any type of white you want to", true), + array($celian, "im gonna pause the video so i can listen to the flavors better", true), + array($vivi, "we stan the boner knife in this house", true), + array($vivi, "god said it's my turn on the being a milf", true), + array($mage, "\"Big Boy\" will be milked for his venom at the Australian Reptile Park", true), + array($mage, "i think you should get some weed and drink it", true), + array($sad, "imagine having a digestive system couldnt be me", true), + array($mage, "Hot"), + array($mage, "damn, guess i gotta send you some autism in the mail", true), + array($mage, "I just diagnosed you with bottom disorder", true), + array($mage, "Girls are always whole ass wet from the roof", true), + array($celian, "This is an amazing day for humanity, and by humanity, I mean my titties", true) + ); + + foreach($quotes as $q) { + if(isset($q[2]) && $q[2]) { + echo "
    "; + } + echo "
    "; + echo ""; + echo "
    ".$q[0]->name."
    ".$q[1]."
    "; + echo "
    "; + } + ?> +
    +
    + + + diff --git a/stuff/webgarden/images/collectmypages.png b/stuff/webgarden/images/collectmypages.png new file mode 100644 index 0000000..3a367ea Binary files /dev/null and b/stuff/webgarden/images/collectmypages.png differ diff --git a/stuff/webgarden/images/webgarden-bg-light.png b/stuff/webgarden/images/webgarden-bg-light.png new file mode 100644 index 0000000..caa6981 Binary files /dev/null and b/stuff/webgarden/images/webgarden-bg-light.png differ diff --git a/stuff/webgarden/images/yay.png b/stuff/webgarden/images/yay.png new file mode 100644 index 0000000..fae981b Binary files /dev/null and b/stuff/webgarden/images/yay.png differ diff --git a/stuff/webgarden/index.php b/stuff/webgarden/index.php index 0f1d2d4..0f79686 100644 --- a/stuff/webgarden/index.php +++ b/stuff/webgarden/index.php @@ -56,6 +56,7 @@ Pot + - -
    -

    isopod.cool

    -

    - - +
    +
    +
    +

    isopod.cool

    +

    +
    +
    + style="max-width: 100%; height: auto;" /> +
    + + <
    diff --git a/stuff/webgarden/status.php b/stuff/webgarden/status.php index 4330d31..a8708f9 100644 --- a/stuff/webgarden/status.php +++ b/stuff/webgarden/status.php @@ -5,15 +5,6 @@ Status