You are reading content from Scuttlebutt
@dangerousbeans

Secret Islands

Using D3 to visualize ssb activity across a procedurally generated hexmap of islands, using vue-ssb
You can 'hear' 3 tiles away from where you are.

Idea is to experiment with allowing different area topics/groups to form

Screen Shot 2019-04-21 at 11.40.19 pm.png

https://github.com/dangerousbeans/secret-islands

@Powersource
Voted this
User has chosen not to be hosted publicly
@stevie
Voted this
@bobhaugen

@dangerousbeans βœ¨π’‘π’“π’†π’Žπ’Šπ’–π’Žβœ¨ is this about geographic separation of topics and groups? Vaguely like chat circles? Or not so much?

@myf
Voted this
@myf

im getting Invalid hex string on index.js line 799, because strLen is an odd number (65) not even. nothing is showing hmm

@cblgh
Voted this
@elavoie
Voted this
@Giarc
Voted this
User has chosen not to be hosted publicly
@dangerousbeans

@myf I missed some setup stuff last night, this is still super janky also:

you need to add your ssb keys to localStorage under 'keys' or it will generate new ones, also in main.js:

Vue.use(ssbclient, { keys: localStorage.keys, remote: "ws://localhost:9000~shs:TXKFQehlyoSn8UJAIVP/k2BjFINC591MlBC2e2d24mA=" })

is specific to my local sbot. This address needs to be swapped for your ssb-server ws.getAddress

@dangerousbeans

I was trying to work out how to make ssb-server chill out with its security for websocket connections but it starts erroring if you set it to noauth.

What might be good is having a web based client which just runs straight away with a shared server, then encourages people to launch a local sbot for offline mode

@hoodownr
Voted this
@Daan
Voted this
@myf

hmmm i did a few things:

  • localStorage.setItem('keys', JSON.stringify(actual_keys))
  • replaced Vue.use line with my own

i am still stuck on the hex issue from this line

```var strLen = string.length

if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')```

@Jemma
Voted this
@dangerousbeans

@myf ah, yeah I remember I hit this

it's fixed here: https://github.com/dominictarr/sodium-browserify-tweetnacl/pull/2

but I guess I forgot to upgrade after @dominic merged and published

@Moff Mobile
Voted this
@dangerousbeans

how do I upgrade it to 0.2.6?

I don't directly need that package it's referenced by something inside ssb:

secret-islands master $ npm ls sodium-browserify-tweetnacl
secret-islands@0.1.0 /development/secret-islands
β”œβ”€β”¬ ssb-backlinks@0.7.3
β”‚ └─┬ ssb-keys@7.1.5
β”‚   └─┬ chloride@2.2.14
β”‚     β”œβ”€β”¬ sodium-browserify@1.2.7
β”‚     β”‚ └── sodium-browserify-tweetnacl@0.2.5  deduped
β”‚     └── sodium-browserify-tweetnacl@0.2.5
└─┬ ssb-server@14.1.12
  └─┬ ssb-keys@7.1.5
    └─┬ chloride@2.2.14
      β”œβ”€β”¬ sodium-browserify@1.2.7
      β”‚ └── sodium-browserify-tweetnacl@0.2.5  deduped
      └── sodium-browserify-tweetnacl@0.2.5
@dangerousbeans

@myf okay I pushed an update - try dees

@dangerousbeans

@myf also there's now a github pages static build running live here:

https://dangerousbeans.github.io/secret-islands/#/

@dangerousbeans

@bobhaugen yeah that's the idea

next thing I'm building is hovering tag clouds of what has been tagged in each area (over some kind of lower limit)

So if enough people gather at the lake to talk about vegan cooking then that becomes the place to do that

User has chosen not to be hosted publicly
@Connor
Voted this
@Richard Fortune
Voted this
@Linas
Voted this
@xj9
Voted this
@miles

This looks like its gonna be fun @dangerousbeans
!

By way of feedback I got it running OK. Still not sure what it is though. I had dreams of clicking on things and seeing all the people in some of super magic graph thing but I guess that's yet to come? As of right now it isn't really supposed to do much of anything yeah still just a proof of concept yeah?

But its a fun idea.

FWIW If we can get some sort of density function going it might be fun to try and draw the map dynamically? There is this hill shading code that could just maybe be potentially be used to draw nice graphs. That said its super duper old and probably would need me to try and figure it out. Sorry don't have any pre-rendered examples easily to hand but it looked pretty sweet back in the day in terms of land and islands and sea and everything to have hill shading combined with a height function.


FWIW to get it going I first thought I had to mess with ssb-server. js

// fixed this...
var keys = ssbKeys.loadOrCreateSync("/Users/joran/.ssb/secret")

but then realised I probably should just leave all that nonsense alone and rely on ssb-server instance inside of patchbay

Following the instructions in readme.md to change main.js to put my localhost ws shs thing there was easy enough then I could npm run serve without problems.

@myf

the hex error is gone! i still have this empty page though. can you describe how you load your keys in localStorage? I might not have gotten the right one.

@Emmi
Voted this
@Emmi

this is really cool

User has chosen not to be hosted publicly
User has chosen not to be hosted publicly
@bencevans_mobile
Voted this
@The Writer of Posts
Voted this
@John
Voted this
@piet
Voted this
@dangerousbeans

@myf I do

cat ~/.ssb/secret

then copy paste the object into chrome dev tools under Application > Local Storage > blah blah localhost > keys

What would be sweet is a working setup of ssb-server where it just allows connections from any websocket, but I cannot figure this out ping @dominic @mix etc

