initial commit

This commit is contained in:
DeviousTengu 2024-04-02 14:46:29 -04:00
commit e0de85372a
89 changed files with 855 additions and 0 deletions

5
.gitignore vendored Normal file
View File

@ -0,0 +1,5 @@
# ignore all generated html files
site/.pub/**/*.html
# ignore generated blog folder
site/.pub/blog

20
LICENSE.txt Normal file
View File

@ -0,0 +1,20 @@
LICENSE
-------
The HTML and CSS code for the page structure is distributed under the MIT License. See the section below for a copy of the license.
The site's content (i.e. text, images, etc.) is: Copyright © 2024 DeviousTengu, All Rights Reserved.
Aya Shameimaru is a character from Touhou Project created by Team Shanghai Alice.
MIT LICENSE
-----------
Copyright © 2024 DeviousTengu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

16
README.md Normal file
View File

@ -0,0 +1,16 @@
![Tengu.Space](./site/.pub/img/logo.gif)
This is my server where I host a blog and a number of webservices for myself and friends.
## Building
### Prerequesites
[aya](https://aya.chaotic.ninja/)
### Instructions
```
$ git clone https://git.tengu.space/devioustengu/tengu-space
$ cd tengu-space/site
$ aya build
```
Generated HTML files are placed in /.pub.

72
site/.aya/layout.html Normal file
View File

@ -0,0 +1,72 @@
<!DOCTYPE html>
<!--
Copyright (c) 2024 DeviousTengu
This file is distributed under the MIT License.
See LICENSE.txt or https://opensource.org/license/mit
-->
<html lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex">
<title> {{ title }} - Tengu.Space </title>
<meta name="viewport" content="width=device-width, intial-scale=1.0">
<link rel="icon" type="image/x-icon" href="./favicon.ico">
<link rel="stylesheet" type="text/css" href="./css/stylesheet.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="./css/ie.css">
<![endif]-->
</head>
<body><div id="mountain"></div><div id="everything">
<div id="header">
<img id="logo" src="./img/logo.gif" alt="Tengu.Space">
<div id="nav"> <a href="./index.html">Home</a> | <a href="./about.html">About</a> | <a href="./blog.html">Blog</a> | <a href="./services.html">Services</a> | <a href="./contact.html">Contact</a> </div>
<noscript> <p> No JavaScript? No problem! :) </p> </noscript>
</div>
<hr>
<div id="stage">
<img src="./img/stages/{{ stage }}.gif" alt="{{ title }}">
<p> {{ subtitle }} </p>
</div>
<hr>
<table id="content">
<tbody>
<tr>
<td id="top-left"></td>
<td id="top-center"></td>
<td id="top-right"></td>
</tr>
<tr>
<td id="mid-left"></td>
<td id="mid-center">
{{ content }}
</td>
<td id="mid-right"></td>
</tr>
<tr>
<td id="bottom-left"></td>
<td id="bottom-center"></td>
<td id="bottom-right"></td>
</tr>
</tbody>
</table>
<hr>
<div id="footer">
<p>
<a href="https://fediring.net/previous?host=tengu.space">&lt;</a>
<a href="https://fediring.net/">Fediring</a>
<a href="https://fediring.net/next?host=tengu.space">&gt;</a> <br>
<a href="gopher://tengu.space/">Gopher Version</a>
</p><br><br>
<p> Copyright &copy; 2024 DeviousTengu. View the source code <a href="https://git.tengu.space/devioustengu/tengu-space">here</a>. <br>
This site was made using <a href="https://aya.chaotic.ninja/">Aya</a>, the fastest static site generator. </p>
</div>
</div><div id="mountain-ie"></div></body></html>

