<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>blog posts on amelie makes art</title>
    <link>https://ameliemakes.art/blog/</link>
    <description>Recent content in blog posts on amelie makes art</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-US</language><atom:link href="https://ameliemakes.art/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Random Stuff I Read in 2025</title>
      <link>https://ameliemakes.art/blog/random-2025/</link>
      <pubDate>Mon, 01 Dec 2025 15:03:51 -0500</pubDate>
      
      <guid>https://ameliemakes.art/blog/random-2025/</guid>
      <description>&lt;h2 id=&#34;hi&#34;&gt;hi.&lt;a href=&#34;#hi&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;i kinda neglected my desire to blog about stuff this year but i wanted to set aside some time to reflect on what i&amp;rsquo;ve seen and read in 2025. i think around 2024 was when i lightly committed to saving things i liked so that i could reference them later or send them to friends instead of just reading/watching something and closing the tab. i didn&amp;rsquo;t really do a good job at it but hey, good news! in 2025, i still didn&amp;rsquo;t do a good job at it! 🎉&lt;/p&gt;
&lt;p&gt;but i did a little better. without further ado, here&amp;rsquo;s a random list of stuff i read this year.&lt;/p&gt;
&lt;p&gt;criteria to make this list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;i remember that i read it&lt;/li&gt;
&lt;li&gt;it&amp;rsquo;s at least decent in some way&lt;/li&gt;
&lt;/ul&gt;
&lt;aside&gt;
  &lt;strong&gt;note:&lt;/strong&gt; don&amp;rsquo;t expect good synopses but not for lack of trying. i&amp;rsquo;m not very good at style or prose and my voice is kinda stilted but maybe if i wrote more blog posts that wouldn&amp;rsquo;t be a probl&amp;ndash;*explodes*
&lt;/aside&gt;

&lt;h2 id=&#34;cgdct---cutecyclopedia-entry-by-ana-matilde-sousahttpswwwhetamoecgdct&#34;&gt;&lt;a href=&#34;https://www.heta.moe/cgdct/&#34;&gt;CGDCT - &amp;ldquo;cutecyclopedia&amp;rdquo; entry by ana matilde sousa&lt;/a&gt;&lt;a href=&#34;#cgdct---cutecyclopedia-entry-by-ana-matilde-sousahttpswwwhetamoecgdct&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;warning: really extremely quite incredibly long. i read it on my phone, though.&lt;/p&gt;
&lt;p&gt;an explanation and mostly exploration on CGDCT, an acronym for &amp;ldquo;cute girls doing cute things.&amp;rdquo; it&amp;rsquo;s very dry and academic, owing to the fact that this website is part of someone&amp;rsquo;s doctorate thesis or something (i did not dive much further. apologies if that&amp;rsquo;s completely off the mark but i simple do not have the energy atm). citations and figures galore.&lt;/p&gt;
&lt;p&gt;synopsis: cgdct stands to be mindless and &amp;ldquo;pointless&amp;rdquo; entertainment, where &amp;ldquo;pointless&amp;rdquo; in this context means there is usually no real substantive plot behind a given vignette of characters&amp;rsquo; lives. it has a place in &amp;ldquo;cozy kitsch&amp;rdquo; where said vignettes only exist for &amp;ldquo;tedius consumption.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;unionize-or-die---blog-by-drew-devaulthttpsdrewdevaultcom202506092025-06-09-unionize-or-diehtml&#34;&gt;&lt;a href=&#34;https://drewdevault.com/2025/06/09/2025-06-09-Unionize-or-die.html&#34;&gt;unionize or die - blog by drew devault&lt;/a&gt;&lt;a href=&#34;#unionize-or-die---blog-by-drew-devaulthttpsdrewdevaultcom202506092025-06-09-unionize-or-diehtml&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;post about tech workers and how they desperately need unions. includes resources on organizing labor unions in various regions mostly US and UK with some global-oriented organizations linked at the end.&lt;/p&gt;
&lt;p&gt;synopsis: according to drew, tech workers often meet with the concept of unionizing with a cold reception. it is important that this changes because tech workers have a vested economical interest in joining unions. tech workers also have an existential imperative to organize because of the current economical climate (capitalists looking for cheaper labor) and climate change (shrinking shorelines = less housing. what will you do when you are eventually laid off but need to afford a new place to live or current rent?)&lt;/p&gt;
&lt;h2 id=&#34;performance-inequality-series-of-blog-postshttpsinfrequentlyorgseriesperformance-inequality&#34;&gt;&lt;a href=&#34;https://infrequently.org/series/performance-inequality/&#34;&gt;performance Inequality series of blog posts&lt;/a&gt;&lt;a href=&#34;#performance-inequality-series-of-blog-postshttpsinfrequentlyorgseriesperformance-inequality&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;tbh just going to paste what i wrote in a discord a while back.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;a series of blog posts looking at website performance through the lens of wealth inequality. warning: it&amp;rsquo;s pretty dry reading and may veer into jargon territory at short times but it&amp;rsquo;s not impenetrable. still dry, though. and the individual posts are long. uhhh im not doing a good job on selling this but the blurb on the page is good so wheeee &lt;em&gt;explodes&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;id-rather-see-the-prompt---clayton-ramseyhttpsclaytonwramseycomblogprompt&#34;&gt;&lt;a href=&#34;https://claytonwramsey.com/blog/prompt/&#34;&gt;i&amp;rsquo;d rather see the prompt - clayton ramsey&lt;/a&gt;&lt;a href=&#34;#id-rather-see-the-prompt---clayton-ramseyhttpsclaytonwramseycomblogprompt&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;I&amp;rsquo;d Rather See the Prompt&amp;rdquo; discusses the value of human vision and experience with regards to writing, and briefly coding&lt;/p&gt;
&lt;p&gt;synopsis: clayton often comes across writing that generally mirrors ai output when reading submitted papers. he finds it asinine and asserts that the prose is not beyond a (presumably US?) 6th grade level in terms of style (idk same tho). he&amp;rsquo;d rather see the prompt because it would contain more human experience and thought than ai output, which he says are thoughts that belong to no one due to the way it plagiarizes and melds true original thoughts together.&lt;/p&gt;
&lt;h2 id=&#34;in-the-crossfire---van-ngohttpstheanarchistlibraryorglibraryngo-van-in-the-crossfire&#34;&gt;&lt;a href=&#34;https://theanarchistlibrary.org/library/ngo-van-in-the-crossfire&#34;&gt;in the crossfire - van ngo&lt;/a&gt;&lt;a href=&#34;#in-the-crossfire---van-ngohttpstheanarchistlibraryorglibraryngo-van-in-the-crossfire&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;a whole-ass book online. i&amp;rsquo;m not gonna write anything about it because it has a marketing blurb, lol&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Although the Vietnam War is still well known, few people are aware of the decades of struggles against the French colonial regime that preceded it, many of which had no connection with the Stalinists (Ho Chi Minh’s Communist Party). The Stalinists were ultimately victorious, but only after they systematically destroyed all the other oppositional currents.&lt;/p&gt;
&lt;p&gt;This book is the story of those other movements and revolts, caught in the crossfire between the French and the Stalinists, told by one of the few survivors.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;mini-review: leftist-infighting situation is crazy&lt;/p&gt;
&lt;h2 id=&#34;algorithmic-helplessness&#34;&gt;&amp;ldquo;algorithmic helplessness&amp;rdquo;&lt;a href=&#34;#algorithmic-helplessness&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://aseachange.com/@elena/statuses/01K91XP6W7EN8CW94WX276A1F3&#34;&gt;a transcript&lt;/a&gt; from 9:27 of this video: &lt;a href=&#34;https://tinkerbetter.tube/w/ns3WDZZgAoe1SfrDCAUrni&#34;&gt;ad-free on tinkerbetter&lt;/a&gt; | &lt;a href=&#34;https://www.youtube.com/watch?v=JkwQJzCfogQ&#34;&gt;youtube&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;this post features a video from &amp;ldquo;Veronica Explains&amp;rdquo;, a video creator i subscribe to on youtube and follow on other social media. the video is titled &amp;ldquo;I Stream Nothing and I am Happy.&amp;rdquo; and talks about her own experience of, well, not streaming from the big players in on-demand video streaming. i thought this transcribed excerpt was nice to read and it was nice to hear while watching the video prior.&lt;/p&gt;
&lt;p&gt;synopsis: dependence on algorithmic feeds is separating us from our ability to think critically. the algorithm tells us what to think, what to feel and shields us from the decision-making process. this is tempting for small decisions and leads to the desire to abandon that process when we deem certain decisions too big to spend energy on.&lt;/p&gt;
&lt;p&gt;ok i hope that was interesting bye have a good 2026 (that was a command)&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Website Changes</title>
      <link>https://ameliemakes.art/blog/website-updates/</link>
      <pubDate>Mon, 13 May 2024 22:15:46 -0400</pubDate>
      
      <guid>https://ameliemakes.art/blog/website-updates/</guid>
      <description>&lt;p&gt;i felt like i shouldn&amp;rsquo;t leave my poor li&amp;rsquo;l blog alone for too long so i figured i&amp;rsquo;d post what i&amp;rsquo;ve been doing with the site and how i&amp;rsquo;m getting along with &lt;a href=&#34;https://gohugo.io&#34; title=&#34;hugo&amp;#39;s homepage&#34;&gt;hugo&lt;/a&gt;, a static site generator.&lt;/p&gt;
