Compare commits
	
		
			141 Commits
		
	
	
		
			fb0ff39013
			...
			prod
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 219236f167 | |||
| 2feb3e88cc | |||
| a1a02500e4 | |||
| 5d9f57fec4 | |||
| 30a8041fa8 | |||
| ff1cf74a00 | |||
| 5ad44a8056 | |||
| b5ea457491 | |||
| eaf8d2e0bb | |||
| 616663ffe0 | |||
| 1cd182b3a9 | |||
| ccd4f4d051 | |||
| 8a8845d898 | |||
| 65be246673 | |||
| eabf56ed93 | |||
| d55b13ecbf | |||
| cc8a7710a1 | |||
| ad83090b05 | |||
| 684c237ac1 | |||
| 23c0090a47 | |||
| e57ec6de50 | |||
| c790dd6736 | |||
| 6e3666cea2 | |||
| 7379df38de | |||
| 2a915fec69 | |||
| fa0e9907ee | |||
| 2c3b5056ae | |||
| f5e0c39458 | |||
| 645093da36 | |||
| f57583b1a9 | |||
| 51b2ebf8e6 | |||
| 5a6d91296d | |||
| 5306cb78d3 | |||
| 749a018a6e | |||
| f212c41734 | |||
| cba46bfc23 | |||
| b734be4054 | |||
| 45915d2914 | |||
| 1fa30724d2 | |||
| 6def1a3007 | |||
| ed7c2b8b29 | |||
| 3fcd6af3a9 | |||
| 8507cbd189 | |||
| 8207702442 | |||
| 0ec47180e2 | |||
| c28f7a92d9 | |||
| 2d270542f0 | |||
| ba0cfe8b56 | |||
| fa8eef51ff | |||
| 730940b003 | |||
| 58fab1850b | |||
| a5b6227fef | |||
| 999a919a7f | |||
| 9afec80742 | |||
| 550485093c | |||
| 3a736dec82 | |||
| 15bbb2e33e | |||
| c2193c9651 | |||
| e0ae65304d | |||
| 3273fb62c8 | |||
| 0d3822258f | |||
| 825bf62851 | |||
| 46e357d2bb | |||
| 8f24d80e8d | |||
| c6289be09c | |||
| 24af65bfeb | |||
| c479aa5b73 | |||
| 1cec38a99e | |||
| a8b60b5662 | |||
| 3053b941d7 | |||
| 63da008d41 | |||
| 41dd1719ac | |||
| 692b6523a1 | |||
| 8699e8094d | |||
| 3429ffc4f6 | |||
| fa07738520 | |||
| 06b35c2091 | |||
| 7e1162ae39 | |||
| 930364f8d1 | |||
| e9831646a7 | |||
| f01f8e5e82 | |||
| 363242a4d5 | |||
| 214ac0d594 | |||
| 7ce1c5216f | |||
| c7c3485896 | |||
| 06c0a5ae46 | |||
| fa37d4d0ee | |||
| 5cbe5372ea | |||
| e9743ad37c | |||
| d2aac5eedf | |||
| 9b7bed3573 | |||
| 506f9a2502 | |||
| 905501c4ac | |||
| a6359112b4 | |||
| 282b1e8264 | |||
| 9ff726d8b9 | |||
| f0a92d7abc | |||
| d4e085e184 | |||
| 6f8223e1f6 | |||
| 0c054e0aef | |||
| db19170ffc | |||
| bd37fe8d18 | |||
| ddd89c84a2 | |||
| 05b37d775f | |||
| 37a5dc23f1 | |||
| da530eebfb | |||
| 21fc20b10f | |||
| 286c92dd0d | |||
| 4cca435148 | |||
| e5542ed8bb | |||
| 98e52e6833 | |||
| 7077426610 | |||
| 68fb297cb0 | |||
| efbc9fc6db | |||
| d809533280 | |||
| ee367f9b3f | |||
| d673eb2f6a | |||
| afac80d543 | |||
| f090607f67 | |||
| 1dccb10a45 | |||
| 6f7934f8ff | |||
| 998f5ed338 | |||
| 71cdccbeae | |||
| 2fb438b199 | |||
| 7eda07995f | |||
| e7c4296724 | |||
| 369d8a736e | |||
| 073377532e | |||
| 18cd38b194 | |||
| aa20bd67ee | |||
| b4d9bae246 | |||
| fcb091a164 | |||
| 55742e50db | |||
| e13a1633dd | |||
| add3a2865c | |||
| 6fd8525dad | |||
| c7f4613d22 | |||
| c6fd3f4786 | |||
| 474c258a83 | |||
| b35856fa88 | |||
| 290f1524a2 | 
@@ -25,7 +25,7 @@ cd www
 | 
			
		||||
 | 
			
		||||
Then in a web browser, navigate to `localhost:8080`.
 | 
			
		||||
 | 
			
		||||
## TODO
 | 
			
		||||
## TODO Items
 | 
			
		||||
 | 
			
		||||
All goals are currently completed.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										68
									
								
								check_git.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										68
									
								
								check_git.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# 2025-10-14 Hyperling
 | 
			
		||||
# Copied cronjob.sh from env-docker/Config/Hugo-Example/files/ to use for this
 | 
			
		||||
#  project so that docker container can do periodic git pulls rather than having
 | 
			
		||||
#  to reload /rebuild the container each time a release is pushed out.
 | 
			
		||||
 | 
			
		||||
## Setup ##
 | 
			
		||||
 | 
			
		||||
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
PROG="$(basename -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
cd $DIR
 | 
			
		||||
DIR="`pwd`"
 | 
			
		||||
NAME="'$PROG'"
 | 
			
		||||
 | 
			
		||||
