Compare commits

...

76 Commits

Author SHA1 Message Date
8a8845d898 Merge pull request '¡Hyperling.com 2.0!' (#16) from dev into main
Reviewed-on: #16
2025-10-14 14:54:53 -07:00
65be246673 Remove idea, working fine without it. 2025-10-14 14:38:27 -07:00
eabf56ed93 Specify that this is not a TODO, just listing TODO items. 2025-10-14 14:38:01 -07:00
d55b13ecbf Add more comments. 2025-10-14 14:03:28 -07:00
cc8a7710a1 Enhance comment on WHY there is nothing to do. :) 2025-10-14 14:01:52 -07:00
ad83090b05 Add further comments for future self and others. 2025-10-14 14:01:08 -07:00
684c237ac1 Remove excess exit and provide output var in case it's helpful in later debugging. 2025-10-14 13:57:33 -07:00
23c0090a47 Only run apt install command once. 2025-10-14 13:51:58 -07:00
e57ec6de50 Add automatic restart if a primary program is updated. 2025-10-14 13:47:38 -07:00
c790dd6736 Reword the output. 2025-10-14 13:41:46 -07:00
6e3666cea2 Begin watching git's status too, not just the grep status of not already being up to date. Add more conditional branches so that errors are logged properly. 2025-10-14 13:37:55 -07:00
7379df38de Make output even more succint. Remove duplicate cd command. 2025-10-14 13:11:37 -07:00
2a915fec69 Fancify script. 2025-10-14 13:06:21 -07:00
fa0e9907ee Use full executable path. Move the ps information out of the loop to prevent log spam. 2025-10-14 13:06:11 -07:00
2c3b5056ae Use a single echo command to announce the program's run. 2025-10-14 12:52:07 -07:00
f5e0c39458 Change announcement wording. Refactor code HTML. 2025-10-14 12:51:06 -07:00
645093da36 Add the announcement video to Freedom page. 2025-10-14 12:48:39 -07:00
f57583b1a9 Refactor comments and output. 2025-10-14 12:46:57 -07:00
51b2ebf8e6 Do not do a full kill, allows website to keep uptime while getting updates. 2025-10-14 12:36:57 -07:00
5a6d91296d Change label for local cronjob. 2025-10-14 12:23:28 -07:00
5306cb78d3 Change to the proper package name for ps. 2025-10-14 12:17:17 -07:00
749a018a6e Remove rebase since files/ is being ignored in Docker container. 2025-10-14 12:16:59 -07:00
f212c41734 Add ps requirement, missing from Docker container! 2025-10-14 11:53:13 -07:00
cba46bfc23 Add explicit rebase. 2025-10-14 11:51:19 -07:00
b734be4054 Enable kill mode. 2025-10-14 11:50:50 -07:00
45915d2914 Add comment on how to stop the 2025-10-14 11:48:55 -07:00
1fa30724d2 Use a parent process checker for both forked jobs. 2025-10-14 11:43:03 -07:00
6def1a3007 Echo the killed processes. 2025-10-14 11:26:43 -07:00
ed7c2b8b29 Add automatic execution of cronjob through run script. 2025-10-14 11:25:35 -07:00
3fcd6af3a9 Move cd to be more in the program. 2025-10-14 11:24:14 -07:00
8507cbd189 Add dedicated cronjob file for keeping the project in sync on docker containers. 2025-10-14 11:18:39 -07:00
8207702442 Make the dates pop a bit more. 2025-10-14 10:30:22 -07:00
0ec47180e2 Add part about testing. 2025-10-14 10:30:08 -07:00
c28f7a92d9 Break open HTML so it is more readable. Add comment for gap. 2025-10-14 10:19:02 -07:00
2d270542f0 Add subtitles of eBooks, as well as a small gap between the list items. 2025-10-14 10:17:51 -07:00
ba0cfe8b56 Show advisory on this page since they are no longer related. 2025-10-14 10:17:24 -07:00
fa8eef51ff Reword and refactor advisory. 2025-10-14 10:12:27 -07:00
730940b003 Remove All, seems too wordy. 2025-10-14 09:58:35 -07:00
58fab1850b Place subtitle header in its own row. 2025-10-14 06:39:28 -07:00
a5b6227fef Remove indentation on centered link. Remove comment with Markdown link. 2025-10-14 06:37:14 -07:00
999a919a7f Remove title image. 2025-10-14 06:33:27 -07:00
9afec80742 Remove title image. 2025-10-14 06:33:18 -07:00
550485093c Remove TBD. 2025-10-14 06:33:04 -07:00
3a736dec82 Remove TBD. 2025-10-14 06:32:54 -07:00
15bbb2e33e Add links to announcement videos. 2025-10-14 06:30:24 -07:00
c2193c9651 Refactor banner image CSS. 2025-10-14 06:30:03 -07:00
e0ae65304d Get the banner images to play MUCH better thanks to midnight epiphany of using background. :) 2025-10-14 06:00:26 -07:00
3273fb62c8 Remove extra newlines around PHP tags. 2025-10-13 15:37:52 -07:00
0d3822258f Change intro text to consistently use header class as the background color. 2025-10-13 15:34:27 -07:00
825bf62851 Change wording about offline time. 2025-10-13 15:25:02 -07:00
46e357d2bb Hide media photo even if banner does not have photos. 2025-10-13 15:23:44 -07:00
8f24d80e8d Add variable to control whether the advisory is shown so that it can easily be toggled. Helps during testing! 2025-10-13 15:22:07 -07:00
c6289be09c Found another page with a title photo. Disable if banner photos are on. 2025-10-13 15:21:28 -07:00
24af65bfeb Use the global variable to determine whether page title images are shown. No if images are in the banner. Yes if the banner is only the logo. 2025-10-13 15:18:48 -07:00
c479aa5b73 Use a global variable for whether the banner images are being shown. 2025-10-13 15:18:02 -07:00
1cec38a99e Remove extra newline. 2025-10-13 15:11:54 -07:00
a8b60b5662 Set the banner pics to true for a while. 2025-10-13 15:10:59 -07:00
3053b941d7 Change mode of new announcements file. 2025-10-13 15:08:47 -07:00
63da008d41 Remove the hardcoded height of the banner. 2025-10-13 15:07:30 -07:00
41dd1719ac Add ability to have images surround the banner. 2025-10-13 15:06:55 -07:00
692b6523a1 Change from "Latest" to "All" announcements. 2025-10-13 14:43:15 -07:00
8699e8094d Remove old spacers. Did not look good with the double rows. 2025-10-13 07:11:57 -07:00
3429ffc4f6 Add note on why Confused section of Obtainum config is commented. 2025-10-13 07:11:09 -07:00
fa07738520 Change menu link for Videos to go directly to Odysee. 2025-10-13 07:08:39 -07:00
06b35c2091 Add TBD for image on Apps page. 2025-10-13 07:05:47 -07:00
7e1162ae39 Add placeholder alt text for all images. 2025-10-13 07:03:55 -07:00
930364f8d1 Fix the announcements header, does not need redundant image. 2025-10-13 06:59:36 -07:00
e9831646a7 Change more wording in announcements. 2025-10-13 06:57:03 -07:00
f01f8e5e82 Edit layout, linking, and wording of announcements. 2025-10-13 06:52:27 -07:00
363242a4d5 Add and style historic announcements. Still needs work. 2025-10-13 06:40:53 -07:00
214ac0d594 Create the announcements subpage. 2025-10-13 06:06:28 -07:00
7ce1c5216f Change the homepage to be a list of announcements. 2025-10-13 06:06:18 -07:00
c7c3485896 Move the Apps page to be standalone. 2025-10-13 06:05:59 -07:00
06c0a5ae46 Change menu to have media types broken out. 2025-10-13 05:43:53 -07:00
fa37d4d0ee Reword the Obtainium section and add subheaders. 2025-10-09 14:03:34 -07:00
5cbe5372ea Add link to Obtainium configuration. 2025-10-09 13:56:52 -07:00
25 changed files with 652 additions and 337 deletions