&lt;h2 id=&#34;overall-look-and-feel&#34;&gt;overall look and feel&lt;a href=&#34;#overall-look-and-feel&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;originally i was using a hugo skeleton theme to build off of but eventually i ended up with enough original content™ to basically call this my own theme! i named it &lt;em&gt;cozy&lt;/em&gt; after the clip studio paint brushes i made, also named &lt;em&gt;cozy&lt;/em&gt;. maybe someday &lt;em&gt;cozy&lt;/em&gt; will because streamlined, refined, and cool enough to be released as a theme on its own in the wild. kinda doubt it. at least with &lt;em&gt;cozy&amp;rsquo;s&lt;/em&gt; inception (more like a soft launch?) i finally added a css query for &lt;code&gt;prefers-color-scheme: dark&lt;/code&gt; so now the site&amp;rsquo;s look will change depending on you&amp;rsquo;ve set your theme preference in your browser to dark or light.&lt;/p&gt;
&lt;p&gt;the dark mode is actually based on a color palette i use for my terminal and window manager theme&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;. the light mode is just because i love a dusty pastel pink. i got rid of the tiling background image because honestly, i wasn&amp;rsquo;t too in love with it.&lt;/p&gt;
&lt;p&gt;i reduced the font sizes of the site overall, leaving the h1 headings alone for the most part. the larger fonts weren&amp;rsquo;t that much more readable to me due to my own visual disabilities. they also made the site look clunkier and more awkward as a whole. i think with a different set of fonts, bigger type could have done the trick—other sites have done this beautifully—but i just could not finagle a good look with the current body typeface&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; that i really wanted to keep.&lt;/p&gt;
&lt;p&gt;the header touches the top of the page and there is now a link to this blog. i removed the horizontal lines surrounding the site navigation because i didn&amp;rsquo;t really have any ideas on how to take them further design-wise; they were just getting in the way. i really wanted to work with them though. too bad!&lt;/p&gt;
&lt;p&gt;
  
  
  &lt;figure class=&#34;post-fig&#34;&gt;
    &lt;a href=&#34;https://ameliemakes.art/blog/website-updates/home-dark.png&#34; title=&#34;click to view full size&#34;&gt;
    
    
    
      &lt;img class=&#34;post-img&#34; src=&#34;https://ameliemakes.art/blog/website-updates/home-dark_huca9f43adac73376be84e1adc59b80ff5_390708_600x600_fit_box_3.png&#34; 
    
      
        alt=&#34;dark theme front page&#34;
      
      
        title=&#34;dark theme home page&#34;&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      
        dark theme home page&lt;/figcaption&gt;
  &lt;/figure&gt;



  
  
  &lt;figure class=&#34;post-fig&#34;&gt;
    &lt;a href=&#34;https://ameliemakes.art/blog/website-updates/home-light.png&#34; title=&#34;click to view full size&#34;&gt;
    
    
    
      &lt;img class=&#34;post-img&#34; src=&#34;https://ameliemakes.art/blog/website-updates/home-light_huc67e3e9249ee4b7a90b0a3bbb968edbb_395511_600x600_fit_box_3.png&#34; 
    
      
        alt=&#34;light theme front page&#34;
      
      
        title=&#34;light theme home page&#34;&gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      
        light theme home page&lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;/p&gt;
&lt;h2 id=&#34;blog-related-changes&#34;&gt;blog-related changes&lt;a href=&#34;#blog-related-changes&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;i&amp;rsquo;ve rambled on emough so i&amp;rsquo;m just gonna hit on some bullet points for the changed i made to the blog proper or else i&amp;rsquo;d never stop writing tbh&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;blog posts now show tags at the bottom&lt;/li&gt;
&lt;li&gt;bottom also displays categories so i can put all related adventures in one spot&lt;/li&gt;
&lt;li&gt;table of contents moved to side if you&amp;rsquo;re on desktop
&lt;ul&gt;
&lt;li&gt;well, i think it looks cool at least. either way it&amp;rsquo;s a lot better than havng it inline with text wrapping around it, i guess&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;edited main nav to have link to blog
&lt;ul&gt;
&lt;li&gt;yeah i said that already but it&amp;rsquo;s exciting&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;typography changes
&lt;ul&gt;
&lt;li&gt;overall focus on making reading easier&lt;/li&gt;
&lt;li&gt;smaller font for blog posts&lt;/li&gt;
&lt;li&gt;better looking headings&lt;/li&gt;
&lt;li&gt;made blog text area more narrow and thus easier to read, esp if you sit closer to your monitor&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and finally, i added a specific hugo shortcode for html &lt;code&gt;aside&lt;/code&gt; elements. if you enable unsafe markup in your &lt;code&gt;hugo.toml&lt;/code&gt; you can use regular html tags in your blog posts/markdown documents. you can add a callout/aside this way but you won&amp;rsquo;t be able to use markdown inside of it, like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;lt;aside&amp;gt;this is an aside **with bold text**&amp;lt;/aside&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;it looks like this when rendered:&lt;/p&gt;
&lt;aside&gt;this is an aside **with bold text** &lt;/aside&gt;
&lt;p&gt;the shortcode is a bit &lt;del&gt;Long-winded&lt;/del&gt; annoying compared to just using html tags but it allows for something like this:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;{{&amp;lt; aside &amp;gt;}}this is an aside **with bold text**{{&amp;lt;/ aside &amp;gt;}}&lt;/code&gt;&lt;/p&gt;
&lt;aside&gt;
  this is an aside &lt;strong&gt;with bold text&lt;/strong&gt;
&lt;/aside&gt;

&lt;p&gt;i might edit that shortcode to add something like a class or a title so i have can different flavors of callouts (like warning! or note: or idea). sounds kinda cute.&lt;/p&gt;
&lt;h2 id=&#34;hugo-thoughts&#34;&gt;hugo thoughts&lt;a href=&#34;#hugo-thoughts&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;so! speaking of hugo, i&amp;rsquo;ve been using it for about a year and a half, sort of? git says i made this site&amp;rsquo;s inital commit in december 2022. when i first started i had no idea what was going on. my knowledge was so lacking that even the documentation was about as opaque as a brick wall to me. in the beginning, couldn&amp;rsquo;t even begin to wrap my head around the templating language docs (tbh i still kinda can&amp;rsquo;t but now at least i think it&amp;rsquo;s a lack of Go knowledge)&lt;/p&gt;
&lt;p&gt;things that changed in 2023: i took and finished Harvard&amp;rsquo;s CS50x class. wow i kinda know what a templating language is made of now instead of just seeing random words inside curly brackets. i guess it follows that i &lt;em&gt;kind of&lt;/em&gt; know how to use one if i see it. shoutouts to &lt;a href=&#34;https://flask.palletsprojects.com/en/3.0.x/tutorial/templates/&#34; title=&#34;flash templating documentation&#34;&gt;Flask lessons&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;but even still&amp;hellip; it took me several months to understand what any of &lt;a href=&#34;https://gohugo.io/templates/lookup-order/&#34; title=&#34;hugo template lookup order documentation&#34;&gt;this lookup order&lt;/a&gt; meant in the context of themes and how to name pages so they wouldn&amp;rsquo;t either be mangled or not found. and i had to read several different things before i even began to understand what bundles were (it seems obvious in hindsight but it was just so bogged down with mentions of accessing resources, getting Pages, Kinds, and 80 pieces of &lt;a href=&#34;https://gohugo.io/getting-started/glossary/&#34; title=&#34;hugo glossary&#34;&gt;jargon&lt;/a&gt;&amp;hellip;). i&amp;rsquo;m certain there are still things i could improve on because of something that hasn&amp;rsquo;t clicked; one thing that i just thought of is having an &lt;code&gt;_index.md&lt;/code&gt; file as the root of my blog content. i think if i set things up correctly, i wouldn&amp;rsquo;t need that.&lt;/p&gt;
&lt;p&gt;hm.&lt;/p&gt;
&lt;p&gt;*typing noises*&lt;/p&gt;
&lt;p&gt;ok i just checked and i guess i didn&amp;rsquo;t need it but also some months ago when i tried this same thing, i got a 404 not found error so uhhh idek &amp;#x1f974;&lt;/p&gt;
&lt;p&gt;anyway, using hugo would probably be a lot less headache if i wasn&amp;rsquo;t Like This and desperately needed to make a theme of my own &lt;em&gt;and&lt;/em&gt; mold it around my needs. if you just want to have a blog, hugo is extremely simple to set up. you just install the hugo binary, make a folder, &lt;code&gt;cd&lt;/code&gt; into the folder and initalize the site with one command. then you can either pick a pre-made theme or use hugo&amp;rsquo;s skeleton theme and that&amp;rsquo;s it. all you need to do is create text files in a folder named &lt;code&gt;content&lt;/code&gt;.&lt;/p&gt;
&lt;aside&gt;
  when i started using hugo, there wasn&amp;rsquo;t even a skeleton theme you could initialize to study. that was an addition in hugo 0.118.0.