74
site/.aya/post.html Normal file
View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<!--
Copyright (c) 2024 DeviousTengu
This file is distributed under the MIT License.
See LICENSE.txt or https://opensource.org/license/mit
-->
<html lang="en"><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="robots" content="noindex">
<title> {{ title }} - Tengu.Space </title>
<meta name="viewport" content="width=device-width, intial-scale=1.0">
<link rel="icon" type="image/x-icon" href="../favicon.ico">
<link rel="stylesheet" type="text/css" href="../css/stylesheet.css">
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="../css/ie.css">
<![endif]-->
</head>
<body><div id="mountain"></div><div id="everything">
<div id="header">
<img id="logo" src="../img/logo.gif" alt="Tengu.Space">
<div id="nav"> <a href="../index.html">Home</a> | <a href="../about.html">About</a> | <a href="../blog.html">Blog</a> | <a href="../services.html">Services</a> | <a href="../contact.html">Contact</a> </div>
<noscript> <p> No JavaScript? No problem! :) </p> </noscript>
</div>
<hr>
<div id="stage">
<img src="../img/stages/devs-blog.gif" alt="Dev's Blog">
<p> Mountain of Random Nonsense </p>
</div>
<hr>
<table id="content">
<tbody>
<tr>
<td id="top-left"></td>
<td id="top-center"></td>
<td id="top-right"></td>
</tr>
<tr>
<td id="mid-left"></td>
<td id="mid-center">
<h1> {{ title }} </h1>
<h4> {{ date-written }} </h4>
{{ content }}
</td>
<td id="mid-right"></td>
</tr>
<tr>
<td id="bottom-left"></td>
<td id="bottom-center"></td>
<td id="bottom-right"></td>
</tr>
</tbody>
</table>
<hr>
<div id="footer">
<p>
<a href="https://fediring.net/previous?host=tengu.space">&lt;</a>
<a href="https://fediring.net/">Fediring</a>
<a href="https://fediring.net/next?host=tengu.space">&gt;</a> <br>
<a href="gopher://tengu.space/">Gopher Version</a>
</p><br><br>
<p> Copyright &copy; 2024 DeviousTengu. View the source code <a href="https://git.tengu.space/devioustengu/tengu-space">here</a>. <br>
This site was made using <a href="https://aya.chaotic.ninja/">Aya</a>, the fastest static site generator. </p>
</div>
</div><div id="mountain-ie"></div></body></html>

2
site/.aya/upload Executable file
View File

@ -0,0 +1,2 @@
#!/bin/sh
rsync -acv --rsh="ssh -p 1230" --del $AYA_OUTDIR/ root@tengu.space:/var/www/html/

19
site/.pub/css/ie.css Normal file
View File

@ -0,0 +1,19 @@
/*
* Copyright (c) 2024 DeviousTengu
* This file is distributed under the MIT License.
* See LICENSE.txt or https://opensource.org/license/mit
*/
html {
background-color: #550000;
}
#mountain { display: none; }
#mountain-ie {
background-image: url('../img/mountain-ie.gif');
background-position: bottom center;
background-repeat: repeat-x;
width: 100%;
height: 184px;
}

View File

@ -0,0 +1,212 @@
/*
* Copyright (c) 2024 DeviousTengu
* This file is distributed under the MIT License.
* See LICENSE.txt or https://opensource.org/license/mit
*/
@font-face {
font-family: Unifont;
src: url('../font/UnifontCondensed.ttf') format('truetype');
}
body {
background-attachment: fixed;
background-color: #442244;
background-image: url('../img/background.gif');
background-repeat: repeat-x;
color: white;
font-family: Unifont, serif;
margin: 0;
position: relative;
}
#mountain {
background-attachment: fixed;
background-image: url('../img/mountain.gif');
background-position: center bottom;
background-repeat: repeat-x;
height: 100%;
width: 100%;
position: fixed;
bottom: 0;
}
#everything {
height: 100%;
width: 720px;
margin: 0 auto;
position: relative;
}
hr {
border: none;
visibility: hidden;
}
h1, .yellow { color: yellow; }
h2, th { color: #F04040; }
h3 { color: magenta; }
h4 { color: #FFFF99; }
a { color: cyan; }
.no-cell-padding { border-spacing: 0; }
.no-cell-padding td { padding: 0; }
.cell-padding td { padding: 4px; }
/* NAVIGATION */
#header {
width: 100%;
height: 72px;
position: relative;
}
#logo {
position: absolute;
bottom: 0;
left: 0;
}
#nav {
position: absolute;
bottom: 0;
right: 0;
}
noscript {
position: absolute;
top: 0;
right: 0;
text-align: right;
}
/* STAGE */
#stage { text-align: center; }
#stage p { margin-top: 0; }
/* BORDER */
#content {
table-layout: fixed;
width: 100%;
border-spacing: 0;
border-collapse: collapse;
}
#top-left {
height: 16px;
width: 16px;
padding: 0px;
background-image: url('../img/border/top-left.gif');
}
#top-center {
height: 16px;
padding: 0px;
background-image: url('../img/border/top-center.gif');
}
#top-right {
height: 16px;
width: 16px;
padding: 0px;
background-image: url('../img/border/top-right.gif');
}
#mid-left {
width: 16px;
padding: 0px;
background-image: url('../img/border/mid-left.gif');
}
#mid-center {
padding: 4px;
background-image: url('../img/border/mid-center.gif');
}
#mid-right {
width: 16px;
padding: 0px;
background-image: url('../img/border/mid-right.gif');
}
#bottom-left {
height: 16px;
width: 16px;
padding: 0px;
background-image: url('../img/border/bottom-left.gif');
}
#bottom-center {
height: 16px;
padding: 0px;
background-image: url('../img/border/bottom-center.gif');
}
#bottom-right {
height: 16px;
width: 16px;
padding: 0px;
background-image: url('../img/border/bottom-right.gif');
}
/* HOMEPAGE */
#aya-sprite { float: left; }
a img { border: none; }
#buttons a { text-decoration: none; }
/* BLOG POST LIST */
#blog-posts { width: 100%; }
#blog-posts th, #blog-posts td {
padding: 8px;
}
.table-cell-nowrap {
text-align: left;
overflow-x: hidden;
white-space: nowrap;
color: yellow;
}
.table-cell-overflow {
max-width: 0;
width: 100%;
}
.text-centered { text-align: center; }
#rss {
position: absolute;
margin-left: 8px;
}
/* FOOTER */
#footer {
padding: 8px 0;
text-align: center;
}
#footer p {
background-image: url('../img/footer.gif');
display: inline;
}

