explicitClick to confirm you are 18+

Our Approach to Censorship is Wrong

RhetHypoNov 14, 2021, 12:20:22 AM

In a livestream I doubt that I could ever track down again, Nick Rekieta was asked some question about alternative media sites. To paraphrase, and assuming I recall this accurately, he said that while he does support alternative media, it is difficult to manage if you spread yourself thin across so many platforms. Each new account means one more thing to keep track of, and if you are producing any sort of content, the costs of time spent just posting the same thing on each platform can add up fast.

This is a thought that has bothered me for awhile, because I do think it is nigh inevitable that the current hegemony be replaced with something new, eventually. The problem is not only that each of these smaller start ups don’t really offer much return on investment in the meantime, but also that there is no guarantee that they will even survive to be that new hegemony. Platforms can rise and fall unexpectedly, and it is easy to get burned out when you invest a time into a new platform just for it to evaporate into the ether.

Which more or less encapsulates why censorship is so damaging, but I digress.

How can we solve this, though? Well, my thought was we look for ways of resolving this inherent bottleneck. Specifically, we want to make new social media sites as painless to use as possible, and streamline incorporating them into both ends of the digital content pipeline; production and consumption. We need to work smarter, not harder.

We need automation.

Part 1: I Really Don’t Want to Make Anything

While coding is a passion of mine, I’m actually not terribly interested in building something if there is something out there that already fulfills my purpose. My initial thought was If This Then That, or IFTTT, an automation service that allows you to create recipes for repetitive tasks. For example, make a post on one site, then there will automatically be a post made on another site. I was hoping I could make some recipes, use them to link Minds and other social media, distribute details for use by everyone, and move on with my life.

But things just can’t be that simple.

The problem is this does work… but lacks integration for less established social media sites. Now, it may be possible to set up a way to integrate with each new social media network, but at that point we are now creating a single point of failure for our automation. This would be less of a problem if the cost of getting each site setup was low, but I’m unsure if a third party can even do it. The forms for creating a service suggests to me that you integrate sites you own or are officially affiliated with… which makes sense.

Which is inconvenient if we want to be proactive. Getting people who are managing a new social media site to take on another responsibility is not a great strategy, in my mind. I want this to be enable the users, not further centralize things.

HOWEVER, as an aside, I want to emphasize that I shifted gears after mild frustration and aversion to trusting some third party with what could be an anti censorship strategy. If someone does have a way to integrate lesser known social media sites into an existing automation framework without a lot of effort, ifttt or otherwise, PLEASE let me know.

Part 2: Welp, I Guess I’m Doing This, But At Least It’s Been Done Before

It took me longer than it should have to realize that the idea of automatically interfacing with sites that don’t otherwise have any sort of API is not new. There is something called Selenium, no not the chemical element, that is used in test automation. Now, I’m less interested in running tests, and more interested in automatically navigating web pages. Selenium allows me to do this.

It didn’t take long to get something setup that allows me to start a browser and navigate to a site. I then started messing around with interfacing with the html, but I kept getting weird results that didn’t match what I was expecting. Eventually, I realized the problem, which turns out to be the first major hurdle in terms of automation.

Part 3: I Hate Javascript

A large number of modern sites use something known as Javascript. This allows content to load asynchronously after the page’s initial load, which is done for a variety of reasons. The problem is that the basic http request I make to the page will not return most of the content we are actually interested in, because the Javascript is still running to get it.

Luckily, since I’m working with an automation framework that is aware of the existence of Javascript, a solution already exists called Explicit Wait. I can mark a certain page element I’m expecting to appear as a condition for continuing with execution, which means I not only wait long enough to get data I need or use fields only when they exist, I don’t spend any more time waiting than I have to. 

So, I did a bit of trial and error, some things worked, other things didn’t, and…

Part 4: It works* (results may vary)

I have… something. I call it BridgIt.

The code pulls from two config files, one I named recipes, the other credentials. Borrowing from ifttt’s terminology, recipes allow me to define steps to accomplish some larger task. For example, login navigates to a page, enters the username and password, and then submits. The username and password are pulled from the credentials file, which exists separately from both the code and recipes file for security and usability reasons.

The idea is that recipes could be extended by people with some minor training and a basic understanding of html. Once a recipe is properly defined, the code can use it to execute the described task. And even better, these recipes are divided by platform. Currently, once an action is selected from my bare bones ui, it is run for all defined platforms. There is a lot more work that needs to be done on this before it sees primetime, but the minimal proof of concept is officially complete.

While there is some implicit reading of the web page, I actually didn’t end up designing any methods to pull data from websites… yet. The main hurdle is figuring out how to structure it in a useful way. My initial thought was to aggregate feeds with a minimalist approach, something like the username, first hundred characters, and a link to the specific post, all ordered by date for all specified platforms. And I still might do this, though a perfect world would have something that can connect a user between platforms and consolidate duplicate posts, while also indicating they are duplicates… yeah, now I remember why I didn’t do that yet. That’s a big feature to implement, and not necessary quite yet.

The end goal, though, is a way to quickly and easily track stuff across platforms. This application does not seek to be a one stop shop for all your social media, but something that allows you to better navigate social media. If you get censored, you can still post to your ten other platforms with the same amount of effort, and if your favorite creator gets censored, you can still find where they are. All my ideas for features revolve around this intent; Become Uncensorable. Screw trying to pick a new platform, just get setup on all of them and become too agile to get set back by one of them going down.

Phase 5: The Path Forward

Perhaps I’m getting a bit ahead of myself. Here is what BridgIt currently looks like:

Not terribly impressive. It can login to multiple sites, and post to multiple sites, though the only ones I’ve setup and tested are Minds and Twitter. And I still have an entire list of stuff I may add at some point, including but not limited to:

  • Resilience/error handling
  • Design a (proper) UI
  • Subscribe Bridge(text that can be interpreted by the application to associate a set of accounts together and subscribe with current profile, maybe add integration with aggregated feed)
  • More actions, especially authenticated gets:
  • Check subscribers
  • Get current newsfeed(aggregate posts)
  • Get account status(is banned, new notifications)
  • Followed accounts ban check for each platform
  • POTENTIALLY use available APIs in extensions

Even if I never really push this as some sort of product, I do plan on using it for myself. Getting accounts setup on a bunch of different platforms and then cross posting to all of them with a way of also tracking responses is a game changing productivity tool for me. I am considering varying levels of distribution, whether that’s putting a download link for an eventual executable or even releasing the source code on GitHub.

And I’m also interested in what other features people would add. I may even approach larger creators specifically once I have something more fleshed out, to see if they would want to use it, or would use it if some specific features were added. Getting some investors and additional talent involved, both in marketing and development, would massively increase the potential for this tool.

For now, I just wanted to share what I’m working on. I’m still looking for a way to generate income in less traditional methods that would let me escape the 9-to-5 grind, and this is just one of many ideas I’m toying with. As always, constructive criticism welcome.