&lt;/aside&gt;

&lt;p&gt;but yeah unfortunately i am built different. &lt;del&gt;i&amp;rsquo;m worse&lt;/del&gt;&lt;sup id=&#34;fnref:3&#34;&gt;&lt;a href=&#34;#fn:3&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;3&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;h2 id=&#34;lil-ideas&#34;&gt;li&amp;rsquo;l ideas&lt;a href=&#34;#lil-ideas&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;there are still a bunch of loose ends to tie up before i think i&amp;rsquo;ll feel satisfied with the state of ameliemakes.art and the ameliemakes.art blog. i even found a bunch while writing this post! there are just a lot of &amp;ldquo;edge cases&amp;rdquo; i&amp;rsquo;ll need to find and take care of. really, they&amp;rsquo;re not edge cases—they&amp;rsquo;re just things that &lt;em&gt;i&lt;/em&gt; never use like tables and uh blockquotes with attribution and sourcing. i also am working on my portfolio proper (wow i really AM making art) and looking for ways to lessen my reliance on javascript on the website side. i don&amp;rsquo;t have any real beef with js but i thought seeing what i could achieve with only css could be fun.&lt;/p&gt;
&lt;p&gt;i think the real lesson here is that i really should just plan everything i want to do with a website out in advance instead of introducing constant changes whenever i see something i don&amp;rsquo;t like on my live web pages lol&lt;/p&gt;
&lt;p&gt;also man i really need to make an image render hook that resizes images instead of letting browsers raw dog them&lt;/p&gt;
&lt;aside&gt;
  hello future me from one day later here. &lt;a href=&#34;https://github.com/amelielavender/portfolio/blob/main/themes/cozy/layouts/blog/_markup/render-image.html&#34; title=&#34;code on github&#34;&gt;i did it&lt;/a&gt;. it&amp;rsquo;s very ugly. please don&amp;rsquo;t laugh.
&lt;/aside&gt;

&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;alacritty and i3wm btw&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;&lt;a href=&#34;https://brailleinstitute.org/freefont&#34; title=&#34;braill institute&#34;&gt;atkinson hyperlegible&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:3&#34;&gt;
&lt;p&gt;i saw this as an uncredited twitter screenshot PLEASE if anyone find it let me know i have this phrase stuck in my head&amp;#160;&lt;a href=&#34;#fnref:3&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
    <item>
      <title>I2d Resources</title>
      <link>https://ameliemakes.art/blog/i2d-resources/</link>
      <pubDate>Sun, 18 Feb 2024 14:14:51 -0500</pubDate>
      
      <guid>https://ameliemakes.art/blog/i2d-resources/</guid>
      <description>&lt;p&gt;this is a personal collection of resources for the inochi2d set of software that includes inochi session and inochi creator. most, if not all of these resources were originally posted in the inochi2d discord server and most recently gathered together through an effort by Licore et. al. thanks a lot!&lt;/p&gt;