@dangerousbeans

@utunga3 ❀ yeah I just put this together out of old ideas over 4 days, because I finally got a build pipeline working

I was thinking a heatmap of activity and maybe settlements, like:
Screen Shot 2019-04-23 at 9.43.21 am.png

@mix

I'm not familiar with websockets stuff... I'd read ssb-ws as a starting point @dangerousbeans. Putting your secrets in localStorage seems dangerous to me !

@w
Voted this
@Connor

@Robert.Best/d πŸ–₯️ @Robert.Best πŸ’» check this out :)

@Luandro
Voted this
@miles

@dangerousbeans totally understand. This would be so cool though huh.

Have you put any thought into
(a) how to build the clusters ? UMAP is the new hotness, replacing t-sne is my rough understanding
(b) where to get the data to put into the clusters ? maybe some work has been done on that already?

@miles
Voted this
@miles

btw i once worked on something a bit like this way back in 2013 .. we used t-sne for the dimension reduction at the last stage, back then.

@razum2um
Voted this
@PinkMoff
Voted this
@seanb
Voted this
@wraidd
Voted this
@dangerousbeans

@utunga3 those illustrations are beautiful

I like your approach of creating geography from the clustering

I was thinking with Secret Islands it would be more like there is empty geography already generated onto which to roam and cluster if you want to cluster, like finding empty islands and setting up civilization

@dangerousbeans

@regular hey I came across your pull request about getting ssb-client to handle noauth websockets. @dominic days it's dangerous - I'd like to understand the danger a bit more

Like you'd be able to see the private messages to that pub? Cuz I don't mind that.
Or is it something worse?

@Dominic

@dangerousbeans the danger is that if you expose a localhost ws or http host, basically any malicious website you have happen open in a browser tab can communicate with it, either via cors or dns rebinding. If you expose authenticated apis then they can do anything. Most developers don't know about this. I've reported this issue on maybe 50% of the security audits I do.

So it only matters if you are also running a browser on the same machine.

Simplest right-now solution: use noauth unix-sockets instead of ws.

@dangerousbeans

@dominic what I wanna setup is the same arrangement most ethereum dapps have, where they'll try localhost first but then fall back to some cloud 'just get up and running' pub.

So I want to expose a ssb.secretisland.com pub that's super friendly at allowing incoming websockets

I mean they could be authenticated too but I don't really understand the rules about what makes it authenticated, like just having a keypair + feed id isn't enough it needs to be some kinda trusted feeed?

Maybe that's the bit I want to calm down for this special case pub

@dangerousbeans

(I can't use unix sockets because I want to get stuff at least kinda running without needing the user to install/do anything)

@The Scuttleverse Herald

the weekly - curated posts from the scuttleverse with black band for the Sri Lank Easter Bombings

Recent Days in Scuttlebutt

A Note From The Editor

I've been observing a trend lately, where people write interesting posts and mention them here on SSB but post them on the web. I feel like, if you wrote it, and it's worth mentioning here, then it's usually worth sharing here.

Cross-posting to SSB is totally acceptable, even appreciated. Also, it's nice to be able to discover, read, and comment on your stuff all in one place.

Also, it just feels wrong when those posts are about distributed offline goodness, and are mention, but not shared here in our distributed offline goodness.

Totally Random

@dangerousbeans is Using D3 to visualize ssb activity across a procedurally generated hexmap of islands

procedurally generated ssb hexmap of islands


@Dominic sailed some islands and taught us a bit more about sailboats.

Dominic selfie on their sailboat in the evening very serious.


@coopchange shared a beautiful sunset and a link to a post about good podcasts they've found recently.

dramatic sunset

They also started a discussion on this topic:

I think we need a name for this concept. If your β€œself-identity” is who you think you are, your other identity is who other people think you are.
...
You don’t have as much ownership of your other identity as you do your self identity, because it’s a model in someone else’s head. But you can influence it by hooking into things that will give them a different idea of you.


@Kathleen Marie shared a recipe for Vegan Chocolate Chip Cookies. As a result, I now want cookies.

vegan chocolate chip cookies on a black circle


@Will Schenk MacBook shared some photos from NYCResistor's 10th Annual Interactive show: Solar Punk

nycresistor sign with circuit board, LEDs and wires


post 1 of 3

@Lucas :)
Voted this
@Lucas :)

That is such a beautiful evolution of what we were exploring with Entrust and My Moon

@Lucas :)

@Robert.Best/d πŸ–₯️ , @Connor , there is some nice background on curation and lineage tracing we poublished in #guilda.

@Lucas :)

I definitely should learn how to code. I am very curious on understanding what is it that you are challenged with.

@Vincent
Voted this
@cryptix

A bit late to the party but we also used vuejs for #talenet but never extracted any packages like this.... :see_no_evil: This is quite awesome and t:n is ripe for a rebuild as well..! makes note to self on the hyperomegaboard

@Greg K Nicholson πŸ“±πŸ€–
Voted this
@Ivar
Voted this
@dangerousbeans

@cryptix nice - do you have any scrollers in talenet?

I'd love to see your pullstream to infinite scroller approach

@cryptix

@dangerousbeans we have scrollers but we don't pull directly into vue. We developed a vuex pub/sub mechanism that is able to listen for updates to feeds (or other things) though to make everything react-ish from the log. The persistence adapters hook into the stores which hook into the vue components. https://github.com/talenet/talenet/tree/master/src/renderer

@mmckegg
Voted this
Join Scuttlebutt now