dev: discourse findings/suggestions

The thing is I don’t really care about having the BLF Discourse FAQs page on the 3 or 4 buttons after /about. Very few users would ever find it or think to look for it there unless I added it to the Community menu (and not hidden under More…). But I guess that setting faq url to /t/new-blf-forum-engine-faqs/217457 kind of works because that way /rules still points to the BLF Rules, which is important for me to maintain because that’s what has the most historical links to it. I’ve had more than enough experience with regexp to know that I really really don’t want to deal with replacing strings across millions of posts. A heads-up for you about that:

  • I heavily tested the rake posts:remap text replacement functionality, and I found it to be totally random about replacing a fixed number of strings followed by a small seemingly random number of strings, and it never replaced all of them.
  • I also extensively tried using the Postgres console directly with the regexp_replace function, but it was also terribly unpredictable because Postgres doesn’t support the most common Perl-Compatible Regular Expressions (PCRE) flavor that I tested my regexp with.
  • Also editing the raw post content would require rebaking all the posts, which would mean I would have to take the forum offline for a few minutes to rescale the VM to have much more RAM and CPU cores, and then let the rake posts:rebake process crunch away on millions of posts for about 48 hours. [2023-02-14] Apologies for the downtime was the result of trying to rebake all the posts with the current VM while online. After that I performed many troubleshooting attempts with a snapshot of the system in another VM, and I even tested different flavours of Linux with all sorts of combinations of swap files and/or zram, but it could not complete the rebake due to memory problems and bizarre CPU hang issues, producing fatal errors ranging all the way from Ruby errors to kernel panics. And that was without any live traffic.

So I can live with this I think: