incredibly huge refactor once more

- parallelize build script
- "articles" page now
- feed refactor, no need for _postbuild now
This commit is contained in:
yosh 2024-03-31 16:04:49 -04:00
parent 5d7455cecb
commit 10f13cef48
36 changed files with 314 additions and 98 deletions

View File

@ -124,13 +124,41 @@ escapepipe() {
# build folder structure
find "$_SRCDIR" -type d -exec sh -c 'for d; do mkdir -p "$_BUILDDIR"/"${d#"$_SRCDIR"}"; done' sh {} +
while IFS=i read -r _FILE; do
# it's parallel time baby
# hopefully portable enough to not be an issue
__THREADS="$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)"
[ $? -ne 0 ] \
&& echo 'unable to find number of cores! defaulting to 1 thread unless otherwise specified...' >&2 \
&& __THREADS=1
# make a parallel fifo/file descriptor we need
__fifo_para="$(mktemp -u -t "shpbuild.XXXXXX")"
mkfifo "$__fifo_para"
exec 9<>"$__fifo_para"
rm -f "$__fifo_para"
while [ "$__THREADS" -gt 0 ]; do
printf "\n" >&9 # start with THREADS amount of lines in fd 9 for later
__THREADS="$((__THREADS - 1))"
done
# read each line from fd 9, launch new program for each line
# print a line after program finished such that another one can take its place
__run_in_parallel() {
read -r __ <&9
{
"$@"
printf '\n' >&9
} &
}
while IFS= read -r _FILE; do
cd "${_FILE%/*}"
__OUTFILE="$_BUILDDIR/${_FILE#"$_SRCDIR"}"
case "${_FILE##*/}" in
*.[hH][tT][mM][lL]|*.[Ss][Hh][Pp]) ( __process_shp "$_FILE" ) > "$__OUTFILE" ;;
*.[mM][dD]) ( __process_md "$_FILE" ) > "${__OUTFILE%.*}.html" ;;
*) cp -p "$_FILE" "$__OUTFILE" ;;
*.[hH][tT][mM][lL]|*.[sS][hH][pP]) ( __run_in_parallel __process_shp "$_FILE" ) > "${__OUTFILE%.*}.html" ;;
*.[mM][dD]) ( __run_in_parallel __process_md "$_FILE" ) > "${__OUTFILE%.*}.html" ;;
*.[sS][hH]) ( __run_in_parallel . "$_FILE" ) ;; # don't autocopy. this is for code :)
*) __run_in_parallel cp -p "$_FILE" "$__OUTFILE" ;;
esac
done <<-EOF
$(find "$_SRCDIR" -type f)

View File

@ -19,7 +19,8 @@ __lowdown <<EOF
EOF
# date below title for blog posts
[ -n "$time" ] && echo "<p>posted <time>$time</time></p>"
[ -n "$ctime" ] && echo "<p>posted <time>$ctime</time></p>"
[ -n "$mtime" ] && echo "<p>modified <time>$mtime</time></p>"
# rest of stdin is the markdown
__lowdown

View File

@ -1,47 +0,0 @@
# generate feed.atom for blog
cd "$_SRCDIR/blog"
# feed path, last 10 entries
feed="$_BUILDDIR/blog/feed.atom"
last10="$(find . -type f -name "*.md" | sort -nr | head)"
max_secs=0
while IFS= read -r _entry; do
{
_entry="${_entry##*/}"
set_md_metadata
title="$(__lowdown <<-EOF
$title
EOF
)"
title="${title#*>}"
title="${title%<*}"
# using secs and max_secs for last updated
secs="$(git log -1 --pretty="format:%ct" "$_entry")"
[ "$secs" -gt "$max_secs" ] && max_secs="$secs"
entry_date="$(date -u -d "@$secs" '+%Y-%m-%dT%R:%SZ')"
entries="$entries"'
<entry>
<title>'"$title"'</title>
<link rel="alternate" href="'"/~yosh/blog/${_entry%.md}.html"'"/>
<id>urn:uuid:'"$uuid"'</id>
<published>'"$time"'</published>
<updated>'"$entry_date"'</updated>
<content type="html">'"$(__lowdown | escapepipe)"'</content>
</entry>'
} < "$_entry"
done <<-EOF
$last10
EOF
header='<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>yosh'\''s blog</title>
<link href="https://unix.dog/~yosh/blog"/>
<author><name>yosh</name></author>
<updated>'"$(date -u -d "@$max_secs" '+%Y-%m-%dT%R:%SZ')"'</updated>
<id>urn:uuid:ab54972a-c095-4177-8a36-b77d48d86bec</id>'
printf '%s\n%s\n</feed>' "$header" "$entries" > "$feed"