View File

@@ -25,7 +25,7 @@ cd www
Then in a web browser, navigate to `localhost:8080`.
## TODO
## TODO Items
All goals are currently completed.

66
cronjob.sh Executable file
View File

@@ -0,0 +1,66 @@
#!/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 {
# Nothing to do, run.sh and main.js automatically uses the latest files.
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

View File

@@ -5,15 +5,18 @@
}
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!
@@ -26,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
@@ -51,7 +53,6 @@
</p>
</div>
</div>
<?php
include "subpages/about/notice.php";
include "subpages/about/health.php";

View File

@@ -6,5 +6,285 @@
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Apps";
}
include "home.php";
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";
?>

10
pages/books.php Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/php
<!--
Alias for where Books menu item should go.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Books";
}
include "media.php";
?>

View File

@@ -5,21 +5,28 @@
}
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>
@@ -42,7 +49,6 @@
</li></ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -5,12 +5,8 @@
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Current Diet</h1>
<div class="col-12 header center" >
<img src="/files/media/icons/tbd.jpg" alt="Image TBD">
</div>
</div>
<div class="row">
<div class="col-12 text">
@@ -208,7 +204,6 @@
</ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -9,7 +9,6 @@
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Voluntary Sovereignty</h1>
</div>
@@ -59,16 +58,30 @@
<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>
<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";
?>