BIN
site/.pub/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

BIN
site/.pub/img/avatar.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
site/.pub/img/footer.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 767 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 378 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1003 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 B

BIN
site/.pub/img/logo.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
site/.pub/img/mountain.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

2
site/.pub/robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow: /

25
site/.pub/rss.xml Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" ?>
<rss version="2.0">
<channel>
<title>Dev's Blog</title>
<link>https://tengu.space/blog</link>
<item>
<title>The Shadow Behind Mario Sunshine</title>
<link>https://tengu.space/blog/mario-sunshine.html</link>
</item>
<item>
<title>Mirroring Awareness</title>
<link>https://tengu.space/blog/mirroring-awareness.html</link>
</item>
<item>
<title>Battling YouTube Addiction</title>
<link>https://tengu.space/blog/youtube-addiction.html</link>
</item>
<item>
<title>First Post</title>
<link>https://tengu.space/blog/first-post.html</link>
</item>
</channel>
</rss>

83
site/about.md Normal file
View File

@ -0,0 +1,83 @@
---
title: About Dev
stage: about-dev
subtitle: A Brief Introduction
---
<img src="./img/avatar.gif" style="float: right; margin-left: 8px;" alt="Dev's Avatar">
## Hi there! <img src="./img/icons/miyoi-wave.gif" alt="Miyoi waving" width=32 height=32>
I'm a quiet but caring nerd that is stuck in 2009.
I like programming games, surfing the indie web, and making puns.
My head is always in the clouds.
## Interests
<table class="cell-padding"><tbody>
<tr>
<td class="yellow"> Anime </td>
<td>
Lucky Star, Steins;Gate, Toaru Kagaku no Railgun
</td>
</tr>
<tr>
<td class="yellow"> Games </td>
<td>
Mario Kart, MOTHER, Pikmin, Poly Bridge, Spelunky, Tetris, Touhou
</td>
</tr>
<tr>
<td class="yellow"> Other </td>
<td>
Frutiger Aero, Internet privacy, retro tech collecting, speedrunning
</td>
</tr>
</tbody></table>
## Software
<table class="cell-padding"><tbody>
<tr>
<td class="yellow"> Browsers </td>
<td>
<img src="./img/icons/librewolf.gif" alt="LibreWolf Icon"> <a href="https://librewolf.net/">LibreWolf</a>, <img src="./img/icons/mullvad-browser.gif" alt="Mullvad Browser Icon"> <a href="https://mullvad.net/en/browser">Mullvad Browser</a>
</td>
</tr><tr>
<td class="yellow"> Communication </td>
<td>
<img src="./img/icons/gajim.gif" alt="Gajim Icon"> <a href="https://gajim.org/">Gajim</a>, <img src="./img/icons/nheko.gif" alt="nheko Icon"> <a href="https://nheko-reborn.github.io/">nheko</a>
</td>
</tr><tr>
<td class="yellow"> Development </td>
<td>
<img src="./img/icons/aseprite.gif" alt="Aseprite Icon"> <a href="https://www.aseprite.org/">Aseprite</a>, <img src="./img/icons/godot.gif" alt="Godot Engine Icon"> <a href="https://godotengine.org/">Godot Engine</a>, <img src="./img/icons/lite-xl.gif" alt="Lite XL Icon"> <a href="https://lite-xl.com/">Lite XL</a>
</td>
</tr>
<tr>
<td class="yellow"> Linux </td>
<td>
<img src="./img/icons/debian.gif" alt="Debian Icon"> <a href="https://www.debian.org/">Debian</a>, <img src="./img/icons/fedora.gif" alt="Fedora Icon"> <a href="https://fedoraproject.org/">Fedora</a>, <img src="./img/icons/feren.gif" alt="Feren OS Icon"> <a href="https://ferenos.weebly.com/">Feren OS</a>, <img src="./img/icons/zorin.gif" alt="Zorin OS Icon"> <a href="https://zorin.com/os/">Zorin OS</a>
</td>
</tr>
</tbody></table>
## "Enemies"
A (non-serious) list of things that I'm known to dislike:
- Discord
- Electron
- GameMaker Studio 2
- IKEA
- NVIDIA Optimus
- RGB lights
- [Super Mario Sunshine](./blog/mario-sunshine.html)
- Verizon
- Unity Engine
- YouTube Shorts
## Gender?
I don't like labels. Interpret me however you want.