View File

@ -0,0 +1,67 @@
# generate feed.atom for blog and articles
blog_uuid=ab54972a-c095-4177-8a36-b77d48d86bec
articles_uuid=9268eb67-28dd-48c8-8855-fdb6f9e444d4
for type in blog articles; do
cd "$_SRCDIR/$type"
all_ctimes=""
all_mtimes=""
entries=""
# sort the posts by ctime, which allows us to be independent of filename
# this allows for more flexibility :D
# unlike the index.html file, we can't just sort at the end
# because we have multiple lines of everything. so we have
# to do a 2-pass
feed="$_BUILDDIR/$type/feed.atom"
for f in *.md; do
mtime="" ctime=""
set_md_metadata "$f"
all_ctimes="$ctime $f$__NL$all_ctimes"
all_mtimes="${mtime:-"$ctime"}$__NL$all_mtimes"
done
while IFS= read -r _entry; do
_entry="${_entry#* }"
{
ctime="" mtime=""
_entry="${_entry##*/}"
set_md_metadata
# xml-compatible title
title="$(__lowdown <<-EOF
$title
EOF
)"
title="${title#*>}"
title="${title%<*}"
# if mtime null, set it to ctime for the purposes of updated stuff
: "${mtime:="$ctime"}"
entries="$entries"'
<entry>
<title>'"$title"'</title>
<link rel="alternate" href="'"/~yosh/$type/${_entry%.md}.html"'"/>
<id>urn:uuid:'"$uuid"'</id>
<published>'"$ctime"'</published>
<updated>'"$mtime"'</updated>
<content type="html">'"$(__lowdown | escapepipe)"'</content>
</entry>'
} < "$_entry"
done <<-EOF
$(echo "$all_ctimes" | sort -r | head -n 10)
EOF
header='<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>yosh'\''s '"$type"'</title>
<link href="https://unix.dog/~yosh/'"$type"'"/>
<author><name>yosh</name></author>
<updated>'"$(echo "$all_mtimes" | sort -r | head -n 1)"'</updated>
<id>urn:uuid:'"$(eval "printf %s \${${type}_uuid}")"'</id>'
printf '%s\n%s\n</feed>' "$header" "$entries" > "$feed"
done

View File

@ -15,3 +15,24 @@ gen_titlebar() {
<span class="tbr"></span>
</div>\n' "$__tb_color" "$__tb_title"
}
# get creation date via git, outputs in unix timestamp
# unless $2 is given. then it's as that format
# I don't actually use these two functions but I'm putting them here
# so I don't forget and just in case I *do* use them in the future
get_creation_time() {
if [ -z "$2" ]; then
git log --follow --date=unix --format=%ad --reverse -- "$1" | head -n 1
else
date -d "@$(git log --follow --date=unix --format=%ad --reverse -- "$1" | head -n 1)" +"$2"
fi
}
# get last modified date via git, outputs in unix timestamp
get_modified_time() {
if [ -z "$2" ]; then
git log --date=unix --format=%ad -1 -- "$1"
else
date -d "@$(git log --date=unix --format=%ad -1 -- "$1")" +"$2"
fi
}

View File

@ -6,8 +6,8 @@
<li><a href="/~yosh/index.html">home</a></li>
<li><a href="/~yosh/info.html">information</a></li>
<li><a href="/~yosh/blog/">blog</a></li>
<li><a href="/~yosh/articles/">articles</a></li>
<li><a href="/~yosh/my-things.html">my things</a></li>
<li><a href="/~yosh/random-info/">random info</a></li>
<li><a href="/~yosh/links/">links</a></li>
<li><a href="/~yosh/credits.html">credits</a></li>
</ul>

64
src/articles/feed.sh Normal file
View File