&lt;p&gt;please be aware that these resources are relevant as of the date of this blog post, 18 February 2024 and may not reflect the most up-to-date i2d software.&lt;/p&gt;
&lt;h2 id=&#34;general&#34;&gt;general&lt;a href=&#34;#general&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;documentation&#34;&gt;documentation&lt;a href=&#34;#documentation&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;unofficial-documentationhttpsdocsgooglecomdocumentd1c6wnwvipg4nz_xpujjl-hdzarjrx9rgu1tlpnrcvbjwedituspsharing&#34;&gt;&lt;a href=&#34;https://docs.google.com/document/d/1c6wNwVipg4NZ_XPUJJL-hdZarJrX9rGu1tLPNRCvbjw/edit?usp=sharing&#34;&gt;Unofficial documentation&lt;/a&gt;&lt;a href=&#34;#unofficial-documentationhttpsdocsgooglecomdocumentd1c6wnwvipg4nz_xpujjl-hdzarjrx9rgu1tlpnrcvbjwedituspsharing&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;written by higasa mitsue. probably the most extensive writeup on inochi2d creator and session to this day. might be missing stuff introduced with the latest release (0.8.3).&lt;/p&gt;
&lt;h4 id=&#34;official-faqhttpsdocsinochi2dcomenlatestinochi2dfaqhtml&#34;&gt;&lt;a href=&#34;https://docs.inochi2d.com/en/latest/inochi2d/faq.html&#34;&gt;Official FAQ&lt;/a&gt;&lt;a href=&#34;#official-faqhttpsdocsinochi2dcomenlatestinochi2dfaqhtml&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;answers things like cost, live2d compatibility, licensing&amp;hellip;&lt;/p&gt;
&lt;h4 id=&#34;official-docshttpsdocsinochi2dcomenlatest&#34;&gt;&lt;a href=&#34;https://docs.inochi2d.com/en/latest/&#34;&gt;Official docs&lt;/a&gt;&lt;a href=&#34;#official-docshttpsdocsinochi2dcomenlatest&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;contains a mini tutorial to get you up and running with i2d software, as well as developer docs (WIP as of this writing).&lt;/p&gt;
&lt;h4 id=&#34;discordhttpsdiscordgginochi2d-community-855173611409506334&#34;&gt;&lt;a href=&#34;https://discord.gg/inochi2d-community-855173611409506334&#34;&gt;Discord&lt;/a&gt;&lt;a href=&#34;#discordhttpsdiscordgginochi2d-community-855173611409506334&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;the Official inochi2d community discord server. you can get real time help and assistance here as well as show off your creations.&lt;/p&gt;
&lt;h3 id=&#34;videos&#34;&gt;videos&lt;a href=&#34;#videos&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;how-to-rig-a-vtuber-modelhttpswwwyoutubecomwatchvwnwokxeqtqy&#34;&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=wNwoKXeqtQY&#34;&gt;How to Rig a Vtuber Model&lt;/a&gt;&lt;a href=&#34;#how-to-rig-a-vtuber-modelhttpswwwyoutubecomwatchvwnwokxeqtqy&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Dragonator96 shows you the general steps for rigging a vtuber and setting it up in OBS. uses an older version of both creator and session but much of it still applies to 0.8.3.&lt;/p&gt;
&lt;h4 id=&#34;rigging-by-seagetchseagettyhttpsdiscordcomchannels8551736114095063348551736114095063371123160353421930526&#34;&gt;&lt;a href=&#34;https://discord.com/channels/855173611409506334/855173611409506337/1123160353421930526&#34;&gt;Rigging by seagetch/seagetty&lt;/a&gt;&lt;a href=&#34;#rigging-by-seagetchseagettyhttpsdiscordcomchannels8551736114095063348551736114095063371123160353421930526&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;discord link&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Part 1 : Defining hierachy and meshes&lt;/li&gt;
&lt;li&gt;Part 2 : Arming facial parameters&lt;/li&gt;
&lt;li&gt;Part 3 : Arming body parameters&lt;/li&gt;
&lt;li&gt;Part 4 : Adjustment of some parts and arming physics parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;inochi-creator-from-the-very-beginninghttpswwwyoutubecomplaylistlistplobcmnarksjuapkcu2zd5-ehqjdrebcxz&#34;&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLobCmNaRKsjUApKCu2zd5-EhQjdrEbcXZ&#34;&gt;inochi creator from the very beginning&lt;/a&gt;&lt;a href=&#34;#inochi-creator-from-the-very-beginninghttpswwwyoutubecomplaylistlistplobcmnarksjuapkcu2zd5-ehqjdrebcxz&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;a youtube playlist by yuçuna that shows you everything right from the beginning, starting with importing your first model. also covers some inochi vocabulary, like nodes, etc. WIP, i think.&lt;/p&gt;
&lt;h4 id=&#34;rig-with-me-by-navy-princehttpswwwyoutubecomwatchvkcoxxsnwfls&#34;&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=KcOxxSNwFLs&#34;&gt;rig with me by navy prince&lt;/a&gt;&lt;a href=&#34;#rig-with-me-by-navy-princehttpswwwyoutubecomwatchvkcoxxsnwfls&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;recording of a rigging livestream.&lt;/p&gt;
&lt;h4 id=&#34;rigging-vodshttpswwwyoutubecomplaylistlistplhsszkuby9jj4gfl1k3yi0r-pt8vjsaqp&#34;&gt;&lt;a href=&#34;https://www.youtube.com/playlist?list=PLHSSzKuby9Jj4GFl1K3YI0r-pT8VJSAqp&#34;&gt;rigging vods&lt;/a&gt;&lt;a href=&#34;#rigging-vodshttpswwwyoutubecomplaylistlistplhsszkuby9jj4gfl1k3yi0r-pt8vjsaqp&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;by arteno enjo. another stream vod.&lt;/p&gt;
&lt;h2 id=&#34;how-do-i&#34;&gt;how do i&amp;hellip;?&lt;a href=&#34;#how-do-i&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;open-inochi-creator-on-macos&#34;&gt;open inochi creator on macOS?&lt;a href=&#34;#open-inochi-creator-on-macos&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;as of 0.8.3, inochi creator needs some manual massaging to open on macOS. please refer to the following steps in order to get creator to see SDL2 properly.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Right click Inochi Creator, Show package contents&lt;/li&gt;
&lt;li&gt;navigate to Contents/Frameworks&lt;/li&gt;
&lt;li&gt;rename &lt;code&gt;libSDL2-2.0.dylib&lt;/code&gt; to &lt;code&gt;libSDL2.dylib&lt;/code&gt;
(via Luna)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;work-with-flip-pairings&#34;&gt;work with flip pairings?&lt;a href=&#34;#work-with-flip-pairings&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;aside&gt;
  a flip pairing is a configuration of parts that are generally the left nd right of a given rig. for example, i might have a part named &lt;code&gt;Eye::Left&lt;/code&gt; and create a flip pairing with its counterpart &lt;code&gt;Eye::Right&lt;/code&gt;.