59
site/blog.md Normal file
View File

@ -0,0 +1,59 @@
---
title: Dev's Blog
stage: devs-blog
subtitle: Mountain of Random Nonsense
---
<a type="application/rss+xml" href="./rss.xml" id="rss">RSS</a>
<table id="blog-posts">
<tr>
<th>Name</th>
<th>Date</th>
<th>Link</th>
</tr>
<tr class="text-centered">
<td class="table-cell-overflow">
<div class="table-cell-nowrap">
The Shadow Behind Mario Sunshine
</div>
</td>
<td style="white-space: nowrap;">2024-02-12</td>
<td><a href="./blog/mario-sunshine.html">
here
</a></td>
</tr>
<tr class="text-centered">
<td class="table-cell-overflow">
<div class="table-cell-nowrap">
Mirroring Awareness
</div>
</td>
<td style="white-space: nowrap;">2023-12-26</td>
<td><a href="./blog/mirroring-awareness.html">
here
</a></td>
</tr>
<tr class="text-centered">
<td class="table-cell-overflow">
<div class="table-cell-nowrap">
Battling YouTube Addiction
</div>
</td>
<td style="white-space: nowrap;">2023-12-18</td>
<td><a href="./blog/youtube-addiction.html">
here
</a></td>
</tr>
<tr class="text-centered">
<td class="table-cell-overflow">
<div class="table-cell-nowrap">
First Post
</div>
</td>
<td style="white-space: nowrap;">2023-10-07</td>
<td><a href="./blog/first-post.html">
here
</a></td>
</tr>
</table>

7
site/blog/first-post.md Normal file
View File

@ -0,0 +1,7 @@
---
layout: post.html
title: First Post
date-written: 07 October 2023
---
This just is a dummy post :)

View File