View File

@@ -3,13 +3,12 @@
Page to provide ways people can support me.
-->
<?php
$GLOBALS["ADVISORY"] = false;
//$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>
@@ -109,7 +108,6 @@
</ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -1,12 +1,13 @@
#!/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>
<div class="row center title" id="advisory">
<i><h2 class="col-12 title">Latest Announcement</h2></i>
<a href="/freedom/">
<div class="col-12 text">
<u class="orange">2025-09-28</u>
@@ -16,3 +17,5 @@
</div>
</a>
</div>
';
?>

View File

@@ -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");
}

View File

@@ -1,8 +1,32 @@
#!/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">
<!-<img src="/files/media/icons/home.jpg"
alt="<<banner01.jpg>>"
>-->
</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">
<!--<img src="/files/media/icons/contact.jpg"
alt="<<banner02.jpg>>"
>-->
</div>
';?>
</div>
</a>

View File

@@ -2,6 +2,5 @@
<?php
include "footer.php"
?>
</body>
</html>

View File

@@ -2,9 +2,7 @@
<?php
include "header.php";
?>
<body>
<?php
include "banner.php";
include "menu.php";

View File

@@ -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>

View File

@@ -4,19 +4,22 @@
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Home";
$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
@@ -24,9 +27,8 @@
</p>
</div>
</div>
<?php
include "subpages/home/apps.php";
include "subpages/home/announcements.php";
include "helpers/body_close.php";
?>

View File

@@ -8,15 +8,18 @@
}
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>
@@ -32,11 +35,18 @@
<p>
I enjoy writing! Find my free eBooks below.
</p>
<ul class="indent"><li>
2025-09-28: <a href="/freedom/">Voluntary Sovereignty</a>
</li><li>
2024-03-07: <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>
@@ -107,7 +117,6 @@
</li></ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -41,7 +41,7 @@ function start_main_page {
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 -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

View File

@@ -8,7 +8,6 @@
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Lists of Resources</h1>
</div>
@@ -68,7 +67,6 @@
</p>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -8,12 +8,10 @@
}
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>
<div class="row">
<h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
</div>
<div class="row">
@@ -21,25 +19,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";
?>

View File

@@ -0,0 +1,109 @@
#!/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>
</a>
</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>

View File

@@ -1,244 +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="obtainium">
<h4 class="col-12 header">Obtainium Configuration</h4>
</div>
<div class="row text">
<div class="col-12 text">
<p>
In order to have the correct version numbers in Obtainium:
</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, <i>"Take first link"</i> works with pseudo versions.
</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>

View File

@@ -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>

View File

@@ -8,19 +8,21 @@
}
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.

56
run.sh
View File

@@ -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 ##
@@ -26,6 +32,22 @@ function log {
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
@@ -47,9 +69,6 @@ fi
## Build Environment ##
# Ensure we are executing from this file's directory.
cd $DIR
sudo=""
if [[ -z $LOGNAME ]]; then
LOGNAME="`whoami`"
@@ -60,21 +79,29 @@ if [[ $LOGNAME != "root" ]]; then
fi
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"
$sudo apt-get install -y 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.
@@ -95,6 +122,7 @@ npm install
log "Removing old index files."
find files/photos/ -name "*".html -print -delete
{
check_main photos
count=1
http_code=0
port="${ports%% *}"
@@ -120,11 +148,21 @@ find files/photos/ -name "*".html -print -delete
## Main ##
log "Start local cronjob."
while true; do
check_main cronjob
$DIR/cronjob.sh
sleep 30
done &
log "Start website API."
node ./main.js $ports
status=$?
## Finish ##
log "Kill spawned processes."
pkill -eP $$
log "Exiting with status '$status'."
exit $status