&lt;/aside&gt;
&lt;p&gt;&lt;/p&gt;
&lt;h4 id=&#34;copy-and-paste-a-mesh-to-use-with-other-partshttpsdiscordcomchannels8551736114095063348881547993574400301080316944495943790&#34;&gt;&lt;a href=&#34;https://discord.com/channels/855173611409506334/888154799357440030/1080316944495943790&#34;&gt;copy and paste a mesh to use with other parts?&lt;/a&gt;&lt;a href=&#34;#copy-and-paste-a-mesh-to-use-with-other-partshttpsdiscordcomchannels8551736114095063348881547993574400301080316944495943790&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;discord link&lt;/p&gt;
&lt;p&gt;if you would like to copy a mesh that you&amp;rsquo;ve already created from one node to another node, switch to your target node and then drag the name of the node from the nodes menu onto the Edit Mesh button. the buttons should then change into &amp;ldquo;Copy Mesh&amp;rdquo; and you can drop the mesh onto the button to copy it.&lt;/p&gt;
&lt;h4 id=&#34;copy-a-rig-to-its-symmetrical-counterparthttpsdiscordcomchannels8551736114095063348881547993574400301128340725025738813&#34;&gt;&lt;a href=&#34;https://discord.com/channels/855173611409506334/888154799357440030/1128340725025738813&#34;&gt;copy a rig to its symmetrical counterpart?&lt;/a&gt;&lt;a href=&#34;#copy-a-rig-to-its-symmetrical-counterparthttpsdiscordcomchannels8551736114095063348881547993574400301128340725025738813&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;(eg left eye to right eye blink) - discord link
seagetch shows how to copy a rigged right eye parameter to Ada&amp;rsquo;s left eye.&lt;/p&gt;
&lt;h4 id=&#34;create-flip-pairings&#34;&gt;create flip pairings?&lt;a href=&#34;#create-flip-pairings&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;TODO&lt;/p&gt;
&lt;h3 id=&#34;export-video&#34;&gt;export video&lt;a href=&#34;#export-video&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;export-video-from-inochi-creator&#34;&gt;export video from inochi creator?&lt;a href=&#34;#export-video-from-inochi-creator&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;a href=&#34;https://ffmpeg.org/download.html&#34;&gt;install ffmpeg&lt;/a&gt;
if you&amp;rsquo;ve created an animation in inochi creator and would like to export a video of it directly, you&amp;rsquo;ll need to install ffmpeg. the export animation menu entry will be disabled otherwise.&lt;/p&gt;
&lt;h3 id=&#34;use-the-path-deform-tool&#34;&gt;use the path deform tool?&lt;a href=&#34;#use-the-path-deform-tool&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;use-the-path-deform-toolhttpsyoutubegpmdlkglelesi9ogjwknjektpooec&#34;&gt;&lt;a href=&#34;https://youtu.be/gPMdlKGLELE?si=9OGjWKNJektpooEC&#34;&gt;use the path deform tool?&lt;/a&gt;&lt;a href=&#34;#use-the-path-deform-toolhttpsyoutubegpmdlkglelesi9ogjwknjektpooec&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;Inochi2D Physics and Path Deform by Horns for Eyes shows you how to use both the path deform tool and the physics engine in inochi creator.&lt;/p&gt;
&lt;h3 id=&#34;use-physics&#34;&gt;use physics?&lt;a href=&#34;#use-physics&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;rig-physics&#34;&gt;rig physics?&lt;a href=&#34;#rig-physics&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;see above video&lt;/p&gt;
&lt;h3 id=&#34;use-expression-bindings&#34;&gt;use expression bindings?&lt;a href=&#34;#use-expression-bindings&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;inochi-session-wikihttpsgithubcominochi2dinochi-sessionwiki&#34;&gt;&lt;a href=&#34;https://github.com/Inochi2D/inochi-session/wiki&#34;&gt;inochi session wiki&lt;/a&gt;&lt;a href=&#34;#inochi-session-wikihttpsgithubcominochi2dinochi-sessionwiki&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;not too user-friendly but if you know a bit of lua and how math works, you&amp;rsquo;ll probably understand this pretty quickly.&lt;/p&gt;
&lt;h4 id=&#34;expresison-bindings-test-model-by-navy-princehttpsko-ficoms7a25339fbe&#34;&gt;&lt;a href=&#34;https://ko-fi.com/s/7a25339fbe&#34;&gt;expresison bindings test model by navy prince&lt;/a&gt;&lt;a href=&#34;#expresison-bindings-test-model-by-navy-princehttpsko-ficoms7a25339fbe&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;this includes both an inp and inx file to play with.&lt;/p&gt;
&lt;h4 id=&#34;expression-binding-noteshttpsdocsgooglecomdocumentd11xsjy5mzml6oipqddt9xfz32onw2oso2bwtv_smuh8yedit&#34;&gt;&lt;a href=&#34;https://docs.google.com/document/d/11Xsjy5mZml6OIpqDdt9xfz32onw2OsO2bwTv_smuH8Y/edit&#34;&gt;expression binding notes&lt;/a&gt;&lt;a href=&#34;#expression-binding-noteshttpsdocsgooglecomdocumentd11xsjy5mzml6oipqddt9xfz32onw2oso2bwtv_smuh8yedit&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;also by navy prince&lt;/p&gt;
&lt;h2 id=&#34;external-software&#34;&gt;external software&lt;a href=&#34;#external-software&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;tracking&#34;&gt;tracking&lt;a href=&#34;#tracking&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;puppetstringhttpsar14itchiopuppetstring&#34;&gt;&lt;a href=&#34;https://ar14.itch.io/puppetstring&#34;&gt;puppetstring&lt;/a&gt;&lt;a href=&#34;#puppetstringhttpsar14itchiopuppetstring&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;desktop webcam tracking solution for inochi session. you can use various inputs to control your rig with this software, including mouse tracking, face-tracking, button toggles and more. if you care, by the way, PS is &lt;em&gt;not&lt;/em&gt; open source.&lt;/p&gt;
&lt;h4 id=&#34;openseefacehttpsgithubcomemilianavtopenseeface&#34;&gt;&lt;a href=&#34;https://github.com/emilianavt/OpenSeeFace&#34;&gt;OpenSeeFace&lt;/a&gt;&lt;a href=&#34;#openseefacehttpsgithubcomemilianavtopenseeface&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&amp;ldquo;Robust realtime face and facial landmark tracking on CPU with Unity integration&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;vtubestudiohttpsdenchisoftcom&#34;&gt;&lt;a href=&#34;https://denchisoft.com/&#34;&gt;VtubeStudio&lt;/a&gt;&lt;a href=&#34;#vtubestudiohttpsdenchisoftcom&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&amp;ldquo;VTube Studio is an app for Virtual YouTubers that makes it easy and fun to bring your own Live2D models to life.&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;dependencies&#34;&gt;dependencies&lt;a href=&#34;#dependencies&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h4 id=&#34;ffmpeghttpsffmpegorgdownloadhtml&#34;&gt;&lt;a href=&#34;https://ffmpeg.org/download.html&#34;&gt;ffmpeg&lt;/a&gt;&lt;a href=&#34;#ffmpeghttpsffmpegorgdownloadhtml&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h4&gt;
&lt;h2 id=&#34;tips-and-tricks&#34;&gt;tips and tricks&lt;a href=&#34;#tips-and-tricks&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id=&#34;l2d-tuts-applicable-to-inochi&#34;&gt;L2D tuts applicable to inochi&lt;a href=&#34;#l2d-tuts-applicable-to-inochi&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;aside&gt;
  i&amp;rsquo;ve not vetted or watched any of these live2d tutorials. proceed at your own risk?
