Another Random Mid-year Website Update and A Decade on the Internet

2026-04-09
#web

Almost exactly a decade ago, the domain you’re currently visiting was registered … Feeling excited, I posted this on the Chinese social media I was using at the time:

破费了53.14大洋搞到了个域名(服务器还是我的笔记本!。。)。。。于是qq空间即将关闭。。这次真的要迁移到这里以及twitter上了。。。

Translation: Grabbed a domain name after parting ways with 53.14 CNY[1] (the website is still served from my laptop!) … I’m ditching this platform[2] … I’m finally migrating to my own website and twitter for realz this time …

#QQ空间动态 (QZone Status) 2016-01-03T20:22:00+08:00

Yes! This website has been on the Internet for more than a decade!

What’s new?

Gallery browsing

You have already seen it above. But now the blog presents galleries in a completely different way. To better demonstrate what this does, here are some random flowers of this Spring (and a deer for some reason):

The experience is based on the design popularized by the Lightbox JS library. This is however, my own implementation from scratch, so it probably has some jank in there. But this is in fact a somewhat frequently requested feature (for a low-traffic personal website), and you all can have it now. One problem with the current implementation is that it’s currently somewhat non-obvious that besides clicking on the image to zoom, you can also do so using your mouse wheel.

If you have JavaScript disabled for this website, or using a browser that doesn’t support it at all, worry not because care was taken to make it have as little impact on users who have JavaScript disabled. Photo galleries are still sent to your browser in their old form (as tables), and then converted into the new gallery form with a client-side script.

This also means if you prefer the old style for whatever reason, the new gallery can be disabled trivially by using a link at the bottom of the page, which sets a flag in your browser’s local storage. It is not saved as a cookie and never reported back to the server. If you do have JavaScript on in your browser though, this new gallery feature will be enabled by default, because I do believe this offers a superior experience than looking at photos in tables.

Notekins received the same feature.

New about page

The about page was completely redone. Gone was the bullet list. It was replaced by a page featuring somewhat satirical uses of “Userboxes” found on Wikipedia.

I’m actually slightly sad to see the old about page go. Apparently it has inspired at least a few other people’s about pages, which I’m not necessarily proud of: after all it is a pretty terrible way to present an about page on a personal website (in my opinion).

Fun fact: when that about page was being set up, I was making it with the expectation that it’s just going to be a placeholder and anticipating that it would be replaced soon after. This “soon” lasted a whopping 8 years almost. Whoopsies.

My Wikipedia user page itself (which I will not link here) is also plastered with userboxes, some of which are even recreated on my about page here. However, that was in fact not the direct inspiration of the new about page. The inspiration actually came from someone else’s personal website, which featured a late-90s / early-00s design with a collection of badges (or “88x31s” ). I thought to myself: “Huh, I kinda like that. But I’m absolutely hopeless when it comes to making that kind of artwork. So instead of spamming badges on my website, how about spamming userboxes? I LOVE userboxes!” And that was how eventually the current version of my about page came into being.

The project listing was redesigned too, now simply using the <details> element instead of the JavaScript solution I had initially.

I found myself using flex box way too much on my website lately. Probably doesn’t bode well for browsers from the 2000s … But hey it’s still somewhat readable in Lynx!

I’m making a version of the about page that explains why each entry is in there. This is, however, subject to my usual procrastination.

Primary font changed

The primary font used on this website has been switched to Computer Modern Unicode Typewriter Text Variable Width, a proportional font, from Computer Modern Unicode Typewriter Text, a monospace font.

It’s probably one of the bigger changes happened to this website that will be instantly visible to all visitors. Even though it’s just the proportional version of the same font, it gives the website a completely different look and feel.

This change is made because I suddenly realized how weird large paragraphs of texts look in monospace fonts (which is why no sane website is doing it unless it’s going after a very specific kind of aesthetics), and to prevent a self-own in my new post.

AI Apocalypse

This is what AI has done to us … or me in this case.

2025-10-23T03:47:12Z§

