tag:blogger.com,1999:blog-12823866934544818482024-03-13T14:31:15.206-07:00James Daniel Marrs RitcheyJames Daniel Marrs Ritcheyhttp://www.blogger.com/profile/03899278405316376654noreply@blogger.comBlogger693125tag:blogger.com,1999:blog-1282386693454481848.post-32351202952624369352021-02-25T10:33:00.004-08:002021-02-25T10:33:54.363-08:00Ritchey Hash Data i3 v1<p>Process data with Ritchey Hashing Algorithm v3. Returns checksum as a string success. Returns "FALSE" on failure. This process is extremely intensive, and the workload increases with data size so it is only practical for very small data sets.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/9MFzTSCb#ku_CLnO9rbX6WYnKdhmlu_t9MMHCy4NFjh1I4dKFN10" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-44030320697328677702021-02-22T14:28:00.001-08:002021-02-22T14:28:03.363-08:00Ritchey Decrypt File i1 v2<p>Decrypt a file from Ritchey Encryption i1 v1. Returns "TRUE" on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/ddEi3J7Q#dfZ54LqqWTP-TqZWrisMlJ9QQ3oNrhni1dQB54oj00I" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-57779108723332022912021-02-22T14:27:00.000-08:002021-02-22T14:27:10.306-08:00Ritchey Encrypt File i1 v2<p>Encrypt a file using Ritchey Encryption i1 v1. Returns "TRUE" on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/pEMwiThB#a5e95CRcf-zI_AXlW_qLBzMiANSk-h40uvxro09HBlw" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-44178155952082964272021-02-20T14:35:00.000-08:002021-02-20T14:35:01.885-08:00Ritchey Encrypt File i1 v1<p>Encrypt a file using Ritchey Encryption i1 v1. Returns "TRUE" on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/YV8xmQrA#2AulN6hhi6NI8QAEFmBquJrqMaIjFS_PJFb31nqCCUQ" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-52342901305000515942021-02-20T14:33:00.004-08:002021-02-20T14:33:46.936-08:00Ritchey Decrypt File i1 v1<p>Decrypt a file from Ritchey Encryption i1 v1. Returns "TRUE" on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/RItVzAZQ#xc5QtJlljN2zIy-Sx8cfIBb9lQ0A8a5cJTRNPX38DLQ" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-60892972214149911552021-02-20T14:32:00.001-08:002021-02-20T14:32:13.452-08:00Ritchey Decimal Representation To Data i1 v2<p>Convert decimal representation (numbers 0-255) to data. Returns the data as a string on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/5E1FkIoa#MhG6-xYcoMW4uylF2Hx-RY4hqNdzyw7Qo1D4m5ZCdrA" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-12855731023620924132021-02-13T12:09:00.002-08:002021-02-13T12:09:37.645-08:00Ritchey PublicDomainDedicationLike License v2Subject to the terms of this license, any legal entity who receives material licensed under this license is granted royalty-free, perpetual, non-exclusive, permission to treat the material as unrestricted by Copyright, Patent, or other licenses. The material is provided "as is", without implied fitness for any purpose. <a name='more'></a>All obligations to the legal entity (including warranties, liabilities, representations, obligations, damages, and guarantees) are disclaimed by all parties involved (including the authors, rights holders, copyright holders, patent holders, and providers of the material). The owners, authors, providers, and source of the material cannot be disclosed (even if this information is widely known, or can be easily determined). The license text is provided under these terms.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-38636597695052680022021-02-13T12:05:00.003-08:002021-02-13T12:06:18.967-08:00Ritchey Permissive License v11Subject to the terms of this license, any legal entity who receives material licensed under this license is granted royalty-free, perpetual, non-exclusive, permission to do anything lawful with the material which does not violate this license. <a name='more'></a>Permissions are automatically revoked permanently from the legal entity upon breach of this license. The material is provided "as is", without implied fitness for any purpose. All obligations to the legal entity (including warranties, liabilities, representations, obligations, damages, and guarantees) are disclaimed by all parties involved (including the authors, rights holders, copyright holders, patent holders, and providers of the material). The legal entity is responsible for all consequences of sharing the material, and all obligations to recipients (including warranties, liabilities, representations, obligations, damages, and guarantees). The material must entirely remain solely under this license. This license is governed by the laws of the province of British Columbia (as they were on April 21, 2019), and the applicable laws of Canada (as they were on April 21, 2019). Any legal proceedings related to this license may only occur in the courts of British Columbia. The legal entity must be capable of being bound to this entire license, and agrees to be. If any portions of this license are unenforceable in applicable jurisdictions, this license cannot be accepted. The license text is provided under these terms.Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-50046349117484512342021-02-10T19:35:00.001-08:002021-02-10T19:35:04.306-08:00How to Prevent Automatic USB Suspending in Debian i2 v1<p>These steps will set the default value for automatic USB suspending to off. Individual devices can still be changed to have it enabled specifically for them.<br /><br /><a name='more'></a>Steps:<br />- In terminal enter:<br />sudo -i<br />- In terminal enter:<br />echo "options usbcore autosuspend=-1" > /etc/modprobe.d/custom.conf<br />- In terminal enter:<br />update-initramfs -u<br />- In terminal enter:<br />exit<br /><br />Notes:<br />- Tested on Debian 10 AMD64 XFCE.<br />- Default value on Debian is '2' which means if a usb device is idle for 2 seconds it should be suspended. '-1' means disable automatic USB suspending.<br /><br />Authors:James Daniel Marrs Ritchey<br />License:Ritchey Permissive License 10<br /></p><blockquote>Ritchey Permissive License v10:<br /><br />Subject to the terms of this license, any legal entity who receives material licensed with this license is hereby granted otherwise irrevocable royalty-free permission to do anything with the material. Permissions are revoked permanently from the legal entity upon breach of this license. The material is provided as it is, without implied fitness for any purpose. All obligations to the legal entity (including warranties, and guarantees) are disclaimed by all parties involved. The authors, copyright holders, patent holders, and providers of the material will not be held liable for anything (including damages, or liabilities) in connection with the material. The legal entity is responsible for any consequences of sharing the material (including damages, or liabilities), and takes on all obligations (including warranties, and guarantees) to recipients. The material must entirely remain solely under this license. This license is to be upheld in Canada, subject to the laws of Canada, as they were on April 21, 2019. The legal entity must be capable of being bound to all parts of this license, and by using the material agrees to be. If any part of this license is unenforceable the license cannot be accepted. The license text is provided under these terms.</blockquote>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-34957288837472937842021-02-09T15:33:00.001-08:002021-02-09T15:33:25.288-08:00Ritchey Get Lines By Prefix And Postfix i1 v1<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-JtsZOeeqZwo/YCMbtMeNxaI/AAAAAAAAB9E/lIqcAVqi0I4rlAxNddmEm4yQgit5v1idACLcBGAsYHQ/s0/Screenshot_2021-02-09_15-30-09.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="281" data-original-width="790" src="https://1.bp.blogspot.com/-JtsZOeeqZwo/YCMbtMeNxaI/AAAAAAAAB9E/lIqcAVqi0I4rlAxNddmEm4yQgit5v1idACLcBGAsYHQ/s0/Screenshot_2021-02-09_15-30-09.png"/></a></div>
<p>Get the contents of lines in a file between line containing a prefix, and line containing a postfix. Returns lines on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/sRFm3R7Y#MKuA4kICix4QhZ0vxPYTjR43lA2cLecSwYep8S87QZE" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-70207352621429274002021-02-09T14:04:00.002-08:002021-02-09T14:04:20.565-08:00Ritchey Get Line By Prefix i1 v3<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-Xjzxw2VQ4wQ/YCMGxZ7bf2I/AAAAAAAAB80/74ZgFeh6VIcHB3RWT2N8VOXdqqyTWVFxQCLcBGAsYHQ/s0/Screenshot_2021-02-09_14-03-27.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="351" data-original-width="802" src="https://1.bp.blogspot.com/-Xjzxw2VQ4wQ/YCMGxZ7bf2I/AAAAAAAAB80/74ZgFeh6VIcHB3RWT2N8VOXdqqyTWVFxQCLcBGAsYHQ/s0/Screenshot_2021-02-09_14-03-27.png"/></a></div>
<p>Get the content of a line in a file based on the start of the line. Returns line on success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/VZ8yxQSI#hzPzGccUbn_XvvDBNGo1NDDUBQnEFqA1USqmF56HSes" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-33099079962575109382021-02-09T14:01:00.002-08:002021-02-09T14:01:33.996-08:00Ritchey Get CLI Argument i1 v3<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-YP5zTVZGEJE/YCMGJmqj-0I/AAAAAAAAB8s/CQfyTvAqpUoAbVNRUBzLsAuSQC8oceoDwCLcBGAsYHQ/s0/Screenshot_2021-02-09_14-00-30.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="196" data-original-width="799" src="https://1.bp.blogspot.com/-YP5zTVZGEJE/YCMGJmqj-0I/AAAAAAAAB8s/CQfyTvAqpUoAbVNRUBzLsAuSQC8oceoDwCLcBGAsYHQ/s0/Screenshot_2021-02-09_14-00-30.png"/></a></div>
<p>Get value of commandline argument. Returns argument value (meaning the next argument) on success. Returns "NULL" if argument has no value (meaning there is no next argument). Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/RYtWXaCQ#_mIBLKSQCj1gD1DfyKCldfVfJhH3Ay9urqt-qVonOwE" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-78270870065727876672021-02-08T17:25:00.004-08:002021-02-08T17:27:01.245-08:00How to Prevent Automatic USB Suspending in Debian i1 v1<p>These steps will set the default value for automatic USB suspending to off. Individual devices can still be changed to have it enabled specifically for them.<br /><br /></p><a name='more'></a>Steps:<br />- In terminal enter:<br />sudo -i<br />- In terminal enter:<br />echo -1 > /sys/module/usbcore/parameters/autosuspend<br />- In terminal enter:<br />exit<br /><br />Notes:<br />- Tested on Debian 10 AMD64 XFCE.<br />- Default value on Debian is '2' which means if a usb device is idle for 2 seconds it should be suspended. '-1' means disable automatic USB suspending.<br /><br />Authors:James Daniel Marrs Ritchey<br />License:Ritchey Permissive License 10<br /><blockquote>Ritchey Permissive License v10:<br /><br />Subject to the terms of this license, any legal entity who receives material licensed with this license is hereby granted otherwise irrevocable royalty-free permission to do anything with the material. Permissions are revoked permanently from the legal entity upon breach of this license. The material is provided as it is, without implied fitness for any purpose. All obligations to the legal entity (including warranties, and guarantees) are disclaimed by all parties involved. The authors, copyright holders, patent holders, and providers of the material will not be held liable for anything (including damages, or liabilities) in connection with the material. The legal entity is responsible for any consequences of sharing the material (including damages, or liabilities), and takes on all obligations (including warranties, and guarantees) to recipients. The material must entirely remain solely under this license. This license is to be upheld in Canada, subject to the laws of Canada, as they were on April 21, 2019. The legal entity must be capable of being bound to all parts of this license, and by using the material agrees to be. If any part of this license is unenforceable the license cannot be accepted. The license text is provided under these terms.</blockquote><br /><br /><p></p>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-7271519438015161052021-02-06T11:03:00.005-08:002021-02-06T11:03:54.373-08:00Ritchey Copy File From Clump i1 v1<div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-21JDCVR20No/YB7n9qUEkkI/AAAAAAAAB8Y/KyKE1_fAEkQc86zCU53vdJirxtVUZO7GgCLcBGAsYHQ/s802/3.png" imageanchor="1" style=""><img border="0" data-original-height="341" data-original-width="802" src="https://1.bp.blogspot.com/-21JDCVR20No/YB7n9qUEkkI/AAAAAAAAB8Y/KyKE1_fAEkQc86zCU53vdJirxtVUZO7GgCLcBGAsYHQ/s16000/3.png" /></a></div><br />
<br /> <p></p><p>Copy a file from a clump (clump must be using Ritchey Clump v1 format). Returns location of file success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/RMtwAYpB#HzEWTqmgSlF1BIMngDPU7u5F-rE1KhkvgaO7LhSkQO4" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-54863623278116921132021-02-06T10:59:00.001-08:002021-02-06T11:00:04.265-08:00Ritchey Add File To Clump i1 v1<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://1.bp.blogspot.com/-jEfRBeeI-2o/YB7m4ctO-GI/AAAAAAAAB8M/OQxn-XureVczmDhh3-OogsHqq0XtSOtRgCLcBGAsYHQ/s799/Screenshot_2021-02-06_10-58-24.png" imageanchor="1" style=""><img border="0" data-original-height="260" data-original-width="799" src="https://1.bp.blogspot.com/-jEfRBeeI-2o/YB7m4ctO-GI/AAAAAAAAB8M/OQxn-XureVczmDhh3-OogsHqq0XtSOtRgCLcBGAsYHQ/s16000/Screenshot_2021-02-06_10-58-24.png" /></a></div><br /> <p></p><p>Add a file to a clump (clump uses Ritchey Clump v1 format). Returns location of clump pointer file success. Returns "FALSE" on failure.<br /><br />
</p><div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/UFsA2A7S#MYxvM_32o0X3hh9535XBp8M_o1Lc4XlB6ddPqPuloUc" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-80469113094376540292021-01-10T14:25:00.001-08:002021-01-10T14:25:07.347-08:00Ritchey Get Microseconds Timestamp i1 v1<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-a0vadoGb1W8/X_t-QRXwkPI/AAAAAAAAB40/UKQaDSe45sUqOCf0m646-NQ0mqA3g5JdwCLcBGAsYHQ/s0/Screenshot_2021-01-10_14-22-36.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="285" data-original-width="815" src="https://1.bp.blogspot.com/-a0vadoGb1W8/X_t-QRXwkPI/AAAAAAAAB40/UKQaDSe45sUqOCf0m646-NQ0mqA3g5JdwCLcBGAsYHQ/s0/Screenshot_2021-01-10_14-22-36.png"/></a></div>
Get the current Unix timestamp in microseconds. Returns timestamp as an integer on success. Returns "FALSE" on failure.<br /><br />
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/wBEgxBIS#tJZ9wlrz7gxeeNIabWTJMevRIHoEM8nQlHYKIv-e_uc" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-32748352278504248152021-01-09T17:27:00.001-08:002021-01-09T17:27:21.947-08:00Edit Video i1 v1<blockquote><p>#!/bin/bash<br />#Name:Edit Video i1 v1<br />#Description:Using the source video recordings created the completed edited version<br />#Usage:Enter a directory where temporary files can be written, and the finished video can be saved. Edit the 'SOURCE' and 'TYPE' variables to have correct details. Add in commands for extracting video segments. Run the script.<br /><a name='more'></a>#Notes:Tested on Debian 10. There is technically double conversion, but the first conversion should be visually lossless so it doesn't really matter. This script was made for my own use so it's not very user friendly, and doesn't do error checking. I'm sharing it as an example. You'll almost certainly want to edit it before using it.<br />#License:Ritchey Permissive License v10<br />#Task:<br />##Installing dependencies<br />sudo apt-get install -y ffmpeg coreutils findutils bash<br />##Convert source videos to a single video file in a highly seekable form to ensure accurate editing cuts<br />echo "Converting sources files to single video"<br />SOURCE='/home/user1/Videos/Source/'<br />TYPE='MOV'<br />FILES=$(find "$SOURCE" -type f -iname "*.$TYPE" -exec echo -n "{}," \;)<br />IFS=','<br />if [ -e source_videos.txt ]; then<br /> rm source_videos.txt<br />fi<br />for f in $FILES; do<br /> echo "FOUND: '${f}'"<br /> echo "file '${f}'" >> source_videos.txt<br />done<br />cat source_videos.txt | sort -n > source_videos_sorted.txt<br />mv source_videos_sorted.txt source_videos.txt<br />if [ ! -f single_video_file.mkv ]; then<br /> ffmpeg -f concat -safe 0 -i source_videos.txt -vcodec libx264 -x264-params keyint=30:min-keyint:30:scenecut=0 -preset ultrafast -crf 17 -tune film -profile:v high -filter:v fps=fps=30 -c:a flac -ar 48000 single_video_file.mkv<br />fi<br />rm source_videos.txt<br />echo ""<br />##Create clips by extracting portions of the video [Example: ffmpeg -y -i single_video_file.mkv -ss 00:20:14 -to 00:20:44 -codec copy clip_#.mkv]<br />echo "Extracting clips from video"<br />ffmpeg -y -i single_video_file.mkv -ss 00:00:10 -to 00:00:49 -codec copy clip_1.mkv<br />ffmpeg -y -i single_video_file.mkv -ss 00:20:00 -to 00:20:15 -codec copy clip_2.mkv<br />ffmpeg -y -i single_video_file.mkv -ss 00:33:14 -to 00:33:57 -codec copy clip_3.mkv<br /><br />echo ""<br />##Generate completed video by combining finished clips<br />echo "Generating completed video"<br />FILES=$(find "$PWD" -type f -iname "clip*.mkv" -exec echo -n "{}," \;)<br />IFS=','<br />if [ -e clip_videos.txt ]; then<br /> rm clip_videos.txt<br />fi<br />for f in $FILES; do<br /> echo "FOUND: '${f}'"<br /> echo "file '${f}'" >> clip_videos.txt<br />done<br />cat clip_videos.txt | sort -n > clip_videos_sorted.txt<br />mv clip_videos_sorted.txt clip_videos.txt<br />if [ -e finished_edited_video.mp4 ]; then<br /> rm finished_edited_video.mp4<br />fi<br />ffmpeg -f concat -safe 0 -i clip_videos.txt -vcodec libx264 -preset ultrafast -tune film -profile:v high -b:v 880k -filter:v fps=fps=30 -vsync 2 -c:a aac -b:a 256k -ar 48000 -ac 2 finished_edited_video.mp4<br />rm clip_videos.txt<br />FILES=$(find "$PWD" -type f -iname "clip*.mkv" -exec echo -n "{}," \;)<br />IFS=','<br />for f in $FILES; do<br /> rm "${f}"<br />done<br />echo ""<br />##Prompt user about keeping single_video_file.mkv. Since the script skips creating this file if it already exists, keeping it, can help speed up the next run of the script.<br />echo -n "Would you like to keep 'single_video_file.mkv' (y/n)?:"<br />read answer<br />if [ "$answer" != "y" ] ;then<br /> rm single_video_file.mkv<br />else<br /> echo "Keeping: '${PWD}/single_video_file.mkv'"<br />fi</p></blockquote>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-90557029511403807322021-01-08T14:25:00.006-08:002021-01-08T14:27:14.777-08:00My Chart Y2021M1D8<p>A playlist of songs I'm currently into.<br /><br />List:<br />1. Bratt - Haley, Haley Bonar - Bratt - Rating 5/5<br />2. Roses Imanbek Remix - SAINt JHN, Imanbek - Roses (Imanbek Remix) - Rating 5/5<br />3. Rockstar - DaBaby - Blame It On Baby - Rating 5/5<br />4. All Girls Are The Same - Juice WRLD - Goodbye & Good Riddance - Rating 5/5<span></span></p><a name='more'></a>5. Home - Black Foxxes - I'm Not Well - Rating 5/5<br />6. Phir Ek Tera Pyar - Bohemia - Phir Ek Tera Pyar - Rating 5/5<br />7. Midnight Sky - Miley Cyrus - Midnight Sun - Rating 5/5<br />8. Maple Summer - Black Foxxes - I'm Not Well - Rating 5/5<br />9. Same Beef - Bohemia, Sidhu Moose Wala - Same Beef - Rating 5/5<br />10. SAD (Imanbek xxx Remix) - Raster, Imanbek, Erin Bloomer - SAD (Imanbek xxx Remix) - Rating 5/5<br />11. Kill Me Better - Don Diablo, Imanbek, Trevor Daniel - Kill Me Better - Rating 5/5<br />12. In Completion - Underoath - O (Disambiguation) - Rating 4/5<br />13. River - Black Foxxes - I'm Not Well - Rating 5/5<br />14. Goodbye - Imanbek, Goodboys - Goodbye - Rating 5/5<br />15. I'm Just Feelin' (Du Du Du) - Imanbek, Martin Jensen - I'm Just Feelin' (Du Du Du) - Rating 5/5<br />16. Hey Baby - Imanbek, Afrojack, Gia Koka - Hey Baby - Rating 4/5<br /><br />Notes:<br />- Format: $TRACKTITLE - $ALBUMARTIST - $ALBUM - $RATING. Music videos are indicated with "[Music Video]" before the track title (eg: [Music Video] $TRACKTITLE - $ALBUMARTIST - $ALBUM - $RATING).<br />- Ratings reflect my opinion at the time, and may have changed since publication.<br /><br />Authors:James Daniel Marrs Ritchey<br />License:Ritchey Permissive License 10<br /><blockquote>Ritchey Permissive License v10:<br /><br />Subject to the terms of this license, any legal entity who receives material licensed with this license is hereby granted otherwise irrevocable royalty-free permission to do anything with the material. Permissions are revoked permanently from the legal entity upon breach of this license. The material is provided as it is, without implied fitness for any purpose. All obligations to the legal entity (including warranties, and guarantees) are disclaimed by all parties involved. The authors, copyright holders, patent holders, and providers of the material will not be held liable for anything (including damages, or liabilities) in connection with the material. The legal entity is responsible for any consequences of sharing the material (including damages, or liabilities), and takes on all obligations (including warranties, and guarantees) to recipients. The material must entirely remain solely under this license. This license is to be upheld in Canada, subject to the laws of Canada, as they were on April 21, 2019. The legal entity must be capable of being bound to all parts of this license, and by using the material agrees to be. If any part of this license is unenforceable the license cannot be accepted. The license text is provided under these terms.</blockquote><br /><p></p>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-42393813867094881702020-12-17T14:12:00.003-08:002020-12-17T14:12:49.442-08:00Ritchey Increment Items i1 v2<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-YovRLZEUkLA/X9fGEsJ1jfI/AAAAAAAAB24/FUPU2J2d7a0FWWFQk6hm-jRRy03SpFbSgCLcBGAsYHQ/s0/Screenshot_2020-12-14_12-07-15.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="391" data-original-width="702" src="https://1.bp.blogspot.com/-YovRLZEUkLA/X9fGEsJ1jfI/AAAAAAAAB24/FUPU2J2d7a0FWWFQk6hm-jRRy03SpFbSgCLcBGAsYHQ/s0/Screenshot_2020-12-14_12-07-15.png"/></a></div>
Increment items by 1 valid increment using content generation techniques. Returns items as an array on success. Returns "FALSE" on failure.<br /><br />
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/5IVjAKAA#xvqOSUzE-sCFdlowMu094jiNbeBxGrgkzMCCWfLbvac" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-31998745656419484952020-12-14T12:08:00.002-08:002020-12-17T14:13:05.773-08:00Ritchey Increment Items i1 v1<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-YovRLZEUkLA/X9fGEsJ1jfI/AAAAAAAAB24/FUPU2J2d7a0FWWFQk6hm-jRRy03SpFbSgCLcBGAsYHQ/s0/Screenshot_2020-12-14_12-07-15.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="391" data-original-width="702" src="https://1.bp.blogspot.com/-YovRLZEUkLA/X9fGEsJ1jfI/AAAAAAAAB24/FUPU2J2d7a0FWWFQk6hm-jRRy03SpFbSgCLcBGAsYHQ/s0/Screenshot_2020-12-14_12-07-15.png"/></a></div>
Increment items by 1 valid increment using content generation techniques. Returns items as an array on success. Returns "FALSE" on failure.<br /><br />
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/xM0W0CRD#uAj3HV06XNMjFWy9j4WjVbvicBMer2eQZCXgmNRNV5I" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-28363175123108194492020-12-12T21:58:00.000-08:002020-12-12T21:58:14.995-08:00Ritchey Increment Words i1 v2<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-tpH3WSINN7g/X9WtSqyGGcI/AAAAAAAAB2g/6ZEkKPDemw8Y_s_ETlofwJuvBVQprKQDgCLcBGAsYHQ/s0/Screenshot_2020-12-12_21-57-08.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="322" data-original-width="708" src="https://1.bp.blogspot.com/-tpH3WSINN7g/X9WtSqyGGcI/AAAAAAAAB2g/6ZEkKPDemw8Y_s_ETlofwJuvBVQprKQDgCLcBGAsYHQ/s0/Screenshot_2020-12-12_21-57-08.png"/></a></div>
Increment words by 1 valid increment using content generation techniques. Returns text as a string success. Returns "FALSE" on failure.<br /><br />
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/wYMXiAIB#6sm4SLiAne_5vBMZgBYyXesTs6zwVmDg_lSiuF5zj54" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-68934991914379176682020-12-09T11:20:00.000-08:002020-12-09T11:20:13.180-08:00Ritchey Web App Browser i1 v4<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-4xHq7gZH-zQ/X9EjPbOnBXI/AAAAAAAAB18/2R9aQ1n-kqkldnqvglhHZo5hxULY5IyzQCLcBGAsYHQ/s0/Screenshot_2020-12-09_11-18-51.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="634" data-original-width="808" src="https://1.bp.blogspot.com/-4xHq7gZH-zQ/X9EjPbOnBXI/AAAAAAAAB18/2R9aQ1n-kqkldnqvglhHZo5hxULY5IyzQCLcBGAsYHQ/s0/Screenshot_2020-12-09_11-18-51.png"/></a></div>
Ritchey Web App Browser i1 <i>(formerly Ritchey Xytic)</i> is an open source web browser for use with web apps. No address bar, or other browser related buttons are present to create a more native app experience.<br /><br />
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/kIU0WTpI#lz0s8Yc-XBDHufFBTOT9UuEincQ0rz0Sqb4aPj8WIlY" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-91784005473295568702020-12-07T14:07:00.002-08:002020-12-07T14:07:29.944-08:00Ritchey Create Meme i1 v1<div class="separator" style="clear: both;"><a href="https://1.bp.blogspot.com/-DSc8P9gx6NI/X86nK1kOlwI/AAAAAAAAB1k/8abdT9sInacpwCt5z9YM_sZRFVUmoVpqgCLcBGAsYHQ/s0/Screenshot_2020-12-07_14-04-53.png" style="display: block; padding: 1em 0; text-align: center; "><img alt="" border="0" data-original-height="622" data-original-width="718" src="https://1.bp.blogspot.com/-DSc8P9gx6NI/X86nK1kOlwI/AAAAAAAAB1k/8abdT9sInacpwCt5z9YM_sZRFVUmoVpqgCLcBGAsYHQ/s0/Screenshot_2020-12-07_14-04-53.png"/></a></div>
An opensource web app for creating modern style memes. Run it locally by opening 'index.html' in a web browser, or host it on a webserver.<br><br>
<div class="external_download_button_holder"><a class="external_download_button_holder" href="https://mega.nz/file/oMURhCSS#zLDMF5EVcLsZl4d71uHmfcbxS2z65sruIegapqGja4Q" target="_blank">Download</a></div><a name='more'></a>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-38683754783074484562020-11-29T10:54:00.002-08:002020-11-29T10:54:09.716-08:00Create A Frugal Rambooting Debian Installation i1 v3This tutorial covers how to create a frugal (changes are lost) rambooting (the operating system is copied to memory during boot) Debian 10 system image, installing it, and setting up a temporary flat-install (regular installation) for updating the frugal install.<a name='more'></a>These steps use Debian 10.4.0 XFCE AMD64, on an empty machine (no data, no operating systems, etc), and do not include consideration for other variants. The method used in this tutorial is nearly identical to configuring a Debian installation as a frugal-install, and is similar to converting live-media into a frugal media/install. Read through all the steps, and the notes at the bottom before proceeding.<br /><br />Create a System Image:<br />- Download, and install Debian 10 using the Debian 10.4.0 XFCE AMD64 live media ("https://cdimage.debian.org/debian-cd/current-live/amd64/iso-hybrid/debian-live-10.4.0-amd64-xfce.iso").<br />- Login as administrator (the user account created during installation) on the Debian installation.<br />- Open the "Applications" menu (located top left), go to "System", and click "Xfce Terminal" (a terminal emulator).<br />- In terminal enter "sudo apt update".<br />- In terminal enter "sudo apt install xorriso live-boot live-build live-tools initramfs-tools squashfs-tools gdisk tar zip unzip".<br />- In terminal enter "sudo apt clean".<br />- Boot the Debian live media in try mode.<br />- Open the "Applications" menu (located top left), go to "System", and click "Xfce Terminal" (a terminal emulator).<br />- In terminal enter "sudo apt update".<br />- In terminal enter "sudo apt install xorriso squashfs-tools tar zip unzip gdisk".<br />- In terminal enter "sudo apt clean".<br />- In terminal enter "sudo mkdir '/media/debian-installation'.<br />- In terminal enter "sudo blkid', and note the device path of the Debian installation root partition (eg: '/dev/sda2').<br />- In terminal enter "sudo mount '/dev/sda2' '/media/debian-installation'<br />- In terminal enter "sudo mv '/media/debian-installation/etc/fstab' '/media/debian-installation/etc/fstab.original'".<br />- In terminal enter "sudo -i".<br />- In terminal enter "echo -e "#OSP\n#UUID=a893cdad-bd69-4f85-982f-cd0ad518a22f\t/\text4\terrors=remount-ro\t0\t1\n#SWAP\n#UUID=a893cdad-bd69-4f85-982f-cd0ad518a22f\tnone\tswap\tsw\t0\t0\n#DVD/CD Drive\n/dev/sr0\t/media/cdrom0\tudf,iso9660\tuser,noauto\t0\t0" > '/media/debian-installation/etc/fstab'".<br />- In terminal enter "exit".<br />- If it isn't already connected, insert an empty (or okay to format) drive to save the system image to (eg: '/dev/sdb').<br />- In terminal enter "sudo lsblk -a -p", find the drive where the system image will be saved to, and note the device path (eg: '/dev/sdb').<br />- In terminal enter "sudo sgdisk --zap-all '/dev/sdb'". This will delete everything from this drive!<br />- In terminal enter "sudo sgdisk -g '/dev/sdb'".<br />- In terminal enter "sudo sgdisk -N 1 '/dev/sdb'".<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdb1'". <br />- In terminal enter "sudo mkdir '/media/system-image'".<br />- In terminal enter "sudo mount '/dev/sdb1' '/media/system-image'". "sdb1" being the partition on the drive where the system image is going to be saved.<br />- In terminal enter "sudo mkdir '/media/system-image/OSP'".<br />- In terminal enter "sudo mksquashfs '/media/debian-installation' '/media/system-image/OSP/filesystem.squashfs'".<br />- In terminal enter "cd '/media/system-image/OSP' && sudo xorriso -dev '/media/system-image/OSP/rootfs.iso' -add 'filesystem.squashfs' && cd -".<br />- In terminal enter "sudo rm '/media/system-image/OSP/filesystem.squashfs'".<br />- In terminal enter "sudo mv '/media/debian-installation/etc/fstab.original' '/media/debian-installation/etc/fstab'".<br />- In terminal enter "sudo mkdir '/media/system-image/OSP/boot'".<br />- In terminal enter "sudo ls -l '/media/debian-installation/boot'". Note the filename of the initrd file (eg: initrd.img-4.19.0-9-amd64).<br />- In terminal enter "sudo cp '/media/debian-installation/boot/initrd.img-4.19.0-9-amd64' '/media/system-image/OSP/boot/initrd.img'". "initrd.img-4.19.0-9-amd64" being the filename of the initrd.<br />- In terminal enter "sudo ls -l '/media/debian-installation/boot'". Note the filename of the vmlinuz file (eg: vmlinuz-4.19.0-9-amd64).<br />- In terminal enter "sudo cp '/media/debian-installation/boot/vmlinuz-4.19.0-9-amd64' '/media/system-image/OSP/boot/vmlinuz'". "vmlinuz-4.19.0-9-amd64" being the filename of the vmlinuz.<br />- In terminal enter "sudo umount '/media/debian-installation'".<br />- In terminal enter "sudo umount '/media/debian-installation'".<br />- In terminal enter "sudo rmdir '/media/debian-installation'".<br />- In terminal enter "sudo mkdir '/media/system-image/OSP/boot/grub'".<br />- In terminal enter "sudo nano '/media/system-image/OSP/boot/grub/grub.cfg'".<br />- In Nano enter:<br />[quote]<br />#Graphics<br />insmod efi_gop<br />insmod efi_uga<br />insmod ieee1275_fb<br />insmod vbe<br />insmod vga<br />insmod video_bochs<br />insmod video_cirrus<br />insmod all_video<br />insmod gfxterm<br />set gfxmode=auto<br /><br />#Theme<br />set color_normal=white/black<br />set color_highlight=black/white<br />set menu_color_normal=white/black<br />set menu_color_highlight=black/white<br /><br />#Menu Entries<br />menuentry "Debian (Frugal Rambooting)" {<br /> search --no-floppy --fs-uuid --set=root b23a39a1-a5b8-456e-a3d1-783e59907c0b<br /> insmod gzio<br /> insmod part_gpt<br /> insmod ext2<br /> linux /boot/vmlinuz boot=live toram live-media-path=/ findiso=/rootfs.iso root=UUID=b23a39a1-a5b8-456e-a3d1-783e59907c0b ro quiet<br /> initrd /boot/initrd.img<br />}<br />menuentry "Debian (Frugal)" {<br /> search --no-floppy --fs-uuid --set=root b23a39a1-a5b8-456e-a3d1-783e59907c0b<br /> insmod gzio<br /> insmod part_gpt<br /> insmod ext2<br /> linux /boot/vmlinuz boot=live live-media-path=/ findiso=/rootfs.iso root=UUID=b23a39a1-a5b8-456e-a3d1-783e59907c0b ro quiet<br /> initrd /boot/initrd.img<br />}<br />menuentry "Debian (Frugal Rambooting) [OLD]" {<br /> search --no-floppy --fs-uuid --set=root b23a39a1-a5b8-456e-a3d1-783e59907c0b<br /> insmod gzio<br /> insmod part_gpt<br /> insmod ext2<br /> linux /boot/vmlinuz.old boot=live toram live-media-path=/ findiso=/rootfs.iso.old root=UUID=b23a39a1-a5b8-456e-a3d1-783e59907c0b ro quiet<br /> initrd /boot/initrd.img.old<br />}<br />menuentry "Debian (Frugal) [OLD]" {<br /> search --no-floppy --fs-uuid --set=root b23a39a1-a5b8-456e-a3d1-783e59907c0b<br /> insmod gzio<br /> insmod part_gpt<br /> insmod ext2<br /> linux /boot/vmlinuz.old boot=live live-media-path=/ findiso=/rootfs.iso.old root=UUID=b23a39a1-a5b8-456e-a3d1-783e59907c0b ro quiet<br /> initrd /boot/initrd.img.old<br />}<br />menuentry "Debian (Flat)" {<br /> search --no-floppy --fs-uuid --set=root b23a39a1-a5b8-456e-a3d1-783e59907c0b<br /> insmod gzio<br /> insmod part_gpt<br /> insmod ext2<br /> linux /vmlinuz root=UUID=b23a39a1-a5b8-456e-a3d1-783e59907c0b ro quiet<br /> initrd /initrd.img<br />}<br />[/quote]<br />- In Nano press "control" + "X" to exit. When prompted to save enter "y".<br />- In terminal enter "sudo tar -cpf '/media/system-image/OSP.tar' -C '/media/system-image/OSP' 'boot' 'rootfs.iso'".<br />- In terminal enter "sudo rm -r '/media/system-image/OSP'".<br />- In terminal enter "cd '/media/system-image' && sudo zip -r 'system-image.zip' 'OSP.tar' && cd -".<br />- In terminal enter "sudo rm '/media/system-image/OSP.tar'".<br />- Logoff the Debian live media. The system image is finished being created. You can move it where ever you want.<br /><br />Install a System Image (UEFI):<br />- Login as Administrator on the Debian installation.<br />- If it isn't already connected, connect the device which the Debian system image will be installed on. All existing content on this device is going to be erased during the installation.<br />- In terminal enter "lsblk -a -p", find the device which the Debian system image will be installed on, and note the device path (eg: "/dev/sdc").<br />- In terminal enter "sudo sgdisk --zap-all '/dev/sdc'".<br />- In terminal enter "sudo sgdisk -g '/dev/sdc'".<br />- In terminal enter "sudo sgdisk -n 1:0:+128M '/dev/sdc'". Replace "128" with the size in Mebibytes you want the ESP (EFI System Partition) to be. If you don't what size to use, keep it at the standard 128.<br />- In terminal enter "sudo mkfs -t vfat '/dev/sdc1'". Replace "/dev/sdc1" with the device partition created in the last step (eg: If the drive used was /dev/sdc, then the partition is /dev/sdc1).<br />- In terminal enter "sudo sgdisk -n 2:0:+20G '/dev/sdc'". Replace "20" with the size in Gibibytes you want the OSP (Operating System Partition) to be. How large you make it depends on the size of your system image, and how large the device being installed to is. Keep in mind you'll want minimum about twice the size of the system image, so you have room for it, and an older version of it.<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdc2'". Replace "/dev/sdc2" with the device partition created in the previous step (eg: If the drive used was /dev/sdc then the partition is /dev/sdc2).<br />- In terminal enter "sudo sgdisk -n 3:0:+20G '/dev/sdc'". Replace "20" with the size in Gigabytes you want for an empty partition. This partition will be used for housing a flat-install on a temporary basis for creating updated system images. The rest of the time it will be empty. How large you make it depends on the size of your extracted system image, and how large the device being installed to is.<br />- In terminal type "sudo mkfs -t ext4 '/dev/sdc3'". Replace "/dev/sdc3" with the previously created partition (eg: if the drive used was /dev/sdc then the partition is /dev/sdc3).<br />- In terminal enter "lsblk -a -p", find the OSP, and note the device path (eg: "/dev/sdc2").<br />- In terminal enter "sudo mkdir '/media/system-osp'".<br />- In terminal enter "sudo mount '/dev/sdc2' '/media/system-osp'".<br />- In terminal enter "lsblk -a -p", find the drive where you saved the system-image, and note the device path (eg: "/dev/sdb1").<br />- In terminal enter "sudo mkdir '/media/system-image'".<br />- In terminal enter "sudo mount '/dev/sdb1' '/media/system-image'".<br />- In terminal enter "sudo unzip -p '/media/system-image/system-image.zip' 'OSP.tar' | sudo tar -xpf - -C '/media/system-osp'".<br />- In terminal enter "sudo blkid". Note the filesystem UUID, labelled as "UUID" (eg: "ebf37fb3-2a8c-40ad-9896-f248ae062174") for the OSP (eg: "/dev/sdc2").<br />- In terminal enter "sudo sed -i 's/b23a39a1-a5b8-456e-a3d1-783e59907c0b/ebf37fb3-2a8c-40ad-9896-f248ae062174/g' '/media/system-osp/boot/grub/grub.cfg'". Replace "ebf37fb3-2a8c-40ad-9896-f248ae062174" with the previously noted UUID of the OSP.<br />- In terminal enter "sudo mkdir '/media/system-esp'".<br />- In terminal enter "sudo blkid". Find the ESP, and note the device path (eg: "/dev/sdc1").<br />- In terminal enter "sudo mount '/dev/sdc1' '/media/system-esp'".<br />- In terminal enter "sudo grub-install --efi-directory='/media/system-esp' --uefi-secure-boot '/dev/sdc' --boot-directory='/media/system-osp/boot' --bootloader-id='Debian Compressed Frugal' --removable". Substitute '/dev/sdc' for the device being installed to.<br />- In terminal enter "sudo umount '/media/system-osp'.<br />- In terminal enter "sudo rmdir '/media/system-osp'.<br />- In terminal enter "sudo umount '/media/system-esp'.<br />- In terminal enter "sudo rmdir '/media/system-esp'.<br />- In terminal enter "sudo umount '/media/system-image'.<br />- In terminal enter "sudo rmdir '/media/system-image'.<br /><br />Install a System Image (BIOS):<br />- Login as Administrator on the Debian installation.<br />- In terminal enter "sudo apt update".<br />- In terminal enter "sudo apt install parted".<br />- If it isn't already connected, connect the device which the Debian system image will be installed on. All existing content on this device is going to be erased during the installation.<br />- In terminal enter "lsblk -a -p", find the device which the Debian system image will be installed on, and note the device path (eg: "/dev/sdc").<br />- In terminal enter "sudo parted -s '/dev/sdc' mklabel msdos".<br />- In terminal enter "sudo parted -s -a optimal '/dev/sdc' mkpart primary ext4 0% 20GiB".<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdc1'". Replace "/dev/sdc1" with the device partition created in the previous step (eg: If the drive used was /dev/sdc then the partition is /dev/sdc1).<br />- In terminal enter "sudo parted -s '/dev/sdc' set 1 boot on".<br />- In terminal enter "sudo parted -s -a optimal '/dev/sdc' mkpart primary ext4 20GiB 40GiB".<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdc2'". Replace "/dev/sdc2" (eg: If the drive used was /dev/sdc then the partition is /dev/sdc2).<br />- In terminal enter "lsblk -a -p", find the OSP, and note the device path (eg: "/dev/sdc1").<br />- In terminal enter "sudo mkdir '/media/system-osp'".<br />- In terminal enter "sudo mount '/dev/sdc1' '/media/system-osp'".<br />- In terminal enter "lsblk -a -p", find the drive where you saved the system-image, and note the device path (eg: "/dev/sdb1").<br />- In terminal enter "sudo mkdir '/media/system-image'".<br />- In terminal enter "sudo mount '/dev/sdb1' '/media/system-image'".<br />- In terminal enter "sudo unzip -p '/media/system-image/system-image.zip' 'OSP.tar' | sudo tar -xpf - -C '/media/system-osp'".<br />- In terminal enter "sudo blkid". Note the filesystem UUID, labelled as "UUID" (eg: "8a9577b5-3fcd-4cb1-bfec-5fc658a4833c") for the OSP (eg: "/dev/sdc1").<br />- In terminal enter "sudo sed -i 's/ebf37fb3-2a8c-40ad-9896-f248ae062174/8a9577b5-3fcd-4cb1-bfec-5fc658a4833c/g' '/media/system-osp/boot/grub/grub.cfg'". Replace "8a9577b5-3fcd-4cb1-bfec-5fc658a4833c" with the previously noted UUID of the OSP.<br />- In terminal enter "sudo sed -i '2s/insmod efi_gop/#insmod efi_gop/g' '/media/system-osp/boot/grub/grub.cfg'".<br />- In terminal enter "sudo sed -i '3s/insmod efi_uga/#insmod efi_uga/g' '/media/system-osp/boot/grub/grub.cfg'".<br />- In terminal enter "sudo sed -i 's/insmod part_gpt/insmod part_msdos/g' '/media/system-osp/boot/grub/grub.cfg'".<br />- In terminal enter "sudo blkid". Note the device path the system is installed on (eg: "/dev/sdc", not a specific partition!).<br />- In terminal enter "sudo apt update".<br />- In terminal enter "sudo apt install grub-pc-bin". This adds support for installing Grub2 on BIOS/MBR setups.<br />- In terminal enter "sudo grub-install --target=i386-pc --boot-directory='/media/system-osp/boot' --bootloader-id='Debian Compressed Frugal' '/dev/sdc'". Substitute '/dev/sdc' for the device being installed to.<br />- In terminal enter "sudo umount '/media/system-osp'.<br />- In terminal enter "sudo rmdir '/media/system-osp'.<br />- In terminal enter "sudo umount '/media/system-image'.<br />- In terminal enter "sudo rmdir '/media/system-image'.<br /><br />Use an Installation:<br />- Upon booting from the drive, choose either "Debian (Frugal Rambooting)" to boot-to-ram, or "Debian (Frugal)" to boot from disk. If you have an old version present you can also use the "Debian (Frugal Rambooting) [OLD]", and "Debian (Frugal) [OLD]" entries to boot those. The "Debian (Flat)" entry will only work when there is a flat-install present (eg: when creating an updated system-image), it has been configured to point to the appropriate filesystem UUID, and the fstab is up to date.<br /><br />Update an Installation:<br />- Boot the system using the "Debian (Frugal Rambooting)" entry.<br />- In terminal enter "lsblk -a -p". Note the device path for the empty partition for the flat-install (eg: "/dev/sdc3").<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdc3'". Replace "/dev/sdc3" with the previously noted device path.<br />- In terminal enter "sudo mkdir '/media/system-flat-install'".<br />- In terminal etner "sudo mount '/dev/sdc3' '/media/system-flat-install'".<br />- In terminal enter "lsblk -a -p". Note the device path for the system OSP partition (eg: "/dev/sdc2").<br />- In terminal enter "sudo mkdir '/media/system-osp'".<br />- In terminal enter "sudo mount '/dev/sdc2' '/media/system-osp'". Replace '/dev/sdc2' with the previously noted device path.<br />- In terminal enter "sudo mkdir '/media/system-iso'".<br />- In terminal enter "sudo mount '/media/system-osp/rootfs.iso' '/media/system-iso'".<br />- In terminal enter "sudo unsquashfs -f -d '/media/system-flat-install' '/media/system-iso/filesystem.squashfs'".<br />- In terminal enter "sudo umount '/media/system-iso'".<br />- In terminal enter "sudo rmdir '/media/system-iso'".<br />- In terminal enter "cat '/media/system-osp/boot/grub/grub.cfg' | head --lines=53 | tail --lines=1". Note the UUID after the word "root". This is the filesystem UUID being used by Grub for the system flat-install partition (eg: "ebf37fb3-2a8c-40ad-9896-f248ae062174").<br />- In terminal enter "sudo blkid". Note the current filesystem UUID (eg: "dc2ef2e2-a2a5-4f50-a551-11108a3881e4") of the flat-install partition (eg: "/dev/sdc3").<br />- In terminal enter "sudo sed -i '53s/ebf37fb3-2a8c-40ad-9896-f248ae062174/dc2ef2e2-a2a5-4f50-a551-11108a3881e4/' '/media/system-osp/boot/grub/grub.cfg'". Substitute the first UUID for the one currently used by Grub, and the second UUID for the one currently used by the flat-install partition's filesystem.<br />- In terminal enter "sudo sed -i '57s/ebf37fb3-2a8c-40ad-9896-f248ae062174/dc2ef2e2-a2a5-4f50-a551-11108a3881e4/' '/media/system-osp/boot/grub/grub.cfg'".<br />- In terminal enter "cat '/media/system-flat-install/etc/fstab' | head --lines=2 | tail --lines=1". Note the UUID after "UUID=". This is the filesystem UUID (eg: "a893cdad-bd69-4f85-982f-cd0ad518a22f") currently being used by fstab for the system flat-install root partition.<br />- In terminal enter "sudo blkid". Note the current filesystem UUID (eg: "dc2ef2e2-a2a5-4f50-a551-11108a3881e4") of the flat-install partition (eg: "/dev/sdc3").<br />- In terminal enter "sudo sed -i '2s/a893cdad-bd69-4f85-982f-cd0ad518a22f/dc2ef2e2-a2a5-4f50-a551-11108a3881e4/' '/media/system-flat-install/etc/fstab'". Substitute the first UUID for the one currently used by fstab, and the second UUID for the one currently used by the flat-install partition's filesystem.<br />- In terminal enter "sudo sed -i '2s/#UUID/UUID/' '/media/system-flat-install/etc/fstab'".<br />- In terminal enter "sudo umount '/media/system-osp'".<br />- In terminal enter "sudo rmdir '/media/system-osp'".<br />- In terminal enter "sudo umount '/media/system-flat-install'".<br />- In terminal enter "sudo rmdir '/media/system-flat-install'".<br />- Reboot.<br />- Choose the "Debian (Flat)" menu entry at boot. This will boot up the flat-install.<br />- Login, and make any desired changes (eg: system updates, software installation, program preferences, etc).<br />- In terminal enter "lsblk -a -p". Note the device path for the system OSP partition (eg: "/dev/sdc2").<br />- In terminal enter "sudo mkdir '/media/system-osp'".<br />- In terminal enter "sudo mount '/dev/sdc2' '/media/system-osp'". Replace '/dev/sdc2' with the previously noted device path.<br />- In terminal enter "sudo mv '/media/system-osp/boot/initrd.img' '/media/system-osp/boot/initrd.img.old'".<br />- In terminal enter "sudo mv '/media/system-osp/boot/vmlinuz' '/media/system-osp/boot/vmlinuz.old'".<br />- In terminal enter "sudo mv '/media/system-osp/rootfs.iso' '/media/system-osp/rootfs.iso.old'".<br />- In terminal enter "sudo umount '/media/system-osp'".<br />- In terminal enter "sudo rmdir '/media/system-osp'".<br />- Reboot.<br />- Chose the "Debian (Frugal Rambooting) [Old]" menu entry at boot. This will boot up the old system.<br />- Login.<br />- In terminal enter "lsblk -a -p". Note the device path for the system OSP partition (eg: "/dev/sdc2").<br />- In terminal enter "sudo mkdir '/media/system-osp'".<br />- In terminal enter "sudo mount '/dev/sdc2' '/media/system-osp'". Replace '/dev/sdc2' with the previously noted device path.<br />- In terminal enter "lsblk -a -p". Note the device path for the empty partition used for the flat-install (eg: "/dev/sdc3").<br />- In terminal enter "sudo mkdir '/media/system-flat-install'".<br />- In terminal etner "sudo mount '/dev/sdc3' '/media/system-flat-install'". Replace "/dev/sdc3" with the previously noted device path.<br />- In terminal enter "sudo sed -i '2s/UUID/#UUID/' '/media/system-flat-install/etc/fstab'".<br />- In terminal enter "sudo mksquashfs '/media/system-flat-install' '/media/system-osp/filesystem.squashfs'".<br />- In terminal enter "cd '/media/system-osp' && sudo xorriso -dev '/media/system-osp/rootfs.iso' -add 'filesystem.squashfs' && cd -".<br />- In terminal enter "sudo rm '/media/system-osp/filesystem.squashfs'".<br />- In terminal enter "sudo ls -l '/media/system-flat-install/boot'". Note the filename of the initrd file (eg: initrd.img-4.19.0-9-amd64).<br />- In terminal enter "sudo cp '/media/system-flat-install/boot/initrd.img-4.19.0-9-amd64' '/media/system-osp/boot/initrd.img'". "initrd.img-4.19.0-9-amd64" being the filename of the initrd.<br />- In terminal enter "sudo ls -l '/media/system-flat-install/boot'". Note the filename of the vmlinuz file (eg: vmlinuz-4.19.0-9-amd64).<br />- In terminal enter "sudo cp '/media/system-flat-install/boot/vmlinuz-4.19.0-9-amd64' '/media/system-osp/boot/vmlinuz'". "vmlinuz-4.19.0-9-amd64" being the filename of the vmlinuz.<br />- In terminal enter "sudo umount '/media/system-osp'".<br />- In terminal enter "sudo rmdir '/media/system-osp'".<br />- In terminal enter "sudo umount '/media/system-flat-install'".<br />- In terminal enter "sudo rmdir '/media/system-flat-install'".<br />- Reboot.<br />- Chose the "Debian (Frugal Rambooting)" menu entry at boot. This will boot up the new system.<br />- Login.<br />- In terminal enter "lsblk -a -p". Note the device path for the empty partition for the flat-install (eg: "/dev/sdc3").<br />- In terminal enter "sudo mkfs -t ext4 '/dev/sdc3'". Replace "/dev/sdc3" with the previously noted device path. This will delete the flat-install, and make it an empty partition again.<br /><br />Notes:<br />- Tested with Debian 10.4.0 XFCE AMD64.<br />- These steps were updated from an older tutorial.<br />- Do NOT blatently run commands. Some expect you to substitute values!<br />- On the Debian live media the administrative account is "user", and the password is "live".<br />- The steps do not setup the installation with a swap partition (or file), because on many modern systems it isn't needed, and causes unwanted writes. However, this means you won't be able to "suspend" or "hibernate" the system. You can add one by creating one (eg: If using /dev/sdc, "sudo sgdisk -n 4:0:+16G '/dev/sdc'", then "sudo mkswap '/dev/sdc4'"), and then adding an entry for it in fstab when updating the system-image. A swap partition should be atleast the same size as your RAM (so that it can store all the RAM data). If your system has a moderate amount of RAM you may want to use double that size for the SWAP partition. If your system very little RAM you may want to use quadruple the amount of SWAP.<br />- Live-boot does not work well when multiple squashfs files exist on a device. It has a habbit (depending on the name) of loading multiple squashfs files at once. As a work around, these steps pack the squashfs files into ISO's which allows specifying the exact file to load.<br />- Live-boot does not support live-media-path's with periods, or underscores when booting to ram. Instead it will boot.<br />- The temporary flat-install created during updating must have the fstab configured or the xserver will fail at login, and startx will not be able to start it.<br />- The frugal install will not have a background image displayed in Grub, because this can't be configured in grub.cfg.<br />- When using "grub-install" in these steps "--bootloader-id='Debian Compressed Frugal'" is specified. Normally this sets the folder name used on the ESP (eg: "/EFI/Debian Compressed Frugal"), and the entry name used in the UEFI (eg: "Debian Compressed Frugal"). In these steps "--removable" is also used, which overrules the ID specification, and makes grub install to /EFI/BOOT on the ESP. It will also use the name "BOOTX64.EFI" instead of "grubx64.efi". UEFIs typically know to check ESPs for /EFI/BOOT/BOOTX64.EFI, which is why you can boot that boot manager when specifying to boot from a device entry. UEFIs typically don't know to search other directories (eg: "/EFI/Debian Compressed Frugal"), which means you can only boot the boot-manager if you have an entry (which grub would create) in your UEFI pointing to that EFI file. Because these steps use "--removable" there will be no entry; you will need to boot from the device entry instead.<br />- These notes don't take into consideration BIOS system, except for the steps on installing the system-image on a BIOS machine. Those steps don't take into consideration BIOS systems using GPT (GUID Partition Table).<br />- In these steps a Grub boot folder is created on the OSP of the frugal install. Alternatively "--boot-directory=" could have been used to place the grub folder on the ESP, or a seperate boot partition. You can also create a grub folder containing a grub.cfg that just points to another grub.cfg on another partition.<br />- "live-config" isn't installed, because it isn't needed for this type of installation. It's used for creating frugal installations with modified configs like: creating a new user, changing the hostname, auto-logins.<br />- These steps create a compressed squashfs using mksquashfs's default settings. Performance systems with ample RAM, and diskspace may wish to disable compression.<br /><br />Authors:James Daniel Marrs Ritchey<br />License:Ritchey Permissive License v10<br /><blockquote>Ritchey Permissive License v10:<br /><br />Subject to the terms of this license, any legal entity who receives material licensed with this license is hereby granted otherwise irrevocable royalty-free permission to do anything with the material. Permissions are revoked permanently from the legal entity upon breach of this license. The material is provided as it is, without implied fitness for any purpose. All obligations to the legal entity (including warranties, and guarantees) are disclaimed by all parties involved. The authors, copyright holders, patent holders, and providers of the material will not be held liable for anything (including damages, or liabilities) in connection with the material. The legal entity is responsible for any consequences of sharing the material (including damages, or liabilities), and takes on all obligations (including warranties, and guarantees) to recipients. The material must entirely remain solely under this license. This license is to be upheld in Canada, subject to the laws of Canada, as they were on April 21, 2019. The legal entity must be capable of being bound to all parts of this license, and by using the material agrees to be. If any part of this license is unenforceable the license cannot be accepted. The license text is provided under these terms.</blockquote><br /><p></p>Unknownnoreply@blogger.comtag:blogger.com,1999:blog-1282386693454481848.post-91087590552451499622020-11-23T14:20:00.002-08:002020-11-23T14:21:00.921-08:00My Dream November 23, 2020<p>I had a strange nightmare last night. In the dream, I was sleeping in bed, in an apartment. The apartment was home to myself, and several other middle eastern people (I'm not sure exactly where from). Some were men, and some women. They were around my age. The apartment was so small that some of us even shared the same bed platonically. We were in a fictional city located somewhere meant to be a representation of the middle east (but not really anything like it). Geographically it had a feeling of being south in a world with only north, and south directions. I think the desert near the city was in a dream I had many years ago. It was covered in dark skies with sunlight cracking off in the wrong direction for sunrise, or sunset. It was meant as a sunrise though.<br /><br />I was sleeping well in the dream until I heard an explosion in the distance followed by a flash of light. I was very sleepy feeling, but at the same time concerned about what was happening. </p><a name='more'></a>The explosion had sounded like a bomb dropped from a WWII aircraft (or something of that nature). Like when a city gets bombarded. I wanted to get up, and find out what was going on, but I couldn't. Two of the people I was sharing a bed with were laying somewhat on top of me. Enough to have me pinned, and weighted down. The result felt somewhat like having sleep paralysis within a dream rather than actually having it. I could hear someone off to my left, in the next room, chanting, "Allah akba" (I'm probably not spelling that correctly). I began to think about the fact that I really didn't know these people well. I had only moved in recently (how recently was not clear, nore the reason for being there). I wondered, "What if they were terrorists!?" After a moment or so my sanity prevailed, and I realized that wasn't very likely. A lot of movies I've seen claim that "Allah akba" means "God is great". I don't know if that's true, but as far as I'm aware it is religious phrase, nothing hostile. At this point, I suspected the person chanting it was probably laying in bed, just like me, and was chanting it because they were afraid for themselves, and those they cared about. We were all in this the same. I heard another explosion in the distance. I wondered if it was a bit closer? I tried to move out from under the persons laying on me, and accidentally woke them. <br /><br />At this point the dream took a temporary detour from its fearful tone to just being really awkward. Hinting I'd taken more than my fair share of the bed, I offered to move over to the right, to make room for the people sleeping on me, if they were scrunched. They claimed that there was no need. They were quite comfortable. It didn't come across as weird, or sexual. It was more that people living in overly shared spaces get scrunched together a lot. One of them realized I might be uncomfortable (since we were men), and offered for them to move over if I wasn't comfortable. I agreed that would nice, but made up a white lie about having a boney body, and so I got uncomfortable from sleeping in the same position for too long. I tried to emphasize that I had no issue with them personally, or sharing the bed. They moved off me, and no offense seemed to have been taken by the request. All in all, it was a very awkward conversation. The me aware of the dream was internally cringing. After this the dream turned back to a fearful tone. <br /><br />Throughout the dream my heart had been racing, and now it was pounding faster than ever. I heard another explosion. Still distant, but definitely a bit closer. It was followed by the same flash of light. The explosion shook some of the dust from the rather dirty room. At this point I woke up.<br /><br />This dream was unusual for several reasons. I rarely dream of deserty far off places. The apartment was the probably the most notable aspect. I've had dreams take place in lots of locations, but not with a sense of ownership, unless it's actually a place I own in real life. I lived in this apartment in the dream; I wasn't just randomly there. Another unusual thing, I was sleeping in the dream. This only happens with dreams that have a feeling of sleep paralysis within a dream, and in that sort of dream I would normally be in my real bed. This is the first dream I've ever had with any notion of terrorism that I can recall. Same goes for warplane bombings. Despite the concept of wartime planes the dream didn't seem to take place at that point in time. Everything was quite modern, but it felt more like it took place thousands of years ago. For me scary dreams usually have a sense of fear, but in this dream it was terror. The difference being, in a dream where I'm scared (aside from sleep paralysis) I always have options of escape; the last resort being to fly away. In this dream, no such thoughts ever even entered my mind. I just stayed in the apartment wondering about what was happening to the East. I know that's a contradiction of what I said earlier about there only being North, and South. What I mean in this case is that it was to my right, and that felt like East. Plus it is a dream so things don't have to make sense. Anyways, it was certainly an entertaining dream.<br /><br />Author:James Daniel Marrs Ritchey<br />License:Ritchey Permissive License v10<br /><blockquote>Ritchey Permissive License v10:<br /><br />Subject to the terms of this license, any legal entity who receives material licensed with this license is hereby granted otherwise irrevocable royalty-free permission to do anything with the material. Permissions are revoked permanently from the legal entity upon breach of this license. The material is provided as it is, without implied fitness for any purpose. All obligations to the legal entity (including warranties, and guarantees) are disclaimed by all parties involved. The authors, copyright holders, patent holders, and providers of the material will not be held liable for anything (including damages, or liabilities) in connection with the material. The legal entity is responsible for any consequences of sharing the material (including damages, or liabilities), and takes on all obligations (including warranties, and guarantees) to recipients. The material must entirely remain solely under this license. This license is to be upheld in Canada, subject to the laws of Canada, as they were on April 21, 2019. The legal entity must be capable of being bound to all parts of this license, and by using the material agrees to be. If any part of this license is unenforceable the license cannot be accepted. The license text is provided under these terms.</blockquote><br /><p></p>Unknownnoreply@blogger.com