function log {
 | 
			
		||||
	echo -e "`date` : $NAME - $1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function kill-project {
 | 
			
		||||
	# Kill node.js which will complete run.sh and restart any Docker containers.
 | 
			
		||||
	# This is more intended towards Development and Stage sites since Production
 | 
			
		||||
	#  will only see git changes when a pull request is manually completed.
 | 
			
		||||
	log "Stopping continuous processes!"
 | 
			
		||||
	pkill node
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function reload-project {
 | 
			
		||||
	# Not much to do, run.sh and main.js automatically uses the latest files.
 | 
			
		||||
	rm -v files/photos/index.html
 | 
			
		||||
	# TBD/TODO: Call check_photos.sh once it has been pulled from run.sh.
 | 
			
		||||
	log "Project reloaded successfully!"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Main ##
 | 
			
		||||
 | 
			
		||||
# Pull any updates, and if the project is already up to date, exit successfully.
 | 
			
		||||
output="`git pull`"
 | 
			
		||||
git_status="$?"
 | 
			
		||||
 | 
			
		||||
echo "$output" | grep -v "up to date"
 | 
			
		||||
grep_status="$?"
 | 
			
		||||
 | 
			
		||||
log "Pull status is '$git_status', checking for changes is '$grep_status'."
 | 
			
		||||
 | 
			
		||||
# Check whether the continuously running jobs have been updated.
 | 
			
		||||
echo "$output" | grep "main.js"
 | 
			
		||||
main_changed="$?"
 | 
			
		||||
echo "$output" | grep "run.sh"
 | 
			
		||||
run_changed="$?"
 | 
			
		||||
 | 
			
		||||
# Determine where we've landed and whether we need to do anything.
 | 
			
		||||
if [[ $git_status != 0 ]]; then
 | 
			
		||||
	log "*** ERROR: Git reported a failure! ***"
 | 
			
		||||
	exit 1
 | 
			
		||||
elif [[ $git_status == 0 && ($main_changed == 0 || $run_changed == 0) ]]; then
 | 
			
		||||
	log "Either main ('$main_changed'), or run ('$run_changed') were changed!"
 | 
			
		||||
	kill-project
 | 
			
		||||
elif [[ $git_status == 0 && $grep_status == 0 ]]; then
 | 
			
		||||
	reload-project
 | 
			
		||||
elif [[ $git_status == 0 && $grep_status != 0 ]]; then
 | 
			
		||||
	log "Nothing to do. '$output'"
 | 
			
		||||
else
 | 
			
		||||
	log "*** WARNING: Unknown Situation ***"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
## Success! ##
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										46
									
								
								check_photos.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										46
									
								
								check_photos.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
# 2025-10-15 Hyperling
 | 
			
		||||
# Create script which does the photo checking so that it can be called by
 | 
			
		||||
#  scripts other than just run.sh, such as if it needs used in check_git.sh.
 | 
			
		||||
 | 
			
		||||
## Setup ##
 | 
			
		||||
 | 
			
		||||
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
PROG="$(basename -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
cd $DIR
 | 
			
		||||
DIR="`pwd`"
 | 
			
		||||
NAME="'$PROG'"
 | 
			
		||||
 | 
			
		||||
function log {
 | 
			
		||||
	echo -e "`date` : $NAME - $1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Parameters ##
 | 
			
		||||
 | 
			
		||||
ports="$1"
 | 
			
		||||
 | 
			
		||||
## Main ##
 | 
			
		||||
 | 
			
		||||
count=1
 | 
			
		||||
http_code=0
 | 
			
		||||
port="${ports%% *}"
 | 
			
		||||
photos_uri=":$port/photos/"
 | 
			
		||||
beg_time="$SECONDS"
 | 
			
		||||
while [[ $http_code != "200" ]]; do
 | 
			
		||||
   log "Sleeping for '$count' while waiting for $photos_uri to come up."
 | 
			
		||||
   sleep $count
 | 
			
		||||
   log "Checking if $photos_uri is available."
 | 
			
		||||
   http_code="`curl --silent --fail -w '\n%{http_code}' localhost$photos_uri | tail -n 1`"
 | 
			
		||||
   log "Check for $photos_uri responded with '$http_code'."
 | 
			
		||||
   if (( $count >= 10 )); then
 | 
			
		||||
      log "Giving up on loading $photos_uri after '$count' attempts."
 | 
			
		||||
      break
 | 
			
		||||
   else
 | 
			
		||||
      count=$(( count + 1 ))
 | 
			
		||||
   fi
 | 
			
		||||
done
 | 
			
		||||
end_time="$SECONDS"
 | 
			
		||||
time="$(( $end_time - $beg_time ))"
 | 
			
		||||
log "Finished checking for /photos/ after '$time' seconds."
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
@@ -1,3 +1,9 @@
 | 
			
		||||
# Hyperling.com - files/photos/
 | 
			
		||||
 | 
			
		||||
Used by `http://localhost:8080/photos` to build albums for sharing.
 | 
			
		||||
## index.html
 | 
			
		||||
 | 
			
		||||
Used by `http://localhost:8080/photos` to build and show list of albums.
 | 
			
		||||
 | 
			
		||||
## all.html
 | 
			
		||||
 | 
			
		||||
Used by `http://localhost:8080/photos-all` to show all albums at once.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								main.js
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								main.js
									
									
									
									
									
								
							@@ -141,6 +141,7 @@ async function main() {
 | 
			
		||||
	/* AUTOMATIC METHOD BASED ON OBJECT/ARRAY OF WEB SCRIPTS
 | 
			
		||||
	// Creates routes with the URL of the key and location of the value.
 | 
			
		||||
	*/
 | 
			
		||||
	// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
 | 
			
		||||
	for (let key in pages) {
 | 
			
		||||
		console.log(" * Creating router for", key);
 | 
			
		||||
		router.get("/" + key, function (req,res) {
 | 
			
		||||
@@ -182,6 +183,7 @@ async function main() {
 | 
			
		||||
	`;
 | 
			
		||||
 | 
			
		||||
	// Provide sitemap.xml file for "SEO".
 | 
			
		||||
	// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
 | 
			
		||||
	console.log(" * Creating router for sitemap.xml");
 | 
			
		||||
	router.get('/sitemap.xml', function (req, res) {
 | 
			
		||||
		console.log("sitemap.xml being provided to", req.socket.remoteAddress)
 | 
			
		||||
@@ -190,6 +192,7 @@ async function main() {
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	// Provide human-usable sitemap links.
 | 
			
		||||
	// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
 | 
			
		||||
	console.log(" * Creating router for sitemap*");
 | 
			
		||||
	router.get('/sitemap*', function (req, res) {
 | 
			
		||||
		console.log("sitemap.html being provided to", req.socket.remoteAddress)
 | 
			
		||||
@@ -197,6 +200,7 @@ async function main() {
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	// Return a resource from the files folder.
 | 
			
		||||
	// TBD/TODO would be great to log this as "DATE: ADDRESS hit ROUTER requesting RESOURCE"
 | 
			
		||||
	console.log(" * Creating router for files");
 | 
			
		||||
	router.get('/files*', function (req, res) {
 | 
			
		||||
		console.log("file response to", req.socket.remoteAddress, "asking for", req.url)
 | 
			
		||||
@@ -212,7 +216,8 @@ async function main() {
 | 
			
		||||
			case "apk":
 | 
			
		||||
				mime = "application/vnd.android.package-archive";
 | 
			
		||||
				break;
 | 
			
		||||
			case "jpg" || "jpeg":
 | 
			
		||||
			case "jpg":
 | 
			
		||||
			case "jpeg":
 | 
			
		||||
				mime = "image/jpeg";
 | 
			
		||||
				break;
 | 
			
		||||
			case "png":
 | 
			
		||||
@@ -224,7 +229,9 @@ async function main() {
 | 
			
		||||
			case "zip":
 | 
			
		||||
				mime = "application/zip";
 | 
			
		||||
				break;
 | 
			
		||||
			case "txt" || "csv" || "md":
 | 
			
		||||
			case "md":
 | 
			
		||||
			case "txt":
 | 
			
		||||
			case "csv":
 | 
			
		||||
				mime = "text/*";
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,16 +1,22 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "About";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Who Am I?</h1>
 | 
			
		||||
			<?php if (isset($GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
				&& !$GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/about.jpg" alt="">
 | 
			
		||||
				<img src="/files/media/icons/about.jpg" alt="<<about.jpg>>">
 | 
			
		||||
			</div>
 | 
			
		||||
			';?>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
			<div class="col-12 header">
 | 
			
		||||
				<p>
 | 
			
		||||
					Hi there! My name is Chad, I'm the primary content creator
 | 
			
		||||
					behind Hyperling and HyperVegan. Thank you for your interest!
 | 
			
		||||
@@ -23,7 +29,6 @@
 | 
			
		||||
					planted at least one fruit tree or had a small square foot
 | 
			
		||||
					garden. We would be in paradise!
 | 
			
		||||
				</p>
 | 
			
		||||
				<!-- TBD change this to 'Coding, videos, and art' :) -->
 | 
			
		||||
				<p>
 | 
			
		||||
					Coding and videos aren't my only hobbies, I'm also big into
 | 
			
		||||
					health. I see it as humanity's most important asset and take a
 | 
			
		||||
@@ -48,7 +53,6 @@
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "subpages/about/notice.php";
 | 
			
		||||
	include "subpages/about/health.php";
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										289
									
								
								pages/apps.php
									
									
									
									
									
								
							
							
						
						
									
										289
									
								
								pages/apps.php
									
									
									
									
									
								
							@@ -1,7 +1,288 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Synonym for home page.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	include "home.php";
 | 
			
		||||
	/* Synonym for home page. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Apps";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
		<div class="row" id="experience">
 | 
			
		||||
			<h2 class="col-12 title">My Profession</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 header">
 | 
			
		||||
				<p>
 | 
			
		||||
					I'm a professional software engineer who's been playing with
 | 
			
		||||
					Linux system administration from a young age.
 | 
			
		||||
					Much of my career	has focused on back-end / database systems
 | 
			
		||||
					and optimizing workflows.
 | 
			
		||||
					I feel that I specialize in building systems with "no sharp
 | 
			
		||||
					edges", meaning that I test rigorously to ensure there aren't any
 | 
			
		||||
					ways the user can hurt themselves or the system.
 | 
			
		||||
					In my free time I enjoy learning new
 | 
			
		||||
					languages and writing apps for Android.
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p><a href="/resume/">My resume can be found here</a>.</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="obtainium">
 | 
			
		||||
			<h4 class="col-12 header">Obtainium Configuration</h4>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row text">
 | 
			
		||||
			<div class="col-6 text">
 | 
			
		||||
				<strong>Automatic Import</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					This JSON file will add all of my apps for you in its own
 | 
			
		||||
					convenient group:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent"><li>
 | 
			
		||||
					<a href="https://git.hyperling.com/me/env-obtainium-hyperling/src/branch/main/obtainium-export.json"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>
 | 
			
		||||
						[obtainium-export.json] | Hyperling's Apps
 | 
			
		||||
					</a>
 | 
			
		||||
				</li></ul>
 | 
			
		||||
				<p>
 | 
			
		||||
					Then if you only want to keep a subset of the apps you may either
 | 
			
		||||
					mark the unwanted ones as Track Only or delete them from the app.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-6 text">
 | 
			
		||||
				<strong>Manual Imports</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					If you decide to add the apps 1-by-1 based on the URLs in the
 | 
			
		||||
					section below, here is how to show the correct version numbers:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Enable <i>"Sort by only the last segment of the link"</i>.</li>
 | 
			
		||||
					<li>
 | 
			
		||||
						Set the <i>"Version string extraction RegEx"</i> field to:
 | 
			
		||||
						<code>[0-9\.]+[0-9]+</code>
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
				<p>
 | 
			
		||||
					Otherwise, using <i>"Take first link"</i> ensures you get the
 | 
			
		||||
					proper update but will show pseudo versions.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<!--
 | 
			
		||||
				TBD/TODO, if adding this section, make it something that's
 | 
			
		||||
			 	minimized by default and can be expanded open. Otherwise too big.
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong>Confused?</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					Obtainium is a wonderful app for managing your APKs and sharing
 | 
			
		||||
					the configuration across your devices or with other people.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					It is not my project, but I highly recommend using it.
 | 
			
		||||
					<a href="TBD/TODO"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Find its APK here (TBD/TODO!)</a> and
 | 
			
		||||
					<a>its documentation here</a>.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
			-->
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="android">
 | 
			
		||||
			<h3 class="col-12 header">Android Apps</h3>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row center text">
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="expense">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<expense.png>>"
 | 
			
		||||
							src="/files/media/icons/expense.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Recurring Expense Tracker
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Keep track of repeating expenses and
 | 
			
		||||
					view projections of their effect on your finances.
 | 
			
		||||
					First app written with Flutter.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<s><a>F-Droid</a></s>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/flutter-expense-tracker/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="tictactoe">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-tictactoe/releases">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<tictactoe.png>>"
 | 
			
		||||
							src="/files/media/icons/tictactoe.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Tic-Tac-Toe
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Play against a friend or a range of AIs.
 | 
			
		||||
					Written to practice Kotlin/Compose.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<s><a>F-Droid</a></s>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-tictactoe/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-tictactoe/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="ctfu">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-carb-up/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<ctfu.png>>"
 | 
			
		||||
							src="/files/media/icons/ctfu.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Carb Up! BETA
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Calculate cost-effective foods on a High Carb Low Fat lifestyle.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.carbupbeta"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-carb-up/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-carb-up/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="timer">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-infinite-timer/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer"
 | 
			
		||||
				>
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<infinitetimer.png>>"
 | 
			
		||||
							src="/files/media/icons/infinitetimer.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Infinite Timer
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Play a notification at your chosen interval.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.apps.infinitetimer"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-infinite-timer/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-infinite-timer/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="sleep">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<t45mr.png>>"
 | 
			
		||||
							src="/files/media/icons/t45mr.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							45 Minute Rule
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Determine a good bedtime for waking during light sleep.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.apps.the45minuterule"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-45-minute-rule/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="games">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-hypergames/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer"
 | 
			
		||||
				>
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt="<<hypergames.png>>"
 | 
			
		||||
							src="/files/media/icons/hypergames.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
								HyperGames
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Started as a fun project for learning.
 | 
			
		||||
					Playable but unfinished.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=apps.hyperling.com.platformer"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-hypergames/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-hypergames/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--
 | 
			
		||||
				<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>
 | 
			
		||||
				-->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="other">
 | 
			
		||||
			<h3 class="col-12 header">Other Programs</h3>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					For a full list of software including my Ansible automation,
 | 
			
		||||
					Docker setup, source code for this website, and other
 | 
			
		||||
					fun/random toys, check out
 | 
			
		||||
					<a href="https://git.hyperling.com/me" target="_blank">My Projects</a>.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								pages/books.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								pages/books.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	/* Alias for where Books menu item should go. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Books";
 | 
			
		||||
	}
 | 
			
		||||
	include "media.php";
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,22 +1,32 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Contact";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Contact</h1>
 | 
			
		||||
			<?php if (isset($GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
				&& !$GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/contact.jpg" alt="">
 | 
			
		||||
				<img src="/files/media/icons/contact.jpg" alt="<<contact.jpg>>">
 | 
			
		||||
			</div>
 | 
			
		||||
			';?>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 title center">
 | 
			
		||||
			<div class="col-12 header center">
 | 
			
		||||
				<p>
 | 
			
		||||
					Timely responses are not guarenteed, as I spend a majority of
 | 
			
		||||
					my time offline and enjoy traveling in reception-free zones.
 | 
			
		||||
					Timely responses are not guarenteed, as I spend a large amount of
 | 
			
		||||
					time offline and enjoy traveling in reception-free zones.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h2 class="col-12 header">Methods</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
@@ -39,7 +49,6 @@
 | 
			
		||||
				</li></ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										209
									
								
								pages/diet.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										209
									
								
								pages/diet.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,209 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Diet";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Current Diet</h1>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					My diet is 100% vegan and focuses on a high carb low fat
 | 
			
		||||
					macronutrient ratio from whole foods. I consume as many raw meals
 | 
			
		||||
					as possible and prefer to cook for myself.
 | 
			
		||||
					<!--Purchase priorities are 1) Non-GMO, 2) Local, 3) Organic.-->
 | 
			
		||||
				</p>
 | 
			
		||||
				<!-- -- >
 | 
			
		||||
				<p>
 | 
			
		||||
					I generally water fast until the sensation of an empty stomach
 | 
			
		||||
					actually turns to hunger, then eat a raw fruit meal. If it's date
 | 
			
		||||
					season or other high calorie fruit is readily available, the
 | 
			
		||||
					whole day may be fruit, otherwise I make 1 large cooked meal such
 | 
			
		||||
					as rice with veggies to cover the rest of the day's needs.
 | 
			
		||||
				</p>
 | 
			
		||||
				<!-- -->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h2 class="col-12 header" id="faves">Favorites</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong>Fruit</strong>
 | 
			
		||||
				<ol>
 | 
			
		||||
					<li>Soursop</li>
 | 
			
		||||
					<li>Durian</li>
 | 
			
		||||
					<li>Pawpaw</li>
 | 
			
		||||
					<li>Mamey Sapote</li>
 | 
			
		||||
				</ol>
 | 
			
		||||
				<p>Notable Mentions</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Dates</li>
 | 
			
		||||
					<li>Longans</li>
 | 
			
		||||
					<li>Cherimoya</li>
 | 
			
		||||
					<li>Persimmons</li>
 | 
			
		||||
					<li>Peaches & Nectarines</li>
 | 
			
		||||
					<li>Fresh Coconut</li>
 | 
			
		||||
					<li>Mango</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
				<!-- -- >
 | 
			
		||||
				<strong>Cooked</strong>
 | 
			
		||||
				<ol>
 | 
			
		||||
					<li></li>
 | 
			
		||||
					<li></li>
 | 
			
		||||
					<li></li>
 | 
			
		||||
				</ol>
 | 
			
		||||
				<!-- -->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h2 class="col-12 header" id="staples">Staples</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong>Raw</strong>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Dates (Khadrawi, Barhi, Medjool)</li>
 | 
			
		||||
					<li>Bananas</li>
 | 
			
		||||
					<li>Apples (Autumn Crisp, Cosmic Crisp, Pink Lady, Granny Smith, Gala, Fuji)</li>
 | 
			
		||||
					<li>Dried Mango (Natural Grocer's brand)
 | 
			
		||||
						<ul><li>
 | 
			
		||||
							This is best consumed rehydrated. The nectar is amazing!!
 | 
			
		||||
						</li></ul>
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
				<strong>Cooked</strong>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Rice</li>
 | 
			
		||||
					<li>Sweet Potato</li>
 | 
			
		||||
					<li>Zucchini & Yellow Squash</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h2 class="col-12 header" id="avoid">Allergies / Aversions</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					I've found that my body doesn't tolerate many foods found in modern diets.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Basically, if you wouldn't feed it to a dog or rabbit, I probably avoid it too.
 | 
			
		||||
				</p>
 | 
			
		||||
				<strong>High Reactivity</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					These are a quick "no". I'll smell the dish, but not eat!
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Alliums (garlic, onions)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>
 | 
			
		||||
							Headaches, migraines, nightmares, night terrors, poor digestion.
 | 
			
		||||
						</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Caffeine (coffee, chocolate, cacao, cocoa)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>
 | 
			
		||||
							Headaches, intense sweating, jitters, anxiety, awful digestion.
 | 
			
		||||
						</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Grapes
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>Terrible digestion.</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Tropical Nuts (peanuts, cashews, brazil nuts, etc)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul>
 | 
			
		||||
							<li>Terrible digestion, lethargy, headaches.</li>
 | 
			
		||||
						</ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Drugs & Alcohol
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>
 | 
			
		||||
							People know me as the sober kid. I used cannabis on and off
 | 
			
		||||
							until 2024 but was over recreational drugs by 2012. Now
 | 
			
		||||
							that I'm happy I no longer need an escape. :)
 | 
			
		||||
						</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
				<strong>Medium Reactivity</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					I normally avoid these and only have them as rare exceptions.
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Nightshades (tomato, peppers, potato, eggplant, tobacco, datura)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul>
 | 
			
		||||
							<li>Mucous and lymph for days, poor digestion.</li>
 | 
			
		||||
							<li>If cooked at a high enough temperature, like fries,
 | 
			
		||||
								they become tolerable as long as theyre not overly oily.
 | 
			
		||||
							</li>
 | 
			
		||||
						</ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Cinnamon
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>Intense sweating, overheating.</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
				<strong>Lower Reactivity</strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					I may have these from time to time, but in very small amounts.
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>Fatty Nuts & Seeds (almonds, walnuts, pecans, sunflower seeds, etc)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>Poor digestion, lethargy, </li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<!-- -- >
 | 
			
		||||
					<li>Quinoa
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>I want to love it, it just doesn't do anything!</li></ul>
 | 
			
		||||
						-- >
 | 
			
		||||
					</li>
 | 
			
		||||
					<!-- -->
 | 
			
		||||
					<li>Storebought/Pasteurized Juices
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>.</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Tea (including herbal)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>Needs to be comsumed with a meal, otherwise body may try to process it as one and leads to horrible digestion.</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Legumes (beans, peas)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>If not properly stored and cooked they cause me havoc.</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Oily Meals
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li></li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>Empty Calories (donuts, cake, corn/potato chips, etc)
 | 
			
		||||
						<!-- -- >
 | 
			
		||||
						<ul><li>I want to love it, it just doesn't do anything!</li></ul>
 | 
			
		||||
						<!-- -->
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,7 +1,8 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Alias for the support page with a more common name.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	/* Alias for the support page with a more common name. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Donate";
 | 
			
		||||
	}
 | 
			
		||||
	include "support.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								pages/freedom.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										85
									
								
								pages/freedom.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	/* Page to provide links for Freedom eBook. */
 | 
			
		||||
	$GLOBALS["ADVISORY"] = false;
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Freedom";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Voluntary Sovereignty</h1>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 header">
 | 
			
		||||
				<p>
 | 
			
		||||
					Short eBook and printable booklet succintly covering Morality
 | 
			
		||||
					and Sovereignty.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Also covers topics such as police encounters
 | 
			
		||||
					and provides resources for further education.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					Use the links below to download the 4-page PDF:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://git.hyperling.com/me/ebook-freedom-flyer/releases/download/latest/VoluntarySovereignty.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[PDF] | eBook
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://git.hyperling.com/me/ebook-freedom-flyer/releases/download/latest/VoluntarySovereignty-booklet-default.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[PDF] | Booklet
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://git.hyperling.com/me/ebook-freedom-flyer/releases/download/latest/VoluntarySovereignty-booklet-rotated.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[PDF] | Booklet (Duplex Rotations)
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
 | 
			
		||||
				<p>
 | 
			
		||||
					Curious how I made it? Check out its Git repository:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://git.hyperling.com/me/ebook-freedom-flyer"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[CODE] | Source Code
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
 | 
			
		||||
				<p>
 | 
			
		||||
					Here is the video it was announced in:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://odysee.com/@HyperVegan:2/20251003-Announcements:0"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[Odysee] | HyperVegan: "Announcements: Skipped Midfest, Voluntary Sovereignty eBook, CheapRVLiving Interview"
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Page to provide ways people can support me.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	$GLOBALS["ADVISORY"] = false;
 | 
			
		||||
	/* Page to provide ways people can support me. */
 | 
			
		||||
	//$GLOBALS["ADVISORY"] = false;
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Health";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">My Health Protocol</h1>
 | 
			
		||||
		</div>
 | 
			
		||||
@@ -28,13 +28,31 @@
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					Click the link below to download the 12-page PDF:
 | 
			
		||||
					Use the links below to download the 10-page PDF:
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent"><li>
 | 
			
		||||
					<a href="/files/media/documents/HyperlingsHealthProtocol.pdf">
 | 
			
		||||
						[PDF] | Direct Download
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li>
 | 
			
		||||
						<a href="https://git.hyperling.com/me/ebook-health-protocol/releases/download/latest/HyperlingsHealthProtocol.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer">
 | 
			
		||||
							[PDF] | eBook
 | 
			
		||||
						</a>
 | 
			
		||||
				</li></ul>
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
					<a href="https://git.hyperling.com/me/ebook-health-protocol/releases/download/latest/HyperlingsHealthProtocol-booklet-default.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[PDF] | Booklet
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
					<a href="https://git.hyperling.com/me/ebook-health-protocol/releases/download/latest/HyperlingsHealthProtocol-booklet-rotated.pdf"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[PDF] | Booklet (Duplex Rotations)
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
 | 
			
		||||
				</ul>
 | 
			
		||||
 | 
			
		||||
				<p>
 | 
			
		||||
					There is also a 30 minute audio version which can be found here:
 | 
			
		||||
@@ -44,7 +62,7 @@
 | 
			
		||||
						<a href="/files/media/documents/HyperlingsHealthProtocol.mp3"
 | 
			
		||||
							target="_blank" rel="noopener noreferrer"
 | 
			
		||||
						>
 | 
			
		||||
							[MP3] | Direct Download
 | 
			
		||||
							[MP3] | Download
 | 
			
		||||
						</a>
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
@@ -88,7 +106,6 @@
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,26 +1,21 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	$show_advisory = true;
 | 
			
		||||
	if ($show_advisory) echo '
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<p><!-- Gap Area --></p>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row center" id="advisory">
 | 
			
		||||
			<div class="col-12 title">
 | 
			
		||||
				<i><h2>Announcements</h2></i>
 | 
			
		||||
			</div>
 | 
			
		||||
			<a href="/health/">
 | 
			
		||||
		<div class="row center title" id="advisory">
 | 
			
		||||
			<h2 class="col-12 title"><i class="purple">Latest Announcement</i></h2>
 | 
			
		||||
			<a href="/freedom/">
 | 
			
		||||
				<div class="col-12 text">
 | 
			
		||||
					<u class="orange">2024-03-07</u>
 | 
			
		||||
					<u class="orange">2025-09-28</u>
 | 
			
		||||
					<br>
 | 
			
		||||
					Find my free eBook, "Hyperling's Health Protocol",
 | 
			
		||||
					I wrote another short free eBook, "Voluntary Sovereignty", check it out
 | 
			
		||||
					<u class="orange">here</u>!
 | 
			
		||||
				</div>
 | 
			
		||||
			</a>
 | 
			
		||||
			<!--<div class="col-12 text">
 | 
			
		||||
				<u>2024-03-31</u>
 | 
			
		||||
				<br>
 | 
			
		||||
				There's a
 | 
			
		||||
				<a href="/home/#tictactoe">new app</a>
 | 
			
		||||
				in town,
 | 
			
		||||
				<a href="/files/apks/TicTacToe.apk">Tic-Tac-Toe</a>!
 | 
			
		||||
			</div>-->
 | 
			
		||||
		</div>
 | 
			
		||||
	';
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
@@ -21,3 +21,16 @@
 | 
			
		||||
			.banner-bottom {
 | 
			
		||||
				background-color: #33CC33;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			.banner-image {
 | 
			
		||||
				background-repeat: no-repeat;
 | 
			
		||||
 | 
			
		||||
				background-position: center, center;
 | 
			
		||||
				height: 237px; /* 69*3[banner stripes] + 15*2[padding top+bot] */
 | 
			
		||||
			}
 | 
			
		||||
			.banner-image01 {
 | 
			
		||||
				background-image: url("/files/media/icons/home.jpg");
 | 
			
		||||
			}
 | 
			
		||||
			.banner-image02 {
 | 
			
		||||
				background-image: url("/files/media/icons/contact.jpg");
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,24 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	// Dynamic testing of whether new images around the banner is wanted.
 | 
			
		||||
	if (!isset($GLOBALS["SHOW_BANNER_PICS"])) {
 | 
			
		||||
		$GLOBALS["SHOW_BANNER_PICS"] = true;
 | 
			
		||||
	}
 | 
			
		||||
	$show_pics = $GLOBALS["SHOW_BANNER_PICS"];
 | 
			
		||||
	$banner_width = $show_pics ? 6 : 12;
 | 
			
		||||
?>
 | 
			
		||||
		<a href='/about/'>
 | 
			
		||||
			<div class="row col-12 header">
 | 
			
		||||
			<div class="row">
 | 
			
		||||
				<?php if ($show_pics) echo '
 | 
			
		||||
				<div class="col-3 header center banner-image banner-image01"></div>
 | 
			
		||||
				';?>
 | 
			
		||||
				<div class="col-<?php echo "$banner_width"; ?> header">
 | 
			
		||||
					<div class="banner-top">Peace</div>
 | 
			
		||||
					<div class="banner-middle">Love</div>
 | 
			
		||||
					<div class="banner-bottom">Happiness</div>
 | 
			
		||||
				</div>
 | 
			
		||||
				<?php if ($show_pics) echo '
 | 
			
		||||
				<div class="col-3 header center banner-image banner-image02"></div>
 | 
			
		||||
				';?>
 | 
			
		||||
			</div>
 | 
			
		||||
		</a>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,5 @@
 | 
			
		||||
<?php
 | 
			
		||||
	include "footer.php"
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
	</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,14 +2,15 @@
 | 
			
		||||
<?php
 | 
			
		||||
	include "header.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
	<body>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "banner.php";
 | 
			
		||||
	include "menu.php";
 | 
			
		||||
 | 
			
		||||
	/* 2025-01-29 Disable advisory now that Books is explicitly a menu item. * /
 | 
			
		||||
	/*
 | 
			
		||||
		2025-01-29 Disable advisory now that Books is explicitly a menu item.
 | 
			
		||||
		2025-10-03 Re-enable advisory for new eBook.
 | 
			
		||||
	*/
 | 
			
		||||
	if (!isset($GLOBALS["ADVISORY"]) || $GLOBALS["ADVISORY"] !== false)
 | 
			
		||||
		include "advisory.php";
 | 
			
		||||
	/* */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,15 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "";
 | 
			
		||||
	} else {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = ": " . $GLOBALS["HEADER_TITLE"];
 | 
			
		||||
	}
 | 
			
		||||
?>
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
	<head>
 | 
			
		||||
		<title>Hyperling</title>
 | 
			
		||||
		<title>Hyperling<?php echo($GLOBALS["HEADER_TITLE"]); ?></title>
 | 
			
		||||
		<link rel="icon" sizes="32x32"
 | 
			
		||||
			href="/files/media/icons/favicon.ico"
 | 
			
		||||
		>
 | 
			
		||||
@@ -22,4 +29,17 @@
 | 
			
		||||
		<style>
 | 
			
		||||
			<?php include "banner.css"; ?>
 | 
			
		||||
		</style>
 | 
			
		||||
 | 
			
		||||
		<meta property="og:title" content="Hyperling">
 | 
			
		||||
		<meta property="og:description" content="Apps, eBooks, media, and other resources from the brands Hyperling and HyperVegan.">
 | 
			
		||||
		<meta property="og:site_name" content="Hyperling">
 | 
			
		||||
		<meta property="og:url" content="https://hyperling.com/">
 | 
			
		||||
		<meta property="og:type" content="website">
 | 
			
		||||
		<meta property="og:image" content="https://hyperling.com/files/media/icons/home.jpg">
 | 
			
		||||
		<meta name="referrer" content="same-origin">
 | 
			
		||||
 | 
			
		||||
		<meta name="twitter:card" content="summary_large_image">
 | 
			
		||||
		<meta name="twitter:title" content="Hyperling">
 | 
			
		||||
		<meta name="twitter:description" content="Apps, eBooks, media, and other resources from the brands Hyperling and HyperVegan.">
 | 
			
		||||
		<meta name="twitter:image" content="https://hyperling.com/files/media/icons/home.jpg">
 | 
			
		||||
	</head>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,19 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
		<div class="row header menu">
 | 
			
		||||
			<ul class="menu-list">
 | 
			
		||||
				<li class="col-1"></li>
 | 
			
		||||
				<li class="col-2 menu-item"><a href="/apps/">Apps</a></li>
 | 
			
		||||
				<li class="col-2 menu-item"><a href="/media/">Media</a></li>
 | 
			
		||||
				<li class="col-2 menu-item"><a href="/about/">About</a></li>
 | 
			
		||||
				<li class="col-2 menu-item"><a href="/contact/">Contact</a></li>
 | 
			
		||||
				<li class="col-2 menu-item"><a href="/support/">Support</a></li>
 | 
			
		||||
				<li class="col-1"></li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/">Home</a></li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/about/">About</a></li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/contact/">Contact</a></li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/support/">Support</a></li>
 | 
			
		||||
			</ul>
 | 
			
		||||
			<ul class="menu-list">
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/apps/">Apps</a></li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/books/">Books</a></li>
 | 
			
		||||
				<li class="col-3 menu-item">
 | 
			
		||||
					<a href="https://odysee.com/@HyperVegan:2"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Videos</a>
 | 
			
		||||
				</li>
 | 
			
		||||
				<li class="col-3 menu-item"><a href="/photos/">Photos</a></li>
 | 
			
		||||
			</ul>
 | 
			
		||||
		</div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,19 +1,23 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Landing page, keeping it apps and development projects like old WordPress site.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	/* Landing page, keeping it apps and development projects like old WordPress site. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Announcements";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Welcome!</h1>
 | 
			
		||||
			<?php if (isset($GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
				&& !$GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/home.jpg" alt="">
 | 
			
		||||
				<img src="/files/media/icons/home.jpg" alt="<<home.jpg>>">
 | 
			
		||||
			</div>
 | 
			
		||||
			';?>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
			<div class="col-12 header center">
 | 
			
		||||
				<p>
 | 
			
		||||
					Thank you for visiting my site! My goal is to make the world a
 | 
			
		||||
					better place. Hopefully you find content here which helps empower
 | 
			
		||||
@@ -21,9 +25,8 @@
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "subpages/home/apps.php";
 | 
			
		||||
	include "subpages/home/announcements.php";
 | 
			
		||||
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
cd `dirname $0`
 | 
			
		||||
 | 
			
		||||
# Create the necessary HTML components for a web page.
 | 
			
		||||
./helpers/body_open.php
 | 
			
		||||
./helpers/body_open.php | sed -e 's/Hyperling/Hyperling: Journey/'
 | 
			
		||||
 | 
			
		||||
#Content for this page
 | 
			
		||||
cat << EOF
 | 
			
		||||
 
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Lists of items which I'd like to share such as gear and frequently used apps.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Lists</h1>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h3 class="col-6 header">Gear</h3>
 | 
			
		||||
 | 
			
		||||
			<h3 class="col-6 header">Apps</h3>
 | 
			
		||||
 | 
			
		||||
			<!-- Gear -->
 | 
			
		||||
			<div class="col-6 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					Gear that I find critical to my life.
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li><a href="TBD">Sleeping Bag</a></li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<!-- Apps -->
 | 
			
		||||
			<div class="col-6 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					Apps that I use frequently on a degoogled Android phone.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,19 +1,23 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Page for my video links.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	/* Page for my video links. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Media";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Media</h1>
 | 
			
		||||
			<!--<?php if (isset($GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
				&& !$GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/videos.jpg" alt="">
 | 
			
		||||
				<img src="/files/media/icons/videos.jpg" alt="<<videos.jpg>>">
 | 
			
		||||
			</div>
 | 
			
		||||
			';?>-->
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text center">
 | 
			
		||||
			<div class="col-12 header center">
 | 
			
		||||
				<p>
 | 
			
		||||
					My written works, social platforms, and photos can be found here.
 | 
			
		||||
				</p>
 | 
			
		||||
@@ -29,9 +33,18 @@
 | 
			
		||||
				<p>
 | 
			
		||||
					I enjoy writing! Find my free eBooks below.
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent"><li>
 | 
			
		||||
					<a href="/health/">My Health Protocol</a>
 | 
			
		||||
				</li></ul>
 | 
			
		||||
				<ul class="indent">
 | 
			
		||||
					<li>
 | 
			
		||||
						2025-09-28: <a href="/freedom/">Voluntary Sovereignty</a> |
 | 
			
		||||
						Existing in a statist society with the least amount of friction.
 | 
			
		||||
					</li>
 | 
			
		||||
					<li><p><!-- Small Gap --></p></li>
 | 
			
		||||
					<li>
 | 
			
		||||
						2024-03-07: <a href="/health/">Hyperling's Health Protocol</a> |
 | 
			
		||||
						Health is a lifestyle, not a diet. Align yourself with Nature
 | 
			
		||||
						to receive its blessings.
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
@@ -102,7 +115,6 @@
 | 
			
		||||
				</li></ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										20
									
								
								pages/photos-all.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								pages/photos-all.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
# Alias for new All Photos feed.
 | 
			
		||||
 | 
			
		||||
# Move to main directory.
 | 
			
		||||
DIR=`dirname $0`
 | 
			
		||||
cd $DIR/..
 | 
			
		||||
 | 
			
		||||
# Locations of photo scripts.
 | 
			
		||||
photos_all=./files/photos/all.html
 | 
			
		||||
photos=./pages/photos.sh
 | 
			
		||||
 | 
			
		||||
# If the all script does not exist,call the generator and ignore its output.
 | 
			
		||||
if [[ ! -e $photos_all ]]; then
 | 
			
		||||
	$photos > /dev/null
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
## Main ##
 | 
			
		||||
cat $photos_all
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
							
								
								
									
										220
									
								
								pages/photos.sh
									
									
									
									
									
								
							
							
						
						
									
										220
									
								
								pages/photos.sh
									
									
									
									
									
								
							@@ -2,12 +2,11 @@
 | 
			
		||||
# 2024-01-21 Hyperling
 | 
			
		||||
# Transition away from PhotoPrism. Helps to save system resources and downsize.
 | 
			
		||||
 | 
			
		||||
# Static Variables
 | 
			
		||||
## Static Variables ##
 | 
			
		||||
DIR=`dirname $0`
 | 
			
		||||
header="<html>\n\t<header>\n\t\t<title>ALBUM</title>\n\t</header>\n\t<body>"
 | 
			
		||||
footer="\n\t</body>\n</html>"
 | 
			
		||||
a="a target='_blank' rel='noopener noreferrer'"
 | 
			
		||||
 | 
			
		||||
# Functions
 | 
			
		||||
## Functions ##
 | 
			
		||||
function remove_problem_strings {
 | 
			
		||||
	file="$1"
 | 
			
		||||
	sed -i -e 's/#!\/usr\/bin\/php//g' $file
 | 
			
		||||
@@ -20,6 +19,7 @@ cd $DIR/..
 | 
			
		||||
HELPER_DIR=./pages/helpers
 | 
			
		||||
PHOTOS_DIR=./files/photos
 | 
			
		||||
mainpage=$PHOTOS_DIR/index.html
 | 
			
		||||
allpage=$PHOTOS_DIR/all.html
 | 
			
		||||
 | 
			
		||||
# Use the cached version if available.
 | 
			
		||||
if [[ -e $mainpage ]]; then
 | 
			
		||||
@@ -28,28 +28,48 @@ if [[ -e $mainpage ]]; then
 | 
			
		||||
	exit 0
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Create the necessary HTML components for a web page.
 | 
			
		||||
$HELPER_DIR/body_open.php > $mainpage
 | 
			
		||||
echo "" >> $mainpage
 | 
			
		||||
## Start the main /photos/ page. ##
 | 
			
		||||
function start_main_page {
 | 
			
		||||
	# Create the necessary HTML components for a web page.
 | 
			
		||||
	$HELPER_DIR/body_open.php > $mainpage
 | 
			
		||||
	sed -i -e 's/Hyperling/Hyperling: Photos/' $mainpage
 | 
			
		||||
	echo "" >> $mainpage
 | 
			
		||||
 | 
			
		||||
# Give the page a description.
 | 
			
		||||
echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
echo -e "\t\t\t<h1 class='col-12 title'>Albums</h1>" >> $mainpage
 | 
			
		||||
echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
	# Give the page a description.
 | 
			
		||||
	echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t<h1 class='col-12 title'>Albums</h1>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
 | 
			
		||||
echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
echo -e "\t\t\t<div class='col-12 text'>" >> $mainpage
 | 
			
		||||
echo -en "\t\t\t\t<p>You may click on an album name to " >> $mainpage
 | 
			
		||||
echo -en "view all of its files, or click on a specific image to bring up the " >> $mainpage
 | 
			
		||||
echo -en "full resolution. On the album pages you may also click an image or " >> $mainpage
 | 
			
		||||
echo -e "video name to pull up the full resolution for download.</p>" >> $mainpage
 | 
			
		||||
echo -e "\t\t\t</div>" >> $mainpage
 | 
			
		||||
echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t<div class='col-12 header'>" >> $mainpage
 | 
			
		||||
	echo -en "\t\t\t\t<p>You may click on an album name to " >> $mainpage
 | 
			
		||||
	echo -en "view all of its files, or click on a specific image to bring up the " >> $mainpage
 | 
			
		||||
	echo -en "full resolution. On the album pages you may also click an image or " >> $mainpage
 | 
			
		||||
	echo -e "video name to pull up the full resolution for download.</p>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t</div>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
 | 
			
		||||
# Display the album names descending.
 | 
			
		||||
ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
	echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t<$a href='/photos-all'" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t\tclass='col-12 header'>Click Here for the Full Photo Feed" >> $mainpage
 | 
			
		||||
	echo -e "\t\t\t</a>" >> $mainpage
 | 
			
		||||
	echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Close out the main page after the sub pages are done being added. ##
 | 
			
		||||
function end_main_page {
 | 
			
		||||
	# Finish the main /photos/ page.
 | 
			
		||||
	$HELPER_DIR/body_close.php >> $mainpage
 | 
			
		||||
	echo "<!-- Built on `date`. -->" >> $mainpage
 | 
			
		||||
	remove_problem_strings $mainpage
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Create the album pages. ##
 | 
			
		||||
function build_album_pages {
 | 
			
		||||
	# Display the album names descending.
 | 
			
		||||
	ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
		# Skip files, only read directories.
 | 
			
		||||
	if [[ ! -d $PHOTOS_DIR/$album ]]; then
 | 
			
		||||
		if [[ ! -d "$PHOTOS_DIR/$album" || "$album" == "all" ]]; then
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
@@ -59,8 +79,8 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
		album_name=${album_name//-/ }
 | 
			
		||||
		echo -e "\t\t<div class='row'>" >> $mainpage
 | 
			
		||||
		echo -en "\t\t\t<h2 class='col-12 title'>" >> $mainpage
 | 
			
		||||
	echo -en "<a href='/files/photos/$album/index.html' " >> $mainpage
 | 
			
		||||
	echo -e "target='_blank' rel='noopener noreferrer'>$album_name</a></h2>" >> $mainpage
 | 
			
		||||
		echo -en "<$a href='/files/photos/$album/index.html'>" >> $mainpage
 | 
			
		||||
		echo -e "$album_name</a></h2>" >> $mainpage
 | 
			
		||||
		echo -e "\t\t</div>" >> $mainpage
 | 
			
		||||
 | 
			
		||||
		# Catch all the upcoming photo records.
 | 
			
		||||
@@ -70,6 +90,8 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
		page=""
 | 
			
		||||
		subpage="$PHOTOS_DIR/$album/index.html"
 | 
			
		||||
		$HELPER_DIR/body_open.php > $subpage
 | 
			
		||||
		sed -i -e "s/Hyperling/Hyperling: $album_name/" $subpage
 | 
			
		||||
		echo "" >> $subpage
 | 
			
		||||
 | 
			
		||||
		# Add a back button
 | 
			
		||||
		echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage
 | 
			
		||||
@@ -101,8 +123,7 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
				echo -e "\t\t\t\t<p>`cat $photo`</p>" >> $mainpage
 | 
			
		||||
			else
 | 
			
		||||
				# Otherwise put in the PHOTOS page list.
 | 
			
		||||
			echo -en "\t\t\t\t<li class='indent'><a href=/$photo target='_blank' " >> $mainpage
 | 
			
		||||
			echo -en "rel='noopener noreferrer'>$filename" >> $mainpage
 | 
			
		||||
				echo -en "\t\t\t\t<li class='indent'><$a href='/$photo'>$filename" >> $mainpage
 | 
			
		||||
				if [[ $photo == *".mp4" ]]; then
 | 
			
		||||
					echo -en " [VIDEO]" >> $mainpage
 | 
			
		||||
				fi
 | 
			
		||||
@@ -110,18 +131,19 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
			fi
 | 
			
		||||
 | 
			
		||||
			## Put in the subpage HTML ##
 | 
			
		||||
		# Set the count if this is the first loop.
 | 
			
		||||
			new_row="\t\t<div class='row text'>"
 | 
			
		||||
			# Set the count and start a row if this is the first loop.
 | 
			
		||||
			if [[ -z $count ]]; then
 | 
			
		||||
				count=0
 | 
			
		||||
		fi
 | 
			
		||||
		# Add a row for the next 2 images.
 | 
			
		||||
		if (( $count % 2 == 0 )); then
 | 
			
		||||
			echo -e "\t\t<div class='row text'>" >> $subpage
 | 
			
		||||
				echo -e "$newrow" >> $subpage
 | 
			
		||||
			# Else check if we need to start a new one for the next 2 images.
 | 
			
		||||
			elif (( $count % 2 == 0 )); then
 | 
			
		||||
				echo -e "\t\t</div>" >> $subpage
 | 
			
		||||
				echo -e "$newrow" >> $subpage
 | 
			
		||||
			fi
 | 
			
		||||
			# Add the container for the image and its text.
 | 
			
		||||
			echo -e "\t\t\t<div class='col-6 center'>" >> $subpage
 | 
			
		||||
		echo -en "\t\t\t\t<a href=/$photo target='_blank' " >> $subpage
 | 
			
		||||
		echo -e "rel='noopener noreferrer'>" >> $subpage
 | 
			
		||||
			echo -en "\t\t\t\t<$a href='/$photo'>" >> $subpage
 | 
			
		||||
			# Determine what type of media it is, and how to display it.
 | 
			
		||||
			if [[ $photo == *".mp4" ]]; then
 | 
			
		||||
				echo -e "\t\t\t\t\t<video width='320px' controls>" >> $subpage
 | 
			
		||||
@@ -131,7 +153,7 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
			elif [[ $photo == *".md" || $photo == *".txt" ]]; then
 | 
			
		||||
				echo -e "\t\t\t\t\t<p>`cat $photo`</p>" >> $subpage
 | 
			
		||||
			else
 | 
			
		||||
			echo -e "\t\t\t\t\t<img src='/$photo'/ alt="">" >> $subpage
 | 
			
		||||
				echo -e "\t\t\t\t\t<img src='/$photo' alt=''>" >> $subpage
 | 
			
		||||
			fi
 | 
			
		||||
			# Check if it needs an extra descriptive detail.
 | 
			
		||||
			echo -en "\t\t\t\t\t<p>$filename" >> $subpage
 | 
			
		||||
@@ -140,10 +162,6 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
			fi
 | 
			
		||||
			# Close the image description and its link.
 | 
			
		||||
			echo -e "</p>\n\t\t\t\t</a>\n\t\t\t</div>" >> $subpage
 | 
			
		||||
		# Close the row after an odd count.
 | 
			
		||||
		if (( $count % 2 == 1 )); then
 | 
			
		||||
			echo -e "\t\t</div>" >> $subpage
 | 
			
		||||
		fi
 | 
			
		||||
			count=$(( count + 1 ))
 | 
			
		||||
		done
 | 
			
		||||
		echo -e "\t\t</div>" >> $subpage
 | 
			
		||||
@@ -159,15 +177,129 @@ ls $PHOTOS_DIR/ | sort -r | while read album; do
 | 
			
		||||
		# Close out the ALBUM's page.
 | 
			
		||||
		$HELPER_DIR/body_close.php >> $subpage
 | 
			
		||||
		echo "<!-- Built on `date`. -->" >> $subpage
 | 
			
		||||
 | 
			
		||||
		remove_problem_strings $subpage
 | 
			
		||||
done
 | 
			
		||||
	done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Finish the web page.
 | 
			
		||||
$HELPER_DIR/body_close.php >> $mainpage
 | 
			
		||||
echo "<!-- Built on `date`. -->" >> $mainpage
 | 
			
		||||
## Create an ALL page. ##
 | 
			
		||||
function build_all_page {
 | 
			
		||||
	# - Shows all photos in descending order, as an overall feed.
 | 
			
		||||
	# - Four images wide.
 | 
			
		||||
	# - Has 2 URLs below the image. One to the album, and one to the image.
 | 
			
		||||
	# - Image is a URL to itself as with other pages.
 | 
			
		||||
	# - Images are shown at maximum 500px or so vertical for quick scrolling.
 | 
			
		||||
 | 
			
		||||
remove_problem_strings $mainpage
 | 
			
		||||
	# Create/overwrite file.
 | 
			
		||||
	$HELPER_DIR/body_open.php > $allpage
 | 
			
		||||
	sed -i -e 's/Hyperling/Hyperling: All Photos/' $allpage
 | 
			
		||||
	echo "" >> $allpage
 | 
			
		||||
 | 
			
		||||
	# Add header.
 | 
			
		||||
	echo -e "\t\t<div class='row'>" >> $allpage
 | 
			
		||||
	echo -e "\t\t\t<h1 class='col-12 title'>All Photo Feed</h1>" >> $allpage
 | 
			
		||||
	echo -e "\t\t</div>" >> $allpage
 | 
			
		||||
 | 
			
		||||
	# Add images to the page
 | 
			
		||||
	find $PHOTOS_DIR/ ! -name "*".html | sort -r | while read media_file; do
 | 
			
		||||
		if [[ -d $media_file
 | 
			
		||||
			|| "$media_file" == *"/photos/README.md"
 | 
			
		||||
		]]; then
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Remove the initial '.' from the URI.
 | 
			
		||||
		media_uri="${media_file//\.\//\/}"
 | 
			
		||||
 | 
			
		||||
		# Path to the image home.
 | 
			
		||||
		dir_uri="`dirname $media_uri`"
 | 
			
		||||
 | 
			
		||||
		# Prepare variables which will be used throughout the loop.
 | 
			
		||||
		media_name="`basename $media_uri`"
 | 
			
		||||
		dir_name="`basename $dir_uri`"
 | 
			
		||||
 | 
			
		||||
		# This must be after the dir_name has been pulled.
 | 
			
		||||
		dir_uri="$dir_uri/index.html"
 | 
			
		||||
 | 
			
		||||
		# Do not show the file extension for the filename.
 | 
			
		||||
		media_name="${media_name%%.*}"
 | 
			
		||||
 | 
			
		||||
		# Change underscores and dashes to be spaces for better overflow.
 | 
			
		||||
		media_name="${media_name//_/ }"
 | 
			
		||||
		media_name="${media_name//-/ }"
 | 
			
		||||
		dir_name="${dir_name//_/ }"
 | 
			
		||||
		dir_name="${dir_name//-/ }"
 | 
			
		||||
 | 
			
		||||
		media="<img src='$media_uri' alt='' style='width:100%'>"
 | 
			
		||||
 | 
			
		||||
		# Determine how to show the file.
 | 
			
		||||
		if [[ $media_uri == *".mp4" ]]; then
 | 
			
		||||
			media="<video controls style='width:100%'>"
 | 
			
		||||
			media="${media}<source src='$media_uri' type=video/mp4>"
 | 
			
		||||
			media="${media}Your browser does not support videos."
 | 
			
		||||
			media="${media}</video>"
 | 
			
		||||
			media_name="$media_name [VIDEO]"
 | 
			
		||||
		elif [[ $media_uri == *".md" || $media_uri == *".txt" ]]; then
 | 
			
		||||
			media="<p>`cat $media_file`</p>"
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Add a row if count has reset.
 | 
			
		||||
		if [[ -z $count ]]; then
 | 
			
		||||
			count=0
 | 
			
		||||
		fi
 | 
			
		||||
		if [[ $count == 0 ]]; then
 | 
			
		||||
			echo -e "\t\t</div>" >> $allpage
 | 
			
		||||
			echo -e "\t\t<div class='row text'>" >> $allpage
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Add a column.
 | 
			
		||||
		echo -e "\t\t\t<div class=col-3>" >> $allpage
 | 
			
		||||
 | 
			
		||||
		# Add the image.
 | 
			
		||||
		echo -e "\t\t\t\t<div class=center>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t\t<$a href='$media_uri'>$media</a>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t</div>" >> $allpage
 | 
			
		||||
 | 
			
		||||
		# Add the URLs.
 | 
			
		||||
		echo -e "\t\t\t\t<div class=center>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t\t<p><$a href='$dir_uri'>$dir_name</a></p>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t</div>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t<div class=center>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t\t<p><$a href='$media_uri'>$media_name</a></p>" >> $allpage
 | 
			
		||||
		echo -e "\t\t\t\t</div>" >> $allpage
 | 
			
		||||
 | 
			
		||||
		# Close the column.
 | 
			
		||||
		echo -e "\t\t\t</div>" >> $allpage
 | 
			
		||||
 | 
			
		||||
		# Close the row and reset the the count if full.
 | 
			
		||||
		if [[ $count == 3 ]]; then
 | 
			
		||||
			echo -e "\t\t</div>" >> $allpage
 | 
			
		||||
			count=0
 | 
			
		||||
		else
 | 
			
		||||
			count=$(( count + 1 ))
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# Add a final back button.
 | 
			
		||||
	echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $allpage
 | 
			
		||||
	echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $allpage
 | 
			
		||||
 | 
			
		||||
	# Finish the ALL page.
 | 
			
		||||
	$HELPER_DIR/body_close.php >> $allpage
 | 
			
		||||
	echo "<!-- Built on `date`. -->" >> $allpage
 | 
			
		||||
	remove_problem_strings $allpage
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Main ##
 | 
			
		||||
beg_time="$SECONDS"
 | 
			
		||||
 | 
			
		||||
start_main_page
 | 
			
		||||
build_album_pages
 | 
			
		||||
build_all_page
 | 
			
		||||
end_main_page
 | 
			
		||||
 | 
			
		||||
end_time="$SECONDS"
 | 
			
		||||
time="$(( $end_time - $beg_time ))"
 | 
			
		||||
echo "<!-- Script took '$time' seconds to process. -->" >> $mainpage
 | 
			
		||||
 | 
			
		||||
cat $mainpage
 | 
			
		||||
exit 0
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										70
									
								
								pages/resources.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										70
									
								
								pages/resources.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	/* Lists of items which I'd like to share such as gear and frequently used apps. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Resources";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Lists of Resources</h1>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<!-- Books -->
 | 
			
		||||
		<div class="row text" id="books">
 | 
			
		||||
			<h3 class="col-3">
 | 
			
		||||
				Books
 | 
			
		||||
			</h3>
 | 
			
		||||
			<div class="col-9">
 | 
			
		||||
				<p>
 | 
			
		||||
					TBD/TODO: Berk list description goes here!
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Another line fortesting.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Yet another line fortesting.
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul>
 | 
			
		||||
					<li>
 | 
			
		||||
						The Peaceful Warrior
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
						TBD: Name of book on healing through breathing and posture.
 | 
			
		||||
					</li>
 | 
			
		||||
					<li>
 | 
			
		||||
						The Untethered Soul / Living Untethered
 | 
			
		||||
					</li>
 | 
			
		||||
				</ul>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<!-- Apps -->
 | 
			
		||||
		<div class="row text" id="apps">
 | 
			
		||||
			<h3 class="col-3">
 | 
			
		||||
				<a target='_blank' rel='noopener noreferrer'
 | 
			
		||||
					href="https://git.hyperling.com/me/env-obtainium">
 | 
			
		||||
					Apps (Repo TBD/TODO)
 | 
			
		||||
				</a>
 | 
			
		||||
			</h3>
 | 
			
		||||
			<div class="col-9">
 | 
			
		||||
				<p>
 | 
			
		||||
					Obtaiumiun config for apps that I use on a degoogled Android phone.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<!-- Gear -->
 | 
			
		||||
		<div class="row text" id="gear">
 | 
			
		||||
			<h3 class="col-3">
 | 
			
		||||
				Gear
 | 
			
		||||
			</h3>
 | 
			
		||||
			<div class="col-9">
 | 
			
		||||
				<p>
 | 
			
		||||
					Important gear I recommend.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
@@ -1,16 +1,15 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Page for my resume and work skill links.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	/* Page for my resume and work skill links. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Resume";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Resume</h1>
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/home.jpg" alt=""> <!-- TBD use a new photo -->
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
@@ -18,25 +17,15 @@
 | 
			
		||||
				<p>
 | 
			
		||||
					Interested in hiring me? View my resume below!
 | 
			
		||||
				</p>
 | 
			
		||||
				<ul class="indent"><li>
 | 
			
		||||
				<!--<ul class="indent"><li>-->
 | 
			
		||||
					<a href="https://hyperling.com/files/media/documents/Resume.pdf"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>
 | 
			
		||||
						[PDF] | Direct Download
 | 
			
		||||
					</a>
 | 
			
		||||
				</li></ul>
 | 
			
		||||
				<!-- For those sneaky folks who look at source code. ;)
 | 
			
		||||
				<ul class="indent"><li>
 | 
			
		||||
					<a href="https://hyperling.com/files/media/documents/resume.md"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>
 | 
			
		||||
						[Markdown] | Direct Download
 | 
			
		||||
					</a>
 | 
			
		||||
				</li></ul>
 | 
			
		||||
				-->
 | 
			
		||||
				<!--</li></ul>-->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "helpers/body_close.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										108
									
								
								pages/subpages/home/announcements.php
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										108
									
								
								pages/subpages/home/announcements.php
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<?php
 | 
			
		||||
	$long = true;
 | 
			
		||||
?>
 | 
			
		||||
		<div class="row" id="obtainium">
 | 
			
		||||
			<h2 class="col-12 header">Announcements</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong><a href="/freedom/">2025-09-28</a></strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					I wrote another short free eBook, "Voluntary Sovereignty", check it out
 | 
			
		||||
					<a href="/freedom/">here</a>!
 | 
			
		||||
				</p>
 | 
			
		||||
				<?php	if ($long) echo "
 | 
			
		||||
				<p>
 | 
			
		||||
					It discusses how to live in order to create a truly free society,
 | 
			
		||||
					as well as how to conduct oneself in today's authoritarian system.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Learn what your rights are and how to avoid being harassed by
 | 
			
		||||
					order followers while living how you were meant to be on the Earth.
 | 
			
		||||
				</p>
 | 
			
		||||
				";?>
 | 
			
		||||
				<p>
 | 
			
		||||
					<a href="https://odysee.com/@HyperVegan:2/20251003-Announcements:0"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Watch the announcement here | (HyperVegan: "Announcements: Skipped Midfest, Voluntary Sovereignty eBook, CheapRVLiving Interview")</a>
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong><a href="/apps/#expense">2025-03-27</a></strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					My new Android app
 | 
			
		||||
					<a href="/apps/#expense">"Expense Tracker"</a>
 | 
			
		||||
					has been completed!
 | 
			
		||||
				</p>
 | 
			
		||||
				<?php	if ($long) echo "
 | 
			
		||||
				<p>
 | 
			
		||||
					It allows for tracking recurring expenses against income and static assets,
 | 
			
		||||
					helping plan for financial planning and savings goals.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					This is my first app developed using the Flutter framework.
 | 
			
		||||
				</p>
 | 
			
		||||
				";?>
 | 
			
		||||
				<p>
 | 
			
		||||
					<a href="https://odysee.com/@HyperVegan:2/20250402-HyperVegan-ExpenseTrackerApp:4"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Watch the announcement here | (HyperVegan: "Expense Tracker App")</a>
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong><a href="/health/">2024-03-07</a></strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					Find my free eBook, "Hyperling's Health Protocol",
 | 
			
		||||
					<a href="/health/">here</a>!
 | 
			
		||||
				</p>
 | 
			
		||||
				<?php	if ($long) echo "
 | 
			
		||||
				<p>
 | 
			
		||||
					It contains a summary of my favorite and most useful lifestyle advice.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					These range across the basics of food / water / sleep / exercise
 | 
			
		||||
					as well as less discussed topics of environment and positivity.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					Reverse chronic disease and live your life full of energy and abundance!
 | 
			
		||||
				</p>
 | 
			
		||||
				";?>
 | 
			
		||||
				<p>
 | 
			
		||||
					<a href="https://odysee.com/@HyperVegan:2/20240306_MyHealthProtocol-Book:9"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Watch the announcement here | (HyperVegan: "My Health Protocol | eBook")</a>
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<strong><a href="/apps/#tictactoe">2024-03-31</a></strong>
 | 
			
		||||
				<p>
 | 
			
		||||
					There's a new app in town,
 | 
			
		||||
					<a href="/apps/#tictactoe">Tic-Tac-Toe</a>!
 | 
			
		||||
				</p>
 | 
			
		||||
				<?php	if ($long) echo "
 | 
			
		||||
				<p>
 | 
			
		||||
					This was written to learn Kotlin style Android programming.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					It allows playing against a range of automated opponents,
 | 
			
		||||
					as well as a local human player!
 | 
			
		||||
				</p>
 | 
			
		||||
				";?>
 | 
			
		||||
				<p>
 | 
			
		||||
					<a href="https://odysee.com/@HyperVegan:2/20240401_NewYearNewApp:1"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer"
 | 
			
		||||
					>Watch the announcement here | (HyperVegan: "New Year, New App")</a>
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
@@ -1,222 +0,0 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
		<div class="row" id="experience">
 | 
			
		||||
			<h2 class="col-12 header">My Profession</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					I'm a professional software engineer who's been playing with
 | 
			
		||||
					Linux system administration from a young age. Much of my career
 | 
			
		||||
					has focused on back-end / database systems and optimizing
 | 
			
		||||
					workflows. In my free time I enjoy learning new languages and
 | 
			
		||||
					writing apps for Android.
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p><a href="/resume/">My resume can be found here</a>.</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="programs">
 | 
			
		||||
			<h2 class="col-12 header">Public Programs</h2>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					Please feel welcome to use any of my free software below.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="android">
 | 
			
		||||
			<h3 class="col-12 header">Android Apps</h3>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row center text">
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="expense">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/expense.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Recurring Expense Tracker
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Keep track of repeating expenses and
 | 
			
		||||
					view projections of their effect on your finances.
 | 
			
		||||
					First app written with Flutter.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<s><a>F-Droid</a></s>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/flutter-expense-tracker/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/flutter-expense-tracker/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="tictactoe">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-tictactoe/releases">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/tictactoe.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Tic-Tac-Toe
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Play against a friend or a range of AIs.
 | 
			
		||||
					Written to practice Kotlin/Compose.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<s><a>F-Droid</a></s>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-tictactoe/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-tictactoe/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="ctfu">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-carb-up/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/ctfu.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Carb Up! BETA
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Calculate cost-effective foods on a High Carb Low Fat lifestyle.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.carbupbeta"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-carb-up/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-carb-up/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="timer">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-infinite-timer/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer"
 | 
			
		||||
				>
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/infinitetimer.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							Infinite Timer
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Play a notification at your chosen interval.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.apps.infinitetimer"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-infinite-timer/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-infinite-timer/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="sleep">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer">
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/t45mr.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
							45 Minute Rule
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Determine a good bedtime for waking during light sleep.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=com.hyperling.apps.the45minuterule"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-45-minute-rule/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>-->
 | 
			
		||||
			</div>
 | 
			
		||||
 | 
			
		||||
			<div class="col-12 text border" id="games">
 | 
			
		||||
				<a href="https://git.hyperling.com/me/android-hypergames/releases"
 | 
			
		||||
					target="_blank" rel="noopener noreferrer"
 | 
			
		||||
				>
 | 
			
		||||
					<figure>
 | 
			
		||||
						<img class="app-icon" loading="lazy" alt=""
 | 
			
		||||
							src="/files/media/icons/hypergames.png"
 | 
			
		||||
						>
 | 
			
		||||
						<figcaption>
 | 
			
		||||
								HyperGames
 | 
			
		||||
						</figcaption>
 | 
			
		||||
					</figure>
 | 
			
		||||
				</a>
 | 
			
		||||
				<p>
 | 
			
		||||
					Started as a fun project for learning.
 | 
			
		||||
					Playable but unfinished.
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					<!--[<a href="https://play.google.com/store/apps/details?id=apps.hyperling.com.platformer"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Play Store</a>]-->
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-hypergames/"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">Source Code</a>]
 | 
			
		||||
					[<a href="https://git.hyperling.com/me/android-hypergames/releases"
 | 
			
		||||
						target="_blank" rel="noopener noreferrer">APKs / Obtainium URL</a>]
 | 
			
		||||
				</p>
 | 
			
		||||
				<!--
 | 
			
		||||
				<p>
 | 
			
		||||
					<s>
 | 
			
		||||
						[<a target="_blank" rel="noopener noreferrer">F-Droid</a>]
 | 
			
		||||
					</s>
 | 
			
		||||
				</p>
 | 
			
		||||
				-->
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
		<div class="row" id="other">
 | 
			
		||||
			<h3 class="col-12 header">Other Programs</h3>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					For a full list of software including my Ansible automation,
 | 
			
		||||
					Docker setup, source code for this website, and other
 | 
			
		||||
					fun/random toys, check out
 | 
			
		||||
					<a href="https://git.hyperling.com/me" target="_blank">My Projects</a>.
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
@@ -50,7 +50,7 @@
 | 
			
		||||
						<code>me@hyperling.com</code>
 | 
			
		||||
						<br>
 | 
			
		||||
						<br>
 | 
			
		||||
						<img src="/files/media/icons/zelle.png" alt="">
 | 
			
		||||
						<img src="/files/media/icons/zelle.png" alt="<<zelle.png>>">
 | 
			
		||||
					</div>
 | 
			
		||||
					<br>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +1,26 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
	Page to provide ways people can support me.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	/* Page to provide ways people can support me. */
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Support";
 | 
			
		||||
	}
 | 
			
		||||
	include "helpers/body_open.php";
 | 
			
		||||
?>
 | 
			
		||||
 | 
			
		||||
		<div class="row">
 | 
			
		||||
			<h1 class="col-12 title">Support</h1>
 | 
			
		||||
			<?php if (isset($GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
				&& !$GLOBALS["SHOW_BANNER_PICS"])
 | 
			
		||||
			echo '
 | 
			
		||||
			<div class="col-12 header center" >
 | 
			
		||||
				<img src="/files/media/icons/support.jpg" alt="">
 | 
			
		||||
				<img src="/files/media/icons/support.jpg" alt="<<support.jpg>>">
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="col-12 text center">
 | 
			
		||||
			';?>
 | 
			
		||||
			<div class="col-12 header center">
 | 
			
		||||
				<p>
 | 
			
		||||
					Anything is very much appreciated!! Thank you for considering me!
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
 | 
			
		||||
<?php
 | 
			
		||||
	include "subpages/support/donate.php";
 | 
			
		||||
	// 2025-01-04 Not really looking for this type of thing.
 | 
			
		||||
 
 | 
			
		||||
@@ -4,27 +4,33 @@
 | 
			
		||||
cd `dirname $0`
 | 
			
		||||
 | 
			
		||||
# Create the necessary HTML components for a web page.
 | 
			
		||||
./helpers/body_open.php
 | 
			
		||||
echo -e "\t\t<h1>This is a web page written in BASH!!!</h1>"
 | 
			
		||||
./helpers/body_open.php | sed -e 's/Hyperling/Hyperling: Test Page!/'
 | 
			
		||||
echo -e "\t\t<div class='row'>"
 | 
			
		||||
echo -e "\t\t\t<h1 class='col-12 title'>This is a web page written in BASH!!!</h1>"
 | 
			
		||||
 | 
			
		||||
cat << EOF
 | 
			
		||||
		<p>
 | 
			
		||||
			<p class="col-12 text">
 | 
			
		||||
				Look at all the fancy things we can do!
 | 
			
		||||
			</p>
 | 
			
		||||
		<h2>Current Time</h2>
 | 
			
		||||
 | 
			
		||||
			<h2 class="col-12 header">Current Time</h2>
 | 
			
		||||
			<div class="col-12 text">
 | 
			
		||||
				<p>
 | 
			
		||||
					We can use the date command to spit out the time!
 | 
			
		||||
				</p>
 | 
			
		||||
				<p>
 | 
			
		||||
					`date`
 | 
			
		||||
				</p>
 | 
			
		||||
			</div>
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
# Create a subsection
 | 
			
		||||
echo -e "\t\t<h2>Server Neofetch</h2>"
 | 
			
		||||
echo -e "\t\t<p>"
 | 
			
		||||
#neofetch --stdout
 | 
			
		||||
echo "jk lol"
 | 
			
		||||
echo -e "\t\t</p>"
 | 
			
		||||
echo -e "\t\t\t<h2 class='col-12 header'>Server Neofetch</h2>"
 | 
			
		||||
echo -en "\t\t\t<p class='col-12 text'>"
 | 
			
		||||
#neofetch --stdout | sed -e 's/\n/<br>/g'
 | 
			
		||||
echo -n "jk lol"
 | 
			
		||||
echo -e "</p>"
 | 
			
		||||
echo -e "\t\t</div>"
 | 
			
		||||
 | 
			
		||||
# Finish the web page
 | 
			
		||||
./helpers/body_close.php
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,11 @@
 | 
			
		||||
#!/usr/bin/php
 | 
			
		||||
<!--
 | 
			
		||||
<?php
 | 
			
		||||
	/*
 | 
			
		||||
		Old page for my video links.
 | 
			
		||||
		Deprecated 2024-03-06 for /media.
 | 
			
		||||
-->
 | 
			
		||||
<?php
 | 
			
		||||
	*/
 | 
			
		||||
	if (!isset($GLOBALS["HEADER_TITLE"])) {
 | 
			
		||||
		$GLOBALS["HEADER_TITLE"] = "Videos";
 | 
			
		||||
	}
 | 
			
		||||
	include "media.php";
 | 
			
		||||
?>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										89
									
								
								run.sh
									
									
									
									
									
								
							
							
						
						
									
										89
									
								
								run.sh
									
									
									
									
									
								
							@@ -4,8 +4,14 @@
 | 
			
		||||
 | 
			
		||||
## Setup ##
 | 
			
		||||
 | 
			
		||||
DIR=`dirname $0`
 | 
			
		||||
PROG=`basename $0`
 | 
			
		||||
DIR="$(dirname -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
PROG="$(basename -- "${BASH_SOURCE[0]}")"
 | 
			
		||||
 | 
			
		||||
# Ensure we are executing from this file's directory.
 | 
			
		||||
cd $DIR
 | 
			
		||||
DIR="`pwd`"
 | 
			
		||||
NAME="'$DIR/$PROG'"
 | 
			
		||||
echo $NAME
 | 
			
		||||
 | 
			
		||||
## Functions ##
 | 
			
		||||
 | 
			
		||||
@@ -21,6 +27,27 @@ function usage {
 | 
			
		||||
	exit $1
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function log {
 | 
			
		||||
	message="$1"
 | 
			
		||||
	echo -e "`date` - $message"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
log "Local process information:"
 | 
			
		||||
ps $$
 | 
			
		||||
function check_main {
 | 
			
		||||
	if [[ -z "$1" ]]; then
 | 
			
		||||
		echo "ERROR: Subprocess name was not provided. $1"
 | 
			
		||||
		exit 0
 | 
			
		||||
	fi
 | 
			
		||||
	log "Subprocess '$1' checking if main process is still running..."
 | 
			
		||||
	ps $$ >/dev/null
 | 
			
		||||
	status=$?
 | 
			
		||||
	if [[ $status != 0 ]]; then
 | 
			
		||||
		log "Process '$$' not found, '$1' from '$DIR/$PROG' exiting."
 | 
			
		||||
		exit 0
 | 
			
		||||
	fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
## Parameters ##
 | 
			
		||||
 | 
			
		||||
while getopts ':p:h' opt; do
 | 
			
		||||
@@ -36,33 +63,49 @@ while getopts ':p:h' opt; do
 | 
			
		||||
	esac
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
if [[ -z $ports ]]; then
 | 
			
		||||
	ports=8080
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
## Build Environment ##
 | 
			
		||||
 | 
			
		||||
# Ensure we are executing from this file's directory.
 | 
			
		||||
cd $DIR
 | 
			
		||||
 | 
			
		||||
sudo=""
 | 
			
		||||
if [[ -z $LOGNAME ]]; then
 | 
			
		||||
	LOGNAME="`whoami`"
 | 
			
		||||
fi
 | 
			
		||||
if [[ $LOGNAME != "root" ]]; then
 | 
			
		||||
	echo "`date` - Using sudo since user is '$LOGNAME'."
 | 
			
		||||
	log "Using sudo since user is '$LOGNAME'."
 | 
			
		||||
	sudo="sudo"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
echo "`date` - Check if any system dependencies need installed."
 | 
			
		||||
log "Check if any system dependencies need installed."
 | 
			
		||||
progs=""
 | 
			
		||||
if [[ ! `which php` ]]; then
 | 
			
		||||
	echo "- Installing PHP"
 | 
			
		||||
	$sudo apt-get install -y php-cli
 | 
			
		||||
	progs="$progs php-cli"
 | 
			
		||||
fi
 | 
			
		||||
if [[ ! `which node` ]]; then
 | 
			
		||||
	echo "- Installing Node"
 | 
			
		||||
	$sudo apt-get install -y nodejs
 | 
			
		||||
	progs="$progs nodejs"
 | 
			
		||||
fi
 | 
			
		||||
if [[ ! `which npm` ]]; then
 | 
			
		||||
	echo "- Installing NPM"
 | 
			
		||||
	$sudo apt-get install -y npm
 | 
			
		||||
	progs="$progs npm"
 | 
			
		||||
fi
 | 
			
		||||
if [[ ! `which curl` ]]; then
 | 
			
		||||
	echo "- Installing Curl"
 | 
			
		||||
	progs="$progs curl"
 | 
			
		||||
fi
 | 
			
		||||
if [[ ! `which ps` ]]; then
 | 
			
		||||
	echo "- Installing PS"
 | 
			
		||||
	progs="$progs procps"
 | 
			
		||||
fi
 | 
			
		||||
if [[ -n "$progs" ]]; then
 | 
			
		||||
	$sudo apt-get install -y $progs
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# Directories and allowed page types are executable, others are not.
 | 
			
		||||
echo "`date` - Fix any strange file permissions."
 | 
			
		||||
log "Fix any strange file permissions."
 | 
			
		||||
find ./pages/ | while read file; do
 | 
			
		||||
	if [[ $file == *".php" || $file == *".sh" || -d $file ]]; then
 | 
			
		||||
		mode=755
 | 
			
		||||
@@ -72,16 +115,34 @@ find ./pages/ | while read file; do
 | 
			
		||||
	chmod -c $mode $file
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "`date` - Check if any node modules need updated/installed."
 | 
			
		||||
log "Check if any node modules need updated/installed."
 | 
			
		||||
npm install
 | 
			
		||||
 | 
			
		||||
# Reset generated index files.
 | 
			
		||||
log "Removing old index files."
 | 
			
		||||
find files/photos/ -name "*".html -print -delete
 | 
			
		||||
{
 | 
			
		||||
	check_main photos
 | 
			
		||||
	$DIR/check_photos.sh "$ports"
 | 
			
		||||
} &
 | 
			
		||||
 | 
			
		||||
## Main ##
 | 
			
		||||
 | 
			
		||||
echo "`date` - Start website API."
 | 
			
		||||
log "Start check_git."
 | 
			
		||||
while true; do
 | 
			
		||||
	check_main check_git
 | 
			
		||||
	$DIR/check_git.sh
 | 
			
		||||
	sleep 30
 | 
			
		||||
done &
 | 
			
		||||
 | 
			
		||||
log "Start website API."
 | 
			
		||||
node ./main.js $ports
 | 
			
		||||
status=$?
 | 
			
		||||
 | 
			
		||||
## Finish ##
 | 
			
		||||
 | 
			
		||||
echo "`date` - Exiting with status '$status'."
 | 
			
		||||
log "Kill spawned processes."
 | 
			
		||||
pkill -eP $$
 | 
			
		||||
 | 
			
		||||
log "Exiting with status '$status'."
 | 
			
		||||
exit $status
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user