@ -0,0 +1,83 @@
---
layout: post.html
title: The Shadow Behind Mario Sunshine
date-written: 12 February 2024
---
Super Mario Sunshine is loved by a lot of people. However, the game has several problems. I could write a whole novel about this topic, but I'll try to condense my thoughts into this blog post.
## Blue Coins
There are exactly 240 blue coins scattered across Delfino Island, but almost none of them are enjoyable to collect. The gameplay pauses every time you collect a blue coin so that you can save your progress.
There is a shop where you can trade 10 blue coins for a shine. I would have been less redundant to just have the shine spawn immediately upon collecting the 10th blue coin. Perhaps Nintendo had more planned for this shop.
In my opinion, the game would have been fine without the blue coins. Imagine if Super Mario Bros. had random blue coins placed in blocks. While it might've incentivize players to hit more blocks, it sounds far more tedious than fun.
## 100-Coin Shines
In Super Mario 64, you can't collect the 100-coin star in Jolly Roger Bay on episode 1. Otherwise, collecting a 100-coin star is always possible.
In Super Mario Sunshine, almost every stage requires you to be on a specific episode. Otherwise, there won't even be 100 coins in the stage to collect.
## Some Other Bad Shines
### Yoshi's Fruit Adventure
You need a random fruit to hatch Yoshi, and the fruit spawner is RNG.
### The Watermelon Festival
This shine is tedious. Many players have nightmares of popping the melon close to the end. Luckily, there's a way to clip into the roof and collect the shine, although this is not intended.
### Red Coins in the Hotel
I recall this particular shine being challenging due to the scattered placement of the red coins. The stage would have been much better without the time limit for completing it.
### Pachinko Game
The game gives you an artificial rightward force when you're in the machine. This force is only applied in the air, but it gets stored when you're on the ground. Nintendo must've lacked the time to make this force feel natural.
### Lily Pad Ride
Firstly, you have to endure a 2-minute boat ride with Yoshi just to reach the stage. Then, you have to control a lily pad on a poisonous river and collect 8 red coins. The flow of the river prevents you from going back and getting a red coin you missed. If you game over, you have to repeat the boat ride.
## How Did This Happen?
Nintendo likely felt the need to rush this game's development to compete with the Playstation 2.
You may have noticed that everything that I have mentioned so far is not necessary to beat the game. In Super Mario 64, there isn't a specific star you have to collect. What matters is how many stars you collect.
To unlock Corona Mountain in Super Mario Sunshine, you need to collect the 7th shine of every main stage (and every shine needed to access the 7th episode). Everything else is a side objective that doesn't have to be polished.
## Other Garbage Features
### Reused Bosses
Having three Gooper Blooper fights in the game feels unnecessary. The Gatekeeper bosses are also repetitive.
### Blooper Racers
There are three options for blooper racers: Easy, medium, and hard. However, they all swim at the same speed. The only difference is their handling. It begs the question of why the options were included if there's no benefit to the harder options.
### Inconsistent Flip Gate Controls
From the side, you press B to flip and A to jump off. From below, you press A to flip and B to let go. It would have been helpful if the game indicated which button to press in each situation.
### Chucksters
The angle at which the chucksters throw you is based on your position in relation to the chuckster. This makes aiming unreasonably difficult.
### Durians
Durians are the only fruits that you cannot hold. Instead, you have to kick them, which can be more challenging than kicking a durian in real life. You need to kick durians for a blue coin and occasionally to hatch Yoshi.
### 30 FPS
The game was originally planned to run at 60 FPS, but Nintendo opted for 30 FPS due to challenges with optimizing certain areas of the game at the last minute. Lame.
## Final Notes
There is an excellent video by Ceave Gaming that explains a lot of Sunshine's issues. I recommend watching it [here](https://yt.chaotic.ninja/watch?v=FnzKUwDLP8A).
Additionally, there's a romhack called [Super Mario Sunburn](https://www.romhacking.net/hacks/5302/) that addresses many of the game's problems. While it doesn't fix everything and introduces some unnecessary features, it still provides a better overall experience than the original game.

View File

@ -0,0 +1,27 @@
---
layout: post.html
title: Mirroring Awareness
date-written: 26 December 2023
---
Here is something that a lot of you may find interesting. I've posted about this on fedi roughly a year ago.
A lot of languages are read from left to right. However, some are read from right to left (i.e. Arabic). To account for this, the operating systems often mirror their UI completely. Microsoft refers to this as "mirroring awareness", and it kinda reminds me of mirror mode in Mario Kart.
Operating systems often design their UI around the idea of starting your tasks from the left and finishing them from the right. That is why completely mirroring the UI is important for those that know a right-to-left language. Afaik, this has been a practice since Windows 98.
[Windows XP mirrored](../img/blog/mirroring-awareness/winxp.jpg)
[Windows 7 mirrored](../img/blog/mirroring-awareness/win7.jpg)
Even Windows 11 does this. However, not every app supports it.
[Windows 11 mirrored](../img/blog/mirroring-awareness/win11.png)
Windows is not the only operating system to do this either. This practice has also been adopted by macOS, GNOME, and KDE Plasma.
[macOS mirrored](../img/blog/mirroring-awareness/macos.png)
[GNOME mirrored](../img/blog/mirroring-awareness/gnome.png)
[Plasma mirrored](../img/blog/mirroring-awareness/plasma.jpg)

View File

