I’ve thought about this question a few times but haven’t found a good solution yet. The problem needs more attention.

AI and computer recognition of images is getting better. I’ll go ahead and say that the probability of reaching the level where computers are as good at humans at any of kind of CAPTCHA/verify-I’m-not-a-bot-test within the next 20 years is very, very high. CAPTCHAs and other newer anti-bot measures cannot continue to work.

We don’t want our comment sections, discussion forums and social media full of spamming bots, so how do we keep them from doing so? I have three proposal types for the online world.

Make sending cost

Generally speaking, spam does not work well. The click-rate is very, very low but it pays because sending mass amounts of it is very cheap. In the analog world, we also see spam in our mail boxes (curiously, this is allowed but online spam is not!), but not quite as much as online. The cost of sending spam in the analog world keeps the amount down (printing and postage).

Participation in the online world is generally free after one has paid one’s internet bill. Generally, stuff that isn’t free on the internet is not used much. Free is the new normal. Free also means the barrier for participation is very low which is good for poor people.

The idea is that we add a cost to writing comments, but keep it very low. Since spam only works when sending large amounts (e.g. 10,000,000 emails per year), and normal human usage does not require sending comparably large amounts (<1,000 emails in most cases), we could add a cost to this which is prohibitively large for bots, but (almost) negligible for humans. E.g. .01 USD per email sent. Thus, human usage would cost <10 USD per year, but botting would cost 100,000 USD.

Who gets the money? One could make it decentralized, so that the blog/newspaper/media owner gets the money. In that way, discussing on a service also supports them, altho very little.

This could maybe work for email spam, but for highly read comment sections (e.g. on major newspapers or official forums for large computer games), the rather small price to pay for writing 1000 (or even 10) posts would not be a deterrent. Hence the pay-for-use proposal fails to deal with some situations.

Making the microtransactions work should not be a problem with cryptocurrencies which can also send anonymously.

Verified users by initial cost

Another idea based on payment is that one can set up a service where users can pay a small fee (e.g. 10 USD) to be registered. The account from this service can then be used to log into the comment section (forum etc.) of other sites and comment for free. The payment can be with cryptocurrency as before so anonymity can be preserved. It is also possible to create multiple outward profiles from one registered account so that a user cannot be tracked from site to site.

If an account has been found to send spam, it can then be disabled and the payment has been wasted. The payment will not have to be large, but it needs to be sufficient to run the service. Perhaps one can outsource the spammer-or-not decision-making to a subset of users who wish to work for free (many services rely upon a subset of users to provide their time, e.g. OKCupid).

The proposal has the same problem as the one above in that it requires payment to participate.

Verified users without payment

A third proposal is to set up a service where one can make a profile for free, but that requires one to somehow prove that one is a real person. This could be done with confidential information about a person e.g. passport + access to a database of this. This would probably require cooperation with officials in each country. Probably they will keep the information about who is who if they can, so it is difficult to see how privacy could be preserved with proposals of this type.

As before, accounts will still need to be deactivated if they are found to be spamming. If the government is involved, they will surely push for other grounds for deactivation: intellectual monopoly infringement, sex work related stuff, foul language, national security matters and so on. This makes it the least preferred solution type to me.

Other solutions?

Generally, the goal is to preserve privacy, no cost of participation and being spam-free. How can it be done? Is online discussion doomed to be overspammed?

So this should be fairly easy according to various guides, but it is not.

The goal is to create a test installation of WordPress on the server, so we can play around with it before moving any changes to the live server.

First step, backup everything!

It is very easy to fuck something up, so you always want to backup stuff. Just in case. To do this, open the FTP and copy all the files. Make sure it was done correctly. One idea is to do it twice and examine the folders. They should be identical (assuming no activity on the site in the meanwhile).

Next you go to the myphpadmin login site. I am using Unoeuro (great host, recommended), so mine is e.g. here: mysql29.unoeuro.com

Go to the database (you can only have one on Unoeuro, it is named after the domain). Then click export, and quick settings.


Copying and fixing the database

WordPress runs of the mySQL database, and two WP installations need their own. To do this, go to the main overview of tables (structure-tab). Then mark the tables WP uses.


Then scroll to the bottom and choose “copy with prefix” in the drop-down menu. Then add the prefix of the tables and the desired prefix of the copies.