Starting from the final months of 2025, I noticed that the VPS hosting this website will simply go completely unresponsive randomly. The serial console would show a bunch of OOM log messages, but the cause remained unknown to me until I captured the screenshot above. A few hosts on AWS’s network were caught red-handed initiating thousands of requests every minute to my cgit code browser, and the syntax highlighting plugin caused a full performance breakdown.

As a result, all crawlers have been banned from cgit.chrisoft.org. This includes all search engine crawlers and crawlers used by “AI” companies. Go Away was deployed on that subdomain to further prevent scraping (without using its PoW payloads).

Pages on that subdomain are mostly useless as search results and I don’t think those AI companies need to train their models on my stupid code anyway.

Maybe it’s my bad to enable the syntax highlighting plugin in cgit. But is it really that bad that I want to see my code highlighted in the code browser?

Anyway, it seems the AI apocalypse might very well be already upon us, at least for the webmasters. What have we actually gained from all this?

Some fun statistics from the access logs: in the past month, self-indicated bots initiated 14.4% of all requests to the main site (chrisoft.org). Data served to them constitutes ~28% of total outgoing data. The Internet is truly dead.

The Stupid Online Player

The music library received a major update of its own. You may have seen the green D.S. symbol beside some of the tracks. These tracks have predefined loop points and can be seamlessly looped in the online player, just like how music tracks loops in Touhou games. The new seamless loop mode can be activated by clicking through the repeat mode button.

This feature was implemented using the AudioWorklet API and thus requires a reasonably new browser (i.e. from the past 5 years) to work. A nice bonus of this addition is the support for “multi-mixes” (“Spirit World”-like mixes for th07 remix tracks) are no longer limited to chromium-based browsers with experimental features enabled. Now you can switch between the mixes for these tracks seamlessly as long as seamless loop mode is enabled.

Tracks are no longer offered in the ogg vorbis format. It was replaced by a high bit rate ogg opus format.

Visualizations also received some tweaks. You can watch the visualization in fullscreen without distractions from other UI elements by simply pressing F11. The ink fountain visualization has also been updated and now looks more dynamic.

Navis

This is not something most readers will care about, as this is strictly a private service. But now I host an instance of Navis, my personal bookmark storage solution.

This is to remove Google Chrome cloud sync from the list of cloud services that I rely upon. I have since removed the Google Cloud API key from all my chromium builds and configurations. It’s another step towards the faraway goal of digital sovereignty.

A more reasonable person probably would deploy one of the many mature solutions that already exist. But me being the person I am, I just couldn’t resist the urge to roll my own.

Online Presence

Self-hosted e-mail

Speaking of digital sovereignty, this is probably a much bigger step. This has been on my mind since 2020. About a year ago, I finally took action and set up my own self-hosted e-mail service. Shortly after, it was promoted to become my primary personal email address. My GMail address has officially become a sink for 2FA code spam and other types of less important messages.

The process of setting up a self-hosted e-mail service these days is pretty painful. There are pretty good guides to follow online, but it’s extremely easy to run into outdated information that would just straight up not work on modern setups. For these reasons I’ve put off this task for years (and I just don’t want to settle with an auto-forwarder solution). There’s all this DKIM, DMARC and SPF stuff, but ultimately I was able to get it all working.

Some people claim it’s simply not possible or feasible to have self-hosted e-mail in this day and age, claiming that your messages will simply be rejected by popular e-mail services. This is simply not true, at least to my experience. Messages from my server can be received by GMail, Outlook (and enterprise hosted Microslop Exchange services), and even Proton Mail just fine. It only becomes a problem when the recipient server has a dubious DNS (mostly caused by a State-controlled network infrastructure), which is a compromise I’m willing to make. I’ll not link any guides here, I just want to confirm that no, self-hosted e-mail is not dead.

My understanding is that setting up self-hosted e-mail is a high-effort, high reward kind of deal. It does require quite a lot of fiddling to get working, but once it’s done, it only requires minimal maintenance to keep it healthy.[3] And, to put it bluntly, having an “@pineapple.cat” email address and seeing messages actually coming from a host managed by me is cool as hell!

Right now the service is hosted on a VPS, which purists will claim is not “true self-hosted”, and I fully concur – I’m just not in a position to run a physical host that is up 24/7 right now. I might transition to a locally hosted, but reverse proxied solution later, but that’s not something that I feel like doing right now.

Check my about page for my current e-mail address.

Ditching Discord

Another long overdue item in my to-do list. Who could have foreseen that my final straw is in fact Palantir and its surveillance dystopia.

I took Discord off my preferred method of contact in 2024, actually before the last mid-year website update was posted. But that never resulted in any further action.

This is not the first time I’m fleeing from an instant messaging platform. In fact this isn’t even the second or the third time. Over the years, I’ve left the following platforms:

There is some kind of good old irony here: all but two of these platforms were meant to replace Tencent QQ for me (at least for the most part). They came and went, but QQ just stuck there like a stubborn spot of stain (except for a very short period of time in between).

The biggest pain of switching to a different IM platform is that one has to convince all their friends they want to maintain contact with to either migrate too, or revert to a less synchronous method of messaging. I imagine there are probably few people out there who are willing to monitor 7 different IM platforms simultaneously, so it’s very much understandable that such effort may frequently amount to nothing. And I certainly appreciate the people who got on to matrix just to keep in touch with me a lot.

When we (my friends trying to find an alternative to QQ and I) found Discord, I thought we were set for life. You could tell this by the fact I have the early supporter badge there: I subscribed to Discord Nitro a year after I got on the platform, and did not unsubscribe until recently. I honestly don’t have a clue how I came to that conclusion knowing that this is a proprietary, centralized platform.

Right now, Matrix is my main IM solution, using an account on the matrix.org home server registered in 2019 for the purpose of testing out the platform. I imagine I’d eventually move to a self-hosted home server as well, but as of today that probably won’t be done any time soon.

I’m aware of the potential issues with Matrix[10]. To some people out there these issues are not just “potential” but deal-breakers instead. But this is currently the solution that supports all my use cases and requires the least amount of messing around. And at least it’s not centralized. So I’ll stick with it for now.

I’m still considering XMPP as a platform that I can use along side Matrix.[11]

I do not plan to delete my Discord account, at least for now. I’m just going to stop monitoring it, starting in May. If you need me to check out a message on Discord, shoot me an e-mail. I do not make any guarantee that I’ll never delete the account though, especially if the situation worsens somehow.

Decentralized Networking

Projects like DN42 and Yggdrasil network sparked my interest when I was researching e-mail self-hosting.

I considered joining one of these decentralized networks. But ultimately I decided against doing it: while I can appreciate why people want to build these networks, I simply don’t have the skills required for this kind of things: I routinely mess up the configuration of my OpenWRT routers, and my WireGuard VLAN is barely holding itself together. I probably should avoid involving myself in such public projects before I got over my skill issues, although I don’t have any practical use of the skills I might gain from joining one either.

So no, I’m probably not joining any decentralized networks any time soon (especially with my current schedule), but I’ll keep an eye on it.

Ten years! Now what?

Yes the website you’re reading right now has occupied this domain for a little over 10 years now. Probably not a huge deal in the grand scheme of things. But consider how many websites come into existence each year just to vanish forever in the next, I couldn’t help but wonder: has my website exceeded the average lifespan of websites on the Internet?[12]

This is not going to turn into a piece on the history of the website. There will be a post dedicated to that purpose, and I’m definitely NOT writing it now.

And now what? I guess let’s see if I can keep this website online for another decade then …



[1]: ~8.16 USD at the time
[2]: QZone, a facebook knockoff by Tencent
[3]: It’s not zero, because I have to keep an eye on potential abuse and intrusion (despite the low probability).
[4]: I only truly left the platform for a year or so before I realized I had to maintain some minimal presence there to stay in touch with a small group of friends.
[5]: Left before Microslop killed it
[6]: Left before Microslop bought and killed it
[7]: A less well-known platform built on a p2p protocol. Left due to lack of offline messaging support.
[8]: phew
[9]: We are here.
[10]: The protocol, major implementations, as well as the main driving force behind it.
[11]: Currently I’m leaning towards adopting a permanent presence on that platform too, but it must be on a self-hosted server. So that’s going to put things off significantly.
[12]: It probably has, but so what?