@ -0,0 +1,44 @@
---
layout: post.html
title: Battling YouTube Addiction
date-written: 18 December 2023
---
There is no doubt that YouTube is bad for your attention span. I used to watch at least four hours of YouTube a day. Nowadays, I barely watch any. I'm writing this post to describe my process on how I got to this point.
## Realizing the Problem
I figured that simply limiting my watch time wouldn't have helped my attachment to it. Instead, I decided to deprive myself of the algorithm. You might ask, "But Dev, how are you supposed to find any new YouTube content without the algorithm?" That's kinda the point. You can still find new videos from channels you're subscribed to as well as videos that your friends share with you. Those sources are much more digestable.
## YouTube on Desktop
Here are the initial steps I took:
1. The algorithm relies a lot on watch history, so I turned that off.
2. I installed the **DF YouTube** browser extention (DF stands for "Distraction Free"). You can get it on both [Chromium](https://chrome.google.com/webstore/detail/df-tube-distraction-free/mjdepdfccjgcndkmemponafgioodelna) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/df-youtube/)
3. I checked nearly every box on it. This hides the home feed, the recommendations on the side, the trending page, comments, and more.
4. I went through my subscriptions list and unsubscribed to the channels that I rarely watched.
5. I updated my YouTube bookmark to link specifically to the subscriptions page.
This helped me reduce my watch time significantly. It even helped me realize just how awful recommended videos were compared to videos from channels that I liked. Remember, it should be **you** that decides what you want to watch, not Google.
## YouTube on Mobile
Phones are meant for calls and texts, not YouTube. I believe that the only place that you should ever be watching YouTube is at your computer. That being said, I chose to uninstall the YouTube app from my phone entirely.
Some Android phones prevent you from uninstalling YouTube. Luckily, there's the [Universal Android Debloater](https://github.com/0x192/universal-android-debloater) which helps you remove it. It's a little complicated, but don't hold off on using it.
## Alternate Frontends
These are proxies that let you watch YouTube without going directly to YouTube's website. You don't need a browser extention to use them, and they are usually algorithm-free. There are many people that are self-hosting instances of these frontends on their sites, and they all have varying speeds.
Here are the frontends that I am aware of:
- **Invidious.** It's the most lightweight one on this list, and it's the one that I recommend the most. Some instances you could try are [yewtu.be](https://yewtu.be), [in.vibb.ro](https://in.vibb.ro), [yt.chaotic.ninja](https://yt.chaotic.ninja), and [super8.absturztau.be](https://super8.absturztau.be)
- **Piped.** This one's a lot sleeker, but I have yet to find an instance that gives me decent speed.
- **PokeTube.** Perhaps the most ambitious one, but it's clearly still in development.
- There is also **FreeTube**, but it is not self-hostable. It is an Electron app.
## Final Thoughts
On top of using an alternative frontend, going completely without a subscriptions list could be a good idea. This would force you to find new videos on your own, and that may prevent you from checking YouTube instinctively.

45
site/contact.md Normal file
View File

@ -0,0 +1,45 @@
---
title: Contact
stage: contact
subtitle: Land of Communication
---
## Direct Message
<table class="cell-padding">
<tr>
<td> <img src="./img/icons/xmpp.gif" alt="XMPP"> </td>
<td> <a href="xmpp:devious@im.chaotic.ninja?message"> devious@im.chaotic.ninja</a> * </td>
</tr>
<tr>
<td> <img src="./img/icons/matrix.gif" alt="Matrix"> </td>
<td> <a href="https://matrix.to/#/@devious:snug.moe"> @devious:snug.moe</a> * </td>
</tr>
<tr>
<td> <img src="./img/icons/nerimity.gif" alt="Nerimity"> </td>
<td> Dev:ious </td>
</tr>
<tr>
<td> <img src="./img/icons/revolt.gif" alt="Revolt"> </td>
<td> devioustengu#1248 </td>
</tr>
<tr>
<td> <img src="./img/icons/telegram.gif" alt="Telegram"> </td>
<td> <a href="https://t.me/devioustengu"> @devioustengu </a> </td>
</tr>
</table>
<p> * = most preferred </p>
<p> You're always welcome to reach out to me. Even if it's just to say hi ^^ </p>
## Social Media
<table class="cell-padding">
<tr>
<td> <img src="./img/icons/fedi.gif" alt="Fediverse"> </td>
<td> <a href="https://fedi.tengu.space/devious/" rel="me"> @devious@fedi.tengu.space </a> </td>
</tr>
</table>
<p> You won't find me on big tech social media such as Facebook, Instagram, X, etc. </p>

43
site/index.md Normal file
View File

@ -0,0 +1,43 @@
---
title: Welcome
stage: welcome
subtitle: Enjoy Your Stay!
---
<table class="no-cell-padding"><tbody><tr>
<td>
<img src="./img/aya-sprite.gif" id="aya-sprite" alt="PC98 Aya Sprite">
</td><td>
<p>I'm <a href="./about.html">DeviousTengu</a>! You may call me Dev or Devi.</p>
<p>This is my server where I host a blog and a number of webservices for myself and friends. Our mascot is the most truthful news reporter in Gensokyo, <a href="https://en.touhouwiki.net/wiki/Aya_Shameimaru">Aya Shameimaru</a>.</p>
</td>
</tr></tbody></table>
<table><tbody><tr>
<td>
<p> Feel free to add this button to your site: </p>
</td><td>
<a href="https://tengu.space/"> <img src="./img/buttons/dev.png" alt="Dev's Site"> </a>
</td>
</tr></tbody></table>
<div id="buttons">
<a href="https://cirnosystems.xyz/"> <img src="./img/buttons/cirnosys.png" alt="HTFCirno's Site"> </a>
<a href="https://dd86k.space/"> <img src="./img/buttons/dd86k.png" alt="dd86k's Site"> </a>
<a href="https://reimu.info/"> <img src="./img/buttons/ezio.png" alt="Ezio's Site"> </a>
<a href="https://geidontei.chaotic.ninja/usr/yakumo_izuru/"> <img src="./img/buttons/interconnected-boundaries.png" alt="Izuru's Site"> </a>
<a href="https://amber-teahou.se/"> <img src="./img/buttons/jacky.png" alt="Jacky's Site"> </a>
<a href="https://knightzone.neocities.org/"> <img src="./img/buttons/knight.png" alt="Knight's Site"> </a>
<a href="https://nhal.xyz/"> <img src="./img/buttons/nhal.png" alt="Nhal's Site"> </a>
<a href="https://radionoise.ca/"> <img src="./img/buttons/norm.png" alt="Norm's Site"> </a>
<a href="https://reisen.church/"> <img src="./img/buttons/reisen.png" alt="NaiJi's Site"> </a>
<a href="https://urndeogtaaiwpgosq.bitbucket.io/"> <img src="./img/buttons/rqsd.png" alt="rqsd's Site"> </a>
<a href="https://geidontei.chaotic.ninja/usr/mima/"> <img src="./img/buttons/mima.png" alt="Mima's Site"> </a>
<a href="https://utsuho.rocks/"> <img src="./img/buttons/utsuhorocks.png" alt="Utsuho's Site"> </a>
<img src="./img/buttons/vocelia.gif" alt="Vocelia's Button">
<a href="https://chaotic.ninja/"> <img src="./img/buttons/chaoticninja.gif" alt="Chaotic Ninja"> </a>
<a href="https://udongein.xyz/"> <img src="./img/buttons/udongein.png" alt="Udongein"> </a>
<a href="https://fediverse.party/en/fediverse/"> <img src="./img/buttons/fedi.gif" alt="Fediverse Party"> </a>
<a href="http://validator.w3.org/"> <img src="./img/buttons/valid-xhtml10.png" alt="W3C Markup Validation Service">
<a href="https://jigsaw.w3.org/css-validator/"> <img src="./img/buttons/vcss-blue.gif" alt="W3C CSS Validation Service"></a>
</div>

17
site/services.md Normal file
View File

@ -0,0 +1,17 @@
---
title: Services
stage: services
subtitle: Magical Internet Tools
---
## <img src="./img/icons/akkoma.gif" alt="Akkoma Icon" width=32 height=32> [Akkoma](https://fedi.tengu.space)
A microblogging platform that is connected to the Fediverse. It's the perfect place to spread misinformation! (/j)
## <img src="./img/icons/gitea.gif" alt="Gitea Icon" width=32 height=32> [Gitea](https://git.tengu.space)
A painless, self-hosted Git service. You can find this site's source code there.
## <img src="./img/icons/jitsi-meet.gif" alt="Jitsi Icon" width=32 height=32> [Jitsi Meet](https://meet.tengu.space)
A videoconferencing platform. My friends and I often use this to voice chat and screenshare with eachother.
## <img src="./img/icons/owncast.gif" alt="Owncast Icon" width=32 height=32> [Owncast](https://live.tengu.space)
A single-user livestreaming service. You may occasionally find me streaming cozy games on here.