incredibly huge refactor once more
- parallelize build script - "articles" page now - feed refactor, no need for _postbuild now
This commit is contained in:
parent
5d7455cecb
commit
10f13cef48
36
build.sh
36
build.sh
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
|
@ -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
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
|
@ -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
|
|
@ -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)
|
|
@ -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:
|
|
@ -0,0 +1,3 @@
|
|||
<ul>
|
||||
<li>/usr/local/lib in addendums</li>
|
||||
</ul>
|
|
@ -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"&</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>
|
|
@ -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
|
||||
---
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title = discourse
|
||||
time = 2023-07-18T05:55:00Z
|
||||
ctime = 2023-07-18T05:55:00Z
|
||||
uuid = 7051f435-4aae-4121-8774-be41dbce9b90
|
||||
---
|
||||
|
|
@ -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
|
||||
---
|
||||
|
|
@ -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"
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
---
|
|
@ -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.
|
||||
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue