Compare commits

...

266 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
e9743ad37c Merge pull request 'Gitea URLs for Health Page, Simplify Freedom Page' (#15) from dev into main
Reviewed-on: #15
2025-10-05 01:25:35 +00:00
d2aac5eedf Also simplify the Freedom page's booklets. Much cleaner and less for people to read. 2025-10-04 18:23:03 -07:00
9b7bed3573 Point PDF link to Gitea. Add URLs for the booklet versions. 2025-10-04 17:44:26 -07:00
506f9a2502 latest tag works properly once the manual release is deleted! YAY!! 2025-10-04 14:04:21 -07:00
905501c4ac Merge pull request 'New Voluntary Sovereignty eBook Version' (#14) from dev into main
Reviewed-on: #14
2025-10-04 20:36:04 +00:00
a6359112b4 Modify VoluntarySovereignty to hit normal versions again to latest can be deleted. Add the rotated version for some duplex printers. 2025-10-04 13:22:38 -07:00
282b1e8264 Merge pull request 'Remove "Anarchy" from Freedom Page' (#13) from dev into main
Reviewed-on: #13
2025-10-03 14:05:13 -07:00
9ff726d8b9 Remove word anarchy from webpage. 2025-10-03 14:04:17 -07:00
f0a92d7abc Merge pull request 'Fixes for Freedom. Add Announcement.' (#12) from dev into main
Reviewed-on: #12
2025-10-03 13:04:39 -07:00
d4e085e184 Change where the code break is. Does not affect site. 2025-10-03 13:01:55 -07:00
6f8223e1f6 Show the advisory. 2025-10-03 12:59:08 -07:00
0c054e0aef Change the advisory to be for Voluntary Sovereignty. 2025-10-03 12:59:00 -07:00
db19170ffc Open eBooks in new tab. 2025-09-28 07:36:58 -07:00
bd37fe8d18 Merge pull request 'Use Freedom eBook's latest Release' (#11) from dev into main
Reviewed-on: #11
2025-09-28 07:22:14 -07:00
ddd89c84a2 Point to a latest release. 2025-09-28 07:11:16 -07:00
05b37d775f Merge pull request 'Add Freedom eBook' (#10) from dev into main
Reviewed-on: #10
2025-09-28 07:04:41 -07:00
37a5dc23f1 Point to new revision. 2025-09-28 07:03:15 -07:00
da530eebfb Add new Freedom eBook to Media page. 2025-09-28 05:07:48 -07:00
21fc20b10f Add page for new Freedom eBook. 2025-09-28 05:04:25 -07:00
286c92dd0d Merge pull request 'Fixes & SEO' (#9) from dev into main
Reviewed-on: #9
2025-09-19 13:27:05 -07:00
4cca435148 Merge pull request 'Move books branch into dev.' (#8) from books into dev
Reviewed-on: #8
2025-09-19 13:25:12 -07:00
e5542ed8bb Fix typo, --w was not getting recognized. 2025-09-19 13:21:36 -07:00
98e52e6833 Add SEO type tags. 2025-09-19 13:07:26 -07:00
7077426610 Change to just use one page after all. 2025-08-12 05:46:07 -07:00
68fb297cb0 Reference a new Book Recommendation page on the Lists page. 2025-08-03 14:41:52 -07:00
efbc9fc6db Add a section on how to properly use Obtainium with my Gitea server. 2025-07-20 16:22:26 -07:00
d809533280 Ensure row divs are not double-closed. 2025-06-16 16:36:20 -06:00
ee367f9b3f Close the previous row before creating a new one! :) 2025-06-16 16:03:01 -06:00
d673eb2f6a Fix unquoted values resulting in unclosed tag. 2025-06-16 16:00:46 -06:00
afac80d543 Add single quotes around variable output for consistency. 2025-06-16 15:57:34 -06:00
f090607f67 Add build time to end of the page comments. 2025-06-16 15:52:20 -06:00
1dccb10a45 Give a readout on how long the photos page took to get loaded. 2025-06-16 15:44:24 -06:00
6f7934f8ff Merge pull request 'Fix Curl Installation' (#7) from dev into main
Reviewed-on: #7
2025-06-16 13:32:22 -07:00
998f5ed338 Fix echo command. Handle LOGNAME being empty in situations like a Docker container. 2025-06-16 15:10:23 -06:00
71cdccbeae Merge pull request 'Diet Page & Curl Dependency' (#6) from dev into main
Reviewed-on: #6
2025-06-16 12:36:21 -07:00
2fb438b199 Add curl as a dependency. 2025-06-16 13:43:11 -06:00
7eda07995f Add a medium avoidance group and shift items which were debateable in the upper and lower groups. 2025-06-06 10:55:04 -07:00
e7c4296724 Add and populate a Diet page. 2025-06-06 10:49:57 -07:00
369d8a736e Merge pull request 'Page Titles & All Photos Page' (#5) from dev into main
Reviewed-on: #5
2025-06-06 08:02:50 -07:00
073377532e Add headers to all pages! Also update the look and feel of the test page. 2025-05-27 12:41:17 -07:00
18cd38b194 Add default port in this script. 2025-05-27 11:27:18 -07:00
aa20bd67ee Add TBD's of how to better output in the log. 2025-05-27 11:27:06 -07:00
b4d9bae246 Add log function to ensure consistent output. Enhance regeneration of photo index files. 2025-05-27 11:20:20 -07:00
fcb091a164 Change name of the page to Full Photo Feed from Full Image Feed. 2025-05-27 10:53:19 -07:00
55742e50db Remove the all folder in place of an all.html file. Create a main page which provides the output of it. 2025-05-27 10:51:41 -07:00
e13a1633dd Remove unused variables. 2025-05-27 10:40:39 -07:00
add3a2865c Automatically reload the /photos/ index files. 2025-05-26 18:53:19 -07:00
6fd8525dad Properly handle jpeg and md files. 2025-05-26 16:39:15 -07:00
c7f4613d22 Delete the index files on each restart. 2025-05-26 16:38:54 -07:00
c6fd3f4786 Finish the all page! Even easier than expected and works GREAT! 2025-05-26 16:38:34 -07:00
474c258a83 Fix syntax error preventing page from running. 2025-05-26 15:24:40 -07:00
b35856fa88 Add the folder for all images. 2025-05-26 15:20:14 -07:00
290f1524a2 Refactor the photos page code and begin adding a feed page named all. 2025-05-26 13:54:46 -07:00
fb0ff39013 Merge pull request 'Major Fix, Minor Fixes, and Style / Tag Refactoring' (#4) from dev into main
Reviewed-on: #4
2025-05-19 10:08:04 -07:00
79c6a34e38 Remove call to neofetch. Does not appear to be giving away info from Docker, but juuust in case! 2025-05-19 09:57:13 -07:00
a26081d13f Fix HTML in sitemap. Add DOCTYPE, language, and a title. 2025-05-19 09:54:04 -07:00
7ccb7e2ac7 Alter the CSS for Trocador's widget based on W3 validator. Recommends using overflow CSS attribute rather than unsupported scrolling HTML attribute. 2025-05-19 09:45:13 -07:00
dc7fd3f834 Remove trailing slashes from line breaks, not needed in HTML. 2025-05-19 09:41:15 -07:00
a3b8025876 Fix comment to properly encapsulate p element. 2025-05-19 09:38:23 -07:00
6876cd34b7 Remove trailing slashes, not needed in HTML. 2025-05-19 09:37:36 -07:00
60f9241fbd Add alt tag to images. 2025-05-19 09:33:12 -07:00
698e2aa680 Remove redundant alt text, captions already have a description. 2025-05-19 09:31:31 -07:00
ff10025e05 Declare the language of the website. 2025-05-19 09:23:10 -07:00
72b1afdedd Create a CSS class for the size of app images, rather than giving the img attributes a percentage. Move the figures to be completely inside the anchors. 2025-05-19 09:09:53 -07:00
00660cef98 Add an apps alias for the homepage. 2025-05-17 10:57:07 -07:00
fc129124b8 Add explicit font sizes and boldness. 2025-05-17 10:39:31 -07:00
805b4ef8e0 Update elements and classes for better consistency in preparation for font size change. 2025-05-17 10:37:15 -07:00
f7b60e0944 Fix initial comment spacing. 2025-05-17 09:47:43 -07:00
f598d8f401 Express v5.0.0+ breaks the program, keep using 4 for now. 2025-05-17 09:42:16 -07:00
78ab7735d7 Simplify menu again for basic mobile web browsers (like Android's stock/default, not mobile Firefox). 2025-05-17 09:11:06 -07:00
e141347222 Merge pull request 'Release Expense Tracker App' (#3) from dev into main
Reviewed-on: #3
2025-03-26 13:24:22 -07:00
94246ddaeb Reword app description. 2025-03-25 08:43:13 -07:00
652bc8d35d Remove extra "free". 2025-03-25 08:40:59 -07:00
5c515f0d1d Add new Expense Tracker app. 2025-03-25 08:38:54 -07:00
c73ec1fb4e Remove extra row. 2025-03-25 08:33:57 -07:00
71ac8f3cfe Merge pull request 'Style Overhaul' (#2) from dev into main
Reviewed-on: #2
2025-01-29 13:28:32 -07:00
297e0c90a9 Remove attempts at having columns take up the full row height, was not working. Likely due to how HTML renders they did not know how large the elements after them would be. 2025-01-29 13:23:01 -07:00
76429b1ace Try ensuring columns tak up full row height a different way. 2025-01-29 13:18:36 -07:00
c000140040 Add fill class so that donation boxes take up all the available height. 2025-01-29 13:16:10 -07:00
a48c767ffb Fix tags being on wrong level / element. 2025-01-29 13:13:30 -07:00
5d6e33a72c Add new spacing class for subheaders on donation page. Also give the subsections borders. 2025-01-29 13:07:18 -07:00
5832e5d4ab Test a background on the preference headers. 2025-01-29 13:00:55 -07:00
28fa1cd359 Change wording of resume download header. 2025-01-29 12:58:10 -07:00
f8f74b3aac Ensure no one thinks I'm a time traveler, lol. 2025-01-29 12:51:50 -07:00
64defc9885 Move status back up. 2025-01-29 12:47:48 -07:00
6ee9530b21 Change location of status and give it a darker background. 2025-01-29 12:46:38 -07:00
42905688b3 More wordiness fixes. 2025-01-29 12:44:10 -07:00
92c2aa6a42 Add missing word engineer, fix some wordiness. 2025-01-29 12:42:58 -07:00
d316251af9 Center the upper header text areas like main pages, and also change status! 2025-01-29 12:41:29 -07:00
dc11ec7456 Center the upper header text areas. 2025-01-29 12:41:13 -07:00
ba667207db Change wordiness of text and add some excitement. 2025-01-29 12:38:18 -07:00
8465e7e362 Remove dark background test, add border. 2025-01-29 12:35:35 -07:00
c0425b6de6 Remove the old table border classes. Allow using the border and no-border classes for sections which need manual intervention. 2025-01-29 12:34:21 -07:00
129cd43e3e Remove test code, try different background on app sections. 2025-01-29 12:32:39 -07:00
465bf50e51 Disable advisory at a site-wide level. 2025-01-29 12:30:20 -07:00
e820196ba7 Remove typo character. 2025-01-29 12:27:52 -07:00
3fdb1339c6 Keep links as h6. 2025-01-29 12:26:19 -07:00
b1d652a3fd Test doing the final URLs as monoscript rather than small headers. 2025-01-29 12:24:58 -07:00
fc8c80b98a Change background color of "let me help you!" section. 2025-01-29 12:23:17 -07:00
66f9c0561e Add missing underline under h1 photo area. 2025-01-29 12:21:09 -07:00
78decea24e Use a fancy way of saying writings without re-using words already on the page. 2025-01-29 12:19:05 -07:00
641815e178 Use a better word than writings. 2025-01-29 12:15:11 -07:00
c74f48d19a Better define what the Media page is. 2025-01-29 12:13:31 -07:00
60a56115f3 Fix styling and consistency between sub headers. 2025-01-29 12:09:50 -07:00
7f9fc0321f Remove typo character. 2025-01-29 12:07:31 -07:00
f9f89c0f84 Remove gap between h1 and image. 2025-01-29 12:05:42 -07:00
a1623c6fb5 Fix comment. 2025-01-29 12:05:21 -07:00
bc2db0d631 Fix where the newline is for visibility. 2025-01-29 12:01:37 -07:00
e5b2bc0961 Redo the media page, was arranges strangely and also want books to be first. 2025-01-29 12:01:17 -07:00
d96c328fa3 Try changing menu name to something longer again. 2025-01-29 11:55:53 -07:00
925963f3fd Re-enable the advisory. 2025-01-29 11:54:50 -07:00
16dcfe5aec Test removing advisory. 2025-01-29 11:53:14 -07:00
7506101e62 Change wording for advisory. 2025-01-29 11:52:55 -07:00
6bee3f793c Shorten profession blurb. 2025-01-29 11:49:06 -07:00
150f8aebb5 Adjust style of apps. 2025-01-29 11:42:34 -07:00
ed18d210fd Make the subsection headers be consistent too. 2025-01-29 11:34:27 -07:00
d2b115ced3 Adjust formatting of link text. 2025-01-29 11:29:14 -07:00
2d24d0c971 Shorten text. 2025-01-29 11:26:25 -07:00
612bf7b3cb Make the Venmo section more consistent with Zelle. 2025-01-29 11:11:13 -07:00
020453e521 Use consistent link formatting as the app page. 2025-01-29 11:08:29 -07:00
d9e2dc6875 Looked good on sme things, but overall not a good idea, also made site feel slower. 2025-01-29 11:04:41 -07:00
ef96e715f6 test only giving borders to divs within rows. 2025-01-29 11:00:40 -07:00
e2c08b0326 Change where the background is applied. 2025-01-29 10:59:11 -07:00
cdb462f2ec Ensure the background of the sub section is solid. 2025-01-29 10:56:37 -07:00
0bda5d18a6 See how only having one row looks so that there is not a border through the middle. 2025-01-29 10:56:10 -07:00
2b6caa3f89 Fix rows. Make each app the same size. 2025-01-29 10:54:12 -07:00
ceb25e00f8 Fix image settings. 2025-01-29 10:50:52 -07:00
7ad4d29024 Correct the sizes of the apps. 2025-01-29 10:48:21 -07:00
113a208019 Shrink the android apps section down. 2025-01-29 10:47:06 -07:00
8cdefe48fa Also needs the break at the beginning of the sub block. 2025-01-29 10:43:48 -07:00
ee26ce1112 QR needs another line break. 2025-01-29 10:42:28 -07:00
1082496b3e Add newline between name and QR. 2025-01-29 10:40:48 -07:00
63459cc098 Add a QR code for Zelle. 2025-01-29 10:39:18 -07:00
8142057673 More preference 3 styling adjustments. 2025-01-29 10:24:17 -07:00
4a1e376bd5 Add background to 3rd section. Make it look more similar to other columns. 2025-01-29 10:21:05 -07:00
56a08aaaa2 Change the URL to be the username. 2025-01-29 10:17:18 -07:00
22289e1a64 Add URL to Venmo account. 2025-01-29 10:14:06 -07:00
7c8a59abc5 Change order of donation preferences, add USD section. 2025-01-29 10:03:08 -07:00
d962f1ac74 Change footer so that message is not broken up. 2025-01-29 05:34:02 -07:00
760b2f79bc Try borders on rows. 2025-01-29 05:33:43 -07:00
ab3265b095 Try borders on columns. 2025-01-29 05:28:13 -07:00
0bc2384cd2 Try borders on divs. 2025-01-29 05:25:00 -07:00
576b7a0adf Reduce menu item word length, return site padding to normal. 2025-01-29 05:21:58 -07:00
4e194e584b Continue testing menu padding. 2025-01-29 05:19:06 -07:00
589146343b Try to fix craziness happening with top menu but not bottom. Add padding to bottom. 2025-01-29 05:17:14 -07:00
1498aeefb9 Remove empty rulesets. 2025-01-29 05:13:45 -07:00
db83b2211d Try to vertically center the items. #2 2025-01-29 05:11:48 -07:00
35102cafca Meu item is still broken up? At least try to vertically center the items. 2025-01-29 05:09:18 -07:00
b75a47c847 Reduce padding back to 10, 12 still breaks menu item. 2025-01-29 05:07:00 -07:00
8218498bd0 nowrap didn't help, reduce padding. 2025-01-29 05:03:20 -07:00
3b37e251c1 Do not allow menu items to wrap. 2025-01-29 05:02:17 -07:00
cf57b5576b Try going back to a larger column padding now that menu items are explicitly 0. 2025-01-29 05:00:24 -07:00
a3f6f63be9 Try a few more menu style / padding changes. 2025-01-29 04:58:45 -07:00
c50f790827 Breaks did not work properly. Add new menu cass for outer padding, ul does not seem to hold it well. 2025-01-29 04:55:18 -07:00
9ff2b29b51 Remove padding CSS for menu and add breaks instead. 2025-01-29 04:52:21 -07:00
b8c0471589 Add more vertical padding to menu, again. 2025-01-29 04:49:32 -07:00
9ddf63fff0 Add more vertical padding to menu. 2025-01-29 04:46:41 -07:00
b41fc43e7d Add more vertical padding to menu boxes. 2025-01-29 04:29:26 -07:00
2bb66d4b47 Add padding between addresses again. 2025-01-29 04:25:38 -07:00
103b725ed5 Remove p to see if it fixes the spacing issue for XMR. 2025-01-29 04:24:10 -07:00
7a02f185e9 Try kbd on an address. 2025-01-29 04:21:05 -07:00
5d4c8cb54b Fix p tag. 2025-01-29 04:20:34 -07:00
20fba003a7 Move padding to outside of sub block. 2025-01-29 04:18:16 -07:00
2a1ebae2ce Remove excess padding. 2025-01-29 04:16:41 -07:00
c4daad5c3b Convert all addresses to code blocks. 2025-01-29 04:14:59 -07:00
34a6ff5f62 Remove excess center tag. 2025-01-29 04:13:06 -07:00
0ae0590c22 Add a bit more padding so scrollbar does not cover data. 2025-01-29 04:12:40 -07:00
73a8c820c3 Try centering code block a different way since class is not working. 2025-01-29 04:10:54 -07:00
bd4e7684c9 Scrolling is working! Start fine tuning the box. 2025-01-29 04:08:15 -07:00
3cb079d111 Try making the code area a div class. 2025-01-29 04:02:15 -07:00
6f979f00d9 Hard-set the width of a code block. 2025-01-29 03:59:12 -07:00
a1a76a1985 Continue trying tonadd scrollbar. 2025-01-29 03:57:57 -07:00
4ed4290f67 Try making code blocks scrollable. 2025-01-29 03:54:11 -07:00
1114b65e57 Add a newline between test addresses. 2025-01-29 03:50:58 -07:00
2ff05403b6 Test having an address in a pre+code block. 2025-01-29 03:49:51 -07:00
968d68312a Change wording. 2025-01-29 03:44:56 -07:00
4955b13905 Remove the div padding due to imbalanced borders and try a smaller column padding. 2025-01-29 03:40:59 -07:00
429f419220 Also center the 2nd sub block. 2025-01-29 03:39:21 -07:00
1104d28b28 Also center the text above sub blocks. 2025-01-29 03:37:54 -07:00
1728600f66 Reduce length of LBC description. 2025-01-29 03:36:59 -07:00
a22b875bd2 Remove test borders. 2025-01-29 03:35:16 -07:00
7ac2eaf745 Monero address is still pretty long. Try styling better to see if it can be acceptable. 2025-01-29 03:34:16 -07:00
b404e26530 Try not indenting the crypto addresses. 2025-01-29 03:32:04 -07:00
2fa6d7272c Add the spaces back to media link, the change to padding fixed the double line issue. 2025-01-29 03:29:45 -07:00
c0b043f515 Reduce characters in media link. 2025-01-29 03:27:49 -07:00
d2aef28044 Fix typo in comment. 2025-01-29 03:26:37 -07:00
276a4857ff Reduce column padding to account for new div padding. 2025-01-29 03:24:42 -07:00
1044b60d92 Add alias for the support page (/donate). 2025-01-29 03:21:47 -07:00
ee213ee9f7 See how adding padding to divs affects the website. Enable colored borders for analysis. 2025-01-29 03:14:42 -07:00
6adf13ef06 Text backgrouns is good, now working on getting header background for addresses to fit better. 2025-01-29 03:14:16 -07:00
40 changed files with 1679 additions and 571 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

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

20
main.js
View File

@@ -104,7 +104,14 @@ async function main() {
</url>
`;
let sitemap_html = `
<html><body>
<!DOCTYPE html>
<html lang="en">
<head>
<title>
Sitemap for Hyperling
</title>
</head>
<body>
<strong>Special Pages</strong>
<ul>
<li>
@@ -134,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) {
@@ -175,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)
@@ -183,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)
@@ -190,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)
@@ -205,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":
@@ -217,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:

View File

@@ -1,6 +1,6 @@
{
"dependencies": {
"express": ">=4.18.1"
"express": ">=4.18.1 < 5.0.0"
},
"scripts": {
"start": "./run.sh"

View File

@@ -1,18 +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>
</div>
<div class="row">
<?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">
<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!
@@ -25,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
@@ -50,7 +53,6 @@
</p>
</div>
</div>
<?php
include "subpages/about/notice.php";
include "subpages/about/health.php";

290
pages/apps.php Executable file
View File

@@ -0,0 +1,290 @@
#!/usr/bin/php
<!--
Synonym for home page.
-->
<?php
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";
?>

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

@@ -1,24 +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>
</div>
<div class="row">
<?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">
<img src="/files/media/icons/contact.jpg" alt="<<contact.jpg>>">
</div>
';?>
</div>
<div class="row">
<div class="col-12 title">
<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 signal-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>
@@ -41,7 +49,6 @@
</li></ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

209
pages/diet.php Executable file
View 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";
?>

10
pages/donate.php Executable file
View File

@@ -0,0 +1,10 @@
#!/usr/bin/php
<!--
Alias for the support page with a more common name.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Donate";
}
include "support.php";
?>

87
pages/freedom.php Executable file
View File

@@ -0,0 +1,87 @@
#!/usr/bin/php
<!--
Page to provide links for Freedom eBook.
-->
<?php
$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>
Click the link 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";
?>

View File

@@ -3,10 +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>
@@ -28,13 +30,31 @@
<div class="row">
<div class="col-12 text">
<p>
Click the link below to download the 12-page PDF:
Click the link below to download the 10-page PDF:
</p>
<ul class="indent"><li>
<a href="/files/media/documents/HyperlingsHealthProtocol.pdf">
[PDF] | Direct Download
</a>
</li></ul>
<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>
<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 +64,7 @@
<a href="/files/media/documents/HyperlingsHealthProtocol.mp3"
target="_blank" rel="noopener noreferrer"
>
[MP3] | Direct Download
[MP3] | Download
</a>
</li>
<li>
@@ -88,7 +108,6 @@
</ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

View File

@@ -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">
<i><h2 class="col-12 title">Latest Announcement</h2></i>
<a href="/freedom/">
<div class="col-12 text">
<u class="orange">2024-03-07</u>
<br/>
Find my free new eBook, "Hyperling's Health Protocol",
<u class="orange">2025-09-28</u>
<br>
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>
';
?>

View File

@@ -1,4 +1,4 @@
/*** Logo In Header ***/
/*** Logo In Header ***/
/* Shared Attributes */
.banner-top, .banner-middle, .banner-bottom {
@@ -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,12 +2,16 @@
<?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-10-03 Re-enable advisory for new eBook.
*/
if (!isset($GLOBALS["ADVISORY"]) || $GLOBALS["ADVISORY"] !== false)
include "advisory.php";
/* */
?>

View File

@@ -1,4 +1,4 @@
/*** Dark Theme ***/
/*** Dark Theme ***/
body {
background-color: #444444;
}
@@ -30,3 +30,7 @@
.text {
background-color: #333333;
}
.code {
background-color: #444444;
}

34
pages/helpers/font.css Normal file
View File

@@ -0,0 +1,34 @@
/*** Fonts and text sizes. ***/
/* For debugging anything which does not have a font size yet. * /
* {
color: cyan;
font-size: xx-large;
}
/* */
p,li,code,a,pre {
font-size: medium;
}
b,figcaption {
font-size: large;
font-weight: bold;
}
strong,img {
font-size: larger;
font-weight: bolder;
}
h6,h5 {
font-size: larger;
}
h4,h3 {
font-size: x-large;
}
h2,h1 {
font-size: xx-large;
}

View File

@@ -7,20 +7,20 @@
</div>
<div class="row" id="footer">
<div class="col-12 text center">
Have a Health or Freedom related project which could use my help?
<a href="mailto:me@hyperling.com">Please let me know</a>!
<div class="col-12 title center">
<p>
Have a Health or Freedom related project which could use my help?
<a href="mailto:me@hyperling.com">Please let me know</a>!
</p>
</div>
</div>
<div class="row">
<div class="col-3"></div>
<h6 class="col-3 center">
<div class="row center">
<div class="col-6">
<a href="https://git.hyperling.com/me/nodejs-website/src/branch/main/LICENSE"
target="_blank" rel="noopener noreferrer"
>This website is free software! Click here to learn more.</a>
</h6>
<h6 class="col-3 center">
</div>
<div class="col-6">
<a href="/sitemap/">Full Site Map</a>
</h6>
<div class="col-3"></div>
</div>
</div>

View File

@@ -1,22 +1,45 @@
#!/usr/bin/php
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "";
} else {
$GLOBALS["HEADER_TITLE"] = ": " . $GLOBALS["HEADER_TITLE"];
}
?>
<!DOCTYPE html>
<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"
/>
>
<link rel="icon" sizes="192x192"
href="/files/media/icons/favicon.ico"
/>
>
<!-- CSS -->
<style>
<?php include "main.css"; ?>
</style>
<style>
<?php include "font.css"; ?>
</style>
<style>
<?php include "dark.css"; ?>
</style>
<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>

View File

@@ -1,7 +1,7 @@
/*** 2022-09-14 CSS for the website. ***/
/*** 2022-09-14 CSS for the website. ***/
/* https://www.w3schools.com/Css/css_rwd_grid.asp */
/* Enable dynamic stuffs, maks the element think its entire size includes padding. */
/* Enable dynamic stuffs, makes the element think its entire size includes padding. */
* {
box-sizing: border-box;
}
@@ -24,7 +24,9 @@
[class*="col-"] {
float: left;
padding: 15px;
/*border: 1px solid green;*/ /* FORTESTING otherwise disable */
/* FORTESTING, otherwise disable */
/*border: 1px solid green;*/
}
/* Ensure columns are respected as if they always exist. */
@@ -34,7 +36,18 @@
display: table;
}
.row {
border: 1px solid #131313;
border-radius: 4px;
}
/** Make the menu items centered and layout horizontal. **/
/*
.menu {
padding-top: 10px;
padding-bottom: 10px;
}
*/
.menu-list {
text-align: center;
list-style-type: none;
@@ -42,6 +55,8 @@
}
.menu_item {
display: inline-block;
padding: 0px;
white-space: nowrap;
}
/** Be able to position anything easily. **/
@@ -60,14 +75,21 @@
list-style-type: none;
}
/** Objects which need borders **/
/** Extra objects which need borders **/
.border {
border: 1px solid #33CC33;
border: 1px solid #131313;
border-radius: 4px;
}
/* Also have this apply to a table's cells. */
.border * th,td {
border: 1px solid #33CC33;
/** Explicitly remove border from some objects. **/
.no-border {
border: 0px;
}
/** When a field needs more background color above and below. **/
.spacing {
padding-top: 5px;
padding-bottom: 5px;
}
/** Format tables and allow contents to be broken up. **/
@@ -88,9 +110,35 @@
max-height: 500px;
}
/* FORTESTING, otherwise disable */
/*
div {
border: 1px solid red;
}
*/
.code {
max-width: 90%;
margin-left: 5%;
overflow: auto;
overflow-x: scroll;
overflow-y: hidden;
padding: 10px;
border: 2px solid #131313;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
body {
max-width: 1300px;
margin-left: auto;
margin-right: auto;
padding: 5px;
}
.app-icon {
width: 25%;
height: 25%;
}

View File

@@ -1,12 +1,19 @@
#!/usr/bin/php
<div class="row header">
<div class="row header menu">
<ul class="menu-list">
<li class="col-1"></li>
<li class="col-2 menu-item"><a href="/home/">Android Apps</a></li>
<li class="col-2 menu-item"><a href="/media/">Books / Videos / Images</a></li>
<li class="col-2 menu-item"><a href="/about/">About Me</a></li>
<li class="col-2 menu-item"><a href="/contact/">Contact Information</a></li>
<li class="col-2 menu-item"><a href="/support/">Support / Donate</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

@@ -3,19 +3,23 @@
Landing page, keeping it apps and development projects like old WordPress site.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Announcements";
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Welcome!</h1>
</div>
<div class="row">
<?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">
<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
@@ -23,9 +27,8 @@
</p>
</div>
</div>
<?php
include "subpages/home/apps.php";
include "subpages/home/announcements.php";
include "helpers/body_close.php";
?>

View File

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

View File

@@ -1,37 +0,0 @@
#!/usr/bin/php
<!--
Page to provide ways people can support me.
-->
<?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";
?>

View File

@@ -3,17 +3,57 @@
Page for my video links.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Media";
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Videos</h1>
<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="<<videos.jpg>>">
</div>
';?>-->
</div>
<div class="row">
<div class="col-12 header center" >
<img src="/files/media/icons/videos.jpg">
<div class="col-12 header center">
<p>
My written works, social platforms, and photos can be found here.
</p>
</div>
</div>
<div class="row">
<h2 class="col-12 header">Books</h2>
</div>
<div class="row">
<div class="col-12 text">
<p>
I enjoy writing! Find my free eBooks below.
</p>
<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>
<div class="row" id="donate">
<h2 class="col-12 header">Videos</h2>
</div>
<div class="row">
<div class="col-12 text">
<p>
@@ -47,20 +87,6 @@
</div>
</div>
<div class="row">
<h1 class="col-12 title">Books</h1>
</div>
<div class="row">
<div class="col-12 text">
<p>
I enjoy writing! Find my free eBooks below.
</p>
<ul class="indent"><li>
<a href="/health/">My Health Protocol</a>
</li></ul>
</div>
</div>
<!-- WIP
<div class="row">
<h1 class="col-12 title">Art / Poetry</h1>
@@ -78,7 +104,7 @@
-->
<div class="row">
<h1 class="col-12 title">Personal Media</h1>
<h2 class="col-12 header">Photography</h2>
</div>
<div class="row">
<div class="col-12 text">
@@ -91,7 +117,6 @@
</li></ul>
</div>
</div>
<?php
include "helpers/body_close.php";
?>

20
pages/photos-all.sh Executable file
View 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

View File

@@ -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,146 +28,278 @@ 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
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
# 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
continue
fi
# Clean album name.
album_name=${album}
album_name=${album_name//_/ }
album_name=${album_name//-/ }
# Give the page a description.
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 -e "\t\t\t<h1 class='col-12 title'>Albums</h1>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage
# Catch all the upcoming photo records.
echo -e "\t\t<div class='row'>\n\t\t\t<div class='col-12 text'>" >> $mainpage
# Create index page for each photo ALBUM based on its contents.
page=""
subpage="$PHOTOS_DIR/$album/index.html"
$HELPER_DIR/body_open.php > $subpage
# Add a back button
echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage
echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $subpage
# Build the ALBUM page.
echo -e "\t\t<div class='row'>" >> $subpage
echo -e "\t\t\t<h1 class='col-12 title'>$album_name</h1>" >> $subpage
echo -e "\t\t</div>" >> $subpage
ls $PHOTOS_DIR/$album/* | sort | while read photo; do
# Do not include the index page.
if [[ $photo == *"index.html" ]]; then
continue
fi
# Clean filename to be a little more presentable.
# Going with CAPSLOCK. ;)
typeset -u filename
filename="`basename $photo`"
# Remove extension.
filename="${filename%%.*}"
# Remove special characters for spaces.
filename="${filename//_/ }"
filename="${filename//-/ }"
if [[ $photo == *"/README.md" || $photo == *"/README.txt" ]]; then
# If there is a README, show it on the PHOTOS page without a link.
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
if [[ $photo == *".mp4" ]]; then
echo -en " [VIDEO]" >> $mainpage
fi
echo -e "</a></li>" >> $mainpage
fi
## Put in the subpage HTML ##
# Set the count 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
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
# 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
echo -e "\t\t\t\t\t\t<source src='/$photo' type=video/mp4>" >> $subpage
echo -e "\t\t\t\t\t\tYour browser does not support videos." >> $subpage
echo -e "\t\t\t\t\t</video>" >> $subpage
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'/>" >> $subpage
fi
# Check if it needs an extra descriptive detail.
echo -en "\t\t\t\t\t<p>$filename" >> $subpage
if [[ $photo == *".mp4" ]]; then
echo -en " [VIDEO]" >> $subpage
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
# End album listings on PHOTOS page.
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
# Add a final back button
echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage
echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $subpage
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 ALBUM's page.
$HELPER_DIR/body_close.php >> $subpage
echo "<!-- Built on `date`. -->" >> $subpage
## 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
}
remove_problem_strings $subpage
done
## 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" || "$album" == "all" ]]; then
continue
fi
# Finish the web page.
$HELPER_DIR/body_close.php >> $mainpage
echo "<!-- Built on `date`. -->" >> $mainpage
# Clean album name.
album_name=${album}
album_name=${album_name//_/ }
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 "$album_name</a></h2>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage
remove_problem_strings $mainpage
# Catch all the upcoming photo records.
echo -e "\t\t<div class='row'>\n\t\t\t<div class='col-12 text'>" >> $mainpage
# Create index page for each photo ALBUM based on its contents.
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
echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $subpage
# Build the ALBUM page.
echo -e "\t\t<div class='row'>" >> $subpage
echo -e "\t\t\t<h1 class='col-12 title'>$album_name</h1>" >> $subpage
echo -e "\t\t</div>" >> $subpage
ls $PHOTOS_DIR/$album/* | sort | while read photo; do
# Do not include the index page.
if [[ $photo == *"index.html" ]]; then
continue
fi
# Clean filename to be a little more presentable.
# Going with CAPSLOCK. ;)
typeset -u filename
filename="`basename $photo`"
# Remove extension.
filename="${filename%%.*}"
# Remove special characters for spaces.
filename="${filename//_/ }"
filename="${filename//-/ }"
if [[ $photo == *"/README.md" || $photo == *"/README.txt" ]]; then
# If there is a README, show it on the PHOTOS page without a link.
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'>$filename" >> $mainpage
if [[ $photo == *".mp4" ]]; then
echo -en " [VIDEO]" >> $mainpage
fi
echo -e "</a></li>" >> $mainpage
fi
## Put in the subpage HTML ##
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
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'>" >> $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
echo -e "\t\t\t\t\t\t<source src='/$photo' type=video/mp4>" >> $subpage
echo -e "\t\t\t\t\t\tYour browser does not support videos." >> $subpage
echo -e "\t\t\t\t\t</video>" >> $subpage
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
fi
# Check if it needs an extra descriptive detail.
echo -en "\t\t\t\t\t<p>$filename" >> $subpage
if [[ $photo == *".mp4" ]]; then
echo -en " [VIDEO]" >> $subpage
fi
# Close the image description and its link.
echo -e "</p>\n\t\t\t\t</a>\n\t\t\t</div>" >> $subpage
count=$(( count + 1 ))
done
echo -e "\t\t</div>" >> $subpage
# End album listings on PHOTOS page.
echo -e "\t\t\t</div>" >> $mainpage
echo -e "\t\t</div>" >> $mainpage
# Add a final back button
echo -en "\n\t\t<div class='row'>\n\t\t\t<a href='/photos'>" >> $subpage
echo -e "<h3 class='col-12 title'>Back</h3></a>\n\t\t</div>" >> $subpage
# Close out the ALBUM's page.
$HELPER_DIR/body_close.php >> $subpage
echo "<!-- Built on `date`. -->" >> $subpage
remove_problem_strings $subpage
done
}
## 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.
# 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

72
pages/resources.php Executable file
View File

@@ -0,0 +1,72 @@
#!/usr/bin/php
<!--
Lists of items which I'd like to share such as gear and frequently used apps.
-->
<?php
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";
?>

View File

@@ -3,42 +3,31 @@
Page for my resume and work skill links.
-->
<?php
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>
<div class="row">
<div class="col-12 header center" >
<img src="/files/media/icons/home.jpg"> <!-- TBD use a new photo -->
</div>
<h2 class="col-12 title center">Current Status : Traveling Full Time</h2>
</div>
<div class="row">
<h2 class="col-12 header">Current Status : Full Time Contractor</h2>
<div class="col-12 text">
<div class="col-12 text center">
<p>
Interested in hiring me? Please find my resume below!
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

@@ -12,12 +12,14 @@
I have not been sick since I cleaned up my lifestyle in 2014. No
colds, flus, fevers, etc. My suggestions for accomplishing this
are simple. Consistently:
</p>
<ul class="indent">
<li>eat enough clean food,</li>
<li>drink enough clean water,</li>
<li>get enough good sleep, and</li>
<li>enjoy a low-stress life.</li>
</ul>
<p>
Unfortunately our society today has many different views on how
to do these things, most of which I would say do not work. A
quick list of my protocol without getting too into the weeds can

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,203 +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 self-taught, college graduated, and professional software
developer with nearly a decade of experience in the corporate
world. I have been playing with Linux from a young age and have
always enjoyed doing system administration type activities.
<p>
</p>
Much of my career has focused on back-end type systems such as
databases as well as optimizing workflows. I've learned many
languages over the years and hope to learn many more. In my free
time I have also enjoyed writing user-facing 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 free 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">
<div class="col-12 text" id="tictactoe">
<figure>
<a href="https://git.hyperling.com/me/android-tictactoe/releases">
<img width="50%" height="50%" alt="tictactoe_image"
src="/files/media/icons/tictactoe.png"
/>
<figcaption>
<p>Tic-Tac-Toe</p>
</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>
</figcaption>
</figure>
</div>
<div class="row center">
<div class="col-6 text" id="ctfu">
<figure>
<a href="https://git.hyperling.com/me/android-carb-up/releases"
target="_blank" rel="noopener noreferrer">
<img width="100%" height="100%" alt="ctfu_image"
src="/files/media/icons/ctfu.png"
/>
<figcaption>
<p>Carb Up! BETA</p>
</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>-->
</figcaption>
</figure>
</div>
<div class="col-6 text" id="timer">
<figure>
<a href="https://git.hyperling.com/me/android-infinite-timer/releases"
target="_blank" rel="noopener noreferrer"
>
<img loading="lazy" width="100%" height="100%" alt="infinitetimer_image"
src="/files/media/icons/infinitetimer.png"
/>
<figcaption>
<p>Infinite Timer</p>
</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>-->
</figcaption>
</figure>
</div>
</div>
<div class="row center">
<div class="col-6 text" id="sleep">
<figure>
<a href="https://git.hyperling.com/me/android-45-minute-rule/releases"
target="_blank" rel="noopener noreferrer">
<img loading="lazy" width="100%" height="100%" alt="45minuterule"
src="/files/media/icons/t45mr.png"
/>
<figcaption>
<p>45 Minute Rule</p>
</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>-->
</figcaption>
</figure>
</div>
<div class="col-6 text" id="games">
<figure>
<a href="https://git.hyperling.com/me/android-hypergames/releases"
target="_blank" rel="noopener noreferrer"
>
<img loading="lazy" width="100%" height="100%" alt="hypergames_image"
src="/files/media/icons/hypergames.png"
/>
<figcaption>
<p>
HyperGames
</p>
</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>
</figcaption>
</figure>
</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

@@ -3,39 +3,71 @@
<div class="row" id="donate">
<h2 class="col-12 header">Donate</h2>
</div>
<div class="row text">
<div class="col-6">
<p>Donations can be provided directly to my crypto addresses.</p>
<div class="col-4 center border">
<strong class="spacing">Preference 1 - Private Crypto</strong>
<p>Send any type of coin.</p>
<div class="header">
<p class="header">
<strong><code>XMR | Monero</code></strong>
<ul class="indent"><li>
<kbd>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</kbd>
</li></ul>
<strong><code>BTC | Bitcoin</code></strong>
<ul class="indent"><li>
<kbd>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</kbd>
</li></ul>
<strong><code>LTC | Litecoin</code></strong>
<ul class="indent"><li>
<kbd>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</kbd>
</li></ul>
<strong><code>LBC | LBRY/Odysee Credit</code></strong>
<ul class="indent"><li>
<kbd>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</kbd>
</li></ul>
<p>
</div>
</div>
<div class="col-6">
<p>Or use the widget below to send me any coin you'd like!</p>
<div class="center header">
<!-- https://trocador.app/en/anonpayurlgenerator -->
<iframe src="https://trocador.app/anonpay/?ticker_to=xmr&network_to=Mainnet&address=4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao&donation=True&amount=1337.0&name=Chad&description=Support+Chad+%40+Hyperling&email=me@hyperling,com&ticker_from=doge&network_from=Mainnet&buttonbgcolor=663399&textcolor=cccccc&bgcolor=" width="310" height="350" style="border:0" scrolling="no"></iframe>
<iframe src="https://trocador.app/anonpay/?ticker_to=xmr&network_to=Mainnet&address=4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao&donation=True&amount=1337.0&name=Chad&description=Support+Chad+%40+Hyperling&email=me@hyperling,com&ticker_from=doge&network_from=Mainnet&buttonbgcolor=663399&textcolor=cccccc&bgcolor=" width="310" height="350" style="border:0; overflow:hidden;"></iframe>
</div>
</div>
<div class="col-4 center border">
<strong class="spacing">Preference 2 - Public Crypto</strong>
<p>Donate directly to an address.</p>
<div class="header">
<br>
<strong><code>XMR | Monero</code></strong>
<div class="code"><code>4ATk6owoMki46CuVfyAHS57FB5deqVFudTsaifQC1cfmcaQemgPEftcjZcW9DmcyfrfdRjxHQ9m4JAVSorYTgm6h8JnT7ao</code></div>
<br>
<strong><code>BTC | Bitcoin</code></strong>
<div class="code"><code>bc1qsfe8dkvry3d34kztz449gkq67wq8fu2nkgfkh0</code></div>
<br>
<strong><code>LTC | Litecoin</code></strong>
<div class="code"><code>ltc1qavmpu5d6ljntxsd6jj548m4yys83zwscl0dzkx</code></div>
<br>
<strong><code>LBC | Odysee's Coin</code></strong>
<div class="code"><code>bDWP6qZajtm9Q9EkryKTorRwKFd5eDbPJj</code></div>
<br>
</div>
</div>
<div class="col-4 center border">
<strong class="spacing">Preference 3 - Public USD</strong>
<p>Send USD to a fiat-based account.</p>
<div class="header">
<br>
<strong><code>Zelle</code></strong>
<div class="code">
<code>me@hyperling.com</code>
<br>
<br>
<img src="/files/media/icons/zelle.png" alt="<<zelle.png>>">
</div>
<br>
<strong><code>Venmo</code></strong>
<div class="code">
<code>
@HyperVegan
<br>
<br>
<code>[<a href="https://account.venmo.com/u/HyperVegan"
target="_blank" rel="noopener noreferrer"
>Account Page</a>]
</code>
</code>
</div>
<br>
</div>
</div>
</div>

View File

@@ -3,24 +3,26 @@
Page to provide ways people can support me.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Support";
}
include "helpers/body_open.php";
?>
<div class="row">
<h1 class="col-12 title">Support</h1>
</div>
<div class="row">
<?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">
<img src="/files/media/icons/support.jpg" alt="<<support.jpg>>">
</div>
<div class="col-12 text">
';?>
<div class="col-12 header center">
<p>
Your contributions are completely optional and very much
appreciated. Thank you for considering me and my work!
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.

View File

@@ -4,26 +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>
Look at all the fancy things we can do!
</p>
<h2>Current Time</h2>
<p>
We can use the date command to spit out the time!
</p>
<p>
`date`
</p>
<p class="col-12 text">
Look at all the fancy things we can do!
</p>
<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 -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

View File

@@ -4,5 +4,8 @@
Deprecated 2024-03-06 for /media.
-->
<?php
if (!isset($GLOBALS["HEADER_TITLE"])) {
$GLOBALS["HEADER_TITLE"] = "Videos";
}
include "media.php";
?>

109
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 ##
@@ -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,54 @@ 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
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."
} &
## Main ##
echo "`date` - Start website API."
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 ##
echo "`date` - Exiting with status '$status'."
log "Kill spawned processes."
pkill -eP $$
log "Exiting with status '$status'."
exit $status