@ -0,0 +1,64 @@
# generate feed.atom for blog
articles_uuid=0839a919-90f9-4778-98c1-087f7ae039ad
# this isn't really "blog-like", so we don't want a feed that represents
# creation dates. as such, I think it's better if we track *changes*
# rather than *new posts*. this allows people to keep up with documentation
# updates and whatnot
feed="$_BUILDDIR/articles/feed.atom"
{
while read -r time hash subject; do
date=$(date -u -d "@$time" +"%Y-%m-%dT%TZ")
desc="" files=""
# print header (only on first one)
if [ -z "$flag" ]; then
printf '%s\n' '<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>yosh'\''s articles</title>
<link href="https://unix.dog/~yosh/blog/>
<author><name>yosh</name></author>
<updated>'"$date"'</updated>
<id>urn:uuid:'"$articles_uuid"'</id>'
fi
desc=$(git log "$hash" -1 --format='%b')
files=$(git log "$hash" -1 --format='' --name-status | sed -n '
/src\/articles\// {
s,src/articles/,,
s/^M[[:space:]]*/MODIFIED: /
s/^A[[:space:]]*/ADDED: /
s/^D[[:space:]]*/DELETED: /
s/^R[0-9[:space:]]*/RENAMED: /
s/\.md$/\.html/
s/\.md /\.html /
s/ / --> /
p
}
')
[ -z "$files" ] && continue
printf '<entry>
<title>%s</title>
<link rel="alternate" href="/~yosh/articles"/>
<id>%s</id>
<updated>%s</updated>
<content type="html">%s</content>
</entry>' "$(escape "$subject")" "$hash" "$date" "$(escapepipe <<-EOF
${desc:+"$desc$__NL"}$files
EOF
)"
flag=1
done <<-EOF
$(find . -type f ! \( -iname '*.sh' \) \
-exec git log --date=unix --format='%at %H %s' -10 -- {} +)
EOF
echo "</feed>"
} > "$feed"

View File

@ -1,6 +1,6 @@
---
title = installing quartus prime on void linux
time = 2024-01-09T02:15:00Z
ctime = 2024-01-09T02:15:00Z
uuid = 6e4e758b-7090-4c35-b20b-a5fbacd0e0d8
TB_COLOR = lblue
TB_TITLE = /bin/quartus

View File

@ -0,0 +1,15 @@
---
title = random information
nobacklink = 1
TITLE = documentation and information
TB_TITLE = information window
TB_COLOR = lblue
---
this section of articles is dedicated to random information that doesn't fit anywhere else within the website. not necessarily large articles or miscellaneous articles, not necessarily blog posts, but nonetheless stuff that I want documented. it's just a bunch of random information that I've collected across the years
- [darktable: haze removal and other shenanigans](./darktable-shenanigans.html)
- [printers.](./printers.html)
- [furry weekend atlanta](./furry-weekend-atlanta.html)
- [fursuit making](./fursuit-making.html)
- [information about unix shells](./shell-information.html)

View File