&lt;/aside&gt;
&lt;h3 id=&#34;rigging-tips&#34;&gt;rigging tips&lt;a href=&#34;#rigging-tips&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;h3 id=&#34;fun-effects&#34;&gt;fun effects&lt;a href=&#34;#fun-effects&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href=&#34;https://youtu.be/LKPhURDQbh4?si=Q4Zy1yRLnaAGX-Cx&#34;&gt;rigging a 90 degree head turn&lt;/a&gt;
cool as hell tbh&lt;/p&gt;
&lt;p&gt;sorry i got bored here. TODO&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Using Rathole to Host Web Services at Home</title>
      <link>https://ameliemakes.art/blog/rathole/</link>
      <pubDate>Sat, 02 Dec 2023 17:40:10 -0500</pubDate>
      
      <guid>https://ameliemakes.art/blog/rathole/</guid>
      <description>&lt;h2 id=&#34;bringing-it-home&#34;&gt;bringing it home&lt;a href=&#34;#bringing-it-home&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;last month i decided that i wanted to spin down the current digital ocean droplet i was using. it was starting to be a giant pain on the wallet for barely any resource usage cpu-wise and too little RAM (in my opinion, anyway. i&amp;rsquo;m just cheap). inspired by someone mentioning she hosts a website from her basement, my first thought was researching whether my ISP provided static IPs to regular non-business customers and the answer was a flat-out no. as disappointing as that was, i figured that i didn&amp;rsquo;t want to mess with opening ports on my router and taking care of all the baggage that comes with punching holes in a firewall that leads to my entire LAN &lt;em&gt;anyway&lt;/em&gt; (i&amp;rsquo;m not a networking person, what can i say).&lt;/p&gt;
&lt;p&gt;so i started looking at tunneling options.&lt;/p&gt;
&lt;p&gt;eh? what&amp;rsquo;s &amp;ldquo;tunneling?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;well, good question! and something i didn&amp;rsquo;t have a clear grasp on at the beginning of this journey. essentially you&amp;rsquo;re creating a direct tunnel from the web app you want to host out to the wider internet, at least in my case that is.&lt;/p&gt;
&lt;p&gt;
  
  
  &lt;figure class=&#34;post-fig&#34;&gt;
    &lt;a href=&#34;https://ameliemakes.art/blog/rathole/a-hopefully-secure-tunnel.png&#34; title=&#34;click to view full size&#34;&gt;
    
    
      &lt;img class=&#34;post-img&#34; src=&#34;https://ameliemakes.art/blog/rathole/a-hopefully-secure-tunnel.png&#34;
    
      
        alt=&#34;illustrating a secure tunneling going from an app to the outside internet&#34;
      
      &gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;/p&gt;
&lt;p&gt;a &lt;strong&gt;secure&lt;/strong&gt; tunnel provides an encrypted connection between your local machine and another machine, whether it&amp;rsquo;s a different local one or a far-away one, like a virtual private server you rent.&lt;/p&gt;
&lt;aside&gt;
  if you know about SSH, then you probably know about &lt;em&gt;SSH tunnneling&lt;/em&gt; otherwise known as &lt;em&gt;SSH port forwarding&lt;/em&gt;. rathole and other such software are pretty much doing the same thing in a &amp;ldquo;hands-off&amp;rdquo; manner. some even leverage SSH tunneling themselves. &lt;a href=&#34;https://github.com/anderspitman/awesome-tunneling&#34;&gt;check out this link for a brief list of tunneling software&lt;/a&gt;.
&lt;/aside&gt;
&lt;h2 id=&#34;rathole&#34;&gt;rathole&lt;a href=&#34;#rathole&#34; style=&#34;opacity:0.6;&#34;&gt;&amp;nbsp;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;i spent, i think, maybe a week or two looking at software that wasn&amp;rsquo;t &lt;code&gt;ngrok&lt;/code&gt; or &lt;code&gt;cloudflare&lt;/code&gt;-adjacent and after a lot of trial and error, i somehow stumbled upon &lt;code&gt;rathole&lt;/code&gt; which gets my award for the best name ever because what other utility makes your terminal say this when you unzip the archive:&lt;/p&gt;
&lt;p&gt;
  
  
  &lt;figure class=&#34;post-fig&#34;&gt;
    &lt;a href=&#34;https://ameliemakes.art/blog/rathole/inflating.png&#34; title=&#34;click to view full size&#34;&gt;
    
    
      &lt;img class=&#34;post-img&#34; src=&#34;https://ameliemakes.art/blog/rathole/inflating.png&#34;
    
      
        alt=&#34;inflating rathole&#34;
      
      &gt;
    &lt;/a&gt;
    &lt;figcaption&gt;
      &lt;/figcaption&gt;
  &lt;/figure&gt;

&lt;/p&gt;
&lt;p&gt;anyway before moving on here&amp;rsquo;s a disclaimer&lt;/p&gt;
&lt;aside&gt;
  exposing your local services and web apps to the wider internet is very useful but it comes with significant security risks that should be taken care of even with a &amp;ldquo;secure&amp;rdquo; tunnelling app. this is my blog, not a tutorial, and i&amp;rsquo;m &lt;strong&gt;not&lt;/strong&gt; going to go through the basics of setting up a firewall(s), using TLS for your apps, ddos protection, etc. do this at your own risk!
