@eniko It's hard for folks to escape an abusive cult when their community lives in it. I wonder if there's useful cult de-programming techniques that could help here.
statism
@sofia I feel like it even transcends the stat and is more like "Those who have or wish to have power over others" and in some ways the large centralized power itself wanting to stay in control of not just the people below but the people wielding it as well.
Power and cruelty are like a demon feeding on humanity's soul.
@Miaourt Yeah! Straight up I would love to do lil things to improve my community every mow and then if it wasn't forced upon me / I didn't also have to do a bunch of other struggle just to pay rent
Fucked up how capitalism incetivises governments to avoid giving people free food/shelter/medicine just so they can keep getting forced to destroy their bodies for jobs nobody would do otherwise.
One of the most successful aspects of it tbh! That's what people must mean when they say "It's the best system we have".
@macdonst I got inspired by looking at how some native UI frameworks do it. E.g. on iOS it seems that "veiws" are a lot more lightweight and you offload more of your data to a database. Similar with some desktop UI frameworks?
I think Electron was made to be that way to an extent with the node.js thread, but people are too used to shoving everything under the sun into the UI in JS land.
My brain is kinda exhausted from first wrestling with Linux and Ansible automation, and then wrestling with JavaScript type hell in trying to get some p2p libraries to work.
Gonna decompress before bed by live-coding a lil #p2p #gemini #microblog in #agregore with some basic #JavaScript and #HTML
So if you haven't yet, try installing the latest pre-release of Agregore and follow along.
https://github.com/AgregoreWeb/agregore-browser/releases/tag/v2.0.0-12
@am@decept.org BTW this inspired me to make a lil step by step guide on how to use the devtools in Agregore to publish a p2p gemini site. :P https://mastodon.mauve.moe/@mauve/110099166164967631
Alright! Now that v2.0.0 of Agregore is out, the rendering should be fixed up and it can auto-resolve `index.gmi` under hyper://gem.mauve.moe/ when you visit. You can render the raw directory listing by adding `?noResolve` to the end of the URL such as hyper://gem.mauve.moe/?noResolve
Hey folks! The 2.0.0 release of #Agregore has been tagged and compiled! This features fixes for #MacOS, an upgraded #Hypercore-Protocol, and better support for #Gemini when loading it from #p2p protocols. This also involves an upgrade of Electron to 23 and an overhaul to using ESM for the #JavaScript back ends.
Download it and check it out for yourself!
https://github.com/AgregoreWeb/agregore-browser/releases/tag/v2.0.0
@jonny Oh! Yeah. There's a bunch of stuff. The main thing is that the connections are a lot more reliable since the DHT and wire protocol got overhauled with new "hole punching" capabilities. The way `Hyperdrive` works changed again so any data needs to be migrated again with new keys.
I'm gonna go fix this mime type issue and add the ability to resolve `index.gmi` and make sure the mime types for `.gemini` and `.gmi` work correctly accross protocols.
But hopefully this has shown folks that it's pretty easy to to get something p2p out there.
Now that I have some basics in there, lemme add a DNS address: hyper://gem.mauve.moe/index.gmi
I use namecheap for DNS but you should be able to use whatever you want as long as it supports DNS TXT records.
```
TXT _dnslink.gem dnslink=/hyper/sqtc3rcay8hcg3y8ehcrc66zpiceufstcwupukrggf5eukwp7xdo
```
And bam! I now have a nice looking URL for my blog and it just took a few commands in my devtools and a single DNS record. No servers required!
K, lets delete the old file and make a new one:
```
await fetch('README.gemini', {method: 'delete'})
await fetch('/index.gmi', {
method: 'PUT',
body: `
# Mauve's Gemblog!
Wow this sure is something.
Way more advanced than my HTML based blog!
=> https://blog.mauve.moe
`
})
```
hyper://sqtc3rcay8hcg3y8ehcrc66zpiceufstcwupukrggf5eukwp7xdo/index.gmi
@jonny This is in the 2.0.0 prerelease of Agregore? That has the new breaking changes from Hyper. :P
Honestly, this is all you need to get a basic blog up and running. From here you an change the URL in the `fetch()` API call to whatever page you want and add the gemtext into the `body`. Each time you'll be overwriting what was there before.
Whoops! I got the file extension wrong. Seems it's just loading it as Markdown. :P Most of the formatting works anyway. Hopefully folks looking at this in the future will see the fixed version. Also I think I got the file extension wrong?
@jonny Yeah, along with a total overhaul of the protocol again. :P
Navigating to the URL will give me an empty index. So first thing I'll do is add my "homepage" under `/README.gemini`. Sadly I don't have a thing to resolve `index.gemini` yet, but I wanna add that next time I get a chance. Gonna read these docs to brush up on my gemtext: gemini://gemini.circumlunar.space/docs/gemtext.gmi
```
res = await fetch('/README.gemini', {
method: 'PUT',
body: `# Mauve's Gemblog!`
})
await res.text()
```
Now I can reload and click to open the page
Next I'm going to use the `fetch()` API to create a new `hyper://` website based on a "pet name" for the key. Every time I use this human readable name it will resolve to the same human-unreadable public key URL.
I got back hyper://sqtc3rcay8hcg3y8ehcrc66zpiceufstcwupukrggf5eukwp7xdo/ which is the public URL for my new site (currently empty)
```
res = await fetch('hyper://localhost/?key=gemblog', {method: 'POST'})
await res.text()
```
Occult Enby that's making local-first software with peer to peer protocols, mesh networks, and the web.
Exploring what a local-first cyberspace might look like in my spare time.