You now have a duplicate table set. But wait! In my case, the tables are not copied correctly. The encoding “collation” and type for some reason change to some other stuff. You need to change  them back. To do this, go into each table and choose Opernations-tab. Then change the values so they match the tables from the original WP installation. In my case, to utf8_general_ci and MyISAM.


Do this for each table (there were 11 for me).

Now, we are done? Nope! Next you need to edit the table to tell WP on which domain it is located (for use in relative links presumably). These settings are under wp_options. For some reason there are two identical ones “siteurl” and “home”. These both need to be change to the new URL. In my case openpsych.net/test/OBG from openpsych.net/OBG.

No edit rights?

However, it wasn’t possible for me to edit them. The error was that no column was set as the uniquely identifying one. To resolve this, go to the SQL-tab and type:


ALTER TABLE `test_journal_OBG_wp_options` ADD UNIQUE (`option_id`)

This sets column “option_id” as the unique column in table “test_journal_OBG_wp_options”. Switch these values with yours. You need to do this for the unique column in every table you want to edit. WP did not make it simple because the unique ID column does not have the same name for each table either, but they are easy to identity.

And then you need to edit the two lines in wp_options.

You do not have sufficient permissions to access this page

Aaaand then, you are not done. When I tried to login, I got an error “You do not have sufficient permissions to access this page.”. Some googling around (1, 2) did not solve the problem for me, but it did suggest the solution to me. The trouble is that within the tables, WP cross-refers to other tables. But these cross-references have not had the prefix added! So you need to find all of them and add it. You need to do that under wp_usermeta and wp_options. I did not find an automatic search and replace, but there are only a few places it needs to be done. Unless you have a lot of users, since you need to do it a few times for every user. Hope you find the research&replace command!

Uploading the copied WordPress

Next step is making a copy of the WordPress folder you want to copy. Then you go to the wp-config.php file and find the line “$table_prefix  = ‘test_journal_OBG_wp_';”. Change this line to the prefix you have chosen and save.

Then upload the WP folder into the correct subfolder on the FTP server and login.

I did not do things in the order above, but it seems the most effective. I may have also forgotten some things I tried. This is just to serve as a reference for those who have similar problems.

Link to article.

Ever been annoyed by the overly long links one gets when one tries to copy a link from Google? Here is an example:


These are very annoying and their function is just to allow Google to track and see which link you actually clicked. Fortunately, there is a way to get rid of them (at least if one is using Firefox which is my favorite browser).

So, after installing GreaseMoney and a suitable script (I tried one first that didn’t work), here is what happens when I copypasta the link again:


Automatic addition of trackers

With the probable closure of The Pirate Bay (TPB) in the near future the torrent scene will be more decentralized. Especially if the TPB tracker goes down. Luckily there are new upcoming trackers to take its place. The problem is that they are not in many of the torrent files. Besides adding the trackers manually there are some ways to fix it. One way is to re-upload all torrents with more trackers. That doesn’t seem like a plausible method. Another way is the have an indexer site (like TPB, Mininova or BTjunkie) update all the torrents with more trackers. This doesn’t seem like a bad idea.

Another idea, and this is my idea for the client, is to have an option in the client to automatically add more trackers to all torrents loaded. That would be very useful for torrents that do not include any new public tracker such as Openbittorrent (OBT)1 or Publicbittorrent (PBT)2. There could be an editable list of trackers to be automatically added, or there could be function that shares all public trackers for all torrents though I’m unsure of what the consequences will be of that. Even more, one could have peers share public trackers. In that way any new public tracker would quickly spread. There is reason to be cautious, however, a third party, say RIAA, may set up such a public tracker just to sniff IPs.

Automatic force-seeding of torrents with no seeds

The goal is to keep rarer torrents alive easier. Currently I have to manually look through my torrent client for torrents that currently have no seeds and then force seed them so that the peers can finish their download.3 It should probably force seed for a set time. If it forced-seeded only until there were at least two seeds, then complications arise. Imagine that there are two people who are the only seeds and both their torrent clients have this feature. Both their clients would then force seed the torrent until they spot another seed, but then they can see each other and so they will keep bouncing on and off force seeding while the peers would not get much data. A mix of these two ideas may be a good idea.


3We’re presuming here for simplicity that if there is no seed, then there is not a complete file in the swarm. This is false in some cases.