@ -4,7 +4,7 @@ TITLE = posix shell tips
TB_TITLE = posix shell
---
there's some very unknown quirky things that you can do with pure posix shell. this will focus on obscure stuff that I've rarely seen documented or talked about elsewhere. if you want some more shell resources, check out [shell information](./sell-information.md)
there's some very unknown quirky things that you can do with pure posix shell. this will focus on obscure stuff that I've rarely seen documented or talked about elsewhere. if you want some more shell resources, check out [shell information](./shell-information.html)
## BASH\_REMATCH
[in bash](https://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#index-_005b_005b), `BASH_REMATCH` is an array that corresponds to the groups that are captured in the last used `=~` command. this can be emulated in posix shell by a little-known command called [expr](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/expr.html). **for almost all use cases, expr is superseded by [test](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html) and [arithmetic expansion](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_04), which are shell builtins, and you shouldn't use** `expr`, *but* one singular operand in `expr` is unique to it: `:`. take a look:

View File

@ -0,0 +1,3 @@
<ul>
<li>&#47;usr&#47;local&#47;lib in addendums</li>
</ul>

View File

@ -0,0 +1,29 @@
<?shTITLE="voidlinux|"./head.sh?>
<body>
<?sh./header.sh?>
<?sh./sidebar.shtopbottom?>
<main>
<?shTB_TITLE="voidlinux|xorg"./titlebar.sh?>
<h1>voidlinux-xorg</h1>
<p>bynow,youshouldstartdoingtherestofthisguideasanormaluserandusing<code>doas</code>or<code>su-</code>toinstallpackagesoreditconfigfilesthatrequireroot</p>
<p>I'llmakethisspecificpartbrief.install<code>xorg-minimal</code>,<code>xorg-fonts</code>,yourfavoriteterminalemulator(<code>rxvt-unicode</code>forme),yourfavoritewindowmanager,andthedriversforyourgraphicscard(youcanseewhichpackageyouneedtoinstallwith<code>xbps-query-Rsxf86-video</code>.somethingImuststressisthatIamonlyfamiliarwithxorgthroughthelensof"non-integrating"windowmanagers.thatmeansnooverarchingDElikekde,gnome,etc.ordisplaymanagerlikelightdm,etc.Icannotguaranteeeverythingonthispagewillapplyperfectlytothosekindsofsetups</p>
<h3>disablingrootpriviledge</h3>
</p>voidlinuxrunsxorgasrootbydefault.Idonotknowwhy.tomyknowledgethereiszerobreakagewithmysetupwhenyouconfigureittonotrunasroot.todothat,create/edit<code>/etc/X11/Xwrapper.config</code>withthefollowing:
<codeclass="codeblock">
<pre>
needs_root_rights=no
</pre>
</code>
<p>that'sit.nowxorgwillnotrunwithrootrightsandlogto<code>~/.local/share/xorg/Xorg.DISP.log</code>.followthe<ahref="https://docs.voidlinux.org/config/graphical-session/xorg.html">manual</a>foraddingyourwindowmanagerto~/.xinitrc,thenuse<code>startx</code>tolaunchanXsession</p>
<h2id="local-services">localservices</h2>
<p>settinguplocalservicesisincrediblyuseful.however,Idon'tlikethewaythemanualdescribessettingthemup.itseverelylimitswhatservicesyoucanuseasawholeandlikestobefinnickywithstufflikepipewireforme.sohere'showIsetuplocalservices</p>
<p>maketwodirectories,<code>~/.local/sv</code>and<code>~/.local/service</code>.thesewillactjustlike<code>/etc/sv</code>and<code>/var/service</code></p>
<p>inyourxinitrc,addtheline<code>runsvdir"$HOME/.local/service"&amp;</code><b>before</b>the<code>execyour-window-manager</code>line.now,wheneveryou<code>startx</code>,arunitrunsvprogramwillsuperviseyourlocalservicedirectory,justlikehowitdoesasroot.now,thisdoesn'tallowforservicesinatty,butI'vehonestlyneverneededanylocaluserspecificserviceswhileinattybefore,sothisworksforme</p>
<footer>
<h2id="pipewire">pipewire(-pulse)</h2>
</footer>
</main>
<?sh./footer.sh?>
</body>
</html>

View File

@ -1,6 +1,6 @@
---
title = 2023 music I downloaded
time = 2024-01-03T00:00:00Z
ctime = 2024-01-03T00:00:00Z
uuid = ed4f7623-c7f2-4c3a-b73e-bc5eb6c46736
TB_TITLE= 2023 music
---

View File

@ -1,6 +1,6 @@
---
title = discourse
time = 2023-07-18T05:55:00Z
ctime = 2023-07-18T05:55:00Z
uuid = 7051f435-4aae-4121-8774-be41dbce9b90
---

View File

@ -1,6 +1,6 @@
---
title = dreams of form
time = 2023-08-16T03:00:00Z
ctime = 2023-08-16T03:00:00Z
uuid = 212025c9-1f85-4b81-8553-d863ed798fcb
---

59
src/blog/feed.sh Normal file
View File

@ -0,0 +1,59 @@
# generate feed.atom for blog
blog_uuid=ab54972a-c095-4177-8a36-b77d48d86bec
# sort the posts by ctime, which allows us to be independent of filename
# this allows for more flexibility :D
# unlike the index.html file, we can't just sort at the end
# because we have multiple lines of everything. so we have
# to do a 2-pass
feed="$_BUILDDIR/blog/feed.atom"
for f in *.md; do
mtime="" ctime=""
set_md_metadata "$f"
all_ctimes="$ctime $f$__NL$all_ctimes"
all_mtimes="${mtime:-"$ctime"}$__NL$all_mtimes"
done
while IFS= read -r _entry; do
_entry="${_entry#* }"
{
ctime="" mtime=""
_entry="${_entry##*/}"
set_md_metadata
# xml-compatible title
title="$(__lowdown <<-EOF
$title
EOF
)"
title="${title#*>}"
title="${title%<*}"
# if mtime null, set it to ctime for the purposes of updated stuff
: "${mtime:="$ctime"}"
entries="$entries"'
<entry>
<title>'"$title"'</title>
<link rel="alternate" href="'"/~yosh/blog/${_entry%.md}.html"'"/>
<id>urn:uuid:'"$uuid"'</id>
<published>'"$ctime"'</published>
<updated>'"$mtime"'</updated>
<content type="html">'"$(__lowdown | escapepipe)"'</content>
</entry>'
} < "$_entry"
done <<-EOF
$(echo "$all_ctimes" | sort -r | head -n 10)
EOF
header='<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>yosh'\''s blog</title>
<link href="https://unix.dog/~yosh/blog/>
<author><name>yosh</name></author>
<updated>'"$(echo "$all_mtimes" | sort -r | head -n 1)"'</updated>
<id>urn:uuid:'"$blog_uuid"'</id>'
printf '%s\n%s\n</feed>' "$header" "$entries" > "$feed"

View File

@ -10,7 +10,8 @@
<ul>
<?shp
while read -r md; do
# build blog post list, descending date order
for md in *.md; do
set_md_metadata "$md"
title=$(__lowdown <<-EOF
$title
@ -18,12 +19,9 @@
)
title=${title#*>}
title=${title%<*}
md=${md##*/} # basename
printf '<li><p><time>%s</time> - <a href="%s">%s</a></li>\n' \
"${time%%T*}" "${md%.md}.html" "$title"
done <<-EOF
$(find . -type f -name '*.md' | sort -r)
EOF
printf '%s <li><p><time>%s</time> - <a href="%s">%s</a></li>\n' \
"$ctime" "${ctime%%T*}" "${md%.md}.html" "$title"
done | sort -r | cut -d ' ' -f 2-
?>
</ul>

View File

@ -1,6 +1,6 @@
---
title = intimacy via jankiness
time = 2023-07-10T19:30:00Z
ctime = 2023-07-10T19:30:00Z
uuid = 366ccb73-5e9b-4c31-b8c2-2f93887f970b
---
@ -15,7 +15,7 @@ the truth is, I really don't know. it feels weirdly intimate for me--learning al
\* *update from the future: I've refined this to be a much more robust system. more about that in... a future blog! when I release it I'll link it here*
\* *update 2 from the future: [here you go!](2023-11-20_shp-hypertext-processor.html)*
\* *update 2 from the future: [here you go!](./shp-hypertext-processor.html)*
but I do it because it's fun. it makes me feel nice. I like writing my site like this, even if it means dealing with a bit of jankiness. at least the jankiness comes from me
@ -28,7 +28,7 @@ those aren't the mods I want to talk about
the hardest achievement I have accomplished in the game, and what remains as one of the hardest achievements done in modded celeste, is [obtaining the golden strawberry](https://www.youtube.com/watch?v=FnIztI2lu48) for [strawberry hunter](https://gamebanana.com/mods/317954) while collecting every strawberry, a challenge so infamous for being long and "jank" that I got $70 for doing it
![a screenshot of parrot\_dash saying "shfcg bounty growing stronger", with the total value being about $70](/~yosh/blog/2023-07-10_shfcg.png)
![a screenshot of parrot\_dash saying "shfcg bounty growing stronger", with the total value being about $70](/~yosh/blog/intimacy-via-jankiness_shfcg.png)
I've made a name for myself in the celeste community by doing these "jank" maps. stuff like [floating oil rig full clear gold](https://www.youtube.com/watch?v=XfXKkU1DGzA) or [etselec max%](https://www.youtube.com/watch?v=JE27w0ZtBh0) remain unmatched as of the time of writing this post (edit: [spki got floating oil rig fcg on 21 july 2023. congrats to them!](https://www.youtube.com/watch?v=_iPulCHTeIA)). maps considered "out there" are sometimes labeled "yoshi maps", something I find quite funny

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -1,6 +1,6 @@
---
title = moving away from github
time = 2023-09-07T04:00:00Z
ctime = 2023-09-07T04:00:00Z
uuid = f843b7c3-c27b-447b-bedc-2b1d4a2f7714
TB_COLOR = white
TB_TITLE = github

View File

@ -1,8 +1,9 @@
---
title = shell: hypertext processor
time = 2023-11-20T23:40:00Z
ctime = 2023-11-20T23:40:00Z
mtime = 2024-03-16T12:00:00Z
uuid = 14f1934b-76d1-4dd4-ae1c-65bf0e305eea
TB_TITLE = xterm - sh build.sh
TB_TITLE = xterm - /bin/sh build.sh
---
that name might ring a few alarm bells to anyone with a sense of morality. alas, necessity is the mother of invention, and I have willed this into existence

View File

@ -1,6 +1,6 @@
---
title = things I don't understand
time = 2023-10-16T05:30:00Z
ctime = 2023-10-16T05:30:00Z
uuid = 935ddb27-4ca5-4840-bec9-934f39af198c
TB_COLOR = white
---

View File

@ -1,6 +1,6 @@
---
title = thoughts on yash
time = 2023-11-18T01:47:00Z
ctime = 2023-11-18T01:47:00Z
uuid = d6659f13-4ed1-4894-8fd5-4d3a931ce45d
---
@ -45,7 +45,7 @@ function completion/doas {
beautiful! notice how options have descriptions as well, much like zsh. check it out in action:
<video src="/~yosh/blog/2023-11-18_find-showcase.mp4" controls loop></video>
<video src="/~yosh/blog/thoughts_on_yash_find-showcase.mp4" controls loop></video>
it's just so nice compared to bash's lack of knowing what you have selected + lack of descriptions + less robustness for command combinations (try getting only `-HL` until a `.` and *then* having the `-name` appear after all that in bash first...). yash's could use a little color, but other than that it's really nice.

View File

@ -10,7 +10,7 @@
<img src="/~yosh/img/buttons/avali-passing.svg" alt="avali | passing" width=104>
<p>I'm yosh. or yoshi. or yoshiyosh... or yoshiyoshiyosh...</p>
<p>my names get taken a lot. wonder why.</p>
<p>I like shell scripting, programming, abstract mathematics, cryptography, the look of old UI, archival, editing wikis, anthropomorphic animals, and music. <a href="/~yosh/blog/2024-01-03_2023-music.html">a lot of music</a>. I'm also kinda a video game junkie. I enjoy doing hard stuff in video games I like, though this usually means celeste more than anything</p>
<p>I like shell scripting, programming, abstract mathematics, cryptography, the look of old UI, archival, editing wikis, anthropomorphic animals, and music. <a href="/~yosh/blog/2023-music.html">a lot of music</a>. I'm also kinda a video game junkie. I enjoy doing hard stuff in video games I like, though this usually means celeste more than anything</p>
<p>I am on <a href="https://resonite.com">resonite</a> a lot. I really like it there. I feel free there. you should check it out too</p>
<h2>site</h2>
<p>this site is intended to be my internet home, and a staging ground for others to explore further. it's meant to foster connections with sites of others, and to grow a web to get lost in. at least, that's what I hope. thank you to Citali for providing the hosting infrastructure for this site</p>

View File

@ -1,23 +0,0 @@
---
title = random information
nobacklink = 1
TITLE = documentation and information
TB_TITLE = information window
TB_COLOR = lblue
---
here's a bunch of random information about various things I have collected across the years. I made this page to consolidate all the random stuff I scattered about bookmarks, group chats, etc. in my times on the internet, as well as documentation that I've wrote myself
## big writeups
some big writeups by me or other people that might be useful for people
- [building a void linux desktop experience from the base](./voidlinux/) - a comprehensive guide to setting up an easily-maintainable, extensible, and nice desktop experience on Void Linux from the very base image. more of an extension of the void handbooks than anything else
- [downloading from youtube for fun, archival, and maybe profit](./ytdl.html) - an introductory guide for using `yt-dlp` to download youtube videos. link to to anyone who wants to download from youtube!
- [resonite desktop workflow](./resonite-desktop-workflow.html) - a description of the desktop workflow in [resonite](https://resonite.com)
## small bits of info about specific topics
- [darktable: haze removal and other shenanigans](./darktable-shenanigans.html)
- [printers.](./printers.html)
- [furry weekend atlanta](./furry-weekend-atlanta.html)
- [fursuit making](./fursuit-making.html)
- [information about unix shells](./shell-information.html)