&lt;/aside&gt;
&lt;aside&gt;
  doing this might be against your ISP&amp;rsquo;s terms of service! make sure you read about what you are and aren&amp;rsquo;t allowed to do with your connection
&lt;/aside&gt;
&lt;p&gt;so here&amp;rsquo;s what i did to prep for my move:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;got a new digital ocean droplet, one of the $4 ones, to act as the rathole server&lt;/li&gt;
&lt;li&gt;set up an old&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; laptop with debian 12, the rathole client&lt;/li&gt;
&lt;li&gt;downloaded rathole from &lt;a href=&#34;https://github.com/rapiz1/rathole/releases/tag/v0.5.0&#34;&gt;here&lt;/a&gt; on both the laptop and the VPS&lt;/li&gt;
&lt;li&gt;set up caddy on the VPS to use as a reverse proxy&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;once everything was in place, i began migrating my services one-by-one from my old droplet to the laptop at home. it thankfully wasn&amp;rsquo;t too hard since i was running a lot of services and apps in docker containers. then i began setting &lt;code&gt;rathole&lt;/code&gt; up.&lt;/p&gt;
&lt;p&gt;each client needs its own rathole config file which you use with the &lt;code&gt;-c&lt;/code&gt; flag. i named mine &amp;lsquo;client.toml&amp;rsquo; so starting &lt;code&gt;rathole&lt;/code&gt; manually looks like this for me:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# /home/amelie/rathole-example&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;./rathole -c client.toml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;client.toml should have entries for the client itself and the service you want to expose via the VPS.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# client.toml for rathole&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[client]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;remote_addr = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;example.com:7000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# hostname/IP address and port of your VPS.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# the port must be the same as the one declared in &amp;#34;server.bind.addr&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# because this is the port your machine at home will communicate to the&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# VPS on. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[client.services.example]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;token = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;hack-me&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# Must be the same with the server to pass the validation&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# oversimplified: this is how your rathole server and client prove to&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# each other their identities. a secret handshake of sorts.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;local_addr = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;127.0.0.1:1234&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# The address of the service that needs to be forwarded&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;so essentially, your rathole server is going to listen on port 7000 for any changes to the rathole client. you need to let rathole know which services you&amp;rsquo;re running and what ports &lt;em&gt;they&amp;rsquo;re&lt;/em&gt; listening on. for example, i have an &lt;a href=&#34;https://iceshrimp.dev/iceshrimp/iceshrimp&#34;&gt;iceshrimp&lt;/a&gt; instance listening on port 3000. i need to let my laptop&amp;rsquo;s firewall allow port 3000/tcp so iceshrimp is accessible on my LAN. if i go to 192.168.1.172:3000 on a regular computer or phone on the same network, iceshrimp loads. perfect!&lt;/p&gt;
&lt;p&gt;okay, now i can set up the server side of things. i ssh&amp;rsquo;d into my $4 vps and set up a &amp;ldquo;server.toml&amp;rdquo; for it. it looks similar to this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#c6d0f5;background-color:#303446;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-toml&#34; data-lang=&#34;toml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[server]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bind_addr = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;0.0.0.0:7000&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# we making the server side of rathole listen on port 7000 for our&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# rathole client. be aware that the example here will accept any&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# client that requests a connection from its running rathole&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;[server.services.example]
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;token = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;hack-me&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# Token that is used to authenticate the client for the service. Change to a arbitrary value.&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# make sure both tokens in server.toml and client.toml match!&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;bind_addr = &lt;span style=&#34;color:#a6d189&#34;&gt;&amp;#34;0.0.0.0:6543&amp;#34;&lt;/span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# specifies the port that exposes &amp;#34;example&amp;#34; to the internet. &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# in other words, when people to go ip-or-url-of-your-vps.com:6543, they&amp;#39;ll&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#737994;font-style:italic&#34;&gt;# be directed through the tunnel to 192.168.1.172:1234, or whatever the LAN address of the client is&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;i saved the config file and started up the server with &lt;code&gt;./rathole -s server.toml&lt;/code&gt;. i also set up caddy as my new webserver/reverse proxyer and spun down apache on my old vps. then, i switched to my laptop and started rathole as a client. both consoles&amp;rsquo; input indicated the connection was successful. &lt;strong&gt;yes!&lt;/strong&gt; this was an extraordinary relief as i couldn&amp;rsquo;t get a previous tunnel app to work. for like. three days. i wanted to yell so bad lol&lt;/p&gt;
&lt;p&gt;all i had to do thereafter was point my browser to &lt;a href=&#34;https://a.sapphic.online&#34;&gt;https://a.sapphic.online&lt;/a&gt; and my iceshrimp instance loads!&lt;/p&gt;
&lt;p&gt;migrating the rest of my web apps like &lt;a href=&#34;https://github.com/w4/bin&#34;&gt;bin&lt;/a&gt; and my minecraft server to use rathole was a breeze. for minecraft all you need to do is open and use port 25565&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt; on both rathole&amp;rsquo;s server and client (if using default mc server settings). for anything needing to be accessible by url, i just created reverse proxy directives as i needed them in my Caddyfile. now anyone on the internet can come visit all the apps i have running on my laptop without my residential IP being exposed. additionally, i don&amp;rsquo;t have to worry about my ISP&amp;rsquo;s dynamic IP assignments changing.&lt;/p&gt;
&lt;p&gt;and that was it! it really was no muss no fuss. after all was confirmed working, i set up some systemd services to autostart rathole on both sides and bam, my digital ocean bill is going from $51 to $4 😇&lt;/p&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;it&amp;rsquo;s not that old, i think. a surface laptop 3??&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&#34;fn:2&#34;&gt;
&lt;p&gt;you could use any port for your client, but then you&amp;rsquo;d need to make sureyour players enter the correct port numbers when joining a server&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
