Refusing to Give Up - Here I Go... Again

I can't help it. The state of social media, its centralisation, its blatant disregard for all but the thinnest veneer of "privacy", the manipulation of the proletariat. I simply can't give up on creating some form of timeline-based microblog that is peer-to-peer, has persistant data for as long as the user keeps it live, serverless, securely encrypted and addressbook based. My programming skills need to level up a long way from where I'm at, though.

Enter Go, Google's language, but open, standardised, apparently low-level capable and as cross-platform as C, yet simpler than C or Javascript. Early playing around with it has been very interesting, it doesn't break my brain, like JS, it seems to, by way of its module achitecture ("libraries"), less arcane and less aimed at professionals than C and seems to have broad support, but I still have a long way to go, and to that end, FreeCodeCamp just dropped a beginners Go course in in my inbox. Fingers crossed this isn't another dead end.

I bang on about the need to decentralise in a way that doesn't require users to sell computer processor cycles in order to buy processor cycles (cryptocurrency overspimplified, but the escence of my biggest problem with current decentralisation) because that model inherently favours people who own the biggest, fastest hardware and gives them population metrics, if not your personal data. True decentralisation needs no more infrastructure per person than the person's own device and its network connection.

A decentralisation that requires a pointless swap of processor cycles, as a value exchange between users, is the kind of waste of energy that AI generates - people asking AI a question that they could answer for themselves with a few minutes on a wikipedia article. Processor cycles as value exchange is as inflationary and inequitable as the Gold Standard that very few currencies (if any) use anymore. True decentralisation is the ability to connect directly to a friend, business colleague or teacher without a third party server inbetween. True decentralisation works like an encrypted channel walky-talky pair rather than a phonecall, connected by a telephone exchange.

Obviously, there is still infrastructure involved, there is still a network required, but that network should be a VPN between me and who I am talking to. A VPN established with minimal switching or patching. There should be nothing more than a protocol that handshakes between us and securely shares our chat, our documents or our timelines.

A decentralised, distributed network doesn't require users to keep their devices to handle everybody else's traffic when the individual is offline. It can still be done by purchasing an internet connection from a provider. I'm not opposed to commerce. The user is should not be admin of anything of anything other than their own information. I don't want my phone or laptop running flat out 24/7 handling everybody else's traffic as my "payment" for having access to my friends.

On the other hand, if this traffic were simply just friends of friends data being occassionaly routed through our devices, looking for the quickest handshake path, before making a person to person connection, that's more like how conversations happen at parties.

"Is Steve here yet?" Jeff asks Linda.

"He's in the studio," Linda replies so Jeff walks out to the studio, shakes my hand and says, "Hi," then we converse.

That's how the internet should work at its most basic, infrastructure level.

As Mark Nadal, the inventor of Gun.js, a secure, distributed database library for Javascript, calls it, "offline first." The idea that your data is only available when you say it is. It's only online when you are. It's only available to who you allow. Gun.js isn't an app, it's a code infrastructure to create decentralised apps, but it's a principle that is the model for the best possible future of social networking.

As I've whinged about before, javascript breaks my brain, secure graph databases are computer science-grade architectures and beyond this bear of little brain to create, but there are simpler ways to emulate offline-first models, such as copying cryptograp[hocally locked documents - the local first part is edit capability. So, I'm not giving up because javascript is hard, I'm learning Go.

Also meanwhile, Mark Nadal is considering a port of Gun.js to Rust C/C++, or some other more low-level, systems focused language. If one of those happen, it's a fair bet to imagine a Go version won't be far behind. A systems level language is the best place for an infrastructure technology because it allows that technology's commands to potentially be the protocol, not just a tool. The very infrastructure of graph data decentralisation and a fundamental part of the internet.

So, how do I see a true, safe social network. A truly decentralised social network is a handshaking protocol. I share my public key with you, say via email or SMS, you enter that into your app, the app shows you a preview of the 10 most recent public posts from my feed and you decide if you want to follow me. If you answer yes, your app sends me your public key and I vet your feed. If you don't follow me within a reasonable time, say a week, your invite to me expires and my invite to you expires. If one of us follows the other, but the other doesn't reciprocate, the connections expire. If we each follow the other, we see each others' feeds, I can filter your tags so that what interests me floats highest, as can you to my feed.

In such an app, I can limit your posts to certain custom timelines, or allow them on all. If you're family I regularly hang out with in other social groups, your posts will show in my timeline, say, our cycling club and workplace if those are where we know each other. Each user has complete control over these filters, so a Christian aunt doesn't have to be offended by my interaction with atheist or kink community friends. A "petrol-head" I work with will never know I'm a cyclist. The user has complete control over which datagraphs they show and each user has complete control over which individuals can see them and in which contexts. These relationships are complex, so commonality is controlled by your own levels of general public visibility, plus how you limit them to your connections' sorting groups, as well as your own.

The system would be setup such that a connection cannot share you to one of their groups without your express viewing and approval to be shared there. A user can limit their visibility to connections only or connections an only approved communities. If a family member you need to stay in touch with has a nazi friend, you can make it impossible for that nazi friend-of-family to ever see you.

So, of I go, to learn Go. If this shows promise, I'll write more about my progress. If I don't, well, we've been here before. I'll keep on doing my MIDI clock, robo drums and the new, fretless bass project. Meanwhile, here's the tutorial, maybe you want to learn Go, too. Enjoy!


Popular posts from this blog

Meanwhile, Developing a MIDI, Tap-Tempo, Master-Clock Pedal...

Windows Is Ubiquitous, But That Doesn't Make It a "Standard."

ALWAYS read the PDS