<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>NaviBlog</title><description>a place for my thoughts.</description><link>https://blog.pomnavi.net/</link><language>en</language><item><title>The New Cute Little E-Reader - XTeink X4</title><link>https://blog.pomnavi.net/posts/0021-the-new-cute-little-e-reader---xteink-x4/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0021-the-new-cute-little-e-reader---xteink-x4/</guid><description>What the heck am I doing getting a new ereader for??</description><pubDate>Sat, 25 Apr 2026 06:32:16 GMT</pubDate><content:encoded>&lt;p&gt;I have an e-reader that I love, the Kobo Libra Colour. I got it &lt;a href=&quot;https://sakurajima.moe/@navi/112367625360633216&quot;&gt;two years ago on release&lt;/a&gt;, since being able to see the illustrations and covers of my books in color was (and is) very important to me. It&apos;s still an excellent e-reader, and I use it a lot.&lt;/p&gt;
&lt;p&gt;So what the heck am I doing getting a new device??&lt;/p&gt;
&lt;p&gt;Two years ago when I upgraded from the Clara HD to the Libra Colour, I was excited to have something a little bigger, hoping to be able to read manga and other color content on it. It&apos;s worked great so far, and the buttons make for a comfortable reading experience. But I have one problem with it.&lt;/p&gt;
&lt;p&gt;Even though I knew the Libra Colour was bigger, I wasn&apos;t really prepared for how much that 1 inch upgrade would affect it&apos;s portability. The Clara HD was just small enough (and rectangular enough) to fit into most of the small purses and bags I owned, meaning I could take it &lt;em&gt;anywhere!&lt;/em&gt; And I did take it everywhere, even for regular errands. However, the Libra Colour is just too big for those bags. Its square-ish shape doesn&apos;t fit into my purses, which means I have to use a very specific bag to cart it around.&lt;/p&gt;
&lt;p&gt;I don&apos;t mind carrying the Libra Colour around for travel or other circumstances where I know I&apos;ll be doing a lot of waiting. I&apos;ve taken it with me on every vacation thus far.&lt;/p&gt;
&lt;p&gt;But I dislike having the size of my ereader dictate which accessories I can and can&apos;t use on a daily basis. I wanna be able to use small purses again, or even just use my pockets sometimes. The Libra Colour&apos;s size is too conspicuous and inconvenient to whip out casually while running my errands.&lt;/p&gt;
&lt;p&gt;​​​I was mildly interested in the Boox Palma and other devices like it, but it&apos;s a little too pricey as a secondary device. The XTeink X4 grabbed my attention right away because of it&apos;s low price ($50-70). The other thing that drew me to it is the fact that there is a ton of community support for the device, and there are new features being added to the main custom firmware, Crosspoint, every day. So finally took the plunge and bought one!&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://hey.pomnavi.net/media/media/019dc29a-0e6b-751c-ae57-19a1c098e207/original.jpg&quot; alt=&quot;&quot; style=&quot;width: 500px&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;I got super excited about the support for KOreader sync and OPDS functionality, so I went to the trouble of setting up &lt;a href=&quot;https://grimmory.org/&quot;&gt;Grimmory&lt;/a&gt; and &lt;a href=&quot;https://github.com/naivchan/instapaper-to-opds/&quot;&gt;Instapaper-to-OPDS&lt;/a&gt; (I made this!) in order to make downloading books and syncing between devices easy.&lt;/p&gt;
&lt;p&gt;​Grimmory was actually way cooler than I was expecting, giving me the ability to sync my purchased DRM-free books with a store-like experience similar to the official Kobo. And I can keep using the Kobo store at the same time! How awesome is that! I&apos;m now able to read the same books between both devices, and sync progress between them. I can even download articles from Instapaper!&lt;/p&gt;
&lt;p&gt;It&apos;s not quite seamless since there&apos;s a bug right now where Koreader progress doesn&apos;t sync back to Kobo as well, but it still saves to Grimmory, so I can just look up where I was.&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://hey.pomnavi.net/media/media/019dc29a-1c65-7b47-a639-d916354a9b22/original.jpg&quot; alt=&quot;&quot; style=&quot;width: 500px&quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt;Pictured above is Crosspoint, but I&apos;m now on &lt;a href=&quot;https://github.com/uxjulia/CrossInk&quot;&gt;CrossInk&lt;/a&gt; since it has released the multi-opds browser feature first. I also appreciate the font selection and the UI touches, so I may stick with this firmware for now. I&apos;ve had a blast reading on it so far, but it&apos;s definitely a more minimal experience in comparison to reading on my Kobo.&lt;/p&gt;
&lt;p&gt;I&apos;m so excited to keep using the X4 and take it with me everywhere!&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Notice to Future Readers&lt;/h2&gt;
&lt;p&gt;4/30/2026 Edit: &lt;a href=&quot;https://www.reddit.com/r/xteinkereader/comments/1szk0pq/flashing_of_firmwares_disabled/&quot;&gt;XTEINK has decided to block installation of custom firmware&lt;/a&gt; on the X3 and X4 sold in China / Aliexpress. They &quot;promise&quot; that the units sold on their official website will not be blocked from custom firmware, but who can trust them at this point? The ones sold on their website are conveniently 20$+shipping more expensive than Aliexpress too.&lt;/p&gt;
&lt;p&gt;Rather than owning up to the MANY devices shipped with defective screens (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1t0blkq/to_return_or_not/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;1&lt;/a&gt;) (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1t01r51/arrived_like_this_wont_start_is_it_a_case_of_doa/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;2&lt;/a&gt;) (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1syfeda/bad_luck_or_bad_quality_control/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;3&lt;/a&gt;) (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1sxs4um/it_has_just_arrived_broken/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;4&lt;/a&gt;) (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1sxb2wv/x4_display_issue/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;5&lt;/a&gt;) (&lt;a href=&quot;https://www.reddit.com/r/XTEINK/comments/1sx33ey/am_i_cooked/?utm_source=share&amp;amp;utm_medium=web3x&amp;amp;utm_name=web3xcss&amp;amp;utm_term=1&amp;amp;utm_content=share_button&quot;&gt;6&lt;/a&gt;), they decided to blame the community with a bullshit reason that the firmware was damaging the screens.&lt;/p&gt;
&lt;p&gt;They could have simply ended it at voiding the warranty by using your own custom software (understandable), but instead they decided to block people from doing what they want with their &lt;em&gt;own devices&lt;/em&gt;. I literally bought the device because of the excellent firmware and community support!&lt;/p&gt;
&lt;p&gt;I can&apos;t in good conscience recommend the device now, because on top of playing the screen lottery (in which buying from the official store DOES NOT GUARANTEE YOU A DEVICE WITH A WORKING SCREEN), you&apos;re now playing the &quot;blocked firmware&quot; lottery as well, forcing users to use the dogshit original firmware.&lt;/p&gt;
</content:encoded></item><item><title>Cool Self Hosting Projects with my VPS</title><link>https://blog.pomnavi.net/posts/0020-cool-self-hosting-projects-with-my-vps/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0020-cool-self-hosting-projects-with-my-vps/</guid><description>Cool projects to make my life easier.</description><pubDate>Sun, 12 Apr 2026 01:50:57 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;p&amp;gt;&amp;lt;small&amp;gt;&amp;lt;a href=&quot;https://www.freepik.com/free-vector/e-book-computer-illustration_3266710.htm#fromView=image_search_similar&amp;amp;page=1&amp;amp;position=0&amp;amp;uuid=845cdd08-a9e0-49ad-ba08-c919d375e424&amp;amp;query=blogging&quot;&amp;gt;Image Credit: vectorpouch @ freepik &amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;If you don&apos;t know, I&apos;ve recently started self-hosting a &lt;a href=&quot;https://hey.pomnavi.net&quot;&gt;Hollo&lt;/a&gt; fediverse instance on a Virtual Private Server (VPS), which is a &lt;a href=&quot;https://blog.pomnavi.net/posts/0018-fediverse-solo-party/&quot;&gt;whole can of worms.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This VPS has 8GB RAM and 80GB NVME storage, which is more than enough to run Hollo, so I&apos;ve been looking into other tools or software that I can use with the additional capacity that I have leftover, since I&apos;m paying monthly for it anyways. I got super into finding cool tools that make my life easier, and below is what I&apos;ve stuck with. I thought I would share what I&apos;ve installed and how helpful it&apos;s been so far.&lt;/p&gt;
&lt;p&gt;I&apos;ve installed all of these as &lt;a href=&quot;https://docs.docker.com/get-started/docker-concepts/the-basics/what-is-a-container/&quot;&gt;Docker containers&lt;/a&gt; with &lt;a href=&quot;https://docs.docker.com/compose/&quot;&gt;Docker Compose&lt;/a&gt;, so it was pretty easy to get started. It was as simple as copying the default or suggested compose.yml file for each software and creating it in the root of each project folder, then running some basic commands. Each software linked has documentation about how to get their docker container up and running, but I also used help from Gemini when troubleshooting the configuration or needed help/explanations on how to do certain steps.&lt;/p&gt;
&lt;h2&gt;​RSS Aggregator - &lt;a href=&quot;https://freshrss.org/index.html&quot;&gt;FreshRSS&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​Technically this was the first project I got up and running on the VPS before I installed Hollo, but I learned a lot getting it working. Especially about how to navigate a server with just the terminal window and SSH.&lt;/p&gt;
&lt;p&gt;Although I was using &lt;a href=&quot;https://capyreader.com/&quot;&gt;CapyReader&lt;/a&gt; (mobile) and &lt;a href=&quot;https://nodetics.com/feedbro/&quot;&gt;Feedbro&lt;/a&gt; (desktop) to read RSS feeds from my subscribed blogs and microblogs, it was annoying having two separate sources that didn&apos;t talk to each other. Often times I was marking things read on one device that I already read on the other. It&apos;s fine if you only read on your phone or computer, but I realized this was going to get old quick if I ended up following a lot of feeds. Since I was already deadset on paying for hosting to run Hollo, I figured I would get this up and running as well.&lt;/p&gt;
&lt;p&gt;FreshRSS has been really convenient, since you can sign into Capy with your FreshRSS account in order to sync feeds and reading status. I&apos;ve even been following accounts that are only on Twitter like the Lord of Mysteries official account, through the Xcancel RSS feed.&lt;/p&gt;
&lt;p&gt;I was using Mastodon as a feed reader with &lt;a href=&quot;https://rss-parrot.net/&quot;&gt;RSS Parrot&lt;/a&gt; but this just feels better to use. RSS Parrot doesn&apos;t include media and attachments, which was a huge downside for me, so I&apos;m glad I moved to my own self-hosted FreshRSS instance.&lt;/p&gt;
&lt;h2&gt;File Manager - &lt;a href=&quot;https://tinyfilemanager.github.io/&quot;&gt;Tiny File Manager&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​The next problem I wanted to solve was how to upload blog assets easily to my server, so I could stop using imgur for image hosting. It is technically against imgur TOS to use it as an asset host/CDN for a blog/website, but I wasn&apos;t getting much traffic on my blog to warrant being noticed for this usage. I could have uploaded the images manually to Github where the blog source files are stored (before it&apos;s pushed to Netlify and built using Astro), but that increases the size of your Github repo and can cause build problems down the road. There&apos;s a max size for repos since it&apos;s not meant to be used for file storage.&lt;/p&gt;
&lt;p&gt;I ended up with Tiny File Manager because it has an &quot;upload from URL&quot; function, which makes it SUPER easy to copy from official sources for book covers, game banners, etc. It&apos;s also quite user friendly to navigate, and manage files of any type. It also isn&apos;t very resource intensive, so it was a great addition to my server, and made my blogging workflow way easier.&lt;/p&gt;
&lt;h2&gt;Note Taking / Task Lists - &lt;a href=&quot;https://jotty.page/&quot;&gt;Jotty&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;​Since I work between a desktop and laptop computer, I need a place to write my blog post drafts. Since my blog and medialog are both Astro projects hosted on Github, I was actually using Github Projects for this to manage my drafts, since Github issues have a relatively user friendly rich text interface and it outputs markdown which I could copy into the blog post&apos;s markdown file.&lt;/p&gt;
&lt;p&gt;Janky, but it worked. But since I have a server, I figure I could use a more purpose built software for it that allowed greater organization.&lt;/p&gt;
&lt;p&gt;In comes Jotty! This post was actually drafted in Jotty. I tried the demo on the official website and really liked it, and got to installing. Since by this point, I was fairly used to setting up the dockerfiles and compose files, it only took about 30 minutes, most of which was figuring out my Caddy/internet configuration.&lt;/p&gt;
&lt;p&gt;I also appreciate that all the files you create and work with in Jotty are saved as regular markdown and json files, so it&apos;s super easy to backup. I even installed it a web app on my phone, and the interface is quite nice on mobile too!&lt;/p&gt;
&lt;p&gt;I&apos;m using Jotty for my blog post drafting workflow, but it can also replace my google keep usage, so I&apos;m looking forward to finding more uses for this tool.&lt;/p&gt;
&lt;h2&gt;AO3 (Email) to Instapaper - custom&lt;/h2&gt;
&lt;p&gt;​This is the project I&apos;m both simultaneously proud of and not proud of. 😂 It&apos;s giving luxury and laziness.&lt;/p&gt;
&lt;p&gt;Basically, I read fanfics from AO3 on my Kobo by adding chapter links as articles to my Instapaper account (I really appreciate the formatting and how friendly on the eyes it is, it&apos;s godsend for longfics). I was manually doing this for every new chapter of every fic that I was following. You can imagine how annoying this gets when you have 30+ stories to follow.&lt;/p&gt;
&lt;p&gt;I was initially trying to solve this problem by using a combination of &quot;AO3-RSS&quot; which scrapes stories for chapter updates and creates an RSS feed, FreshRSS to combine all story feeds together, and &quot;feeds-to-instapaper&quot; would would submit new feed items from my AO3 subscription feed to instapaper.&lt;/p&gt;
&lt;p&gt;I (my server) got blocked by AO3 for my AO3-RSS bot, which... fair enough. AO3 doesn&apos;t need the extra traffic and scraping is a waste of resources anyways. This setback made me realize that all I really needed was a tool that submits chapter links to my instapaper. Since I already receive AO3 subscription emails, maybe something could be done with that...?&lt;/p&gt;
&lt;p&gt;Below is a product of my prototyping with Gemini over this, and it requires a Gmail account since Gmail allows separate app-passwords. Don&apos;t worry, I created a separate email account for this (and suggest you do too if you&apos;re going to use this).&lt;/p&gt;
&lt;p&gt;I&apos;m calling my little tool &quot;Email to Instapaper&quot; since it checks your inbox for any links that match the configured sources. I&apos;m only using it for AO3 right now, but I imagine this would work for any newsletter that one could sign up for with email that contains a permalink.&lt;/p&gt;
&lt;h3&gt;Email to Instapaper code&lt;/h3&gt;
&lt;p&gt;Dockerfile&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
USER 1000
EXPOSE 5000
CMD [&quot;python&quot;, &quot;app.py&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;compose.yml&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;services:
  ao3-bridge:
    build: .
    container_name: ao3-bridge
    restart: always
    networks:
      - web_traffic
    environment:
      - PYTHONUNBUFFERED=1

networks:
  web_traffic:
    external: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;requirements.txt&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;flask
requests
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;app.py&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import imaplib
import email
import re
import requests
import time

# --- CONFIGURATION ---
GMAIL_USER = &quot;test@gmail.com&quot;
GMAIL_APP_PASS = &quot;test password&quot;

INSTAPAPER_USER = &quot;instapaper_username&quot;
INSTAPAPER_PASS = &quot;instapaper_password&quot;

# --- MODULAR SOURCES ---
# Add new sources here by defining their sender and the regex for the link you want.
SOURCES = {
    &quot;AO3&quot;: {
        &quot;sender&quot;: &quot;do-not-reply@archiveofourown.org&quot;,
        &quot;regex&quot;: r&apos;https://archiveofourown\.org/works/\d+/chapters/\d+&apos;,
    },
    # Example for future use:
    # &quot;Substack&quot;: {
    #     &quot;sender&quot;: &quot;no-reply@substack.com&quot;,
    #     &quot;regex&quot;: r&apos;https://[\w-]+\.substack\.com/p/[\w-]+&apos;,
    # }
}

def send_to_instapaper(url):
    &quot;&quot;&quot;Handles the actual API call to Instapaper.&quot;&quot;&quot;
    try:
        resp = requests.post(&quot;https://www.instapaper.com/api/add&quot;, data={
            &apos;username&apos;: INSTAPAPER_USER,
            &apos;password&apos;: INSTAPAPER_PASS,
            &apos;url&apos;: url
        })
        if resp.status_code in [200, 201]:
            print(f&quot;Successfully synced: {url}&quot;)
            return True
        else:
            print(f&quot;Instapaper API Error ({resp.status_code}): {resp.text}&quot;)
            return False
    except Exception as e:
        print(f&quot;Instapaper Connection Error: {e}&quot;)
        return False

def check_and_sync():
    try:
        mail = imaplib.IMAP4_SSL(&quot;imap.gmail.com&quot;)
        mail.login(GMAIL_USER, GMAIL_APP_PASS)
        mail.select(&quot;inbox&quot;)

        for name, config in SOURCES.items():
            # Search specifically for UNSEEN emails from this source&apos;s sender
            search_query = f&apos;(UNSEEN FROM &quot;{config[&quot;sender&quot;]}&quot;)&apos;
            status, messages = mail.search(None, search_query)

            if status == &apos;OK&apos;:
                ids = messages[0].split()
                if not ids:
                    continue # Move to next source if nothing found

                print(f&quot;Checking {name} ({len(ids)} new emails)...&quot;)

                for num in ids:
                    _, data = mail.fetch(num, &apos;(RFC822)&apos;)
                    raw_email = data[0][1].decode(&apos;utf-8&apos;, errors=&apos;ignore&apos;)

                    # Find the link using the specific regex for this source
                    match = re.search(config[&quot;regex&quot;], raw_email)

                    if match:
                        url = match.group(0)
                        print(f&quot;[{name}] Found link: {url}&quot;)
                        send_to_instapaper(url)

                    # Mark as read regardless of whether a link was found
                    # (to prevent reprocessing failed regex matches)
                    mail.store(num, &apos;+FLAGS&apos;, &apos;\\Seen&apos;)

        mail.logout()
    except Exception as e:
        print(f&quot;Polling Error: {e}&quot;)

if __name__ == &quot;__main__&quot;:
    print(&quot;Multi-Source Link Router Started...&quot;)
    while True:
        check_and_sync()
        time.sleep(600)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;​&lt;/p&gt;
&lt;p&gt;​​&lt;/p&gt;
&lt;p&gt;​​&lt;/p&gt;
</content:encoded></item><item><title>Gamekey Cards and Physical Collecting</title><link>https://blog.pomnavi.net/posts/0019-gamekey-cards-and-physical-collecting/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0019-gamekey-cards-and-physical-collecting/</guid><description>Gamekeys are a cure for my FOMO</description><pubDate>Wed, 01 Apr 2026 19:54:14 GMT</pubDate><content:encoded>&lt;p&gt;In my previous blog post, &lt;a href=&quot;https://blog.pomnavi.net/posts/0003-game-collecting-in-a-digital-world/&quot;&gt;Game Collecting in a Digital World&lt;/a&gt;, I discussed how my game collecting habits will change now that the majority of games will be gamekey cards. It&apos;s been a full year and I have some additional thoughts.&lt;/p&gt;
&lt;h2&gt;Playing and Collecting as two different hobbies&lt;/h2&gt;
&lt;p&gt;It&apos;s a common joke among collectors that these are two different hobbies. It&apos;s possible for someone to spend more money on games than they have time to play them, and this is &lt;a href=&quot;https://blog.pomnavi.net/posts/0008-this-backlog-is-insane/&quot;&gt;quite true for me as well&lt;/a&gt;. That doesn&apos;t mean that I don&apos;t intend to play my physical collection at all, but that my intention of buying something is usually driven by an interest in owning that piece of media. There are several games I&apos;ve received and played for free through Epic Games Store giveaways that I&apos;ve enjoyed, like Minit, Toem, Monument Valley 1 &amp;amp; 2, and LumbearJack. Of those, I might be interested in collecting Toem, though I am sort of hoping for a cheaper double pack with Toem 2 down the line.&lt;/p&gt;
&lt;p&gt;That doesn&apos;t mean the other games don&apos;t have value, but rather that I personally didn&apos;t want to spend upwards of 35+ USD to own them physically. There are also other Switch games that were released physically that I was unsure about, and decided to buy and play digitally instead, like Lonesome Village. I did enjoy the game, but I&apos;m glad I didn&apos;t FOMO buy the game just on the chance that I might love it.&lt;/p&gt;
&lt;p&gt;I bought my Switch 2 in August of last year, and I&apos;ve only bought two games specifically for the console so far: Fantasy Life i and Pokemon Pokopia. Fantasy Life i was unfortunate, since I bought the Switch 1 version before the Switch 2 edition was announced; I ended up buying the upgrade pack digitally for that one. Pokopia is my first Switch 2 exclusive game, and I bought it &quot;physically&quot; even though it was a gamekey card.&lt;/p&gt;
&lt;h2&gt;Gamekeys are a cure for my FOMO&lt;/h2&gt;
&lt;p&gt;Gamekey cards have put a severe damper on my enthusiasm for &lt;em&gt;collecting&lt;/em&gt; games, but I think if I really wanted to play a game, my choice between digital and gamekey would have me purchasing the gamekey version, just for the ease of selling or lending. I think of collecting the game cases as somewhat akin to collecting cards or novelty coins, not really something that has any use other than to be pretty to display.&lt;/p&gt;
&lt;p&gt;It&apos;s disappointing that it&apos;s turned out this way, but I will say that I am thankful for the chance to slow down and actually focus on playing games. I don&apos;t worry too much about limited releases or missing the preorder periods for them anymore. The spell is broken, my shelves are full, and I have lots of entertainment to choose from. If something really does draw my eye like Pokopia, I&apos;ll buy it if I want to play it. Otherwise, I&apos;m not too worried.&lt;/p&gt;
&lt;p&gt;The only unfortunate thing is that if there are lots of other people who feel the same way as me, our spending on games will decrease drastically (I know mine has). The companies who will be hurt by this the most are smaller devs and publishers who were profiting off of FOMO on indie and niche releases like Limited Run, iam8bit, Strictly Limited, and more.&lt;/p&gt;
&lt;p&gt;The gravy train was going to come to a stop at some point, and this was my chance to hop off.&lt;/p&gt;
&lt;p&gt;I&apos;m still going to buy games that have true physical releases for Switch 1 or Switch 2, and I&apos;m looking forward to them! I&apos;m still planning on getting Story of Seasons: Grand Bazaar, Dusk Index: Gion, Shuten Order, Until Then, Please Be Happy, Lil&apos; Gator Game and Tiny Bookshop.&lt;/p&gt;
&lt;p&gt;But I&apos;m done feeling rushed to open my wallet.&lt;/p&gt;
</content:encoded></item><item><title>Fediverse Solo Party</title><link>https://blog.pomnavi.net/posts/0018-fediverse-solo-party/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0018-fediverse-solo-party/</guid><description>Boldly going into unknown territories (Linux Terminal).</description><pubDate>Thu, 26 Mar 2026 04:51:24 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;small&amp;gt;&amp;lt;a href=&quot;https://www.freepik.com/free-vector/laptop-with-program-code-isometric-icon-software-development-programming-applications-dark-neon_4102879.htm#fromView=author&amp;amp;page=2&amp;amp;position=17&amp;amp;uuid=1302ad7c-da90-41f6-92a8-3aa558e75805&quot;&amp;gt;Image Credit: fullvector @ freepik&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;/p&gt;
&lt;p&gt;I don&apos;t want this post to become solely about the web development or technical aspects of hosting my own fediverse instance (honestly my posts have all been about webdev stuff recently due to taking a break from my other hobbies due to my &lt;a href=&quot;https://now.pomnavi.net/#0028&quot;&gt;elbow injury&lt;/a&gt; ). But I did want to bring it up since last night I decided to take the plunge and host my own fediverse server!&lt;/p&gt;
&lt;p&gt;I&apos;ve been mulling over this idea for quite a long time. I joined &lt;a href=&quot;https://sakurajima.moe&quot;&gt;Sakurajima.moe&lt;/a&gt; in January 2023, after exiting twitter and having a brief stint at a different mastodon server. It&apos;s a great place for anyone interested in Japanese or other asian media, and it has relays with other servers with similar vibes, like Blorbo.social, Sakurajima.social (run by the same owner as Sakurajima.moe), and Urusai.social. Just from posting about my normal interests, I met many like-minded mutuals with whom I enjoy chatting and socializing with.&lt;/p&gt;
&lt;p&gt;Overall it&apos;s been a great experience, and Admin Chikorita157 spends a lot of time on other projects that benefit the community like mirroring industry accounts or making wordpress hosting available to members. It&apos;s a great place, and I have zero qualms with the way it&apos;s run.&lt;/p&gt;
&lt;p&gt;So then why did I choose to host my own fediverse instance? Well I honestly felt like &lt;em&gt;I&lt;/em&gt; was taking advantage of the great services that were being provided. I&apos;ve touched on it in a previous &lt;a href=&quot;https://blog.pomnavi.net/posts/0011-turning-mastodon-comments-into-static-comments-on-my-astro-blog/&quot;&gt;blog post&lt;/a&gt;, but I use mastodon as a comments engine for my blogs. So I ping the server every time I rebuild the site in order to retrieve comments, which I felt kind of bad about.&lt;/p&gt;
&lt;p&gt;Another reason is that I&apos;ve been reading other people&apos;s takes on running a single user instance &lt;a href=&quot;https://blog.benjojo.co.uk/post/who-hosts-the-fediverse-instances&quot;&gt;^1&lt;/a&gt; &lt;a href=&quot;https://stefanbohacek.com/blog/lessons-learned-from-running-a-single-person-mastodon-instance/&quot;&gt;^2&lt;/a&gt; &lt;a href=&quot;https://blog.rubenwardy.com/2025/05/25/fediverse-own-your-identity/&quot;&gt;^3&lt;/a&gt; &lt;a href=&quot;https://duan.ca/2022/12/10/lazy-mastodon/&quot;&gt;^4&lt;/a&gt; &lt;a href=&quot;https://jvns.ca/blog/2023/08/11/some-notes-on-mastodon/&quot;&gt;^5&lt;/a&gt; &lt;a href=&quot;https://www.micahwalter.com/posts/how-much-ive-spent-so-far-running-my-own-mastodon-server-on-aws&quot;&gt;^6&lt;/a&gt; &lt;a href=&quot;https://it-notes.dragas.net/2023/01/15/deploying-a-piece-of-the-fediverse/&quot;&gt;^7&lt;/a&gt;. There are lots of talented I.T. professionals on fediverse since it started as such a technically-oriented space, and just as they sparked my interest in hosting my own blog on an SSG with static hosting, this felt like the next step.&lt;/p&gt;
&lt;p&gt;Due to the various blog posts that I&apos;ve read, I&apos;ve been highly interested in having my social microblogging take place at a domain that I &quot;control&quot;. Even though I am renting both the VPS and the domain, I wanted to see how hard it was, and if it could be done relatively cheaply.&lt;/p&gt;
&lt;p&gt;I first started out with researching mastodon, but I realized that it was not a good idea due to how expensive it can be. There are several managed hosting providers for mastodon like &lt;a href=&quot;https://fedihost.co/hosting/mastodon&quot;&gt;FediHost&lt;/a&gt; and &lt;a href=&quot;https://masto.host/pricing/&quot;&gt;Masto.host&lt;/a&gt;. The prices seem quite reasonable to start, but I saw several people say that the two biggest issues for mastodon hosting are the cached media storage and the memory/RAM. Mastodon caches a lot of media from remote servers, and also uses quite a bit of memory (more than 4GB) for certain processes. It&apos;s not very lightweight, and can be sluggish if you don&apos;t have any surge capacity.&lt;/p&gt;
&lt;p&gt;Due to all of these factors, I was convinced that I needed to find another fediverse/activitypub software that has compatibility with mastodon API, so that I can continue to use it for blog comments. The main contenders from my research were: &lt;a href=&quot;https://akkoma.social/&quot;&gt;Akkoma&lt;/a&gt;, &lt;a href=&quot;https://gotosocial.org/&quot;&gt;GoToSocial&lt;/a&gt;, &lt;a href=&quot;https://codeberg.org/grunfink/snac2&quot;&gt;Snac2&lt;/a&gt;, and other niche solutions like honk[^9] or &lt;a href=&quot;https://github.com/tsileo/microblog.pub&quot;&gt;microblog.pub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sorry to bury the lede here, but I didn&apos;t end up going with any of the options above. While I was scrolling through the explore tab looking for other&apos;s hosting experience with single-user fedi, I found two interesting options that I had never of before: &lt;a href=&quot;https://holos.social/&quot;&gt;Holos&lt;/a&gt; and &lt;a href=&quot;https://docs.hollo.social/&quot;&gt;Hollo&lt;/a&gt;. I actually found Holos first, but when I was searching up others who had used it, Hollo popped up in the search since it was a similar name.&lt;/p&gt;
&lt;p&gt;Hollo seemed to be exactly what I wanted: lightweight, mastodon API, and a nice UI design. Now I just needed to install it. I ended up going with Hetzner Cloud CX33 VPS, since it was pretty affordable for the specs, and I could use the extra capacity for other projects like FreshRSS.&lt;/p&gt;
&lt;p&gt;Setup took a couple of hours because I&apos;m not at all experienced with linux, using docker containers, or terminal commands, but I managed to power through it with some documentation and also help from Gemini. I hate to rely on AI, but it truly was helpful to have it give step-by-step instructions on how to accomplish some of the steps listed in the official documentation.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0018-fediverse/01.png&quot; alt=&quot;Image of my Hollo server at the bottom of the list of 32 servers with terrible uptime. Only 85%!&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It feels weird and interesting to be one of only &lt;a href=&quot;https://hollo.fediverse.observer/list&quot;&gt;32 people&lt;/a&gt; currently running the Hollo fediverse software. I&apos;ve already run into some &lt;a href=&quot;https://now.pomnavi.net/#0050&quot;&gt;complications&lt;/a&gt; so it definitely wasn&apos;t easy. I know managing your own server through terminal commands is pretty daunting, but following the steps and looking up things when it didn&apos;t work was basically my main process. It was frustrating, but rewarding.&lt;/p&gt;
&lt;p&gt;I didn&apos;t end up migrating my Sakurajima mastodon account over because I still want to interact with the local timeline there. But I did import follows, so I can start using my hollo accounts right away.&lt;/p&gt;
&lt;p&gt;The first real test will be if it works as a comment system for this post!&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;[^9]: &lt;a href=&quot;https://humungus.tedunangst.com/r/honk&quot;&gt;Honk&lt;/a&gt; has been deprecated by the original author, but I found &lt;a href=&quot;https://honk.petersanchez.com/about&quot;&gt;others&lt;/a&gt; &lt;a href=&quot;https://cafe.nilfm.cc/about&quot;&gt;who&lt;/a&gt; forked the code and are still using it.&lt;/p&gt;
</content:encoded></item><item><title>I made a Guestbook</title><link>https://blog.pomnavi.net/posts/0017-i-made-a-guestbook/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0017-i-made-a-guestbook/</guid><description>In my constant need to improve my website and do webweaver things for fun, I made a guestbook!</description><pubDate>Fri, 20 Mar 2026 05:57:42 GMT</pubDate><content:encoded>&lt;p&gt;In my constant need to improve my website and do webweaver things for fun, I made a guestbook!&lt;/p&gt;
&lt;p&gt;Instead of being normal and creating a guestbook with one of the many providers[^1], I created my own!&lt;/p&gt;
&lt;p&gt;[^1]: There are some excellent providers and tools like: &lt;a href=&quot;https://atabook.org/&quot;&gt;AtaBook&lt;/a&gt;, &lt;a href=&quot;https://www.smartgb.com&quot;&gt;SmartGB&lt;/a&gt;, &lt;a href=&quot;https://kalechips.net/projects/code/guestbook&quot;&gt;Kalechip&apos;s Guestbook Script&lt;/a&gt;, &lt;a href=&quot;https://groundedwren.neocities.org/pages/controls/guestbookDemo&quot;&gt;GroundedWren&apos;s Guestbook Code&lt;/a&gt;, and &lt;a href=&quot;https://virtualobserver.moe/ayano/comment-widget&quot;&gt;Ayano&apos;s Comment Widget&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I made the repo public this time, since it doesn&apos;t contain any sensitive data. If you want to use it, all you need to do is clone this repo and import it as a project into Netlify. Then create an &quot;ADMIN_PASSWORD&quot; environment variable, and set a password value. After that, you can update the title and links on the index page, and you&apos;ll be ready to roll!&lt;/p&gt;
&lt;p&gt;It will store guestbook entries as a json file in a blob, and then retrieve it when someone loads the page. As long as &lt;a href=&quot;https://docs.netlify.com/build/data-and-storage/netlify-blobs/&quot;&gt;Netlify Blobs&lt;/a&gt; and &lt;a href=&quot;https://docs.netlify.com/build/functions/overview/&quot;&gt;Serverless Functions&lt;/a&gt; are free, this guestbook will be free to use too! Best part is that blob-usage doesn&apos;t count against your build minutes.&lt;/p&gt;
&lt;p&gt;It does use a lot of javascript, but that was the only way I could get it to be dynamic while on &quot;static&quot; hosting. This honestly wasn&apos;t too hard, and it makes me wonder how much money the other services charge for such a simple thing.&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;naivchan/guestbook&quot;}&lt;/p&gt;
&lt;p&gt;If you would like to sign it, you can sign it here: https://gb.pomnavi.net&lt;/p&gt;
&lt;hr /&gt;
</content:encoded></item><item><title>Why use a microblog when mastodon/bluesky/tumblr/etc. exists?</title><link>https://blog.pomnavi.net/posts/0016-why-use-a-microblog/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0016-why-use-a-microblog/</guid><description>My reasons for keeping a separate microblog/statuslog.</description><pubDate>Sun, 15 Mar 2026 04:05:36 GMT</pubDate><content:encoded>&lt;h2&gt;Why?&lt;/h2&gt;
&lt;p&gt;I saw a mastodon mutual of mine open an account with micro.blog recently in order to have a non-SNS place to ramble[^1]. They go into some pretty insightful and personal details (do check them out!), and that made me wonder about my reasons as well.&lt;/p&gt;
&lt;p&gt;[^1]: &lt;a href=&quot;https://microblog-archive.arimamary.net/2026/02/26/why-did-i-make-an.html&quot;&gt;Why did I make an account on micro.blog and why am I paying a dollar a month to have a place to ramble?&lt;/a&gt; by ArimaMary, February 26, 2026.&lt;/p&gt;
&lt;p&gt;I keep a separate &lt;a href=&quot;https://now.pomnavi.net&quot;&gt;microblog&lt;/a&gt; as well, though sometimes I consider it more of a statuslog. I don&apos;t post on there as often as I do on my mastodon account, but I have noticed that I&apos;m a little hesitant to post the random thoughts or feelings I have on mastodon. For example, I find it really fun to post about my game or book pickups on mastodon because other people might be amused by that (and I want them to see those posts and maybe spark some interaction).&lt;/p&gt;
&lt;p&gt;But I&apos;m more hesitant to complain about how my day was, or when I&apos;m feeling under the weather. I think most people wouldn&apos;t find it interesting to hear about how often I have migraines, for example. And sometimes I just wanna yap about whatever show or book I&apos;m into at the moment, even when I don&apos;t have particularly deep thoughts about it.&lt;/p&gt;
&lt;p&gt;&quot;But Navi,&quot; I hear you say, &quot;Isn&apos;t that what this blog is for?&quot;.&lt;/p&gt;
&lt;p&gt;Dear imaginary reader, yes and no. It&apos;s true that if I have more than a couple sentences to say about something, I would rather post it on my blog(s) if it falls into one of my established categories (ranobe, games, book reviews, etc). But sometimes your girl just wants to talk about the &lt;a href=&quot;https://now.pomnavi.net/#0019&quot;&gt;awesome ice cream she ate last night&lt;/a&gt; or the &lt;a href=&quot;https://now.pomnavi.net/#0012&quot;&gt;post-series depression&lt;/a&gt; from a really good litrpg series.&lt;/p&gt;
&lt;p&gt;And honestly, sometimes I cross-post these spur of the moment posts to my mastodon anyways, after thinking &quot;why &lt;em&gt;shouldn&apos;t&lt;/em&gt; I post it there too??&quot;. It&apos;s helpful to have a place where you can be a little more... &quot;relaxed&quot; first and maybe vent a little. Anyways, those are my rough reasons for bothering to have a microblog/statuslog even though I&apos;m already pretty active on mastodon.&lt;/p&gt;
&lt;p&gt;Because I plan on putting this blog post in the &quot;webdev&quot; category, let&apos;s talk about some more practical and fun stuff now lol.&lt;/p&gt;
&lt;h2&gt;How it&apos;s made&lt;/h2&gt;
&lt;p&gt;I initially started with the &lt;a href=&quot;https://nomnomnami.com/templates/#blog&quot;&gt;Pastille template by NomNomNami&lt;/a&gt;. Mary linked to it, and it got me thinking about how I might want to &quot;archive&quot; some mastodon posts. I was excited to use it since it was totally just an HTML page with some fancy CSS, with no other complicated static site generation tools involved.&lt;/p&gt;
&lt;p&gt;However, while I was tinkering with the code, there were some modifications I wanted to make. I had these ideas over time, and slowly added them to my page by asking Gemini for code solutions and tweaking things when they didn&apos;t work. Below, you can find some of the customizations that I did to the Pastille template.&lt;/p&gt;
&lt;h3&gt;1. Adding post IDs&lt;/h3&gt;
&lt;p&gt;I simply used &lt;a href=&quot;https://marcom.wwu.edu/how-create-anchor-jump-link&quot;&gt;anchor links&lt;/a&gt; for these!&lt;/p&gt;
&lt;h3&gt;2. Customizing the color scheme&lt;/h3&gt;
&lt;p&gt;I picked some colors from the avatar I was planning to use, and edited the CSS.&lt;/p&gt;
&lt;h3&gt;3. Creating an RSS feed with a script&lt;/h3&gt;
&lt;p&gt;I used a python script and a github action for this. I can manually trigger the script to run to generate an RSS feed when I&apos;m done posting.&lt;/p&gt;
&lt;p&gt;RSS Generation Script&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import os
import re
import zoneinfo
import PyRSS2Gen
from bs4 import BeautifulSoup
from datetime import datetime
import xml.dom.minidom
import io

# CONFIGURATION
SITE_URL = &quot;https://now.pomnavi.net&quot;
SITE_TITLE = &quot;What is Navi up to now?&quot;
SITE_DESC = &quot;Doing geeky things probably.&quot;
PACIFIC_TZ = zoneinfo.ZoneInfo(&quot;US/Pacific&quot;)

def get_dt_object(date_text):
    &quot;&quot;&quot;Helper to convert emoji-string to a real datetime object for sorting.&quot;&quot;&quot;
    try:
        clean_date = re.sub(r&apos;[📅🕐]&apos;, &apos;&apos;, date_text).strip()
        clean_date = &quot; &quot;.join(clean_date.split()) 
        dt = datetime.strptime(clean_date, &quot;%d %b %Y %I:%M %p&quot;)
        return dt.replace(tzinfo=PACIFIC_TZ)
    except Exception as e:
        print(f&quot;Date error: {e}&quot;)
        return datetime.now(PACIFIC_TZ)

# 1. Load HTML
with open(&quot;index.html&quot;, &quot;r&quot;, encoding=&quot;utf-8&quot;) as f:
    soup = BeautifulSoup(f, &quot;html.parser&quot;)

posts = soup.find_all(&quot;article&quot;, class_=&quot;post&quot;)
temp_list = []

for post in posts:
    post_id = post.get(&quot;id&quot;, &quot;0000&quot;)
    time_tag = post.find(&quot;time&quot;)
    
    # Get datetime object for sorting
    dt_obj = get_dt_object(time_tag.get_text()) if time_tag else datetime.now(PACIFIC_TZ)
    
    # Format the string for the RSS XML (RFC 822)
    formatted_date = dt_obj.strftime(&quot;%a, %d %b %Y %H:%M:%S %z&quot;)
    
    description = &quot; &quot;.join([p.text for p in post.find_all(&quot;p&quot;)])
    
    rss_item = PyRSS2Gen.RSSItem(
        title=f&quot;Post #{post_id}&quot;,
        link=f&quot;{SITE_URL}/#{post_id}&quot;,
        description=description,
        guid=PyRSS2Gen.Guid(post_id, isPermaLink=False),
        pubDate=formatted_date 
    )
    
    # Add a tuple to our list: (the datetime object, the rss item)
    temp_list.append((dt_obj, rss_item))

# 2. Sort by the actual datetime object (the first item in the tuple)
# reverse=True puts the newest posts at the top
temp_list.sort(key=lambda x: x[0], reverse=True)

# Extract only the RSSItems for the generator
rss_items = [item[1] for item in temp_list]

# 3. Generate the RSS Object
current_build_time = datetime.now(PACIFIC_TZ).strftime(&quot;%a, %d %b %Y %H:%M:%S %z&quot;)

rss = PyRSS2Gen.RSS2(
    title=SITE_TITLE,
    link=SITE_URL,
    description=SITE_DESC,
    lastBuildDate=current_build_time,
    items=rss_items
)

# 4. Format/Pretty-Print the XML
tmp_file = io.StringIO()
rss.write_xml(tmp_file, encoding=&quot;utf-8&quot;)
raw_xml = tmp_file.getvalue()

dom = xml.dom.minidom.parseString(raw_xml)
pretty_xml = dom.toprettyxml(indent=&quot;  &quot;)

# 5. Save the pretty file
with open(&quot;feed.xml&quot;, &quot;w&quot;, encoding=&quot;utf-8&quot;) as f:
    f.write(pretty_xml)

print(&quot;Chronological Pretty-printed RSS Feed updated successfully!&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;RSS Generation Github Action&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;name: Generate RSS Feed

on:
  workflow_dispatch: # This allows you to click a button to run it manually

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
         fetch-depth: 0 # Ensures it gets the absolute latest commit

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: &apos;3.x&apos;

      - name: Install dependencies
        run: pip install beautifulsoup4 PyRSS2Gen tzdata

      - name: Run generator
        run: python generate_rss.py

      - name: Commit and push if changed
        run: |
          git config --global user.name &quot;github-actions[bot]&quot;
          git config --global user.email &quot;github-actions[bot]@users.noreply.github.com&quot;
          git add feed.xml
          git diff --quiet &amp;amp;&amp;amp; git diff --staged --quiet || (git commit -m &quot;Manual RSS Feed Update&quot; &amp;amp;&amp;amp; git push)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;4. Hiding posts when there are more than 20 of them (with a load-more button)&lt;/h3&gt;
&lt;h3&gt;5. Making the tags in the bottom of each post actually functional when you click on them&lt;/h3&gt;
&lt;p&gt;Items 4-5 were accomplished with the following Javascript which is linked at the bottom of my index page:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Pastille 2.0 Enhancements

// CONFIGURATION
const postsToShowInitially = 20; 
const amountToLoadEachTime = 20;

window.addEventListener(&apos;DOMContentLoaded&apos;, (event) =&amp;gt; {
    const allPosts = document.querySelectorAll(&apos;.post&apos;);
    const loadMoreBtn = document.getElementById(&apos;load-more-btn&apos;);
    const endMsg = document.getElementById(&apos;end-message&apos;);
    const filters = document.querySelectorAll(&apos;input[name=&quot;tag&quot;]&apos;);

    // 1. INITIAL VISIBILITY
    allPosts.forEach((post, index) =&amp;gt; {
        if (index &amp;gt;= postsToShowInitially) {
            post.classList.add(&apos;is-hidden&apos;);
            post.style.display = &apos;none&apos;;
        } else {
            post.classList.remove(&apos;is-hidden&apos;);
            post.style.display = &apos;block&apos;;
        }
    });

    const updateButtonVisibility = () =&amp;gt; {
        const isAllSelected = document.getElementById(&apos;all&apos;).checked;
        const remainingHidden = document.querySelectorAll(&apos;.post.is-hidden&apos;).length;

        if (!isAllSelected) {
            // Hide pagination UI while filtering
            if (loadMoreBtn) loadMoreBtn.style.display = &apos;none&apos;;
            if (endMsg) endMsg.style.display = &apos;none&apos;;
        } else {
            // Restore pagination UI based on remaining hidden posts
            if (remainingHidden &amp;gt; 0) {
                if (loadMoreBtn) loadMoreBtn.style.display = &apos;block&apos;;
                if (endMsg) endMsg.style.display = &apos;none&apos;;
            } else {
                if (loadMoreBtn) loadMoreBtn.style.display = &apos;none&apos;;
                if (endMsg) {
                    endMsg.style.display = &apos;block&apos;;
                    endMsg.classList.add(&apos;visible&apos;);
                }
            }
        }
    };

    updateButtonVisibility();

    // 2. TAG CLICK LOGIC (Inline tags)
    document.addEventListener(&apos;click&apos;, function(e) {
        if (e.target.classList.contains(&apos;inline-tag&apos;)) {
            e.preventDefault(); 
            const selectedTagId = e.target.getAttribute(&apos;data-tag&apos;);
            const targetRadio = document.getElementById(selectedTagId); 

            if (targetRadio) {
                targetRadio.checked = true;
                targetRadio.dispatchEvent(new Event(&apos;change&apos;));
                window.scrollTo({ top: 0, behavior: &apos;smooth&apos; });
            }
        }
    });

    // 3. DIRECT HASH LINKS
    if (window.location.hash) {
        try {
            const hash = window.location.hash.replace(&apos;#&apos;, &apos;&apos;);
            const target = document.getElementById(hash);
            if (target &amp;amp;&amp;amp; target.classList.contains(&apos;post&apos;)) {
                // Keep revealing until target is found
                while (target.classList.contains(&apos;is-hidden&apos;)) {
                    const hiddenPosts = document.querySelectorAll(&apos;.post.is-hidden&apos;);
                    if (hiddenPosts.length === 0) break;
                    for (let i = 0; i &amp;lt; amountToLoadEachTime &amp;amp;&amp;amp; i &amp;lt; hiddenPosts.length; i++) {
                        hiddenPosts[i].classList.remove(&apos;is-hidden&apos;);
                        hiddenPosts[i].style.display = &apos;block&apos;;
                    }
                }
                updateButtonVisibility();
                setTimeout(() =&amp;gt; {
                    target.scrollIntoView({ behavior: &apos;smooth&apos;, block: &apos;start&apos; });
                }, 50);
            }
        } catch(e) { console.error(&quot;Hash error:&quot;, e); }
    }
	
    // 4. LOAD MORE BUTTON LOGIC
    if (loadMoreBtn) {
        loadMoreBtn.addEventListener(&apos;click&apos;, function() {
            loadMoreBtn.classList.add(&apos;loading&apos;);
            setTimeout(() =&amp;gt; {
                const hiddenPosts = document.querySelectorAll(&apos;.post.is-hidden&apos;);
                for (let i = 0; i &amp;lt; amountToLoadEachTime &amp;amp;&amp;amp; i &amp;lt; hiddenPosts.length; i++) {
                    hiddenPosts[i].classList.remove(&apos;is-hidden&apos;);
                    hiddenPosts[i].style.display = &apos;block&apos;; 
                }
                loadMoreBtn.classList.remove(&apos;loading&apos;);
                updateButtonVisibility();
            }, 600); 
        });
    }

    // 5. FILTER CHANGE LOGIC (The Fix)
    filters.forEach(filter =&amp;gt; {
        filter.addEventListener(&apos;change&apos;, function() {
            const selectedTag = this.id;

            if (selectedTag !== &apos;all&apos;) {
                allPosts.forEach(post =&amp;gt; {
                    if (post.classList.contains(selectedTag)) {
                        // FORCE REVEAL: Remove hidden class so it&apos;s always visible for this tag
                        post.classList.remove(&apos;is-hidden&apos;);
                        post.style.display = &apos;block&apos;;
                    } else {
                        post.style.display = &apos;none&apos;;
                    }
                });
            } else {
                // RESET TO ALL: Re-apply the hidden state for the &quot;All&quot; view
                // Note: If you want posts to STAY revealed after filtering, 
                // you can skip the &apos;is-hidden&apos; check here.
                allPosts.forEach(post =&amp;gt; {
                    if (post.classList.contains(&apos;is-hidden&apos;)) {
                        post.style.display = &apos;none&apos;;
                    } else {
                        post.style.display = &apos;block&apos;;
                    }
                });
            }
            updateButtonVisibility();
        });
    });
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;6. Creating archive pages&lt;/h3&gt;
&lt;h3&gt;7. Creating a function that auto-redirects you when the post was moved to an archive.&lt;/h3&gt;
&lt;p&gt;For 7 and 8, I use two files, a config file that stores which posts are located in what archive page, and another script added to the index page where it builds out the navigation menu for the archive pages.&lt;/p&gt;
&lt;p&gt;config.js&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const SITE_CONFIG = {
  // Update this once a year when you move posts
  archives: [
    { year: &quot;2025&quot;, lastId: 5 }
  ],
  currentYear: &quot;2026&quot;
};
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Archive and Navigation script: It&apos;s placed in the head tag of the index page.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &amp;lt;!--navigation and locator--&amp;gt;
            &amp;lt;script src=&quot;config.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
        &amp;lt;script&amp;gt;
			        window.addEventListener(&apos;DOMContentLoaded&apos;, () =&amp;gt; {
			  const hash = window.location.hash.replace(&apos;#&apos;, &apos;&apos;);
			  const path = window.location.pathname;
			
			  // 1. REDIRECT LOGIC
			  if (hash &amp;amp;&amp;amp; !document.getElementById(hash) &amp;amp;&amp;amp; !isNaN(hash)) {
			    const idNum = parseInt(hash, 10);
			    const target = SITE_CONFIG.archives.find(range =&amp;gt; idNum &amp;lt;= range.lastId);
			    if (target) {
			      window.location.href = `archive-${target.year}.html#${hash}`;
			    }
			  }
			
			  // 2. NAVIGATION GENERATOR
			  const nav = document.getElementById(&apos;yearly-nav&apos;);
			  if (nav) {
			    // Start with the &quot;Now&quot; (index) link
			    const isNow = path.includes(&apos;index.html&apos;) || path.endsWith(&apos;/&apos;);
			    let html = `&amp;lt;a href=&quot;index.html&quot; class=&quot;${isNow ? &apos;active&apos; : &apos;&apos;}&quot;&amp;gt;Now&amp;lt;/a&amp;gt;`;
			
			    // Add each year from your config
			    SITE_CONFIG.archives.forEach(archive =&amp;gt; {
			      const isCurrent = path.includes(`archive-${archive.year}`);
			      html += `&amp;lt;a href=&quot;archive-${archive.year}.html&quot; class=&quot;${isCurrent ? &apos;active&apos; : &apos;&apos;}&quot;&amp;gt;${archive.year}&amp;lt;/a&amp;gt;`;
			    });
			
			    nav.innerHTML = html;
			  }
			});
        &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;8. Adding Micropub functionality.&lt;/h3&gt;
&lt;p&gt;I kind of didn&apos;t even understand what micropub was, but Mary&apos;s enthusiasm about it convinced me to research and see if I could implement it on my site. Basically it&apos;s like a CMS that allows you to easily create and format posts for your static site. You can use any 3rd party micropub application, but the setup is kind of a weird concept  to get your head around.&lt;/p&gt;
&lt;p&gt;I spent a couple hours working on getting this, I literally finished this today. You basically have to &lt;a href=&quot;https://quill.p3k.io/docs/signing-in&quot;&gt;add some html links&lt;/a&gt; to your head tag, and then create either a server or &quot;serverless&quot; function that can receive your posts from the app and format them for your page.&lt;/p&gt;
&lt;p&gt;Since the Pastille template is just an html page, adding micropub functionality makes it way easier to post! I don&apos;t have to manually edit the post IDs, dates, time, and html tags. I can just focus on the stupid message I want to send lol.&lt;/p&gt;
&lt;p&gt;Since I use Netlify for hosting, I use a Netlify serverless function to accept my Quill posts and turn them into html on my microblog. Obviously I&apos;m not going to post the authorization tokens or anything, but you can see the broad strokes of the function script below. It&apos;s just a toml file, javascript, and a marker in the index that tells the micropub function where to place the new post.&lt;/p&gt;
&lt;p&gt;netlify.toml&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[build]
  command = &quot;npm install&quot;
  functions = &quot;netlify/functions&quot;
  publish = &quot;.&quot;

[[redirects]]
  from = &quot;/micropub&quot;
  to = &quot;/.netlify/functions/micropub&quot;
  status = 200
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;micropub.js&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;const axios = require(&apos;axios&apos;);
const Busboy = require(&apos;busboy&apos;);

const parseMultipart = (event) =&amp;gt; {
    return new Promise((resolve, reject) =&amp;gt; {
        const fields = {};
        const files = [];
        const busboy = Busboy({ headers: event.headers });
        busboy.on(&apos;file&apos;, (fieldname, file, info) =&amp;gt; {
            const { filename, mimeType } = info;
            let fileBuffer = Buffer.alloc(0);
            file.on(&apos;data&apos;, (data) =&amp;gt; { fileBuffer = Buffer.concat([fileBuffer, data]); });
            file.on(&apos;end&apos;, () =&amp;gt; { files.push({ filename, mimeType, content: fileBuffer }); });
        });
        busboy.on(&apos;field&apos;, (name, val) =&amp;gt; {
            if (fields[name]) {
                if (!Array.isArray(fields[name])) fields[name] = [fields[name]];
                fields[name].push(val);
            } else { fields[name] = val; }
        });
        busboy.on(&apos;finish&apos;, () =&amp;gt; resolve({ fields, files }));
        busboy.on(&apos;error&apos;, (err) =&amp;gt; reject(err));
        const body = event.isBase64Encoded ? Buffer.from(event.body, &apos;base64&apos;) : event.body;
        busboy.end(body);
    });
};

exports.handler = async (event) =&amp;gt; {
    if (event.httpMethod !== &apos;POST&apos;) return { statusCode: 405, body: &apos;Method Not Allowed&apos; };
    const authHeader = event.headers.authorization;
    if (!authHeader) return { statusCode: 401, body: &apos;Missing Token&apos; };

    try {
        let content = &quot;&quot;;
        let isArticle = false;
        let rawCategories = [];
        let photoFile;
        const contentType = event.headers[&apos;content-type&apos;] || &apos;&apos;;

        // --- 1. DATA EXTRACTION &amp;amp; METADATA CHECK ---
        if (contentType.includes(&apos;application/json&apos;)) {
            const body = JSON.parse(event.body);
            const props = body.properties || body;
            if (props.content &amp;amp;&amp;amp; props.content[0] &amp;amp;&amp;amp; props.content[0].html) {
                isArticle = true;
                content = props.content[0].html;
            } else {
                content = props.content ? (props.content[0] || &quot;&quot;) : &quot;&quot;;
            }
            rawCategories = props.category || props.tag || [];
        } else if (contentType.includes(&apos;multipart/form-data&apos;) || contentType.includes(&apos;application/x-www-form-urlencoded&apos;)) {
            let fields;
            if (contentType.includes(&apos;multipart&apos;)) {
                const parsed = await parseMultipart(event);
                fields = parsed.fields;
                photoFile = parsed.files[0];
            } else {
                const params = new URLSearchParams(event.body);
                fields = {};
                for (const [key, value] of params.entries()) {
                    fields[key] = params.getAll(key).length &amp;gt; 1 ? params.getAll(key) : value;
                }
            }
            content = fields.content || &quot;&quot;;
            rawCategories = fields.category || fields[&apos;category[]&apos;] || fields.tags || fields.tag || [];
        }

        // --- 2. IMAGE UPLOAD ---
        let imageHtml = &quot;&quot;;
        if (photoFile) {
            const fileName = `images/uploads/${Date.now()}-${photoFile.filename}`;
            await axios.put(`https://api.github.com/repos/${process.env.GH_USER}/${process.env.GH_REPO}/contents/${fileName}`, {
                message: `Upload image`,
                content: photoFile.content.toString(&apos;base64&apos;)
            }, { headers: { Authorization: `token ${process.env.GH_TOKEN}` } });
            // Indented with 8 spaces to match post-body
            imageHtml = `\n        &amp;lt;p&amp;gt;&amp;lt;img src=&quot;${fileName}&quot; alt=&quot;Upload&quot; style=&quot;max-width:100%; height:auto; border-radius:8px;&quot;&amp;gt;&amp;lt;/p&amp;gt;`;
        }

        // --- 3. SMART TEMPLATE LOGIC ---
        let postBody = &quot;&quot;;
        if (isArticle) {
            postBody = `${content}${imageHtml}`;
        } else {
            const paragraphs = content
                .trim()
                .split(/\n\s*\n/)
                .map(para =&amp;gt; `&amp;lt;p&amp;gt;${para.replace(/\n/g, &apos;&amp;lt;br&amp;gt;&apos;)}&amp;lt;/p&amp;gt;`)
                .join(&apos;\n&apos;);
            postBody = `${paragraphs}${imageHtml}`;
        }

        // --- 4. CATEGORY NORMALIZATION ---
        let categoryList = Array.isArray(rawCategories) ? rawCategories : [rawCategories];
        if (categoryList.length === 1 &amp;amp;&amp;amp; typeof categoryList[0] === &apos;string&apos; &amp;amp;&amp;amp; categoryList[0].includes(&apos;,&apos;)) {
            categoryList = categoryList[0].split(&apos;,&apos;);
        }
        const categories = categoryList
            .flat()
            .filter(cat =&amp;gt; cat &amp;amp;&amp;amp; typeof cat === &apos;string&apos;)
            .map(cat =&amp;gt; cat.replace(&apos;#&apos;, &apos;&apos;).trim().toLowerCase());

        // --- 5. TIME (PST) ---
        const dateObj = new Date();
        const dateOptions = { day: &apos;numeric&apos;, month: &apos;short&apos;, year: &apos;numeric&apos;, timeZone: &apos;America/Los_Angeles&apos; };
        const timeOptions = { hour: &apos;numeric&apos;, minute: &apos;2-digit&apos;, hour12: true, timeZone: &apos;America/Los_Angeles&apos; };
        const dateStr = dateObj.toLocaleDateString(&apos;en-GB&apos;, dateOptions);
        const timeStr = dateObj.toLocaleTimeString(&apos;en-US&apos;, timeOptions);

        // --- 6. FETCH &amp;amp; ID ---
        const indexUrl = `https://api.github.com/repos/${process.env.GH_USER}/${process.env.GH_REPO}/contents/index.html`;
        const getFile = await axios.get(indexUrl, { headers: { Authorization: `token ${process.env.GH_TOKEN}` } });
        const fileContent = Buffer.from(getFile.data.content, &apos;base64&apos;).toString(&apos;utf-8&apos;);
        const idMatch = fileContent.match(/id=&quot;(\d{4})&quot;/);
        const nextNum = (idMatch ? parseInt(idMatch[1]) + 1 : 1).toString().padStart(4, &apos;0&apos;);

        // --- 7. FINAL HTML ASSEMBLY ---
        const articleClasses = [&quot;post&quot;, ...categories].join(&quot; &quot;);
        const tagLinks = categories
            .map(tag =&amp;gt; `&amp;lt;a href=&quot;#&quot; class=&quot;inline-tag&quot; data-tag=&quot;${tag}&quot;&amp;gt;#${tag}&amp;lt;/a&amp;gt;`)
            .join(&quot;\n            &quot;);

        // Format the postBody to ensure each line is indented 8 spaces
        const indentedBody = postBody
            .split(&apos;\n&apos;)
            .map(line =&amp;gt; &apos;        &apos; + line)
            .join(&apos;\n&apos;);

        const newPost = `
    &amp;lt;article class=&quot;${articleClasses}&quot; id=&quot;${nextNum}&quot;&amp;gt;
        &amp;lt;div class=&quot;post-header&quot;&amp;gt;@navi &amp;lt;time&amp;gt;📅${dateStr} 🕐${timeStr}&amp;lt;/time&amp;gt; &amp;lt;a href=&quot;#${nextNum}&quot;&amp;gt;&amp;lt;id&amp;gt;#${nextNum}&amp;lt;/id&amp;gt;&amp;lt;/a&amp;gt; &amp;lt;/div&amp;gt;
${indentedBody}
        &amp;lt;section class=&quot;tags&quot;&amp;gt;
            ${tagLinks}
        &amp;lt;/section&amp;gt;
    &amp;lt;/article&amp;gt;`;

        // --- 8. PUSH TO GITHUB ---
        const marker = &apos;&amp;lt;div id=&quot;micropub-marker&quot; style=&quot;display:none;&quot;&amp;gt;--- MICROPUB-TARGET ---&amp;lt;/div&amp;gt;&apos;;
        if (!fileContent.includes(marker)) return { statusCode: 500, body: &quot;Marker missing&quot; };
        
        await axios.put(indexUrl, {
            message: `Post #${nextNum}`,
            content: Buffer.from(fileContent.replace(marker, `${marker}\n${newPost}`)).toString(&apos;base64&apos;),
            sha: getFile.data.sha
        }, { headers: { Authorization: `token ${process.env.GH_TOKEN}` } });

        // --- 9. TRIGGER RSS ACTION ---
        try {
            await axios.post(
                `https://api.github.com/repos/${process.env.GH_USER}/${process.env.GH_REPO}/actions/workflows/rss-generator.yml/dispatches`,
                { ref: &apos;main&apos; },
                {
                    headers: {
                        Authorization: `token ${process.env.GH_TOKEN}`,
                        Accept: &apos;application/vnd.github.v3+json&apos;,
                        &apos;User-Agent&apos;: &apos;Netlify-Function&apos;
                    }
                }
            );
        } catch (dispatchError) {
            console.error(&quot;RSS trigger failed:&quot;, dispatchError.message);
        }

        return { 
            statusCode: 201, 
            headers: { &quot;Location&quot;: `https://now.pomnavi.net/#${nextNum}` },
            body: JSON.stringify({ message: &apos;Success&apos; }) 
        };

    } catch (error) {
        return { statusCode: 500, body: error.message };
    }
};
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Was all this hard work worth it? I hope so! I&apos;ve made it really easy to make my silly little posts now, and I really like how it looks and works. Here&apos;s to more rambling in the future!&lt;/p&gt;
</content:encoded></item><item><title>How many readers does your blog have?</title><link>https://blog.pomnavi.net/posts/0015-how-many-readers-does-your-blog-have/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0015-how-many-readers-does-your-blog-have/</guid><description>We all want our creative efforts to be seen and acknowledged by other people.</description><pubDate>Thu, 19 Feb 2026 00:16:52 GMT</pubDate><content:encoded>&lt;p&gt;When I tell friends that I have a blog, the first question I get is &quot;Do you have any readers? How many?&quot;. This isn&apos;t a wrong question to ask. I&apos;m sure I would ask someone else the same thing if given the option, since it&apos;s just a side-effect of natural curiosity. We all want our creative efforts to be seen and acknowledged by other people.&lt;/p&gt;
&lt;p&gt;But the only answer I have to this question is &quot;I don&apos;t know&quot;. When I created my blogs, I made the conscious decision to go with tools that allow me to make static websites, something that doesn&apos;t have any trackers or database backend. I don&apos;t have any analytics tools active either, other than the basic usage stats from netlify that tells me how much bandwidth I&apos;m using. So I have no idea how many &quot;readers&quot; I have.&lt;/p&gt;
&lt;p&gt;I do receive comments sometimes, and I really appreciate everyone who leaves one! If I had to guess, I think my online mutuals probably visit the blogs once-in-a-while when there&apos;s a post that particularly interests them. I think my most consistent visitor is probably me.&lt;/p&gt;
&lt;p&gt;I use my blogs to get my thoughts out there, log my media consumption, archive &quot;reviews&quot; from other places, and yap about whatever. Rarely do my posts have an intended audience other than myself. Sometimes, I write a post that&apos;s intended as a guide or reference for other people.&lt;/p&gt;
&lt;p&gt;And I think that&apos;s okay! There are vanishingly few places on the web where we can be &quot;ourselves&quot;. We always curate our stuff for the context of the particular social media space. I just realized that I wanted a place where I didn&apos;t have to do that. In less than a week, it will have been one year since I started this blog in earnest. I&apos;ve been enjoying myself so far, and I hope to continue my activities.&lt;/p&gt;
&lt;p&gt;Not knowing how many readers I have is almost freeing in a way. I can just write without comparing my posts, which I think is for the best.&lt;/p&gt;
</content:encoded></item><item><title>What counts as a Light Novel?</title><link>https://blog.pomnavi.net/posts/0014-what-counts-as-a-light-novel/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0014-what-counts-as-a-light-novel/</guid><description>Round 2 of my rant about exclusionary definitions.</description><pubDate>Wed, 14 Jan 2026 23:13:37 GMT</pubDate><content:encoded>&lt;p&gt;This is sort of a spiritual successor to my earlier rant posted &lt;a href=&quot;https://naivette.dreamwidth.org/8363.html&quot;&gt;here&lt;/a&gt; about Light Novels and tracking websites like MyAnimelist and Anilist.&lt;/p&gt;
&lt;p&gt;I was really annoyed about the inability to track certain Japanese novel series, such as Onmyoji and Tengu Eyes, and Otherside Picnic as light novels, given that anybody with eyes could see that they pretty much look and quack like a duck (light novels). They have a similar art style for the covers, and Otherside Picnic even contains illustrations. Since then, Legend of Galactic Heroes was removed from the Anilist website (it&apos;s still on MAL??), deemed to be not a light novel (with hardly any warning). I barely noticed when I was filtering light novels on my page and realized it was missing.&lt;/p&gt;
&lt;p&gt;If you ever mention Lord of Mysteries or Omniscient Reader&apos;s Viewpoint (two very popular web novel series which have been turned into published works in their home countries of China and Korea, and published in the U.S. by Yen Press, owned by Kadokawa), prepare to get jumped by some rando who will &quot;nicely&quot; remind you that those series are NOT light novels.&lt;/p&gt;
&lt;p&gt;For list tracking sites, they draw the line at books published in Japan under a Light Novel imprint. Okay, fine. But what about Original English light novels published by J-Novel Club, which are contest winners who were evaluated by KADOKAWA???! Are you arguing that the panel of judges, which includes Japanese industry professionals, doesn&apos;t know what the heck a light novel is??? Kadokawa does business in China and Korea as well under different subsidiaries.&lt;/p&gt;
&lt;p&gt;This exclusionary definition of what light novels is stupid and annoying from both a tracking and fandom point of view. You get people turning their nose up at the mere mention of a very popular novel series just because it&apos;s not from Japan. You can&apos;t track your favorite published Korean/Chinese novels alongside Raildex or whatever. That lack of visibility means it&apos;s harder to find similar works, and fans of the same stuff.&lt;/p&gt;
&lt;p&gt;Why are people so adamant about this line in the sand that they think they&apos;re defending? In reality, there is no definition for what constitutes a light novel.  Not to get into earlier frustrations, but this kind of bullshit is why I started my own blog, and started keeping track of &quot;light novels&quot; on my own using tags on Storygraph.&lt;/p&gt;
&lt;p&gt;&quot;Light Novel&quot; is a marketing term [^1]. It was never meant to be more than vague description of the ongoing trend at the time for sci-fi and fantasy works with not exactly serious literary ambitions that are marketed with art from famous illustrators, many of them mangaka. In the west, we used to call similar works &quot;pulp fiction&quot;.&lt;/p&gt;
&lt;p&gt;If you wanna call your favorite Chinese, Korean, Japanese, or English novel a light novel, be my guest. It&apos;s really not that serious, we&apos;re just trying to share our passion for the books that we love.&lt;/p&gt;
&lt;p&gt;[^1]: &lt;a href=&quot;https://www.animenewsnetwork.com/feature/2016-10-19/what-a-light-novel/.107843&quot;&gt;&quot;What&apos;s A Light Novel?&quot;&lt;/a&gt; by Kim Morrissy, Oct 19th 2016&lt;/p&gt;
</content:encoded></item><item><title>Fandom Snowflake Challenge 2026</title><link>https://blog.pomnavi.net/posts/0013-fandom-snowflake-challenge-2026/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0013-fandom-snowflake-challenge-2026/</guid><description>This blog is getting a little too serious...</description><pubDate>Sun, 04 Jan 2026 07:13:31 GMT</pubDate><content:encoded>&lt;p&gt;I thought it might be fun to respond to the prompts in this challenge, since I wanted to start using my blog for what I actually meant to use it for, fun blogging activities! It&apos;s been nice to make informative or technical posts, but this is a place for my thoughts!! Any thoughts!! Including fandom ones. I&apos;m going to be updating this post and responding to the prompts as I see fit. The original prompts are from &lt;a href=&quot;https://snowflake-challenge.dreamwidth.org/&quot;&gt;Snowflake Challenge on Dreamwidth&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Challenge #1: The Icebreaker Challenge: Introduce yourself. Tell us why you&apos;re doing the challenge, and what you hope to gain from it.&lt;/h4&gt;
&lt;p&gt;Hi I&apos;m &lt;strong&gt;Navi&lt;/strong&gt;! I was inspired to do this challenge by &lt;a href=&quot;https://mappapapa.neocities.org/blog/posts/2026-01-01-Snowflake-1&quot;&gt;Spill&lt;/a&gt; whom I follow on mastodon.&lt;/p&gt;
&lt;p&gt;I really love anime, manga, light novels, and games, and spend the majority of my free time immersed in those worlds. It&apos;s hard to quantify exactly why I&apos;m into certain fandoms, but I generally love series with big casts, interesting character dynamics, and of course, shippable couples! I&apos;m also mainly into BL, but I do have some het and GL ships that I love. If a series makes it onto my &lt;a href=&quot;https://pomnavi.net/#fandoms&quot;&gt;fandoms&lt;/a&gt; list, it&apos;s either because 1) that series emotionally moving/personally affecting for me in particular or 2) there&apos;s a ship that I&apos;m a diehard fan of. And if it&apos;s both, I worship the author for their godly abilities.&lt;/p&gt;
&lt;p&gt;Should I list some of my all-time favorite ships? I feel like it&apos;s not a proper introduction without it lol. Here&apos;s a roundup in no particular order! Generally these are right-fixed for me unless otherwise stated.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edgeworth/Phoenix - Ace Attorney (Unnecessary feelings, am I right?)&lt;/li&gt;
&lt;li&gt;Ronaldo/Draluc, Kantarou/Nagiri - Kyuushi/94/VampDies (they&apos;re so cute, I love how RonaDora argue all the time hahaha)&lt;/li&gt;
&lt;li&gt;Isami/Lewis - Bang Brave Bang Bravern (the rest of the fandom is mostly LewSami and I suffer for it)&lt;/li&gt;
&lt;li&gt;Luffy/Zoro/Luffy, Sanji/Usopp, Cavendish/Bartolomeo - One Piece (I&apos;m sure I have way more, these are just the ones I can think of. OP is a treasure trove, truly).&lt;/li&gt;
&lt;li&gt;Randel/Alice, Oreldo/Marches - Pumpkin Scissors (This series has so much going for it, I NEED people to know how much I have brainworms for this series. It&apos;s a crime that the anime never got a further adaptation. The manga is SO GOOD)&lt;/li&gt;
&lt;li&gt;Klaus/Leo/Klaus - Kekkai Sensen (I love KKSS for many personal reasons, but kuraleo is so adorable)&lt;/li&gt;
&lt;li&gt;Everyone/Ippo - Hajime no Ippo (my fav is usually Miyata, Sendo, or Volg here lmao, this series is a true shipper&apos;s paradise)&lt;/li&gt;
&lt;li&gt;Fushiguro/Itadori, Maki/Nobara, Anyone/Nanami (Usually Gojo or Higuruma) - Jujutsu Kaisen&lt;/li&gt;
&lt;li&gt;Anyone/Yang, Reuenthal/Mittermeyer, Bittenfeld/Oberstein - Legend of Galactic Heroes (this is usually Reinhard or Schenkopf in the left position with Yang, but I did read an excellent longfic with Reuenthal).&lt;/li&gt;
&lt;li&gt;Leonard/Klein - Lord of Mysteries (this is new for me, but I love LOM so far!)&lt;/li&gt;
&lt;li&gt;Sanzo/Goku, Hakkai/Gojyo - Saiyuki (the OG shippable series, any ships between these four is a banger honestly)&lt;/li&gt;
&lt;li&gt;Spock/McCoy - Star Trek (yes, not everything is animanga or games related. I love OG Star Trek)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&apos;s enough about me for now, I think.&lt;/p&gt;
&lt;h4&gt;Challenge #2: Pets of Fandom - Loosely defined! Post about your pets, pets from your canon, anything you want!&lt;/h4&gt;
&lt;p&gt;I don&apos;t have any pets myself, but I just want to say if you&apos;re looking for something really cute to watch, I highly recommend &lt;a href=&quot;https://anilist.co/anime/99390/Miira-no-Kaikata/&quot;&gt;Miira no Kaikata (How to Keep a Mummy) &lt;/a&gt; which is about a teenager who ends up adopting a small mummy as his pet. It&apos;s the cutest freaking thing in the world, and my heart just melted watching it!&lt;/p&gt;
&lt;h4&gt;Challenge #3: Write a love letter to fandom. It might be to fandom in general, to a particular fandom, favourite character, anything at all.&lt;/h4&gt;
&lt;p&gt;This isn&apos;t a love letter so much as a thank you note to one particular series. There was a period of my life when I was so utterly depressed and lost faith and confidence in my ability to do anything at all. I had failed at something important in a spectacular manner, something that would have life-changing consequences. I was filled with self-loathing. I didn&apos;t have the strength to pick myself up and move forward.&lt;/p&gt;
&lt;p&gt;During that time, I discovered Kekkai Sensen. If you don&apos;t know, the main character, Leonardo Watch, makes a terrible mistake at the start of the series that ends with his little sister losing her sight, in exchange for him receiving the &quot;All-Seeing Eyes of God&quot;. As you can imagine, this affects him heavily. He feels like such a failure, being unable to protect his sister and do the right thing when it mattered most.&lt;/p&gt;
&lt;p&gt;But through the course of the series, despite being unable to fix the situation, he atones for his mistake by trying to save others, and making the best of the situation. And there is one person, Klaus von Reinherz, who constantly believes in him, in his ability to do good for others and himself.&lt;/p&gt;
&lt;p&gt;The series itself is about how the characters are fighting an impossible fight, but are striving to protect humanity with everything they have. Other than Klaus, they are not exactly paragons of society. These are flawed people who are living their lives, doing their jobs, and helping others when they can.&lt;/p&gt;
&lt;p&gt;During that time when I was particularly weak, Klaus and Leo showed me how to survive. And the series is damn funny too, which cheered me up immensely.&lt;/p&gt;
&lt;p&gt;Thank you Kekkai Sensen, for giving me the strength to keep moving forward.&lt;/p&gt;
&lt;h4&gt;Challenge #4: Rec The Contents Of Your Last Page. Any website that you like, be it fanfiction, art, social media, or something a bit more eccentric!&lt;/h4&gt;
&lt;p&gt;There are so many awesome fanfic authors in Kyuushi/VampDies fandom that I wanna shout out, especially &lt;a href=&quot;https://archiveofourown.org/users/WyvernQuill/pseuds/WyvernQuill&quot;&gt;Wyvernquill&lt;/a&gt;, &lt;a href=&quot;https://archiveofourown.org/users/perunaprinssi/pseuds/perunaprinssi&quot;&gt;Perunaprinssi&lt;/a&gt;, &lt;a href=&quot;https://archiveofourown.org/users/Chaozrael/pseuds/Chaozrael&quot;&gt;Chaozrael&lt;/a&gt;, and &lt;a href=&quot;https://archiveofourown.org/users/Duthea/pseuds/Duthea&quot;&gt;Duthea&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;Challenge #5: Create a list of at least three things you&apos;d love to receive, a wishlist of sorts.&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;A physical release of Pumpkin Scissors. Only Kodansha can give me this (officially).&lt;/li&gt;
&lt;li&gt;More fans of the Z/Z ship in Mother of Learning! I&apos;m currently reading the webnovel, and the fandom is quite small (at least, the AO3 tag is). I&apos;m thinking of writing something myself.&lt;/li&gt;
&lt;li&gt;Reccs for works like God&apos;s Peace/Master-peace. It&apos;s SO in my strike zone, would love to find more stuff like it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Challenge 6: Top 10&lt;/h4&gt;
&lt;p&gt;I&apos;m going to post about my favorite anime that I watched last year.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/137667/Guimi-Zhi-Zhu/&quot;&gt;Lord of Mysteries&lt;/a&gt; - This was what got me interested in chinese anime (donghua) as a whole. The animation and composite work was so pretty, and I was so invested in the plot. I&apos;m reading the novels now as well!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/126403/Shiguang-Dailiren/&quot;&gt;Link Click&lt;/a&gt; - Another banger donghua series. I am caught up with the series all the way till the Bridon arc, and I can&apos;t wait for the 3rd season.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/166910/The-Fable/&quot;&gt;The Fable&lt;/a&gt; - I don&apos;t see a lot of people talk about this series, and it&apos;s awesome! It&apos;s kind of a slice-of-life of a hitman trying to lay low and pretend to be a normal person. It feels more like a live-action show than an anime. This is a dark show (beware the triggers) with some humorous moments, and a totally underrated one.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/176234/Ishura-2nd-Season/&quot;&gt;Ishura 2nd Season&lt;/a&gt; - Battle Royale of the top fighters in an isekai world, but this series feels so fresh in comparison to other isekai series. Closer in feel to Zodiac Taisen.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/184574/Dekin-no-Mogura/&quot;&gt;Dekin no Mogura&lt;/a&gt; - The original manga is by same creator as Hoozuki. Honestly I kind of like this series better. It&apos;s funnier and more engaging to watch.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/176301/Kusuriya-no-Hitorigoto-2nd-Season/&quot;&gt;Apothecary Diaries 2nd Season&lt;/a&gt; - Needs no introduction. Awesome as usual.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/178869/Clevatess-Majuu-no-Ou-to-Akago-to-Kabane-no-Yuusha/&quot;&gt;Clevatess&lt;/a&gt; - This is a dark fantasy with plenty of gore and violence. The plot is interesting, but the most notable part is that it &lt;em&gt;feels&lt;/em&gt; like an old anime from the 90s/2000s.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/156395/Busu-ni-Hanataba-wo/&quot;&gt;Busu ni Hanataba wo.&lt;/a&gt; - Very sweet romance series where I actually like all the side couples as well. I love the manga, and the adaptation is reasonably good, though they did have to cut some things out.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/180460/Mattaku-Saikin-no-Tantei-to-Kitara/&quot;&gt;Detectives These Days Are Crazy!&lt;/a&gt; - Haven&apos;t laughed this hard since Gintama.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://anilist.co/anime/180675/Apocalypse-Hotel/&quot;&gt;Apocalypse Hotel&lt;/a&gt; - A fun watch, and an anime original series at that! This has an &quot;anthology&quot; feel, even if it&apos;s the same main character.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Challenge 7: Skipped&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;LIST THREE (or more) THINGS YOU LIKE ABOUT YOURSELF. They don’t have to be your favorite things, just things that you think are good. Feel free to expand as much or as little as you want.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Don&apos;t feel like doing this one. It&apos;s not that I can&apos;t think about 3 things that I like about myself, but rather that I don&apos;t want to write about it. Also it feels like anything nice I say right now is self-aggrandizement.&lt;/p&gt;
&lt;h4&gt;Challenge #8: Talk about your creative process.&lt;/h4&gt;
&lt;p&gt;So I&apos;m going to write about my process for writing fanfics, whenever I find a series that gives me a lot of inspiration!&lt;/p&gt;
&lt;p&gt;If I&apos;m reading a ebook, I&apos;ll highlight passages that I think will be useful for reference (like a character moment or some dialogue that&apos;s really cute/funny/etc.) or spark an idea. Then I accumulate all my &quot;prompt ideas&quot; into a list either using the notebook function of my kobo or just in a google keep note.&lt;/p&gt;
&lt;p&gt;Then I write drafts for the shorter fic ideas, or outlines for the longer ones. I don&apos;t normally plan out the whole story though, I like to write and see where the characters or my ideas take me. I imagine the longer the fic, the more planning I would need to do.&lt;/p&gt;
&lt;p&gt;If it&apos;s a physical book, or a show like an anime or tv show, I tend to just take some notes of my ideas. It&apos;s almost like I&apos;m creating prompts for myself to fill later.&lt;/p&gt;
&lt;p&gt;I haven&apos;t drawn any fanart in a while, but I&apos;m sure one day I&apos;ll get the itch/inspiration to.&lt;/p&gt;
&lt;h4&gt;Challenge #9: Talk about your favorite tropes in media or transformative works.&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;(Feel free to substitute in theme/motif/cliche if &quot;trope&quot; doesn&apos;t resonate with you.)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;So I recently finished The Greatest Estate Developer manhwa and the Mother of Learning book series, and I&apos;ll talk about a trope that my fav ships from these series are representative of.&lt;/p&gt;
&lt;p&gt;The trope that I eat up and will never get tired of is when characters clearly care deeply about the safety, security, and happiness of their partners (romantic or platonic) to the point where they end up making a great sacrifice. It&apos;s like that &lt;a href=&quot;https://www.youtube.com/watch?v=hPVfJ9ljYLA&quot;&gt;one scene&lt;/a&gt; from Gekkan Shoujo Nozaki-kun, where Nozaki and Mikoshiba realize that the dating sim protag&apos;s best friend would love the main character the most lol.&lt;/p&gt;
&lt;p&gt;&amp;lt;details&amp;gt;&amp;lt;summary&amp;gt;Major spoilers ahead for TGED and Mother of Learning: &amp;lt;/summary&amp;gt;&lt;/p&gt;
&lt;p&gt;The central conflict of TGED is the fact that Lloyd realizes that the world cannot bear to have both him and Javier alive, since Lloyd was always destined to die. Upon realizing this, he tries everything in his power to save his friends and family while keeping both him and Javier alive. When he realizes that isn&apos;t possible, he makes the impossible choice that Javier never wanted him to make. There is no-one else in the series, not even Lloyd&apos;s love interest Alicia, who understands him better than Javier.&lt;/p&gt;
&lt;p&gt;This is true for Zorian and Zach in the Mother of Learning too. They both realize that only one of them can survive the current circumstances, and try everything to save the other person. Zach resigns himself to making the great sacrifice, but Zorian&apos;s stubborn refusal to accept a bad outcome leads him to a solution that involves a betrayal of Zach. He would rather betray Zach and keep him alive than see him die.&lt;/p&gt;
&lt;p&gt;Is there anybody who loves these characters more than their partner? Ugh, my heart hurts just thinking about it.&lt;/p&gt;
&lt;p&gt;&amp;lt;/details&amp;gt;&lt;/p&gt;
&lt;h4&gt;Challenge #10: Skipped&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Big Mood (Board)
CHOOSE SOMETHING YOU LOVE AND CREATE A MINI MOOD COLLECTION OF THREE (or more) ITEMS THAT EVOKE YOUR FEELINGS ABOUT IT. You don’t have to limit yourself to visual media, or collect the items into a special format like a square (though you can if you’d like).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Challenge #11: Skipped&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;In your own space, grant someone&apos;s wish from Challenge #5.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Challenge #12: Skipped&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;Make an appreciation post to those who enhance your fandom life. Appreciate them in bullet points, prose, poetry, a moodboard, a song... whatever moves you!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;Challenge #13:  TALK ABOUT A COMMUNITY SPACE YOU LIKE.&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;It doesn’t need to be your favorite, or the one where you spend the most time (although it certainly can be). Maybe it’s even one that you’ve barely visited. But talk about that space and how it helps support fannish community&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I want to talk about Mastodon here. Although it wasn&apos;t a perfect replacement for Twitter, the ways in which it&apos;s different are perfect for me. I appreciate the smaller community feel and the lack of an algorithm. I find myself searching for topics and tags to see what other people are saying when I&apos;m interested, and I appreciate that it doesn&apos;t push big accounts into your feed. It can be as public or private as you want it to be.&lt;/p&gt;
&lt;p&gt;Although I don&apos;t have a lot of followers or anything, everyone that I&apos;ve encountered has been really nice. And it&apos;s quite simple to block anyone who isn&apos;t.&lt;/p&gt;
&lt;p&gt;I totally believe in the indieweb and the need for people to create their own websites/spaces, where they can celebrate and create their own fannish spaces. But I still think spaces like mastodon are still an important part of forging connections and finding new people.&lt;/p&gt;
&lt;h4&gt;Challenge #14: Skipped&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;In your own space, create a promo and/or rec list for someone new to a fandom.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You can look at Challenge 4 for a rec list for Kyuuketsuki Sugu Shinu fandom, and Challenge 6 for anime I recommend from 2025.&lt;/p&gt;
&lt;h4&gt;Challenge #15: How Did the Fandom Snowflake Challenge Go?&lt;/h4&gt;
&lt;p&gt;I cheated and skipped quite a few towards the end, since I kind of fell off and got busy. But I still had fun filling some of the challenges. I appreciated the opportunity to blog about fandom topics.&lt;/p&gt;
</content:encoded></item><item><title>How much does it cost to run my personal website(s)?</title><link>https://blog.pomnavi.net/posts/0012-how-much-does-it-cost-to-run-my-personal-websites/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0012-how-much-does-it-cost-to-run-my-personal-websites/</guid><description>The lowdown on what could be an expensive hobby.</description><pubDate>Sun, 28 Dec 2025 21:46:19 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;small&amp;gt;&amp;lt;a href=&quot;https://www.freepik.com/free-vector/woman-submit-tax-by-online-white-background_89158409.htm#fromView=image_search_similar&amp;amp;page=1&amp;amp;position=0&amp;amp;uuid=b29ab0ab-3b97-4c88-9b88-3cb44d6228cd&quot;&amp;gt;Image Credit: stockgiu @ freepik&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;/p&gt;
&lt;p&gt;I wanted to talk about what it costs to run all my different websites/projects that I have setup, since I had to do a lot of research myself before jumping into this. I&apos;m coming at this from the hobby perspective of someone who is willing to spend some money on this since I like the idea of having my own space on the internet, and I&apos;ve always found making websites generally fun.&lt;/p&gt;
&lt;p&gt;The main &quot;websites&quot; I currently maintain are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pomnavi.net -&amp;gt; my home page&lt;/li&gt;
&lt;li&gt;blog.pomnavi.net -&amp;gt; personal blog&lt;/li&gt;
&lt;li&gt;ranobe.pomnavi.net -&amp;gt; a light novel blog&lt;/li&gt;
&lt;li&gt;medialog.pomnavi.net -&amp;gt; a media log of regular books and games reviews&lt;/li&gt;
&lt;li&gt;fanfic.pomnavi.net -&amp;gt; a fanfic archive&lt;/li&gt;
&lt;li&gt;photos.pomnavi.net -&amp;gt; a photo archive&lt;/li&gt;
&lt;li&gt;now.pomnavi.net -&amp;gt; a status log or microblog, not sure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To run all of the above, I use the following websites and tools:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Product&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Carrd.co Pro Standard Plan &amp;lt;br&amp;gt; - Used for my homepage&lt;/td&gt;
&lt;td&gt;19$/yr, 11$/yr with annual holiday deals&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Namecheap .net domain (1)&lt;/td&gt;
&lt;td&gt;14$/yr (costs generally increase with time/inflation, this started at 12)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Publii Blog CMS (Light Novel Blog) &amp;lt;br&amp;gt; - I only use the free themes and plugins. This desktop app uploads my blog straight from my computer onto Netlify hosting.&lt;/td&gt;
&lt;td&gt;0$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Github &amp;lt;br&amp;gt; - Code storage for every project that&apos;s not my homepage or light novel blog&lt;/td&gt;
&lt;td&gt;0$ (for now)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Netlify &amp;lt;br&amp;gt; - Used to deploy and host my site from github, allows you to use custom domains.&lt;/td&gt;
&lt;td&gt;0$ (for now)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Notepad++ &amp;lt;br&amp;gt; - Free code editor that I use to edit some of my static sites. Usually good practice to make changes on your computer first, but sometimes I work directly in Github&lt;/td&gt;
&lt;td&gt;0$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Melon&apos;s Gallery Maker &amp;lt;br&amp;gt; - This is used for my photo gallery&lt;/td&gt;
&lt;td&gt;0$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25$/yr&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As you can see from my breakdown above, the main things I pay for are a domain and carrd.co services. I decided early on that I didn&apos;t want to pay for &lt;a href=&quot;https://manuelmoreale.com/blog-platforms&quot;&gt;blog hosting platforms&lt;/a&gt;, if it could be done for free. There are free ones out there (see the list I linked), but most free platforms don&apos;t allow you to link a custom domain unless you pay a fee or subscription. And many of the cheaper paid services don&apos;t allow much in the way of easy customization of themes, or you have to be quite experienced with CSS in order to style your blog. And I also wanted to make sure it had the option to use tags, and/or categories. Therefore, I choose the following options:&lt;/p&gt;
&lt;p&gt;For the sites I host for free, I either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;use Publii Blog CMS, which is very user friendly, but only works on your local PC&lt;/li&gt;
&lt;li&gt;use a static site generator like Astro (Github + Netlify) with a theme I like. This could be Hugo or any other SSG as long as it has a theme you like, since all posts are written in markdown and mostly portable.&lt;/li&gt;
&lt;li&gt;use an HTML template with some hand coded changes, and upload directly to Netlify&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Technically, I could change out my carrd homepage for another static page and cut down my costs even more, but I think it&apos;s a reasonable price for the amount of customization and ease of use it offers.&lt;/p&gt;
&lt;p&gt;The most important thing to have is a domain. Even if you change hosting or decide to go with a paid service, you can always point your domain to your new location.&lt;/p&gt;
&lt;p&gt;You could probably find one that&apos;s even cheaper, but most domains are somewhere between 10-20$/year depending on the TLD (.net, .com, etc) and the rarity or availability. There are some really fun or creative ones like .moe, .art, or .blog so there&apos;s plenty of room for experimentation.&lt;/p&gt;
</content:encoded></item><item><title>Turning Mastodon-Comments into Static Comments on my Astro blog</title><link>https://blog.pomnavi.net/posts/0011-turning-mastodon-comments-into-static-comments-on-my-astro-blog/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0011-turning-mastodon-comments-into-static-comments-on-my-astro-blog/</guid><description>Static comments for a static site!</description><pubDate>Fri, 26 Dec 2025 23:30:43 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;small&amp;gt;&amp;lt;a href=&quot;https://www.lindsaykwardell.com/blog/integrate-mastodon-with-astro&quot;&amp;gt;Image credit&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&lt;/p&gt;
&lt;h1&gt;Preamble&lt;/h1&gt;
&lt;p&gt;My previous solution for comments was to use the solution made by Daniel Pecos: &lt;a href=&quot;https://github.com/dpecos/mastodon-comments&quot;&gt;Mastodon-Comments.js&lt;/a&gt;, with some customization from &lt;a href=&quot;https://bechster.dk/mastodon-kommentarer-i-publii/&quot;&gt;Bech&lt;/a&gt; and &lt;a href=&quot;https://enikofox.com/posts/fediverse-comments-with-publii/&quot;&gt;Enikofox&lt;/a&gt;. It works by uploading the file to the root of your website, and then putting some code in the header of your site so it will load the javascript when there is a specific html tag in the blog post. Here&apos;s the specific code/files I used:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.pomnavi.net/mastodon-comments.js&quot;&gt;Mastodon-Comments.js&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Header Code&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;Fragment slot=&quot;head&quot;&amp;gt;
        &amp;lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.4.1/purify.min.js&quot; integrity=&quot;sha512-uHOKtSfJWScGmyyFr2O2+efpDx2nhwHU2v7MVeptzZoiC7bdF6Ny/CmZhN2AwIK1oCFiVQQ5DA/L9FSzyPNu6Q==&quot; crossorigin=&quot;anonymous&quot; referrerpolicy=&quot;no-referrer&quot;&amp;gt;&amp;lt;/script&amp;gt;
        &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css&quot;&amp;gt;
        &amp;lt;script type=&quot;module&quot; src=&quot;/mastodon-comments.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
        &amp;lt;meta name=&quot;fediverse:creator&quot; content=&quot;@navi@sakurajima.moe&quot;&amp;gt;
    &amp;lt;/Fragment&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Blog Post HTML tag&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;mastodon-comments host=&quot;sakurajima.moe&quot; user=&quot;navi&quot; tootId=&quot;123456789&quot;&amp;gt;&amp;lt;/mastodon-comments&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;All of these together work out of the box on any static website, as long as visitors have javascript turned on.&lt;/p&gt;
&lt;p&gt;However, it bothered me that it didn&apos;t save the comments once fetched. What happens if my current mastodon server goes down, and I lose all the interactions? Of course, there are backup tools to save your mastodon archive, but no easy way to add the comments to your blog other than copy-pasting (as far as I know).&lt;/p&gt;
&lt;p&gt;Well, I found this excellent post: &lt;a href=&quot;https://www.winterstein.biz/blog/static-comments-for-static-website/&quot;&gt;Comments for Static Website (with Mastodon) by Adrian Winterstein&lt;/a&gt; which got me thinking. The author uses Zola SSG, shouldn&apos;t there be a way to get this to work with Astro? Hence, it inspired this project.&lt;/p&gt;
&lt;p&gt;All of the credit goes to Adrian Winterstein and Google Gemini, which helped me code this endeavor. Unfortunately, I have zero coding skills, and was only able to make this work by prompting and troubleshooting with Gemini. I definitely don&apos;t claim any ownership over the code, I&apos;m just happy it works. I hope this might be helpful to your own projects.&lt;/p&gt;
&lt;h1&gt;The Solution&lt;/h1&gt;
&lt;p&gt;My blog is on Github and any changes trigger a build by Netlify. There would be different steps involved if you were running Astro on your local PC and then uploading the output to a static website host. I imagine these files could be adapted to work with any workflow as long as it uses the Astro static site generator.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;path/File&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;scripts/fetch-comments.js&lt;/td&gt;
&lt;td&gt;Javascript that talks to Mastodon and generates JSON.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;package.json&lt;/td&gt;
&lt;td&gt;Update this so that fetch-comments.js runs before the site is built.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;src/components/MastodonComments.astro&lt;/td&gt;
&lt;td&gt;Astro Template that displays the JSON content as HTML.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.github/workflows/fetch-comments.yml&lt;/td&gt;
&lt;td&gt;Github Action that runs fetch-comments.js once a week.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;src/data/comments/&lt;/td&gt;
&lt;td&gt;The folder where your comments are saved permanently as JSON files that map to your blog posts.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;src/pages/posts/[...slug].astro&lt;/td&gt;
&lt;td&gt;Update this so that the comments will load on each blog posts. If you use a different astro theme from me (I use Fuwari), you will probably have a different template you need to update.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;src/content/config.ts&lt;/td&gt;
&lt;td&gt;Update this so that Astro knows you added new frontmatter sections&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;How it works&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The Data Source (Mastodon)
&lt;ul&gt;
&lt;li&gt;You add mastodon_id and mastodon_instance to your blog post&apos;s frontmatter. ID = post ID, Instance = What mastodon server you&apos;re on.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Persistence Layer (GitHub Actions)
&lt;ul&gt;
&lt;li&gt;An automated script (fetch-comments.js) runs once a week or whenever you trigger it manually with Github Actions.&lt;/li&gt;
&lt;li&gt;It scans your posts for the mastodon_id and mastodon_instance in the front matter, and fetch the latest replies from Mastodon. There are no dependencies because it uses Node.js which is already part of my Astro build (I think?).&lt;/li&gt;
&lt;li&gt;It commits these comments as JSON files directly into your Github repository (src/data/comments/).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The Display Layer (Astro &amp;amp; Netlify)
&lt;ul&gt;
&lt;li&gt;When the JSON files are updated (or you write a new markdown post), Netlify automatically detects the change and triggers a build.&lt;/li&gt;
&lt;li&gt;The MastodonComments.astro component reads these local JSON files during the build process.&lt;/li&gt;
&lt;li&gt;It generates static HTML with your custom styling&lt;/li&gt;
&lt;li&gt;If it&apos;s unable to find a JSON comments file, Netlify will make a live call to the Mastodon API to pull the thread and replies of mastodon post specified in the frontmatter, similar to the original Mastodon-Comments.js file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I&apos;ve posted the script files and other reference files here:&lt;/p&gt;
&lt;p&gt;::github{repo=&quot;naivchan/astro-static-comments&quot;}&lt;/p&gt;
</content:encoded></item><item><title>Building My Own Fanfic Archive</title><link>https://blog.pomnavi.net/posts/0010-building-my-own-fanfic-archive/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0010-building-my-own-fanfic-archive/</guid><description>I created my own website to archive fanfic, an &quot;archive of *my* own&quot;</description><pubDate>Mon, 15 Dec 2025 19:52:37 GMT</pubDate><content:encoded>&lt;h1&gt;Preamble&lt;/h1&gt;
&lt;p&gt;I originally got the idea to create a proper fanfic archive (one that&apos;s part of my string of websites) from this example here: &lt;a href=&quot;https://kingdra.net/fan/masterlist/&quot;&gt;kingdra.net fanfic masterlist&lt;/a&gt; which was linked to by &lt;a href=&quot;https://sakurajima.moe/@arimamary/115470164428787246&quot;&gt;ArimaMary&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I currently use &lt;a href=&quot;https://naivette.dreamwidth.org&quot;&gt;Dreamwidth&lt;/a&gt; as a place to archive my writing, and I&apos;ve been using it to repost the text of any fics I&apos;ve uploaded on AO3. It&apos;s helpful when AO3 is down, but honestly I was feeling kind of dissatisfied with Dreamwidth. I&apos;ve run into plenty of HTML issues on the site, where the HTML code I copy into their editor gets warped somehow, and messes up my spacing. Sometimes tables go awry, and even though it&apos;s kind of dumb, I&apos;m always worried about running into the 1000 tag limit even though that&apos;s a ridiculously huge number of tags and I&apos;m nowhere close.&lt;/p&gt;
&lt;p&gt;And ever since I started archiving my blog posts on there too, I feel like it doesn&apos;t really serve the purpose of a fanfic archive, since I blog way more then I write fanfics. I wanted a dedicated space for fanfics, and I was kicking around the idea of starting a new dreamwidth blog. However, I found Mary&apos;s post, which got the gears turning.&lt;/p&gt;
&lt;p&gt;I wanted something aesthetic and relatively easy to maintain. Since this is just a fanfic archive, I don&apos;t have too many worries about updating it as frequently as a blog, so I&apos;m okay with using hand-coded pages. I also wanted something with filtering or tag capabilities.&lt;/p&gt;
&lt;p&gt;The solution I found is basically to customize a fanfic rec page template developed for tumblr.&lt;/p&gt;
&lt;h1&gt;How I Built It&lt;/h1&gt;
&lt;h2&gt;1) Find a Fanfic Rec page I like&lt;/h2&gt;
&lt;p&gt;I searched around a few tumblr theme repositories, and any theme/page archives of coders whose work I&apos;ve used before. Unfortunately, many of those resources have gone offline since the great Tumblr purge, but some are still around. I managed to find one that I liked, that had filtering capabilities. In the end, I decided to use &lt;a href=&quot;https://pomnavi.tumblr.com/post/802973490593529856/odeysseus-candlelight-preview-download-fic&quot;&gt;Candlelight by Odeysseus&lt;/a&gt;. You can see a demo of it &lt;a href=&quot;https://odeysseus.tumblr.com/candlelight-fic&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;2) Download all my fanfics as HTML files from ArchiveOfOurOwn&lt;/h2&gt;
&lt;p&gt;This one is pretty self explanatory.&lt;/p&gt;
&lt;h2&gt;3) Create a github repository and start customizing the page template&lt;/h2&gt;
&lt;p&gt;I uploaded the fanfic files into a subfolder, and then pasted the Candlelight code into an index.html file at the top level. From there, I performed a few customizations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Added the filters I wanted using the code in the template&lt;/li&gt;
&lt;li&gt;Made the fanfic cards bigger&lt;/li&gt;
&lt;li&gt;Increased the size of the font in various places, since tumblr themes are notorious for small text for some reason.&lt;/li&gt;
&lt;li&gt;Made it mobile friendly and dynamic (I&apos;m not very experienced with coding, so I used Gemini to suggest the code changes that would achieve the final effect).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;4) Start inputting fanfic information and linking to the fanfic files.&lt;/h2&gt;
&lt;p&gt;This is just manual, I started inputting the fanfic title, summary, wordcount, etc. into the correct spots on the template, which I repeated for each story. I also uploaded the html files I downloaded from AO3 into a subfolder on the repo, and then linked to the files on the site.&lt;/p&gt;
&lt;p&gt;I also used kingdra.net&apos;s &lt;a href=&quot;https://kingdra.net/fan/ao3css/&quot;&gt;AO3 CSS stylesheet&lt;/a&gt; on each fanfic&apos;s page so that it looks nice.&lt;/p&gt;
&lt;h2&gt;5) Upload the end result and finish!&lt;/h2&gt;
&lt;p&gt;I linked the private Github project I created to Netlify and uploaded it. Any changes I make on Github will auto-deploy to the website. You can see the outcome here at &lt;a href=&quot;https://fanfics.pomnavi.net/&quot;&gt;Navi&apos;s Fanfic Archive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&apos;m not too comfortable sharing the source code since it&apos;s cobbled together from a bunch of random parts that I didn&apos;t create, but you can see what the code looks like by inspecting the page in your browser.&lt;/p&gt;
&lt;h1&gt;What&apos;s Next?&lt;/h1&gt;
&lt;p&gt;I&apos;m pretty happy with the way it looks right now, but I have a few other ideas that I think could be incorporated.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;table of contents for the multi-chapter fics&lt;/li&gt;
&lt;li&gt;&quot;back to top&quot; or &quot;back to TOC&quot; button&lt;/li&gt;
&lt;li&gt;adding more navigation links between the fics and the main page&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Honestly I was pretty happy with how non-fussy this project was. It was nice to work with regular html code rather than trying some complicated solution.&lt;/p&gt;
</content:encoded></item><item><title>Using Publii on Multiple Computers with Syncthing</title><link>https://blog.pomnavi.net/posts/0009-using-publii-on-multiple-computers-with-syncthing/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0009-using-publii-on-multiple-computers-with-syncthing/</guid><description>Multi-track(PC) blogging with Publii! One more hurdle removed.</description><pubDate>Sat, 29 Nov 2025 06:41:48 GMT</pubDate><content:encoded>&lt;p&gt;I use Publii to run my light novel blog, which is the blog I update the most. I really like using it since it has a user-friendly GUI, and I can use a WYSIWYG editor rather than writing in markdown.&lt;/p&gt;
&lt;p&gt;Publii makes writing the blog posts pretty seamless, except for one problem. It&apos;s a desktop application that only works on your computer. It&apos;s not designed to be synced and used across multiple computers, since at its heart it&apos;s just a static site generator with GUI. It&apos;s not like wordpress where there is a database on the backend of the site where you can sign in from any computer and write your posts.&lt;/p&gt;
&lt;p&gt;At first I was willing to just use my desktop at home when I needed to update my LN blog, but I found that the act of &quot;sitting at the PC&quot; felt like too much work after I had just finished reading a book. Sometimes I would delay writing a post for one reason or another.&lt;/p&gt;
&lt;p&gt;I know making it possible to write from a different computer (like my laptop) isn&apos;t going to solve any major writer&apos;s blocks or laziness, but it&apos;s just one more hurdle that could be removed, if only I could implement some kind of solution.&lt;/p&gt;
&lt;p&gt;I tried using Publii&apos;s own guides ( &lt;a href=&quot;https://getpublii.com/blog/managing-static-website-on-multiple-computers.html&quot;&gt;one&lt;/a&gt; and &lt;a href=&quot;https://getpublii.com/docs/publii-on-multiple-computers-via-dropbox.html&quot;&gt;two&lt;/a&gt; ) but I couldn&apos;t get it to work. I tried copying the folder into OneDrive at first, and pointing the Publii app at the correct folder in the drive. Unfortunately, OneDrive is temperamental and doesn&apos;t sync the files as fast as I would need it. I tested writing some blog posts, but it was hit or miss when it would sync. Often times, Publii wouldn&apos;t recognize the site in the folder, and I had to clear the settings and try again just to get it to work.&lt;/p&gt;
&lt;p&gt;I could have tried Dropbox like the guide suggested, but honestly I wasn&apos;t convinced that it would fare better (maybe it would, who knows).&lt;/p&gt;
&lt;p&gt;Frustrated, I searched for a solution that would simply let me share a folder locally, and I found SyncThing. It&apos;s an application that syncs folders on your computer when both devices are online. I bet if I had a home server or raspberry pi setup, I could make it always online or something, which would be really cool.&lt;/p&gt;
&lt;p&gt;But honestly, I don&apos;t need anything that complicated. Now I can type up drafts on my laptop, and sync them back to my desktop for publishing or vice versa. I already tested out some drafts using SyncThing, and the drafts show up on both computers with all the changes. No headaches necessary! And it serves as a backup too.&lt;/p&gt;
&lt;p&gt;Edit: I feel a bit silly for not including the steps for what I did lol. Fixing that now!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install SyncThing on my desktop using the &lt;a href=&quot;https://github.com/Bill-Stewart/SyncthingWindowsSetup/&quot;&gt;Syncthing Windows Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Open the configuration window&lt;/li&gt;
&lt;li&gt;Share my existing Publii folder&lt;/li&gt;
&lt;li&gt;Install Syncthing and Publii on my laptop&lt;/li&gt;
&lt;li&gt;Add my laptop as a device on my desktop&apos;s SyncThing config&lt;/li&gt;
&lt;li&gt;Add my desktop as a device on my laptop&apos;s SyncThing config&lt;/li&gt;
&lt;li&gt;Accept the shared Publii folder on my laptop.&lt;/li&gt;
&lt;li&gt;Success! The folders should sync now anytime BOTH computers are on.&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>This backlog is insane!</title><link>https://blog.pomnavi.net/posts/0008-this-backlog-is-insane/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0008-this-backlog-is-insane/</guid><description>Am I actually a fake fan???</description><pubDate>Thu, 25 Sep 2025 19:13:13 GMT</pubDate><content:encoded>&lt;p&gt;Although this topic is applicable to all kinds of things (shows, books, etc.), I will mainly be focusing on games here.&lt;/p&gt;
&lt;p&gt;I have an account on &lt;a href=&quot;https://howlongtobeat.com/user/naivette&quot;&gt;HowLongToBeat.com&lt;/a&gt;. If you&apos;re unaware of this website, it&apos;s a website that allows you to catalog games and give them a status, such as playing, backlog, completed, or retired. It&apos;s like Letterboxd, but for games. Also, because games are more variable experiences than movies, it calculates the average time it takes to beat a game based on the recorded times entered by its users, hence the name of the site.&lt;/p&gt;
&lt;p&gt;Sometimes, when I look at all the games I have in my backlog, I get nervous. I&apos;m a fan of genres that tend to have longer play times, such as RPGs and Visual Novels. When I look at the &quot;Avg Time to Beat&quot; and &quot;Total Time to Beat&quot; stats on my account, I realize my own mortality. Will I die without having played some of these games? Especially the ones that I actually bought, and spent my hard-earned money on.&lt;/p&gt;
&lt;p&gt;To complicate things, I like collecting games (as you may know by now). As a physical game collector nowadays, there&apos;s an impetus to buy games before they become unobtainable or too expensive. I&apos;ve looked back on when I obtained games, versus when I actually got to play them, and it can take upwards of 2-3 years before I finish a game. I am definitely acquiring games faster than I can complete them. The only thing that helps my numbers is that I tend to complete shorter indie games as I buy them.&lt;/p&gt;
&lt;p&gt;I don&apos;t really like forcing myself to play games, so I play whatever I&apos;m in the mood for. Recently, I decided I wanted to sort my games into collections (a feature where you can make custom lists of any kind) just to see how many games of each genre I&apos;ve played.&lt;/p&gt;
&lt;p&gt;I was shocked to find out that I&apos;m actually a fake JRPG fan. It&apos;s true that I love visual novels and adventure games (I&apos;ve played 48 of them!) but although I thought of myself as a JRPG fan, I&apos;ve only actually finished 16 games. Out of that total, 3 of them are a Dragon Quest game, 3 are a Pokemon game, and 2 are Loathing series games. I have a piddling few other games, like Atelier Ryza, and Live a Live.&lt;/p&gt;
&lt;p&gt;How can this be!! Am I actually a fake fan??? When I check my other lists, it becomes obvious what&apos;s going on. Even if I spend the same or more amount of time on this particular genre, because the games are so long, it takes forever to complete them. I&apos;m definitely &lt;em&gt;interested&lt;/em&gt; in JRPGS, but they are basically 3 to 4 times as long as any other game genre. Newer games also tend to go for much longer, it took me 150 hours to play through DQ11S all the way to completion (I don&apos;t consider Act 3 optional, as it contains the &quot;true&quot; story ending).&lt;/p&gt;
&lt;p&gt;I can see why people hate these types of games, and feel like they&apos;re padded out. But I love the slow paced approach to story telling, and I find these types of games super cozy. I don&apos;t mind chipping away at games, and switching to whatever I&apos;m in the mood for.&lt;/p&gt;
&lt;p&gt;Right now, I have 10 games I&apos;m playing, 37 games paused, and 138 games on my backlog. I&apos;ve only completed 111 games in my entire gaming life, and have also retired 35 games due to various reasons. Although I get anxious about it occasionally, I just have to keep reminding myself that this is a hobby that I do in my free-time, not a job.&lt;/p&gt;
&lt;p&gt;Sure, it sucks that I maybe wasted some money if I never get to the game, but I could always sell the games later (this is why it&apos;s good to go physical!). In the grand scheme of things, it&apos;s not that expensive either, and not worth worrying about it.&lt;/p&gt;
&lt;p&gt;One unfortunate ER visit costs more than 2 years of game purchases (for me). My house could burn down someday. A life changing accident could happen tomorrow, at which point I&apos;m going to have way bigger concerns than my gaming backlog. I just want to enjoy my time on this planet while I still can.&lt;/p&gt;
</content:encoded></item><item><title>I impulse-bought a Switch 2</title><link>https://blog.pomnavi.net/posts/0007-i-impulse-bought-a-switch-2/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0007-i-impulse-bought-a-switch-2/</guid><description>I feel it was time for an upgrade anyways.</description><pubDate>Tue, 19 Aug 2025 19:50:55 GMT</pubDate><content:encoded>&lt;p&gt;I ended up impulse buying a Nintendo Switch 2.&lt;/p&gt;
&lt;p&gt;I was frequently checking the stock indicator on the Nintendo website, to see if it was in stock near me so that I could conveniently pick it up in-person. I had been checking quite frequently, since I really wanted the version without Mario Kart World included. I was adamant, since I knew that I definitely wouldn&apos;t play that game.&lt;/p&gt;
&lt;p&gt;On one particular Friday, I got the invitation to purchase one from Amazon, as well as finding out that it was actually in-stock at the Walmart near me. It was actually during the evening, so I wasn&apos;t sure if it was actually there, but I figured there was no harm in checking. If it wasn&apos;t there, I could just order it online. When I got there, it was actually in-stock! There were only two left. The person manning the counter in the tech section even remarked on how she was surprised that the scalpers hadn&apos;t come by that day to clear out the units. Lucky me!&lt;/p&gt;
&lt;p&gt;Originally, I wanted to wait until there was a special edition that I really wanted, but after looking at all the special editions released for the original Switch, the only one I ended up liking was the Animal Crossing edition. Was I going to wait 1-2 years for a Switch 2 special edition that I may not even like?&lt;/p&gt;
&lt;p&gt;Here are the list of &lt;s&gt;excuses&lt;/s&gt; reasons that I had for buying a Switch 2&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I can customize it using accessories from Geekshare (rather than waiting for a special edition). These accessories offer a wider range of color options, often with much cuter designs than the existing special editions. I can also change these as much as I want by buying a new cases.&lt;/li&gt;
&lt;li&gt;I can play my current switch games with higher fidelity/frame rates.&lt;/li&gt;
&lt;li&gt;The screen is much bigger, and therefore easier to see (I&apos;m getting old lol)&lt;/li&gt;
&lt;li&gt;I play mostly handheld, and the kickstand makes it easy to play with just the joycons, rather than supporting the whole console. I don&apos;t have a Switch OLED, so this is a big upgrade for me. No more hand/wrist pain!&lt;/li&gt;
&lt;li&gt;The speakers are louder/clearer.&lt;/li&gt;
&lt;li&gt;I wanted to buy one earlier, in case tariffs in the US cause the price to go up even more.&lt;/li&gt;
&lt;li&gt;I had cash rewards from my credit card that I could use to bring the price down.&lt;/li&gt;
&lt;li&gt;I deserved a treat for what I had just put up with at work.&lt;/li&gt;
&lt;li&gt;I would use my gaming budget, and buy less games for the rest of the year.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;In the end, I wanted to play Fantasy Life i: The Girl Who Steals Time with better resolution. It&apos;s quite playable on the original Switch, but blurry. Combined with the camera being a little far away (and the zoom function is too close for normal play), I honestly felt like it was straining my eyes to play. I don&apos;t even have any close-vision issues!&lt;/p&gt;
&lt;p&gt;The Switch 2 Upgrade for Fantasy Life is only 3 USD, and it&apos;s totally worth it (obviously you need a Switch 2 of course). Unfortunately, I bought my physical copy of the game too early, back when I didn&apos;t have a Switch 2 and the Switch 2 physical edition of the game wasn&apos;t even announced yet. Luckily, the cost of the upgrade wasn&apos;t too bad.&lt;/p&gt;
&lt;p&gt;I still haven&apos;t bought any new Switch 2 specific games yet, since many of the 3rd party games are game key cards. There also haven&apos;t been many games announced that have truly caught my attention. I am interested in Story of Seasons: Grand Bazaar, but I never got that far in Story of Seasons: A Wonderful Life. I want to actually complete that game, and maybe wait for a mild discount on Grand Bazaar before I pick it up.&lt;/p&gt;
&lt;p&gt;While I am hopeful that maybe more games will get proper Switch 2 physical releases, I have an enormous backlog of Switch 1 games that I will happily play on my new Switch 2. Even if there aren&apos;t obvious patches to improve the games, they run better just by having more processing power available to them. I&apos;ve had a Switch for 7 years, and my current Animal Crossing one for at least 5 years.&lt;/p&gt;
&lt;p&gt;I feel it was time for an upgrade anyways.&lt;/p&gt;
&lt;h3&gt;My New Switch 2!&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0007-nintendo-switch-2/01.jpg&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;https://assets.pomnavi.net/Blog/0007-nintendo-switch-2/02.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</content:encoded></item><item><title>Why buy physical light novels?</title><link>https://blog.pomnavi.net/posts/0006-why-buy-physical-light-novels/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0006-why-buy-physical-light-novels/</guid><description>Usually, it&apos;s for emotional reasons.</description><pubDate>Wed, 16 Jul 2025 05:54:32 GMT</pubDate><content:encoded>&lt;p&gt;I love reading light novels, to the point where I run a &lt;a href=&quot;https://ranobe.pomnavi.net&quot;&gt;blog&lt;/a&gt; about my book impressions!&lt;/p&gt;
&lt;p&gt;I have Ascendance of a Bookworm to thank for that. It&apos;s the only series I own both physically, and digitally (DRM-free from J-novel). However, there are other series that I made the decision to only own either digitally or physically.&lt;/p&gt;
&lt;p&gt;I love using my Kobo ereader. It&apos;s light, and I can use it to read in bed in any comfy position I want, even at night. I could have chosen to transition my personal library entirely to digital, but there are series that I insist on buying physically. Usually, it&apos;s for series that are either: emotionally important and/or nostalgic, the art is so pretty I had to have it, or it&apos;s not available digitally.&lt;/p&gt;
&lt;p&gt;I thought it might be fun to briefly go over some of my collection (in no particular order), and explain why I made the decision to buy either physical or digital (or both!).  I also included my favorite volume cover (so far) from each series!&lt;/p&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://d2dq7ifhe7bu0f.cloudfront.net/Part-5db78fd7fa8881cf21afc34f/bookworm2.2_cvr_860.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ascendance of a Bookworm - Physical and Digital&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I originally read this digitally at the library, and I was so addicted that I needed to read the most recent releases. I started pre-ordering the books from J-Novel club when I caught up so that I could read the pre-pubs every week. Since Bookworm was the only series that I was reading from J-Novel club, it was cheaper than subscribing. Even now, I prefer ordering books from J-Novel rather than subscribing. Also, I find You Shiina&apos;s art absolutely stunning. I went ahead and bought this physically after the fact, and I&apos;ve been buying the volumes as they come out.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://d2dq7ifhe7bu0f.cloudfront.net/Part-63e6698c072402a909ff8dcb/apothecary8-cvr-860.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Apothecary Diaries - Digital&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I absolutely love this series (especially since the anime convinced me to start reading while it was airing!), but I honestly think Touko Shino&apos;s art is just OK. The illustrations sometimes don&apos;t cover the &quot;best&quot; moments of the series. Either way, I&apos;m fine with supporting this one digitally.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://m.media-amazon.com/images/I/714KynB3ncL.&lt;em&gt;SL1500&lt;/em&gt;.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Onmyoji and Tengu Eyes - Physical&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It&apos;s a touching series of found family, and I appreciate the occult elements in this story. I honestly find the two main duo so adorable, and they immediately settled into a married couple routine (love that for them). The art is great too, too bad there are no inside illustrations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://m.media-amazon.com/images/I/91XLV2G2YpL.&lt;em&gt;SL1500&lt;/em&gt;.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;The Twelve Kingdoms - Physical&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;It was the art OTL. Look at how pretty Youko is!! I also really liked the anime by the end, it was such a unique story. I&apos;m excited to continue collecting and reading this series, and I intend to compare it to the fan TL by Eugene Woodbury. Having a physical copy will be helpful for that, as I&apos;ll have the fanTL on my eReader.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://cdn.kobo.com/book-images/5258c661-ed68-4cb8-af33-1f617f110abf/1200/1200/False/ishura-vol-1.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Ishura - Digital&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I really enjoyed the anime for this, and the art is awesome! I just don&apos;t have enough room on the bookshelf for this, plus I actually like using my eReader to take notes and highlight information to refer back to it later.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://cdn.kobo.com/book-images/2a8551c4-2e32-4cea-a859-cdf5e48a736f/1200/1200/False/lout-of-count-s-family-novel-vol-5.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Lout of Count&apos;s Family - Digital&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I initially started buying this digitally when I was just trying out the series. It seems like the art is really nice in the later volumes (still no inside art), and I am quite enjoying the story. Not sure if I&apos;ll switch over to physical for this series though, maybe in the far future when I have more room LOL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://cdn.kobo.com/book-images/864eeb82-bc93-4a21-a161-a0be064763bd/1200/1200/False/omniscient-reader-s-viewpoint-novel-vol-1.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Omniscient Reader&apos;s Viewpoint - Physical&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I haven&apos;t even read this series except for the preview, but I already know this is probably going to be squarely in my strike zone. Also the art is absolutely gorgeous, and the covers are quite unique in their design (they have a cut out with art underneath).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://m.media-amazon.com/images/I/81BKBqWOY6L.&lt;em&gt;SL1500&lt;/em&gt;.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;Lord of Mysteries - Physical&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;I only just started watching the donghua, but I am SO locked into this series right now. I haven&apos;t even received the book, but I&apos;ve been reading the chapters on Webnovel in the meantime. I&apos;m already loving the story, so I had to go physical with this one. The covers are pretty cool, but I might have chosen to go digital with this one if the option was there. However, I did not want to pay Webnovel so much money for not even a damn DRM&apos;d epub from a reputable ebook seller. If Webnovel goes down, your paid content disappears too, and I&apos;m not about that life.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;img src=&quot;https://cdn.kobo.com/book-images/af2fdc26-2c6d-447e-9d8b-742faac2194f/1200/1200/False/a-young-lady-finds-her-true-calling-living-with-the-enemy-vol-2.jpg&quot; width=&quot;250&quot;&amp;gt;&lt;/p&gt;
&lt;h3&gt;A Young Lady Finds Her True Calling Living with the Enemy - Digital&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Honestly, the only reason this is digital is because I first started reading it from the library, and then I decided to buy it digitally to support the author. Cross Infinite World&apos;s digital releases precede their physical ones by a month or two. It&apos;s short (only two volumes which are basically the 1st and 2nd half of the story), and it&apos;s one of my favorite otome series. I basically read the second volume AS SOON as it came out, and digital was great for that.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you read till the end, I hope you had fun! Are you mainly into physical or digital books? If money and/or space were no issue, which series would you collect, and how? I would love to hear about it in the comments or a form reply (find links below!)&lt;/p&gt;
</content:encoded></item><item><title>Farewell, Pocket</title><link>https://blog.pomnavi.net/posts/0005-farewell-pocket/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0005-farewell-pocket/</guid><description>Goodbye to the best part of owning a Kobo.</description><pubDate>Thu, 19 Jun 2025 23:09:26 GMT</pubDate><content:encoded>&lt;p&gt;Pocket is shutting down (&lt;a href=&quot;https://web.archive.org/web/20250530025731/https://support.mozilla.org/en-US/kb/future-of-pocket&quot;&gt;link&lt;/a&gt;). For those who don&apos;t know, Pocket was a read-it-later service that let you save links to articles and other text pages on your account, and allowed you have offline reading access to the content. It didn&apos;t work perfectly on all websites, but there were a couple situations that I used it, where it was extremely helpful.&lt;/p&gt;
&lt;p&gt;I used to save news articles and opinion pieces that were longer than a quick 5-minute-read for later reading on my e-reader (the obvious, intended way to use the service). I also used it to, funnily enough, read fanfiction. While browsing AO3 or some other website, it was easy to add short fanfics while browsing a single search, and read them comfortably all at once. Pocket&apos;s tagging system made it easy to tag fandoms, ships, etc.&lt;/p&gt;
&lt;p&gt;Pocket also had a neat feature where it would use text-to-speech to turn an article into an audiobook. It was really convenient for hands-free consuming.&lt;/p&gt;
&lt;p&gt;I would say that my usage of the service was about 90% fanfiction (I never used TTS for this), and 10% news articles and blog posts. I&apos;ve even used it on reddit to read original fiction from some of the writing subreddits.&lt;/p&gt;
&lt;p&gt;The integration of Pocket with Kobo was one of key highlights for the device for me. No longer was I reading fanfic on my phone or tablet, which would keep me up into the late hours from the blue light. Instead, I was reading on my ereader, and getting a (probably) better night&apos;s sleep.&lt;/p&gt;
&lt;p&gt;In the past few months, &lt;a href=&quot;https://archiveofourown.org/admin_posts/31204&quot;&gt;AO3 has actually been blocking scrapers&lt;/a&gt; (including Pocket) due to not having enough server bandwidth to handle the traffic. They&apos;ve been facing increasing costs from both growing human traffic, and AI language models abusing the vast collection of written works by real people. I haven&apos;t been able to use Pocket like I normally do, even before this unfortunate announcement.&lt;/p&gt;
&lt;p&gt;I hope Kobo will implement the same functionality with another service (It&apos;s literally one of the main reasons I bought the device), but until then, my only workaround has been to download epubs from AO3 and use KoboFileServer to convert to kepub and transfer them onto the device. I wrote a &lt;a href=&quot;https://blog.pomnavi.net/posts/0000-kobofileserver/&quot;&gt;guide&lt;/a&gt; on how to set this up.&lt;/p&gt;
&lt;p&gt;For those of you who aren&apos;t keen on technical solutions like KoboFileServer, another option is to use &lt;a href=&quot;https://send.djazz.se/&quot;&gt;Send to Kobo/Kindle by Djazz&lt;/a&gt;. It&apos;s a service operated by a single person, but it works fairly well. The only issue is that it may go down occasionally since it seems Djazz hosts it on their personal home server, meaning they&apos;re still susceptible to internet and power outages.&lt;/p&gt;
&lt;p&gt;I don&apos;t know if I&apos;ll figure anything else out, it&apos;s just annoying to transfer multiple epubs for smaller fanfics, so I&apos;ve been reading them on my phone. I&apos;m honestly praying that &lt;a href=&quot;https://www.threads.com/@mtamblyn/post/DKAXPEpgtLT?xmt=AQF0BbJeUnLQdZxMcjrHwv4MFPQ3XnHbyIHHbAdfcXC87Q&quot;&gt;Kobo is working on an alternative&lt;/a&gt;. I&apos;ve also been looking into 3rd-party solutions like &lt;a href=&quot;https://wallabag.it/&quot;&gt;Wallabag&lt;/a&gt;. I would prefer not to pay for another service, since I already pay for Kobo VIP, so make it happen Kobo!!&lt;/p&gt;
&lt;p&gt;&amp;lt;hr&amp;gt;&lt;/p&gt;
&lt;p&gt;2025-07-22 edit: Looks like Kobo has announced that they will be &lt;a href=&quot;https://www.kobo.com/news/rakuten-kobo-announces-plans-for-instapaper-integration-continuing-commitment-to-seamless-read-it-later-experience&quot;&gt;replacing Pocket with Instapaper&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>Anime Night Market Haul</title><link>https://blog.pomnavi.net/posts/0004-anime-night-market-haul/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0004-anime-night-market-haul/</guid><description>I helped my friend AlisenMakes table at the Anime Night Market in Westminster, CA. Here&apos;s my haul!</description><pubDate>Mon, 17 Mar 2025 19:15:57 GMT</pubDate><content:encoded>&lt;p&gt;I helped my friend &lt;a href=&quot;alisenmakes.com&quot;&gt;alisenmakes&lt;/a&gt; table at the Anime Night Market in Westminster, CA. It was a fun experience, and I ended up spending wayyyy more than I wanted to lol. But it was a lot of cool stuff! Here&apos;s a roundup of my haul:&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://alisenmakes.com&quot;&gt;AlisenMakes&lt;/a&gt; / &lt;a href=&quot;https://www.kumocove.store/&quot;&gt;KumoCove&lt;/a&gt; (+ others&apos; stickers)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/01.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/02.jpg&quot; alt=&quot;&quot; /&gt;
Everything except the frog astronaut sticker is by KumoCove. This was my helper tax haha. I&apos;m excited to have a sticker book now, since I never know where to put my stickers. Now that I have a place to put them, I have a reason to buy them!&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://otakupup.carrd.co&quot;&gt;Otakupup&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/03.jpg&quot; alt=&quot;&quot; /&gt;
I love the design of the bag! And this artist had a TON of acrylic key chains for some older properties, and I just had to get them! Pictured here is Victorian Romance Emma, Gintama, Kekkai Sensen, One Piece, and Wotakoi. I&apos;m definitely going to follow this artist&apos;s work!&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://ycyang.crevado.com/&quot;&gt;Yung Chieh Yang / Marourin&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/04.jpg&quot; alt=&quot;&quot; /&gt;
We both love Nanami lol. I really loved the conversation we had about JJK shipping!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/05.jpg&quot; alt=&quot;&quot; /&gt;
The AO3 sticker is also hers! The Maya and Edgeworth/Phoenix stickers are by &lt;a href=&quot;#alumints&quot;&gt;Alumints&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://alumints.carrd.co&quot;&gt;Alumints&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/06.jpg&quot; alt=&quot;&quot; /&gt;
I was literally SO EXCITED to meet her in person!! I&apos;ve followed alumints online for quite a long while since I&apos;m a hardcore EdgeWright fan, and I didn&apos;t know she&apos;d be at this con since I&apos;m not on twitter much anymore.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://linktr.ee/xiaoarts&quot;&gt;XiaoArts&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/07.jpg&quot; alt=&quot;&quot; /&gt;
Alumints was tabling with this artist, and I really liked this bag and the original character (whose name is Haruru?). She also had some wonderful Dungeon Meshi art, so I bought a sticker pack.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://snakeberryart.carrd.co/&quot;&gt;Snakeberryart&lt;/a&gt; / &lt;a href=&quot;https://www.instagram.com/semitenko/&quot;&gt;SemiTenko&lt;/a&gt; and Unknown&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0004-anime-night-market/08.jpg&quot; alt=&quot;&quot; /&gt;
SemiTenko&apos;s Monster Trio charm was very cute! I also really liked this Cinnamoroll crochet plush, but I couldn&apos;t find out who the creator was (they didn&apos;t have a business card or anything, but when they charged me, it was for Paz Jewelry in Huntington Beach).&lt;/p&gt;
&lt;h3&gt;Final Thoughts&lt;/h3&gt;
&lt;p&gt;It ended up being a fun weekend, and I enjoyed spending time with my friend and meeting new people! Now I need to go be antisocial for a bit and recover lol.&lt;/p&gt;
</content:encoded></item><item><title>Game Collecting in a Digital World</title><link>https://blog.pomnavi.net/posts/0003-game-collecting-in-a-digital-world/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0003-game-collecting-in-a-digital-world/</guid><description>There&apos;s something magical about popping in a little cartridge and just starting the game.</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&amp;lt;small&amp;gt;Image credit: &lt;a href=&quot;https://dribbble.com/eazy937&quot;&gt;Nguyen Vinh Nam&lt;/a&gt; &amp;lt;/small&amp;gt;&lt;/p&gt;
&lt;p&gt;This article came up on my feed about how game publishers may &lt;a href=&quot;https://www.gamespot.com/articles/new-tariffs-may-lead-publishers-to-abandon-physical-games-says-analyst/1100-6529858/&quot;&gt;abandon physical games&lt;/a&gt;, as tariffs in the US would probably make it completely unprofitable. Gaming in general has been moving toward what people might say is an &quot;All Digital Future&quot;, and I dislike it heavily. We don&apos;t really own digital purchases.&lt;/p&gt;
&lt;p&gt;I like collecting games. My game collection currently includes Game Boy, Game Boy Color, Game Boy Advance, DS, 3DS, and Nintendo Switch Games[^1].&lt;/p&gt;
&lt;p&gt;[^1]: Technically I have some PS3 and PS4 games, but they&apos;re not part of my collection since they were bought for me, and they&apos;re stored with my sibling&apos;s other PlayStation games.&lt;/p&gt;
&lt;p&gt;I appreciate the artwork on the cover, the mini booklets/manuals, and all the little extra goodies, such as stickers. I love pre-ordering games from Japan, as there&apos;s usually an extra little something they include. One time, I even got the full soundtrack as a pre-order bonus with 2064: Read Only Memories! I ended up loving the music for that game, so being able to rip it to flac and listen to it on-the-go in high definition quality was awesome.&lt;/p&gt;
&lt;p&gt;There&apos;s something magical about popping in a little cartridge and just starting the game. This doesn&apos;t always work out, since some games are horribly incomplete on launch, but it isn&apos;t always this way. There are many games that are feature complete. Otherwise, there are &quot;complete&quot; editions that you can wait to buy.&lt;/p&gt;
&lt;p&gt;I have a gaming PC as well, which is currently being used to play Monster Hunter Wilds. While I&apos;ve been enjoying the game, it just doesn&apos;t feel as fun as the day I opened the Monster Hunter Rise deluxe edition, and added the included Kamura pin to my itabag. I proudly displayed the Magnamalo amiibo, and stuck the stickers everywhere. And once I was done with the game, I got to put it next to Monster Hunter Generations Ultimate, the game that started my love for this series.&lt;/p&gt;
&lt;p&gt;With Wilds, I simply paid ahead of time, and downloaded the game the day before. The day of, I was able to load in my save game from the beta, and start playing. While I am enjoying the game, this experience is just missing the &quot;specialness&quot; that I had with the previous games in the franchise.&lt;/p&gt;
&lt;p&gt;Even the extra goodies in the PC Collector&apos;s Edition of Metaphor Refantazio doesn&apos;t make a difference, the game is just a &lt;em&gt;steam code&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;There&apos;s no fun in collecting digital games. If gaming moves towards becoming completely digital, then I will simply wait for sales. There&apos;s no incentive at all to buy a game full price at launch. I will simply buy a game right before I intend to play it.&lt;/p&gt;
&lt;p&gt;&lt;s&gt;I&apos;ve been eagerly awaiting the Switch 2, since it&apos;s looking to be the last bastion of physical games.&lt;/s&gt;[^2] Once that console cycle is over, if everything is completely digital, then I will wait. I have such a large collection of physical games in my &lt;a href=&quot;https://howlongtobeat.com/user/naivette/games/custom2/1&quot;&gt;backlog&lt;/a&gt;, that I might abstain from buying new games at the pace that I have been currently.&lt;/p&gt;
&lt;p&gt;[^2]: It looks like a majority of third-party games will be &lt;a href=&quot;https://www.nintendolife.com/guides/every-nintendo-switch-2-game-key-card-release&quot;&gt;game key cards&lt;/a&gt;, which means that I&apos;ll have to make a decision about physical collecting a lot sooner than I wanted to :/&lt;/p&gt;
&lt;p&gt;I have a lot of games to beat anyways.&lt;/p&gt;
</content:encoded></item><item><title>DRM is a scam.</title><link>https://blog.pomnavi.net/posts/0002-drm-is-a-scam/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0002-drm-is-a-scam/</guid><description>It&apos;s time to liberate our digital media.</description><pubDate>Wed, 26 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There have been two recent instances of DRM screwing over customers who legitimately paid for things:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.theverge.com/news/612898/amazon-removing-kindle-book-download-transfer-usb&quot;&gt;The Amazon Kindle debacle&lt;/a&gt;, where Kindle users are losing the ability to download and transfer ebooks over USB&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.animenewsnetwork.com/bbs/phpBB2/viewtopic.php?t=3207366&quot;&gt;Dark Horse Comics shutting down their digital storefront&lt;/a&gt;, causing comics (and some manga) fans to lose their digital purchases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It happens time and time again. We buy digital products, but we don&apos;t have any of the rights of actually owning the physical thing. Oops, you actually agreed that what you were buying was a &lt;em&gt;license&lt;/em&gt;, you don&apos;t own the real thing teehee!&lt;/p&gt;
&lt;p&gt;I can say this in no uncertain terms, if I buy something digital, &lt;em&gt;it&apos;s mine&lt;/em&gt;[^1]!&lt;/p&gt;
&lt;p&gt;[^1]: Don&apos;t even get me started on game DRM, where you&apos;re better off pirating the entire game due to multitudes of compounding factors, like music licensing or publishing agreements. Physical media is dying out here, and game hardware/software is not easy to preserve like books are.&lt;/p&gt;
&lt;p&gt;Piracy exists because of nonsense like above. Of course, there are some people who either can&apos;t or won&apos;t spend the money. But situations like above only benefits pirates, not legitimate customers. You want legitimate customers? Make sure you give them what they paid for.&lt;/p&gt;
&lt;p&gt;I recently got into reading light novels, and I can point to one publisher who currently sells books without DRM, &lt;a href=&quot;https://j-novel.club/&quot;&gt;J-Novel.Club &lt;/a&gt;. They currently publish two of my favorite series, Ascendance of a Bookworm and Apothecary Diaries. I&apos;ve happily paid for Bookworm twice (ebooks and physical), and currently own all of Apothecary Diaries digitally.&lt;/p&gt;
&lt;p&gt;Yes, I &lt;em&gt;own&lt;/em&gt; these books. I can simply download the epub from J-Novel Club once I&apos;ve bought the book, and they can&apos;t take away that file from me. So I&apos;m happy to support their business. They even issue updates to the epubs, and let you know, in case you want to download the new version to replace the old local copy.&lt;/p&gt;
&lt;p&gt;I never trusted Amazon or Kindle to begin with, so I currently buy my books through Rakuten Kobo. Their ereaders, while not open source, do support multiple file types, including epub and kepub (proprietary to Kobo, offers some additional features). You can easily convert epubs to kepub using &lt;a href=&quot;https://calibre-ebook.com/&quot;&gt;Calibre&lt;/a&gt; and a 3rd party plugin called &lt;a href=&quot;https://plugins.calibre-ebook.com/&quot;&gt;KoboTouchExtended&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Kobo isn&apos;t perfect because they still enable publishers to use Adobe DRM with their books, but that&apos;s &lt;a href=&quot;https://tech.kateva.org/2013/08/using-calibre-and-dedrm-plug-in-to.html&quot;&gt;easy to get around&lt;/a&gt;. But at least Adobe DRM doesn&apos;t lock you into just one device, like Kindle does.&lt;/p&gt;
&lt;p&gt;When I buy a pdf or an epub from an indie creator, I am doing it because I want to support them. Don&apos;t stab customers in the back. They&apos;ll just become pirates, and you&apos;ve lost a future sale.&lt;/p&gt;
</content:encoded></item><item><title>Why did I choose to suffer with Astro??</title><link>https://blog.pomnavi.net/posts/0001-astro-suffering/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0001-astro-suffering/</guid><description>This is the first post of my new Astro blog.</description><pubDate>Tue, 25 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h1&gt;Static Site Generators&lt;/h1&gt;
&lt;p&gt;I previously wrote a &lt;a href=&quot;https://blog.pomnavi.net/posts/0000-creating-my-own-space-on-the-web/&quot;&gt;blog post&lt;/a&gt; about how I&apos;ve got my current setup with dreamwidth. I liked DW&apos;s tag structure, but I hated how SSGs made you write posts in Markdown.&lt;/p&gt;
&lt;p&gt;After getting over that hurdle (I still find it kind of annoying), the next biggest problem was finding a blog theme that I liked. I&apos;ve checked out a bunch of themes from Hugo, Jekyll, Hexo, etc. but I couldn&apos;t really find anything that was simple AND attractive, until now.&lt;/p&gt;
&lt;p&gt;I found this absolutely gorgeous &lt;a href=&quot;https://github.com/saicaca/fuwari&quot;&gt;Fuwari&lt;/a&gt; theme from Saicaca.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;::github{repo=&quot;saicaca/fuwari&quot;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1&gt;My New Blog&lt;/h1&gt;
&lt;p&gt;After cloning the github repo, I found that editing the config file isn&apos;t too hard. Most of the code is readable, and everything is preloaded. I&apos;m already pretty happy with how everything looks, so I&apos;ve decided to finally commit to this blog instead of forwarding http://blog.pomnavi.net to my &lt;a href=&quot;https://naivette.dreamwidth.org&quot;&gt;dreamwidth archive&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I still don&apos;t like having to write in markdown, but at least the blog is nice to look at now. All my posts will still be archived on DW because I don&apos;t trust myself not to screw something up, like the test run I had with 11ty and Hugo.&lt;/p&gt;
&lt;p&gt;I hate the experience I had with SSGs so far (especially with trying to hook-up a 3rd party CMS), but I&apos;m going to try straight markdown for now. If I need rich text conversions, I&apos;ll probably look up another tool online.&lt;/p&gt;
&lt;p&gt;This has been a really annoying saga, but I&apos;m gonna keep sticking with this until it breaks.&lt;/p&gt;
</content:encoded></item><item><title>Creating my own space on the web</title><link>https://blog.pomnavi.net/posts/0000-creating-my-own-space-on-the-web/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0000-creating-my-own-space-on-the-web/</guid><description>How I setup my current blogs.</description><pubDate>Thu, 20 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Note: This is a backdated post from my dreamwidth account.&lt;/p&gt;
&lt;h2&gt;Intro&lt;/h2&gt;
&lt;p&gt;I&apos;ve been interested in blogging and journaling for a long time, and I&apos;ve locked down many of my early efforts, as they were a reflection of my childhood.&lt;/p&gt;
&lt;p&gt;Now that I&apos;ve used modern social media, I wanted a space of my own to post thoughts and musings. Whether it&apos;s on a specific topic (like my &lt;a href=&quot;http://ranobe.pomnavi.net&quot;&gt;Ranobe&lt;/a&gt; blog), or a catch-all place like what I currently use this Dreamwidth blog for. There&apos;s no way to currently link my domain to this dreamwidth (right now, the url https://blog.pomnavi.net is setup to forward to this blog), so I think I may have found another solution, of creating a backup of the DW blog and posting it &lt;a href=&quot;http://dwlog.pomnavi.net&quot;&gt;elsewhere&lt;/a&gt;[^1].&lt;/p&gt;
&lt;p&gt;Here is a brief explanation for how I setup these two blogs:&lt;/p&gt;
&lt;h2&gt;The Light Novel (Ranobe) blog&lt;/h2&gt;
&lt;p&gt;I struggled a lot of with the use of Static Site Generators(SSG), as they are not very user friendly. Even when I managed to get something setup with Hugo or Eleventy, it was annoying to have to type/think totally in Markdown, and to format the post data that way as well. I researched headless CMS for ages, and even managed to get Decap CMS to work briefly. But one post nuked the entire site (I don&apos;t know how that happened), so I was almost ready to give up and go ahead with managed hosting from somewhere like &lt;a href=&quot;https://micro.one/about/pricing&quot;&gt;micro.one&lt;/a&gt;, &lt;a href=&quot;https://bearblog.dev/&quot;&gt;Bear blog&lt;/a&gt;, or &lt;a href=&quot;https://mataroa.blog/&quot;&gt;mataroa&lt;/a&gt;. Of course, these options don&apos;t have either the theme options or tag features that I needed, so I kept looking.&lt;/p&gt;
&lt;p&gt;After doing some more research, I eventually found &lt;a href=&quot;https://getpublii.com/&quot;&gt;Publii&lt;/a&gt;, a user friendly static site generator and website builder.&lt;/p&gt;
&lt;p&gt;Publii has an in-depth guide that I used: **&lt;a href=&quot;https://getpublii.com/docs/build-a-static-website-with-netlify.html&quot;&gt;How to build a static website with Netlify&lt;/a&gt;**Following this guide, I use Netlify for hosting, and then setup the credentials for my Netlify site. Once I finished copying my old light novel posts into the blog posts on Publii, I made a simple About and Blogroll/Friends page. Once I was done making changes to the pages and/or the posts, I then I hit the &quot;Sync Your Website&quot; button. Publii uploaded the entire site to Netlify. From then on, any new updates or changes can easily be made on the desktop application, and synced to the live website using the &quot;sync&quot; button. You can also setup the Netlify site to use your own domain or subdomain in the site settings.&lt;/p&gt;
&lt;p&gt;Writing posts or making new pages is really simple, and it even has pre-selected options. There is almost no coding involved if you just want to use what&apos;s available by default. I really like the fact that there&apos;s no barrier when it comes to writing blog posts, you can use an editor that works just like Word (WYSIWYG).&lt;/p&gt;
&lt;p&gt;Since Publii is an SSG, it doesn&apos;t have an in-built comments system. I really wanted some type of comments, and eventually decided to use this javascript code: &lt;a href=&quot;https://github.com/dpecos/mastodon-comments&quot;&gt;Mastodon-Comments&lt;/a&gt;. I used guides written by &lt;a href=&quot;https://bechster.dk/mastodon-kommentarer-i-publii/&quot;&gt;Bech&lt;/a&gt; and &lt;a href=&quot;https://enikofox.com/posts/fediverse-comments-with-publii/&quot;&gt;Enikofox&lt;/a&gt; in order to set it up. It&apos;s basically a javascript file that you upload to hosting, and then you enter some basic code into the header section of your website that references where it is. Then, for each post or page that you need comments for, you reference the mastodon post&apos;s server url, username, and post ID in the bottom of the post/page. This will then load any mastodon replies, and even display the number of likes.&lt;/p&gt;
&lt;p&gt;I setup a draft blog template with some of this html code pre-filled in. You also have to make sure that you put this code (mastodon-comments[*]) into the &lt;a href=&quot;https://sakurajima.moe/@navi/113987248239804566&quot;&gt;exceptions for the advanced editor settings&lt;/a&gt; in order to stop it from wiping that particular HTML code from your post.&lt;/p&gt;
&lt;p&gt;Since I use mastodon nowadays for my microblogging needs, this works just fine for me. And this feature will work with any federated app that uses or bridges with ActivityPub. That means replies from Bluesky, Pixelfed, etc, will also show up, as long as the main post is from mastodon.&lt;/p&gt;
&lt;p&gt;I&apos;m quite satisfied with how everything works now.&lt;/p&gt;
&lt;h2&gt;The Dreamwidth backup&lt;/h2&gt;
&lt;p&gt;Above works well for my light novel blog, but what about my current dreamwidth blog? I really like the nested tags for Dreamwidth, and some of my posts even use the comments feature to log mini reviews, like the &lt;a href=&quot;https://naivette.dreamwidth.org/11701.html&quot;&gt;Storygraph&lt;/a&gt; and &lt;a href=&quot;https://naivette.dreamwidth.org/13416.html&quot;&gt;HowLongToBeat&lt;/a&gt; posts.&lt;/p&gt;
&lt;p&gt;This would all be solved if I could just register my domain to this blog, but that&apos;s not a feature that Dreamwidth offers, even with the paid services.&lt;/p&gt;
&lt;p&gt;In the end, I found this free software: the &lt;a href=&quot;https://github.com/GBirkel/ljdump&quot;&gt;LJ/DW Dump utility&lt;/a&gt;. It allows you to dump all the posts and comments from a Dreamwidth or Livejournal blog, and formats them as static HTML pages. All I had to do was setup the &quot;ljdump.config&quot; file with my login settings.&lt;/p&gt;
&lt;p&gt;The output isn&apos;t as pretty or nice as Dreamwidth, but it does preserve the comments, which was important for me. I uploaded the entire backup to another Netlify site, which you can see here: &lt;strong&gt;https://dwlog.pomnavi.net&lt;/strong&gt; [^1]. I don&apos;t consider the DWlog backup to be a replacement for this blog, but I think someone who&apos;s more inclined with HTML could probably use the posts output from the dump on their own website. There are already some Neocities users &lt;a href=&quot;https://goblin-heart.net/sadgrl/learn/articles/blog-dreamwidth&quot;&gt;who use the Dreamwidth blog feed to display on their own website&lt;/a&gt;, and I think this is a better alternative. It maintains some of the tag functionality of the posts as well, so it&apos;s really cool.&lt;/p&gt;
&lt;p&gt;It also links to the original post, but the one downside of this software is that my masterlist posts would have to be manually updated since the original post obviously uses DW post links. For right now, I&apos;m not going to bother since it&apos;s just a backup of this blog.&lt;/p&gt;
&lt;p&gt;2025.02.25 Edit: &lt;a href=&quot;https://blog.pomnavi.net/posts/0001-astro-suffering/&quot;&gt;I am now using suffering with Astro&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[^1]: 2025.12.16 Edit: dwlog has been taken down, due to my &lt;a href=&quot;https://naivette.dreamwidth.org/29677.html&quot;&gt;dissatisfaction with dreamwidth&lt;/a&gt;, and the creation of my &lt;a href=&quot;https://medialog.pomnavi.net&quot;&gt;medialog&lt;/a&gt;&lt;/p&gt;
</content:encoded></item><item><title>KoboFileServer: Another Method of Wirelessly Transferring Epubs to Kobo</title><link>https://blog.pomnavi.net/posts/0000-kobofileserver/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0000-kobofileserver/</guid><description>What if there was a way to not only transfer epubs wirelessly, but convert them to kepub using the kobo itself?</description><pubDate>Sat, 19 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;The official way of wirelessly transferring epubs (other than buying them on the Kobo store) is through Google Drive or Dropbox. Certain higher-end Kobos (like my Kobo Libra Colour) have the option to login to either service, and create a special folder that syncs files to your Kobo. There is an unofficial &lt;a href=&quot;https://github.com/fsantini/KoboCloud&quot;&gt;KoboCloud&lt;/a&gt; mod that allows you to get the same function on devices that don&apos;t support the official Drive or Dropbox functionality. Some newer devices also have the Dropbox function &quot;turned off&quot;, so &lt;a href=&quot;https://www.reddit.com/r/kobo/comments/txhkfa/how_to_access_native_dropbox_integration_on_all/&quot;&gt;there are ways to turn it back on&lt;/a&gt;. The downside is that none of these methods convert epubs to kepub, and for the official Dropbox/Drive integration, there are bugs reported where the device randomly loses all the files in Google Drive or Dropbox.&lt;/p&gt;
&lt;p&gt;The easiest accepted method of wirelessly transferring epubs to Kobo is to use a website called &lt;a href=&quot;https://send.djazz.se/&quot;&gt;https://send.djazz.se/&lt;/a&gt; . All you have to do is open the website in the browser on your eReader, and on the device you&apos;re sending the file from. You can upload your epub, and then it converts the file for you and offers you a download on your Kobo or Kindle. This is by far the most user friendly method.&lt;/p&gt;
&lt;p&gt;The problem with Send Djazz is it&apos;s run by a single individual, on a personal home server. Most people either don&apos;t have the technical skills, or don&apos;t want to go through the hassle of hosting their own private version of the &lt;a href=&quot;https://github.com/daniel-j/send2ereader&quot;&gt;Send2Ereader&lt;/a&gt; software that Send Djazz is hosting. So when they have to shut down their server for weather, power, or internet disruptions, the website is taken offline. You simply have to wait until they bring the website back up online.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What if there was a way to not only transfer epubs wirelessly, but convert them to kepub using the kobo itself?&lt;/strong&gt; While searching for a solution, I found this mod, the &lt;a href=&quot;https://github.com/tylpk1216/kobofileserver&quot;&gt;KoboFileServer&lt;/a&gt;. You can enable this mod, and use your device browser to upload an epub. The device will then convert it to kepub, and save it!&lt;/p&gt;
&lt;p&gt;It&apos;s not perfect, since you still need to be connected to AN internet connection, but the nice thing about it is that it isn&apos;t reliant on some 3rd party service. You can turn it off and on as necessary. Once I got it working, it worked flawlessly every single time.&lt;/p&gt;
&lt;p&gt;If you&apos;d like to try installing this mod, here are the steps I took to get it working on my Kobo Libra Colour:&lt;/p&gt;
&lt;p&gt;Step 1: Install &lt;a href=&quot;https://pgaskin.net/NickelMenu/&quot;&gt;Nickelmenu&lt;/a&gt; on your Kobo.&lt;/p&gt;
&lt;p&gt;You can follow the instructions on the linked website, but I&apos;ve also copied them below.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Connect your Kobo eReader to your computer over USB. It will show up similar to a USB drive.&lt;/li&gt;
&lt;li&gt;Download &lt;strong&gt;&lt;a href=&quot;https://github.com/pgaskin/NickelMenu/releases&quot;&gt;KoboRoot.tgz&lt;/a&gt;&lt;/strong&gt; (&lt;a href=&quot;https://github.com/pgaskin/NickelMenu/releases&quot;&gt;release notes&lt;/a&gt;) onto your computer, and then transfer into &lt;strong&gt;KOBOeReader/.kobo&lt;/strong&gt; on your Kobo device. You may need to show hidden files to see the folder.&lt;/li&gt;
&lt;li&gt;Safely eject your eReader and wait for it to reboot. It will install NickelMenu as an update. DO NOT REBOOT DURING THIS PROCESS.&lt;/li&gt;
&lt;li&gt;Ensure there is a new menu item in the top-left main menu entitled &lt;strong&gt;NickelMenu&lt;/strong&gt; (it will appear in the bottom-right on firmware 4.23.15505+).&lt;/li&gt;
&lt;li&gt;Connect you Kobo eReader to your computer again and create a new file (of any type) named &quot;config&quot; (no extension) under &lt;strong&gt;KOBOeReader/.adds/nm/&lt;/strong&gt;, and ~follow the instructions in~ &lt;a href=&quot;https://github.com/pgaskin/NickelMenu/blob/v0.5.4/res/doc&quot;&gt;~KOBOeReader/.adds/nm/doc~&lt;/a&gt; ~to configure NickelMenu.~&lt;/li&gt;
&lt;li&gt;We will cover the config in a different section, but NickelMenu makes it possible to add all kinds of cool customizations to your Kobo. Other than NickelSeries it&apos;s my favorite mod.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 2: Install &lt;a href=&quot;https://github.com/NiLuJe/FBInk&quot;&gt;FBInk&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the FBink install file from &lt;a href=&quot;https://files.catbox.moe/lmexam.tgz&quot;&gt;here&lt;/a&gt;. This file was modified (by me!) to work with Kobos up to the current gen, which includes Kobo Libra Colour. Rename the file to &quot;KoboRoot.tgz&quot;.&lt;/li&gt;
&lt;li&gt;Similar to Nickel Menu, transfer the KoboRoot.tgz file from this download to the &lt;strong&gt;KOBOeReader/.kobo&lt;/strong&gt; folder, and then eject. The ereader will install this as an update.&lt;/li&gt;
&lt;li&gt;You won&apos;t see any changes, but your FBink install is done!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 3: Install &lt;a href=&quot;https://github.com/tylpk1216/kobofileserver&quot;&gt;KoboFileServer&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
Ironically the easiest part of this whole process.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Download the latest release of KoboFileServer from &lt;a href=&quot;https://github.com/tylpk1216/kobofileserver/releases&quot;&gt;here&lt;/a&gt;. You should download the one titled &quot;Release_v0.7.0.zip&quot; or whatever is newer.&lt;/li&gt;
&lt;li&gt;Unzip the file.&lt;/li&gt;
&lt;li&gt;Put the KoboFileServer folder in &lt;strong&gt;KOBOeReader&lt;/strong&gt;/&lt;strong&gt;.adds&lt;/strong&gt; folder of device.&lt;/li&gt;
&lt;li&gt;Create a new &quot;kobofileserver&quot; folder under the root of the device (under &lt;strong&gt;KOBOeReader&lt;/strong&gt; not in any subfolders).&lt;/li&gt;
&lt;li&gt;Modify NickelMenu config file (see next section).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Step 4: Configure Nickelmenu&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You need to copy and paste the following command text into the &quot;config&quot; file you created earlier, located under &lt;strong&gt;KOBOeReader/.adds/nm/config&lt;/strong&gt;. Afterwards, you can save, and eject your ereader.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;menu_item :main    :Force Wi-Fi On (toggle)  :nickel_setting     :toggle:force_wifi
menu_item :main    :IP Address               :cmd_output         :500:/sbin/ifconfig | /usr/bin/awk &apos;/inet addr/{print substr($2,6)}&apos;
menu_item :main    :Import Books             :nickel_misc        :rescan_books_full
menu_item :main    :KoboFileServer (toggle)  :cmd_output         :500:quiet  :/usr/bin/pkill -f &quot;^/mnt/onboard/.adds/KoboFileServer/kobofileserver&quot;
  chain_success:skip:3
  chain_failure                              :cmd_spawn          :/mnt/onboard/.adds/KoboFileServer/kobofileserver
  chain_failure                              :dbg_toast          :Error starting KoboFileServer
  chain_always:skip:-1
  chain_success                              :dbg_toast          :Stopped KoboFileServer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Step 5: How to use KoboFileServer&lt;br /&gt;
Copying and pasting the commands above will show the follow commands in NickelMenu&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Force Wifi On (Toggle)&lt;/li&gt;
&lt;li&gt;IP Address&lt;/li&gt;
&lt;li&gt;Import Books&lt;/li&gt;
&lt;li&gt;KoboFileServer (Toggle)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here are the steps to activate and use KoboFileSever&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In NickelMenu, press &quot;Force Wifi On (Toggle)&quot;. This will force your wifi to stay on.&lt;/li&gt;
&lt;li&gt;Press &quot;KoboFileServer (Toggle)&quot;. This will display a QR code on the screen.&lt;/li&gt;
&lt;li&gt;Use your phone to scan the QR code, it will bring you to an IP address in the browser.&lt;/li&gt;
&lt;li&gt;Upload your epub file.&lt;/li&gt;
&lt;li&gt;Turn off KoboFileServer and the Force Wifi toggles.&lt;/li&gt;
&lt;li&gt;Press &quot;Import Books&quot;.&lt;/li&gt;
&lt;li&gt;Your Kobo will scan for new books on the device. It will import the book you just uploaded.&lt;/li&gt;
&lt;li&gt;Success! Your book will show up on your kobo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Questions:&lt;/p&gt;
&lt;p&gt;What if there&apos;s no QRcode displayed?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;This means that the FBink install doesn&apos;t contain the code needed for your specific device. There&apos;s a way to update it (which I&apos;ll detail below). You don&apos;t absolutely need the QR code. You can simply display the IP address necessary through the IP Address command in Nickelmenu, and type that into your device.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How to update FBInk?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a github account and login.&lt;/li&gt;
&lt;li&gt;Go to &lt;a href=&quot;http://Phttps://github.com/NiLuJe/FBInk/actions/workflows/build.yaml&quot;&gt;https://github.com/NiLuJe/FBInk/actions/workflows/build.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Select the latest build.&lt;/li&gt;
&lt;li&gt;Download the FBink file attached to the latest build under Artifacts (at the bottom).&lt;/li&gt;
&lt;li&gt;Keep unzipping the FBink.zip file until there aren&apos;t any zipped folders anymore (you need 7zip to unzip all the different types).&lt;/li&gt;
&lt;li&gt;Copy the FBink file.&lt;/li&gt;
&lt;li&gt;Download the latest FBink release from here: &lt;a href=&quot;https://github.com/NiLuJe/FBInk/releases&quot;&gt;https://github.com/NiLuJe/FBInk/releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Keep unzipping the .tar.xz file until it&apos;s just a folder that says &quot;KoboRoot&quot;&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;KoboRoot\usr\bin&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Replace the old FBink file with the new FBink file you downloaded.&lt;/li&gt;
&lt;li&gt;Zip everything back up from the \usr folder, first in the .tar format, then in the gzip format. This should lead to a file that says KoboRoot.tar.gz.&lt;/li&gt;
&lt;li&gt;Rename &quot;KoboRoot.tar.gz&quot; to &quot;KoboRoot.tgz&quot;.&lt;/li&gt;
&lt;li&gt;Install onto your Kobo under &lt;strong&gt;KOBOeReader/.kobo&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;This should lead to FBink working, and a QR code displaying on your screen.&lt;/li&gt;
&lt;/ol&gt;
</content:encoded></item><item><title>Setting up Emulators and Non-Linux Steam games on the Steam Deck</title><link>https://blog.pomnavi.net/posts/0000-setting-up-emulators/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0000-setting-up-emulators/</guid><description>A backdated guide I previously wrote about setting up my steam deck.</description><pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;2025-12-17: This post is backdated! Information may not be relevant anymore.&lt;/p&gt;
&lt;p&gt;I just wanted to do a write up of my setup on my steam deck, since I had to look up sources in various places, but not one place documented the problems I ran into lol.&lt;/p&gt;
&lt;p&gt;I used these two guides:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://retrogamecorps.com/2022/10/16/steam-deck-emulation-starter-guide/&quot;&gt;https://retrogamecorps.com/2022/10/16/steam-deck-emulation-starter-guide/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/suchmememanyskill/steam-deck-addons/tree/main/Launcher-multiplatform-game-launcher#install-steam-deck&quot;&gt;https://github.com/suchmememanyskill/steam-deck-addons/tree/main/Launcher-multiplatform-game-launcher#install-steam-deck&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Emulation: Retrodeck&lt;/h2&gt;
&lt;p&gt;So for retro emulation, I used Retrodeck (since I didn’t want all the emulated games showing up among the main steam games, and it kept things simple).&lt;/p&gt;
&lt;p&gt;I went into Desktop mode and then opened the “Discovery” app which is an appstore (or flatpack?) for the Linux OS, and looked up Retrodeck under “Emulators” or “Emulation”. I mainly wanted to run PS1 games.&lt;/p&gt;
&lt;p&gt;I then used &lt;a href=&quot;https://github.com/linuxmint/warpinator&quot;&gt;Warpinator&lt;/a&gt; (on the deck) and &lt;a href=&quot;https://winpinator.swisz.cz/&quot;&gt;Winpinator&lt;/a&gt; (on my PC) to transfer the roms and bios files needed from my computer to the Steam Deck. &lt;strong&gt;For the BIOS folder, it’s important to put the bios files under the main folder rather than separating the files in sub-folder (i.e. PS1 bios, etc.).&lt;/strong&gt; Unless there’s already a sub-folder that was created for it, like the Switch emulator.&lt;/p&gt;
&lt;p&gt;After I made sure the bios files and roms were in the correct folders, just booting up Retrodeck from the Steam Library will load into the frontend, where you can access all your retro games.&lt;/p&gt;
&lt;h2&gt;Non-Linux/Steam Games&lt;/h2&gt;
&lt;p&gt;I have a ton of itch.io games from one of their charity bundles, and although you can download the official itch.io app, it only lets you download Linux games.&lt;/p&gt;
&lt;p&gt;Since the Steam Deck runs all windows games through a Proton translation layer, Windows OS games should work as long as they’re launched through steam.&lt;/p&gt;
&lt;p&gt;One method is to manually download itch.io games from the browser, and then manually add them to steam (like on PC).&lt;/p&gt;
&lt;p&gt;Another way is to use the &lt;a href=&quot;https://github.com/suchmememanyskill/Alfae&quot;&gt;Alfae&lt;/a&gt; launcher for Linux. Once you download and install Alfae, you can log into itch (and other stores like Epic or GOG), and then use Alfae to download the games and push them to steam using the SteamExporter function of the launcher. It also has the nice function of using your SteamGridDB account to add artwork (albeit cropped) to steam. You can then go from “Desktop Mode” to “Gaming Mode” and the games should show up under non-steam games in your library.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;One issue I ran into while using this program is that sometimes it doesn’t unzip the game files it downloads, so while it looks like the game should work, Alfae isn’t mapped to the right .exe game file since the whole folder is still zipped.&lt;/strong&gt; When this happens, I usually go back into desktop mode, unzip the files, find the game.exe file, and then add that to the Steam library manually. It’s a pain in the ass, but you can then use &lt;a href=&quot;https://www.steamgriddb.com/boop&quot;&gt;SteamGridDB’s Boop&lt;/a&gt; function to add any art for the games that’s missing. This won’t mess with any of the previously added games.&lt;/p&gt;
&lt;p&gt;I’m totally new to linux stuff, but this setup wasn’t too hard! Hopefully this write-up is helpful to someone else too.&lt;/p&gt;
</content:encoded></item><item><title>Guide to Turning your Writing into a Book with Print-on-Demand</title><link>https://blog.pomnavi.net/posts/0000-print-on-demand/</link><guid isPermaLink="true">https://blog.pomnavi.net/posts/0000-print-on-demand/</guid><description>Backdated guide on how to turn stuff into a print book.</description><pubDate>Mon, 04 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a repost of a &lt;a href=&quot;https://docs.google.com/document/d/e/2PACX-1vSJGcVM0URiy-BQW1gvLF8s5Ft5RCDyyjRExBVGTyXmuivoMikpHSoy8Yu_AC6F8VkAhrOaADCZxzAe/pub&quot;&gt;guide&lt;/a&gt; I created for tumblr about formatting fan novels for on-demand printers. It&apos;s partially outdated due to the closure of Lulu Xpress, but the information is still good&lt;/p&gt;
&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;This guide is written with the intention of helping people set up their *original written works* 😉 into book formatting for print-on-demand! It won’t get into all the finer details, but it will contain enough for people to get started. This guide will be geared toward those who want to use &lt;a href=&quot;https://www.google.com/url?q=https://factory.pixiv.net/books&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075343779&amp;amp;usg=AOvVaw12hAHU6TjbGh47q7RpTQDT&quot;&gt;Pixiv Factory&lt;/a&gt;, or &lt;a href=&quot;https://www.google.com/url?q=https://xpress.lulu.com/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075343971&amp;amp;usg=AOvVaw1EX4h833JcDXMyUbwHOHxv&quot;&gt;Lulu Xpress&lt;/a&gt;, though some of the details should be universally applicable.&lt;/p&gt;
&lt;p&gt;There is also another excellent guide by the bookbinding community &lt;a href=&quot;https://www.google.com/url?q=https://docs.google.com/document/d/1XEENtdBb1juOyII42fy-2Q6cGH77hecdz_9zarpR0Ww/edit?usp%3Dsharing&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075344274&amp;amp;usg=AOvVaw1L3xjnQnV2GiRK66gNuVgl&quot;&gt;here&lt;/a&gt; for formatting and binding your own book by hand! It’s an excellent reference.&lt;/p&gt;
&lt;h1&gt;&lt;/h1&gt;
&lt;p&gt;Formatting Inner Material&lt;/p&gt;
&lt;p&gt;In Book-making terms, inner material is basically all the pages that go on the inside of the book. You don’t need any fancy tools to format your writing, regular microsoft word or libreoffice writer will do.&lt;/p&gt;
&lt;h2&gt;Page Size&lt;/h2&gt;
&lt;p&gt;The first step in creating the inner material document is to pick the size of the book.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pixiv Factory Sizes&lt;/td&gt;
&lt;td&gt;Lulu Xpress Sizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A4&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;8.27 x 11.69in&lt;/td&gt;
&lt;td&gt;A4&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;8.27 x 11.69in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A5&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;5.83 x 8.27in&lt;/td&gt;
&lt;td&gt;A5&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;5.83 x 8.27in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A6&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;4.13 x 5.83in&lt;/td&gt;
&lt;td&gt;Digest&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;5.5 x 8.5in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B5 (these aren’t exact)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;6.9 × 9.8in&lt;/td&gt;
&lt;td&gt;US Trade&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;6 x 9in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B6 (these aren’t exact)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;4.9 × 6.9 in&lt;/td&gt;
&lt;td&gt;Pocket Book&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;4.25 x 6.875in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Comic Book&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;6.63 x 10.25in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Novella&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;5 x 8 in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Etc. &lt;a href=&quot;https://www.google.com/url?q=https://xpress.lulu.com/our-products&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075348046&amp;amp;usg=AOvVaw0XLWDHtaAdmjr9Zl6pnb0D&quot;&gt;(lulu has a lot more sizes, see here)&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;This is really simple, just make sure to change the page size BEFORE you start pasting in text and manipulating it.&lt;/p&gt;
&lt;p&gt;In Libre Office, &lt;a href=&quot;https://www.google.com/url?q=https://www.libreofficehelp.com/how-to-change-page-setup-landscape-portrait-libreoffice-writer/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075348496&amp;amp;usg=AOvVaw39JA9CEEuqZ-nvrJ9eOFRX&quot;&gt;this is how you change the page size&lt;/a&gt;. Note that there’s an option under size that you can select A and B sizes, as well as common U.S. paper sizes as well.&lt;/p&gt;
&lt;p&gt;In Word, &lt;a href=&quot;https://www.google.com/url?q=https://www.customguide.com/word/how-to-change-page-size-in-word&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075348762&amp;amp;usg=AOvVaw0DY6GGa6rscMafVc0XjWFY&quot;&gt;this is how you change the page size&lt;/a&gt;. You can select common page sizes here as well.&lt;/p&gt;
&lt;h2&gt;Paste in the Content&lt;/h2&gt;
&lt;p&gt;The next steps are to copy content from wherever it’s posted, into the document. If you’re writing in a google doc, then you can use AO3 to remove the the extra spaces really easily&lt;/p&gt;
&lt;p&gt;How to remove extra spaces:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Copy google doc text&lt;/li&gt;
&lt;li&gt;Paste in AO3’s rich text editor&lt;/li&gt;
&lt;li&gt;Switch AO3 editor to HTML&lt;/li&gt;
&lt;li&gt;Copy all the html stuff INTO wordpad&lt;/li&gt;
&lt;li&gt;Highlight &amp;lt;p&amp;gt; &amp;lt;/p&amp;gt;&lt;/li&gt;
&lt;li&gt;Click the “replace” option&lt;/li&gt;
&lt;li&gt;Don’t enter anything into the “with” field&lt;/li&gt;
&lt;li&gt;Hit okay&lt;/li&gt;
&lt;li&gt;Copy the html back into AO3’s html editor&lt;/li&gt;
&lt;li&gt;Switch back to Rich Text&lt;/li&gt;
&lt;li&gt;Copy the final text wherever you need it.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Margins&lt;/h2&gt;
&lt;p&gt;Margins will depend on the font size and page size. In general, you want the inside margins of the book pages to be wider than the outside of the page, since the spine’s binding will obscure some of the page.&lt;/p&gt;
&lt;p&gt;I normally set the top, bottom, and outside margins to be .50, and the inside margin between .50 to .80 depending on what I need. Depending on the size of the book, bigger margins may be necessary, but this can be checked during the proofing process.&lt;/p&gt;
&lt;h2&gt;Spacing&lt;/h2&gt;
&lt;p&gt;Make sure the line spacing is set to SINGLE. If the lines still look far apart (damn you google docs), check the paragraph and spacing options to make sure that the “Above Paragraph Spacing” and “Below Paragraph Spacing” numbers are set to 0.00.&lt;/p&gt;
&lt;h2&gt;First Line Indents&lt;/h2&gt;
&lt;p&gt;The easiest way to get a nice first line indent is to go into the paragraph formatting options, and look for the Indents and Spacing options, and then look for “First Line Indents”. Pick any number that looks pleasing on the page. If the indent is too big, decrease the number.&lt;/p&gt;
&lt;h2&gt;Headers/Footers/Page Numbers&lt;/h2&gt;
&lt;p&gt;Make sure to add these in too! Page numbers are incredibly important since the printer won’t know what order the pages are supposed to go in if you don’t. Most printers refuse to print things if you don’t have page numbers.&lt;/p&gt;
&lt;h2&gt;End Material for Pixiv Factory&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.google.com/url?q=https://factory-books.pixiv.help/hc/ja/articles/115002129973-%25E5%25A5%25A5%25E4%25BB%2598%25E3%2581%25AB%25E8%25A8%2598%25E8%25BC%2589%25E3%2581%2599%25E3%2582%258B%25E3%2581%2593%25E3%2581%25A8%25E3%2582%2592%25E6%2595%2599%25E3%2581%2588%25E3%2581%25A6%25E3%2581%258F%25E3%2581%25A0%25E3%2581%2595%25E3%2581%2584-&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075350267&amp;amp;usg=AOvVaw3tJB70t3Mujk8ZqoOIcwgD&quot;&gt;Pixiv Factory also requires that you include certain information in a colophon&lt;/a&gt;, such as:&lt;/p&gt;
&lt;p&gt;Date of issue&lt;/p&gt;
&lt;p&gt;Author&lt;/p&gt;
&lt;p&gt;Printing company name (pixivFACTORY)&lt;/p&gt;
&lt;p&gt;Publication date: The date when the book was completed and handed over to the public.&lt;/p&gt;
&lt;p&gt;Printing company name: Please write &quot;pixivFACTORY&quot;.&lt;/p&gt;
&lt;p&gt;Contact information: Enter your e-mail address or website address.&lt;/p&gt;
&lt;p&gt;The field names need to be in Japanese (see link above) but the actual text (your name and details) can be in english.&lt;/p&gt;
&lt;h2&gt;&lt;/h2&gt;
&lt;p&gt;Export to PDF&lt;/p&gt;
&lt;p&gt;Once everything is formatted all nicely, the last step is to export to PDF. Both LibreOffice and Word have a method of doing this directly.&lt;/p&gt;
&lt;h1&gt;Upload to Printer&lt;/h1&gt;
&lt;p&gt;Now that the inner material is all formatted, the next step is to upload to the website! The process is a little different for each one.&lt;/p&gt;
&lt;h2&gt;Pixiv Factory&lt;/h2&gt;
&lt;p&gt;I used chrome to auto translate all the text in this section.&lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Go to &lt;a href=&quot;https://www.google.com/url?q=https://factory.pixiv.net/books&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075351273&amp;amp;usg=AOvVaw1CpOm-rmQE-rheLkGOeKaA&quot;&gt;https://factory.pixiv.net/books&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you don’t have a pixiv account, make one (english one works fine), and then use that to register for pixiv factory.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click on “Upload Manuscript” or go to &lt;a href=&quot;https://www.google.com/url?q=https://factory.pixiv.net/books/books/new?single_lot%3D1&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075351561&amp;amp;usg=AOvVaw0qwKgTa6_Y9rwHizX-VdHu&quot;&gt;https://factory.pixiv.net/books/books/new?single_lot=1&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/01.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Select your book specifications (size, number of pages, monochrome or color, and binding direction (left will be like western books, right for japanese books)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/02.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Next, you can drag and drop or upload your manuscript/inner material.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The page count needs to EVEN, and also add 4 to your actual number.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Example: If your book is 23 pages long, go back into the document and add an extra page to make it 24 pages even.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;THEN select 28 pages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The reason for this is that Pixiv Factory is counting the cover as 2, and 2 extra for padding the cover.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;At this point, you can download the cover template, make a cover, and upload it on this same screen. (see &lt;a&gt;Cover Design Section&lt;/a&gt; below)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter in your book title, check each box, and then hit preview.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After the preview finishes loading (it takes a long while), you can view your proof&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Check to make sure everything looks okay, then you can hit “submit manuscript”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You’re done uploading to the printer!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You should arrive at a page that kind of looks like this (more on this later)&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/03.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h2&gt;Lulu Xpress&lt;/h2&gt;
&lt;p&gt;Uploading is a lot simpler on Lulu Xpress since everything is in english. Just upload your file, and it should automatically detect what size your book is, and how many pages it has. You can then make your specifications as to what you want the book to be.&lt;/p&gt;
&lt;h1&gt;Cover Design&lt;/h1&gt;
&lt;p&gt;This section depends on which printer you’re going with.&lt;/p&gt;
&lt;h2&gt;Pixiv Factory&lt;/h2&gt;
&lt;p&gt;For Pixiv Factory, you need to make sure things are sized correctly. The easiest way is to download their PSD templates from &lt;a href=&quot;https://www.google.com/url?q=https://factory.pixiv.net/books/design_templates/doujinshi&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075352895&amp;amp;usg=AOvVaw3y-K-VxzbVFkQWE4PNEUGA&quot;&gt;HERE&lt;/a&gt; and then overlay your images on top in your art program of choice, like Photoshop, Krita, or Clip Studio Paint.&lt;/p&gt;
&lt;p&gt;The nice thing about this template is that the inner lines tell you how big the spine is going to be, depending on the amount of pages. This means that if you want to add a title to the spine, following these guidelines will easily get your title centered properly, even with a thin book.&lt;/p&gt;
&lt;h2&gt;Lulu Xpress&lt;/h2&gt;
&lt;p&gt;Lulu has the option to either upload an image and just type in the information you need, or download a template that is automatically sized to your book, and then add your own art and text.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/04.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/05.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;Buying your Book&lt;/h1&gt;
&lt;h2&gt;Pixiv Factory&lt;/h2&gt;
&lt;p&gt;This is where things can get complicated. Pixiv Factory doesn’t allow international shipping, but Pixiv Booth does! Otherwise, If you have a Tenso/proxy forwarding service account, you can order your own copy from this screen:&lt;/p&gt;
&lt;h3&gt;Tenso/Forwarding Service Path&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click the “Go to Order” button&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/07.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click “order a print”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/08.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Select your paper types in the dropdown, then click checkout&lt;/p&gt;
&lt;p&gt;Enter your Tenso/forwarding service address and credit card details, and finish paying!&lt;/p&gt;
&lt;p&gt;If you don’t have a Tenso address, or other forwarding/proxy service:&lt;/p&gt;
&lt;h3&gt;Buyee/Booth.pm route&lt;/h3&gt;
&lt;p&gt;You need to set up a &lt;a href=&quot;https://www.google.com/url?q=https://booth.pm/en&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075354426&amp;amp;usg=AOvVaw1ypHa2ruhbyW4RdsarIYZD&quot;&gt;booth.pm&lt;/a&gt; shop. You should already have a pixiv account, so just set up a booth shop using the same login. Make sure to setup payout settings to your own paypal account.&lt;/p&gt;
&lt;p&gt;Then, starting from this page (or go to &lt;a href=&quot;https://www.google.com/url?q=https://factory.pixiv.net/books/books&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1701754075354679&amp;amp;usg=AOvVaw1fgvAE-SBxeWFViQtkRMca&quot;&gt;https://factory.pixiv.net/books/books&lt;/a&gt; if you clicked off by accident):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click “Selling at the Online Shop”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And you’ll arrive at this page. Click “Sold at Booth”, and you’ll arrive at this popup:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/11.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Chose your paper types and cover gloss option, then click “proceed to product registration”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Click “To information edit screen”&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/13.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You’ll be taken to the booth.pm item screen for your store. Enter in some metadata (title, description, etc.). Make sure to select “Accepted” for “Sell out of Japan” to enable Buyee ordering. You can set your margin to whatever you want, but since you’re ordering it yourself, just set it to zero for now.&lt;/p&gt;
&lt;p&gt;Publish the item for sale! Then go to your own booth store page, go to your item, click “Add to cart”. On the cart page, there will be an option to “checkout via buyee”.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://assets.pomnavi.net/Blog/0000-print-on-demand/14.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Fill out your payment details with buyee, and you’re done! Buyee will order your book, and then charge you another fee to ship it to you after they receive it, like any other proxy/forwarding service.&lt;/p&gt;
&lt;h2&gt;Lulu Xpress&lt;/h2&gt;
&lt;p&gt;After you’ve finished uploading and checking the proof of the cover and inner material, you can directly click “Add to Cart”, and purchase your book. Congratulations!!&lt;/p&gt;
</content:encoded></item></channel></rss>