@happy0 voted The apk on github https://github.com/staltz/mmmmm-mobile/releases/tag/v0.0.
@nickname voted The apk on github https://github.com/staltz/mmmmm-mobile/releases/tag/v0.0.
@andrestaltz in #ssbc
Re: %b6nlgiAu3

The apk on github https://github.com/staltz/mmmmm-mobile/releases/tag/v0.0.1
cc @dominic

@kajmagnus subscribed to channel #ssbc
@Snocrash dug I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ in #ssbc
@CustomDesigned in #ssbc
Re: %b6nlgiAu3

@mix https://github.com/ssbc/patchbay#running-in-the-browser

The lite clients need a connection to the full node, so technically, they don't work "offline". But they certainly work in a "global internet offline but local LAN or mesh up" situation when the full node is reachable.

@marco28 subscribed to channel #ssbc
@Mischa voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@andrestaltz voted hey [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc4Y7wYal7PFc+w=.ed25519) I
@cblgh dug I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ in #ssbc
@cblgh dug Today I got all the pieces in place, to start actually building the app: I in #ssbc
@happy0 voted hey [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc4Y7wYal7PFc+w=.ed25519) I
@Matt voted hey [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc4Y7wYal7PFc+w=.ed25519) I
@mixxx voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@mixxx in #ssbc
Re: %b6nlgiAu3

hey @andrestaltz I'm not the sort to blow up with expectations. I mainly want to make sure you're getting enough positive vibes and encouraging feedback :)

I'm very realistic about the alpha nature of this, AND am really happy and willing to wade into testing alpha apps to support people doing rad work <3

@mixxx in #ssbc
Re: %29MpEOivd

@CustomDesigned heads up that patchbay isn't meant to work in browser. For that you're probably thinking patchfoo or patchlite or similar (minbay?).

All ssb apps work offline ... so you perhaps you're talking about some other setup?

@mixxx voted Yeah maybe I should do public / private / ... Don't get *too* excited just
@ben subscribed to channel #ssbc
@cel-vps voted Today I got all the pieces in place, to start actually building the app: I
@cel-vps voted from the latest Patchwork (which i'm enjoying most): Public / Private / Mo
@Mikey voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@Kas voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@andrestaltz voted > Good point, SD card storage will be a must. Right now it's using the app'
@CustomDesigned in #ssbc
Re: %b6nlgiAu3

Good point, SD card storage will be a must. Right now it's using the app's storage space, which is usually not in SD, but this type of configuration is possible, for sure.

Everything except the database probably should be in app storage. You want to be able to swap in a new SD card and resync. In particular, having your key on the SD would be a pain - and a risk once you remove it from the phone.

@CustomDesigned voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@happy0 voted I bring news: ![mmmmm-2017-07-19.jpg](&gkGwOpvChMG4JEpIrOmJ7J6f7Eu98exukEZ
@andrestaltz in #ssbc
Re: %b6nlgiAu3

I bring news:

mmmmm-2017-07-19.jpg

And repository: https://github.com/staltz/mmmmm-mobile

Milestone for today was using patchcore and sbot to fetch feed messages, and render them. The raw JSON box you see there will be displayed only for "messages of unrecognized type". Currently all message types are "unrecognized" but obviously it's just a matter of time until we build message components for each message type. The feed works. I tested it: with patchwork on my desktop, a new message appeared in real time on the phone.

Of course, consider this app to be a work-in-progress for a long time. I think I'll consider it "ready" when it's in the Google Play Store (unfortunately to reach a lot of people I need to go through that disgusting paywall).


@CustomDesigned Good point, SD card storage will be a must. Right now it's using the app's storage space, which is usually not in SD, but this type of configuration is possible, for sure.

@CustomDesigned in #ssbc
Re: %b6nlgiAu3

If the app actually uses SD card storage (unlike most Android apps), then 32G is only a few bucks for a micro-SD. Currently, .ssb on my VM is 1.6G. Eventually, patchbay is supposed to run in browser as a lite client, so that is another option (but doesn't work offline).

@andrestaltz voted from the latest Patchwork (which i'm enjoying most): Public / Private / Mo
@andrestaltz in #ssbc
Re: %b6nlgiAu3

Well, notifications can come from public or private, they are basically "mentions". Like I can mention you here like this @marco28. Also notifications will include a few other wildcard things like "Set up your profile" when you open the app initially.

@happy0 voted Today I got all the pieces in place, to start actually building the app: I
@Mikey in #ssbc
Re: %b6nlgiAu3

from the latest Patchwork (which i'm enjoying most):

Public / Private / More --- Profile / Mentions

patchwork-nav.png

where More has

  • Channels
  • Gatherings
  • Extended Network

patchwork-nav1.png

@Mikey voted Today I got all the pieces in place, to start actually building the app: I
@marco28 in #ssbc
Re: %b6nlgiAu3

I think the second one is better. But most of notifications come from the private message, correct?

@marco28 voted Yeah maybe I should do public / private / ... Don't get *too* excited just
@interfect voted Today I got all the pieces in place, to start actually building the app: I
@interfect voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@interfect voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@andrestaltz in #ssbc
Re: %b6nlgiAu3

Yeah maybe I should do public / private / ...

Don't get too excited just yet (I know screenshots have that effect :smile:), it really does nothing for now. Mega important features to build are: thorough and fully-supported messaging publishing and markdown rendering, but really: efficient storage. Just think how long it will take to sync with your desktop scuttlebot, if it even fits on your mobile device! :D

@mixxx in #ssbc
Re: %b6nlgiAu3

@andrestaltz nice !

I prefer public / private / notifications / channels. I think meta is mainly useful for diagnostics, and for getting set up.

I guess initially users will be people who already have SSB identites on network. They can friend their phone identity and that will side-step need for onboarding (pub invite) functionality in this app. I know it's needed in the long run, but I'm a fervent believer in "just build enough to get people using the thing" and there's an active group of people who we can test with before going wider.

OOOOHHH boy, I'm pretty darn excited for this. If I even have read-only I'll be ready to pretty much drop FB

@mixxx voted Today I got all the pieces in place, to start actually building the app: I
@andrestaltz in #ssbc
Re: %b6nlgiAu3

Today I got all the pieces in place, to start actually building the app: I have a RN app with the SSB modules I made, plus some framework stuff, some basic components, the app's GUI skeleton, icons, etc.

mmmmm-2017-07-18.jpg

The four tabs are:

  • News feed
  • Channels (?)
  • Metadata
  • Notifications ('mentions')

Metadata is a screen showing your connected peers, gossip data, a dashboard of ... metadata, etc. This will be a place where the user has access to raw data about everything they store on device. You add pubs here, you accept invites, etc.

I'm not sure if I should have Channels as a tab. Channels can also live in the menu accessible from the menu button on the left. Maybe I should have

  • Public
  • Private
  • Metadata
  • Notifications

Thoughts?

This was what I achieved today and tomorrow I'll start making the basic news feed screen with messages and publishing, hooked up to background-scuttlebot and using some patchcore primitives.

@marco28 voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@Nico voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@Nico subscribed to channel #ssbc
@andrestaltz voted > He sends the file to Alice (somehow, either via the internet or sneaker,
@Matt voted > He sends the file to Alice (somehow, either via the internet or sneaker,
@flokli subscribed to channel #ssbc
@dominic in #ssbc
Re: %IVmzLIXuz

He sends the file to Alice (somehow, either via the internet or sneaker, or uploads the url and shares).

One way to do this would be to encrypt it and put it on a pub, then send the hash+key to Alice, who retrives it via http blob url. This would be the about the same size as a current invite, but could hold a lot more information, at the cost of one extra round trip. Which is okay, because onboarding is a lot of work, anyway.

@Matt voted Good thoughts [@mmckegg](@FbGoHeEcePDG3Evemrc+hm+S77cXKf8BRQgkYinJggg=.ed25
@Kas voted Good thoughts [@mmckegg](@FbGoHeEcePDG3Evemrc+hm+S77cXKf8BRQgkYinJggg=.ed25
@andrestaltz in #ssbc
Re: %IVmzLIXuz

Good thoughts @mmckegg, I like what is proposed, but I'm also thinking how to solve onboarding in general.

For one, I think onboarding payload is a very important thing we should have, regardless of what we decide with regard to pubs, invites, etc. Either way, it will be useful, and important.

About invites, it actually led me to rethink (again) what should pubs be. You mentioned easy-ssb-pub, and I haven't made my mind what type should that be: open invites to anyone, or an easy closed pub, or something else. Also with regard to "pubs as 'connect me to x' services": we could make pubs that host data from a lot of people, but you only download data from those people you follow, plus the pub does garbage collection to remove content older than x days, so its only purpose is to be a temporary storage and bridge between remote friends. I'm trying to think how to decouple pubs from specific communities. Usually in P2P networks all peers are of the same type, but there's the idea of trackers in BitTorrent, and those seem to not be so harmful for decentralization (or are they? Are trackers avoided and is that why there is Kademlia DHT?)

Just some random thoughts. I still quite concerned about onboarding for people uncomfortable with the technical side of servers.

@happy0 voted **Re: Onboarding Payload** This has obvious advantages for speed too. And
@happy0 voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@Retard voted [@Howard Klein](@A5FqepWjS76C4Hw9idZUyW0T6QgJOjsbQHlIP0A4yu8=.ed25519) ht
@jbizzle dug # Proposal: Multi-pub invite Here's another proposal for improved invite f in #ssbc
@coffee voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@coffee voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@andrestaltz in #ssbc
Re: %b6nlgiAu3

@RubberDuck not yet, but once I do I'll certainly update this thread.

@Retard voted For invitation only pubs, I like the cjdns idea of using a random port. Ma
@Bob voted I just set diasp.club to run on 8009. Not many people replicate through it
@Mikey voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@cellular voted It would be nice to have a few more pubs that didn't run on port 8008. Corn
@Kas in #ssbc
Re: %tpovNH4Wt

I like the cjdns idea of using a random port.

:+1:

@jbizzle dug It would be nice to have a few more pubs that didn't run on port 8008. Corn in #ssbc
@CustomDesigned in #ssbc
Re: %tpovNH4Wt

For invitation only pubs, I like the cjdns idea of using a random port. Makes those mean University firewall people work harder. If you get on cjdns, there are hyberboria pubs.

https://github.com/cjdelisle/cjdns

@zitelli voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@Retard in #ssbc
Re: %tpovNH4Wt

Also, I'm not sure if 8009 is a good port.... let me know if there's a better one

@Retard in #ssbc
Re: %tpovNH4Wt

I just set diasp.club to run on 8009. Not many people replicate through it though.

@cellular voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@Bob in #ssbc

It would be nice to have a few more pubs that didn't run on port 8008. Cornell's firewall seems to be blocking 8008. The only pub i can connect to is @pub.hacky.af currently

@Emile voted # Proposal: Multi-pub invite Here's another proposal for improved invite f
@Matt in #ssbc
Re: %IVmzLIXuz

Re: Onboarding Payload

This has obvious advantages for speed too. And would relieve some stress placed on the pubs having to serve up the old content all the time.

@Matt in #ssbc

Proposal: Multi-pub invite

Here's another proposal for improved invite flow. It builds on

This idea de-emphasises pubs as an onboarding mechanism. It instead moves the focus on to connections between people. You just post an invite up, and people can follow you! As long as you have a few "technical" friends that operate pubs, you wouldn't even have to think about them at all.

An invite is no longer tied to a specific pub. Any pub that follows you can handle the invite.

I'm imagining this would be used in conjunction with an interface that showed you how "replicated" you were so you'd know if you needed to set up a pub (or pay for a PaaS)

Flow

Bob clicks "Generate Invite" in the user interface:

  1. an asymmetric key pair is generated
  2. a message is added to his feed (type: "invite") with one half of the key pair
  3. a file is generated containing
    • the message ID
    • the other side of the key pair
    • a list of every pub (with address) that follows Bob

He sends the file to Alice (somehow, either via the internet or sneaker, or uploads the url and shares).

Alice opens the file with patchwork (which will be a default system handler), or pastes the url in directly. Patchwork does the following:

  1. attempts to run multiInvite.use on every pub server declared in the file until one responds with success.
  2. follows the pub that accepts the invite with scope: "invite-pub" (we filter messages with scopes out of the main patchwork feed)
  3. follows Bob’s feed

When a pub receives a multiInvite.use command:

  1. checks if the invite is valid
    • looks for a message corresponding to the ID
    • checks to make sure that the message was authored by someone that the pub follows
    • checks that the provided key matches the one associated with the message
  2. follows the requesting feed with scope: "invited"

Bob will see the "mention" that Alice has followed him, and he can choose to follow back.

Implementation

I think that multiInvite.use would be a plugin that would be installed by default on easy-ssb-pub. It really just allows anyone that the pub follows to generate invites.

Something that still needs considering is how a user would revoke an invite. There's a lot of room for discussing the exact mechanism that the message is posted to the feed and how a pub finds it.

The obvious downside (over the current invites) is that you can no longer just copy and paste. But I think that the advantages outweigh this. It is fairly trivial to send someone a file. Or post a link online. If we add a protocol handler to patchwork, people can link to their invite file straight off the web. It might even be possible to encode into a QR code.

The other style of invite still stays around (and makes a lot of sense for groups).


Another fun addition: Onboarding Payload

After the main invite body could be a line delimited dump of every message in your FOAF range. This means you could onboard people via usb drive with no internet connection needed. I'd be interested to find out what size this would be if gziped.

Obviously in this case that they were not connected to the internet, they would not be able to accept the invite via a pub, instead would generate an invite dump and send it back to you.

@Toady in #ssbc
Re: %b6nlgiAu3

Lots of congrats, Andre!

@CustomDesigned voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@Mikey voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@Mikey voted Here we go: - Create a new React Native project (android-only) - npm insta
@andrestaltz in #ssbc
Re: %b6nlgiAu3

See http://localhost:7718/%25XnPjP9GWJ4z7W51Hh%2FUkc0aouHbY1AvxcQE5mkPLDwc%3D.sha256/tree/sbot for an example

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Here we go:

Use them in index.android.js like specified in their readmes

@CustomDesigned voted Check out git-ssb-web. Each repository has an issue tracker, like github.
@andrestaltz in #ssbc
Re: %b6nlgiAu3

I kind of finished react-native-scuttlebot, once @dominic releases the new version of noderify, I can publish it.

Usage would be quite sweet: scuttlebot.start() then use react-native-ssb-client like we use ssb-client, both in index.android.js.

@Mikey voted Check out git-ssb-web. Each repository has an issue tracker, like github.
@ansuz in #ssbc
Re: %cq3QpjpgB

Check out git-ssb-web. Each repository has an issue tracker, like github.

@CustomDesigned in #ssbc

I'm not going to get to it anytime soon, but in my mind's eye I see an ssb issue tracker along the design of roundup issue tracker. I mean an issue tracker implemented using ssb as the database, not an issue tracker for ssb...

@CustomDesigned in #ssbc
Re: %GjQM/DvmF

@Howard Klein

http://www.dailymail.co.uk/news/article-1224522/Pigeon-post-Meet-birds-backpack-deliver-parcels-time.html

Nowadays, they use micro-SD cards.

P.S. Get off my lawn!

@mt subscribed to channel #ssbc
@arj voted I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb
@mixxx in #ssbc
Re: %GjQM/DvmF

yeah there's ssb-graphviz which you need to install node to run, but show you your current view.
Would be possible to make a slider to decrease the FOAF and simulate what that would do to your graph.

@Retard in #ssbc
Re: %GjQM/DvmF

@Dominic Hey Dom maybe one day we'll have a social graph visualisation plugin where you can choose your FOAF range at a per node level with just 1 or 2 easy clicks! Once I learn JS... I can just see it now in my mind's eye.... it's a beautiful sight to behold...

@Retard in #ssbc
Re: %GjQM/DvmF

Hey Gramps wtf is an SD card??

@Mikey voted I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb
@dominic in #ssbc
Re: %GjQM/DvmF

sure, but this is just a configuration setting, you could turn it down (only direct friends) or turn it up, to foaf or foafoaf... currently the default is quite high, but this is just because it's a new network, and we want there to be enough content so that it feels like something is happening. I expect this setting to usually be turned down as the network grows.

@Mikey voted @xuv SSB is a lot like NNTP - but updated with authentication, private mes
@Julien Deswaef in #ssbc
Re: %GjQM/DvmF

thx @CustomDesigned for the explanation.

Since social networks tends to lower the degrees of separation to 3.5 (or that might be just a FB design flaw), doesn't this "extended family" means it would potentially englobe everybody?

@G subscribed to channel #ssbc
@Matt voted I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb
@mixxx in #ssbc
Re: %b6nlgiAu3

wowowowow, very exciting, excellent work @andrestaltz

@mixxx voted I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb
@mixxx voted **Just published `react-native-ssb-client`** https://www.npmjs.com/package/
@mixxx voted ![phone-to-phone.jpg](&gCFNkbWAJnK91xlxLpE7lvhWV4KhltmXQtoqchIQ8DY=.sha256)
@ben in #ssbc
Re: %b6nlgiAu3

This is awesome news, great job!

@CustomDesigned in #ssbc

@xuv

SSB is a lot like NNTP - but updated with authentication, private messages, and explicit semantics such as "dig/like" (on NNTP, you would post a reply including "+1").

An NNTP node copies all new messages from its peers for the newsgroups. SSB copies all new messages from its peers for the "extended family" (which defaults to FriendOfAFriendOfAFriend). Channels are just tags on the posts.

NNTP had "newsreaders", which were lite clients. There is at least one experimental lite client for SSB.

NNTP supported syncing via tape cartridges in a station wagon. SSB is designed to eventually support similar things in a modern context:

  • via microSD cards strapped to carrier pidgeons
  • via digital broadcast (no or very low bandwidth return channel)

Imagine you are white water rafting 100s of miles from the nearest internet with a savvy adventure company using SSB. The guide brings a cage full of carrier pidgeons - one or two for each day of the adventure. Every evening, you post your days adventure to SSB, and the next morning the guide copies the new messages to an SD card, straps it to a pidgeon, and off it goes back to the base. The updates should be cumulative in case the pidgeon gets eaten by a hawk.

A Mars expedition also benefits from offline friendly SSB: the latency is a bear.

@CustomDesigned voted I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb
@andrestaltz in #ssbc
Re: %b6nlgiAu3

I just moved that to the ssbc org: https://github.com/ssbc/react-native-ssb-client

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Just published react-native-ssb-client https://www.npmjs.com/package/react-native-ssb-client

API looks like ssb-client, but is meant to be used in a React Native app. See my sandbox repo, branch sbot for an example usage. Basically just put "react-native-ssb-client": "1.0.4" in package.json dependencies, then in index.android.js, import ssbClient from 'react-native-ssb-client'; and use ssbClient like you usually would use the npm package ssb-client.

@andrestaltz in #ssbc
Re: %jeAzYsgXW

ssb-mobile-roadmap2.svg

@coffee voted ![image-works.jpg](&hQ6d6tuaUE4N/TUewYQn/huyHYtxsDaPHdcxpRxOr2s=.sha256)
@arj voted ![image-works.jpg](&hQ6d6tuaUE4N/TUewYQn/huyHYtxsDaPHdcxpRxOr2s=.sha256)
@arj voted ![image-works.jpg](&hQ6d6tuaUE4N/TUewYQn/huyHYtxsDaPHdcxpRxOr2s=.sha256)
@arj voted ![image-works.jpg](&hQ6d6tuaUE4N/TUewYQn/huyHYtxsDaPHdcxpRxOr2s=.sha256)
@andrestaltz in #ssbc
Re: %b6nlgiAu3

image-works.jpg

Images work too. I just put serve-blobs.js from patchwork and it hosted the images like any other web server does, and React Native <Image> knows how to consume that localhost URL. The nice plus is that you can also open the URL in the mobile browser! (Finally you can run a localhost node.js server on mobile easily)

@CustomDesigned in #ssbc
Re: %jeAzYsgXW

That sounds normal, I think I did the same. But two android devices receiving each other's multicast didn't work, for some reason. When I ran arp -a on one of my phones, it showed my LAN gateway and my computer only, not other devices.

Commercial WAPs often filter broadcasts. Have you tried with, say, an OpenWRT WAP? In wifi managed mode, all packets go through the WAP - which may or may not forward them to another client.

@CustomDesigned in #ssbc
Re: %jeAzYsgXW

I'm assuming (perhaps wrongly) that you are working on auto peer discovery for local lans.
Both cjdns and batman-adv use their own ethertype for broadcast to implement peer discovery. (0xfc00 for cjdns!) Broadcast is an inherent part of ethernet, but multi-cast is more of an add-on to IP, and often not available. On the other hand, many commercial wifi APs block unrecognized ethertypes.

So ideally, LAN discovery would use layer 2 - even though android and iPhone make that difficult.

BTW, what exactly would my scuttlebot do with potential ssb peers it sees on a local LAN? Hopefully not automatically start following them. Maybe keep a list which the user can select from in a client?

@Wao voted who has an address in a popular decent city like Oakland and wants to recei
@Mikey voted ![ssb-mobile-roadmap2.svg](&2ddnc8WZi2pjl6nkznidb8Ahr655+8myJzJKRZ1SyfM=.sh
@dominic in #ssbc
Re: %XgRtihoOw

Okay, the problem was just that I had a test that explicitly requested {<id>: 0} this was an artifact from an early stage of development where 0 hops ment a local request, but later I changed that to be -1

fixed in ssb-blobs@1.1.2

@dominic in #ssbc
Re: %XgRtihoOw

hmm, if I change that <= to < the tests fail, investigating...

@Vendan in #ssbc
Re: %XgRtihoOw

https://github.com/ssbc/ssb-blobs/blob/master/inject.js#L129 it's still considering a value <= 0 to be //interpret as "WANT", so that's still not quite right, at least according to the stated protocol.

@dominic in #ssbc
Re: %XgRtihoOw

Well, i made a special case for the empty string, because it generally means you have a bug. When first started experimenting with hash-based systems, I started to remember the empty string hash, and would detect bugs that way!

I also updated checks so it allows for a zero length hash, but it will just never actually request the zero length hash.

@cellular voted ![ssb-mobile-roadmap2.svg](&2ddnc8WZi2pjl6nkznidb8Ahr655+8myJzJKRZ1SyfM=.sh
@Carlos Galarza dug PS: I like the background process idea because when it's managed as an Andr in #ssbc
@Carlos Galarza dug ![ssb-mobile-roadmap2.svg](&2ddnc8WZi2pjl6nkznidb8Ahr655+8myJzJKRZ1SyfM=.sh in #ssbc
@arj voted ![ssb-mobile-roadmap2.svg](&2ddnc8WZi2pjl6nkznidb8Ahr655+8myJzJKRZ1SyfM=.sh
@Wao voted ![ssb-mobile-roadmap2.svg](&2ddnc8WZi2pjl6nkznidb8Ahr655+8myJzJKRZ1SyfM=.sh
@Vendan in #ssbc
Re: %XgRtihoOw

Any particular reason you fixed it that way, rather then treating 0 as a possible size?

@andrestaltz in #ssbc
Re: %jeAzYsgXW

ssb-mobile-roadmap2.svg

Entirely updated the roadmap for ssb-mobile, and basically we can scrap the previous roadmap because it had an entirely different approach. Notice that I highlight that the iOS path may not be doable, it currently totally depends on a proprietary component. The Android path looks better.

@dominic in #ssbc
Re: %XgRtihoOw

Good find. Since posting an empty hash is an easy bug, I've decided to handle this by having multiblob just act like it already has the empty hash (so it's never requested)

fixed in ssb-blobs@1.1.1, I had some second thoughts about handling the empty hash this way, but there is exactly one empty hash, so it's not that bad. Anyway, there is test coverage also.

@skanur voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@Photon Paradise voted ## Dev diary: building an SSB app for Android Started making an SSB app fo
@cellular voted Issue with ssb-blobs: https://github.com/ssbc/ssb-blobs/blob/master/inject.
@Vendan in #ssbc

Issue with ssb-blobs: https://github.com/ssbc/ssb-blobs/blob/master/inject.js#L129-L141 treats 0 as a "request", but https://github.com/ssbc/ssb-blobs/blob/master/README.md says the value should be negative to be treated as a want (-1 is I want, -2 is friend wants, and so on). This means a 0 length file is treated as a request, rather then a "yes I have it". Result: I'm getting asked if I have blob &47DEQpj... on a regular basis, and responding in the affirmative, but it's never pulled, as the other end doesn't understand 0 length correctly. (47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= is the correct sha256 hash for the 0 length blob).

@CustomDesigned voted ![device-2017-03-17-233002.png](&U7Wk16nOcSCISXKhe3YMToQJ2COFhue8pLMW0R4IVX
@dangerousbeans voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@river_crab in #ssbc
Re: %b6nlgiAu3

it smells likethe beginning of a new era

@river_crab in #ssbc
Re: %b6nlgiAu3

it smells likethe beginning of a new era

@river_crab in #ssbc
Re: %b6nlgiAu3

it smells likethe beginning of a new era

@arj voted ![phone-to-phone.jpg](&gCFNkbWAJnK91xlxLpE7lvhWV4KhltmXQtoqchIQ8DY=.sha256)
@arj voted PS: I like the background process idea because when it's managed as an Andr
@arj voted The repo is http://localhost:7718/%25XnPjP9GWJ4z7W51Hh%2FUkc0aouHbY1AvxcQE5
@river_crab voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@andrestaltz in #ssbc
Re: %b6nlgiAu3

The repo is http://localhost:7718/%25XnPjP9GWJ4z7W51Hh%2FUkc0aouHbY1AvxcQE5mkPLDwc%3D.sha256/tree/sbot

and branch sbot

@andrestaltz in #ssbc
Re: %b6nlgiAu3

@dominic to get the repo reproducible for others, I'd need you to merge a PR for noderify first :)

@dominic in #ssbc
Re: %b6nlgiAu3

WOW awesome! Can't wait to try this!

@andrestaltz in #ssbc
Re: %b6nlgiAu3

PS: I like the background process idea because when it's managed as an Android sticky service, even if you close the app the process can still be running. We could use this to enable proactive data sync, so when you open the app you just browse the latest content as if it was always there. This could of course be user-controlled in some settings screen.

So exciting!

@andrestaltz in #ssbc
Re: %b6nlgiAu3

phone-to-phone.jpg

Phone-to-phone sync over LAN, basically in real-time (judging by the naked eye, less than 100ms delay).

@arj in #ssbc
Re: %6uM3az6vv

Great news!

@arj voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@angelo voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@skanur subscribed to channel #ssbc
@regular voted ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic
@nichoth dug ## IT FREAKING WORKS I don't know how else to say this: it works!!! Basic in #ssbc
@andrestaltz in #ssbc
Re: %b6nlgiAu3

IT FREAKING WORKS

I don't know how else to say this: it works!!!

Basically I'm running a real node.js process in the background, which runs full scuttlebot (leveldown swapped for memdown, sodium is fully in JS, but fs and net and dgram and all the rest are the real shit) and the react native app uses ssb-client to communicate to that, and things... work.

Here's a video to prove it: https://instant.io/#3d7243c78252b94f6f803259123a64f9edefbf31
laptop can sync with phone and vice-versa. I'm also going to test phone-to-phone sync, but it should work too.

Next steps are getting the code published in different packages, and allowing each part to evolve separately. Obvious steps are getting an actual native libsodium and native leveldb, but those can evolve separately and then get plugged to the app later on. That's important so UI development can progress independently from the underlying infrastructure.

I'm super excited for this milestone

@dominic

@Kas voted - "content is always a blob hash": %Bsoq076eGE0g7YyWz2Wzh8TqM1SS6L0gg8nAwBV
@Wao voted maybe i was overthinking this. anyway, the idea is there in case anyone wan
@Wao voted # custom syntax highlighting [ssb-marked][] supports the [github-flavored-
@Mikey voted # custom syntax highlighting [ssb-marked][] supports the [github-flavored-
@regular voted # custom syntax highlighting [ssb-marked][] supports the [github-flavored-
@Bob in #ssbc
Re: %ksFB43iqh

another level of integration would be to relay transactions from the cryptocurrency network into ssb. with bitcoin, i am not sure of a good way to do this. a feed could publish a message "please publish transactions sent to bitcoin address X", but i don't see much incentive for peers to heed these.

maybe another possible way it to represent ethereum address as feeds inside scuttlebutt. Also Contract's can have 'events' which are recorded in the block, the events could be used to by contract's to reply to feed's on scuttlebutt.

@emaballarin subscribed to channel #ssbc
@andrestaltz in #ssbc
Re: %b6nlgiAu3

Yes, that line you highlighted is what does it, and currently in my react-native-run-background-node-process I have that same thing going on. The arm node binary comes from here: https://github.com/dna2github/dna2oslab/tree/master/android/build

And yeah, my current status is trying to compile node-sodium for linux arm. libsodium already has a make system for android, so that's done. Next is to get node-gyp to do the job correctly. Sailing uncharted waters here, no web searching seems to help.

@dominic in #ssbc
Re: %b6nlgiAu3

Hmm, I was under the impression that you couldn't start another process in a non-rooted phone, but it looks like he's just starting a process?

https://github.com/dna2github/NodeBase/blob/3976239d8e268622572dc18fba2f2f5d12e3d3fa/app/src/main/java/seven/drawalive/nodebase/NodeBaseServer.java#L117

Where does the arm node binary come from? is it the standard node arm binary? we gotta get sodium into that somehow.

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Yep! And the node.js binary compiled for arm is v7, that's at least half awesome.

Update: I'm creating react-native-run-background-node-process (will find a better name) and hope it'll be a good foundation to build more stuff on top. E.g. next thing would be react-native-scuttlebot which just puts that one and scuttlebot together and it just works.

@dominic in #ssbc
Re: %b6nlgiAu3

That looks really good, and whats more, it's actively being developed! and there only a moderate amount of code to read!

in the readme it says:

Android NodeJS Platform to Build Sharable Application (Android as a Server)

Share application with your friends in the same Wi-Fi!

sounds like he's on a p2p vibe too!

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Some good news: I'm investigating the possibility of doing that same iOS approach but for Android, and I found this: https://github.com/dna2github/NodeBase

So far, it's good! I got a full node.js process running in the background and it ran an http server which the React Native app was able to request.

@walter in #ssbc
Re: %ksFB43iqh

You may want to check out Cosmos and Tendermint for interoperability. I'm not well versed in details, but dug them up when searching for ways to interact with Ethereum.

@lzlr dug [@CustomDesigned](@iOyfRmje5LFAErH7M3faTLNMQUTXCnjECbLtniVJ478=.ed25519) > in #ssbc
@Wao dug Super disappointed with a critical piece of software being closed source: h in #ssbc
@ezdiy in #ssbc
Re: %ksFB43iqh

I should add that a related "split view" problem also exists in bitcoin, where it is called "eclipse attack" - attacker eclipses your perspective with false consensus. In bitcoin this is largely mitigated because only newly joining clients are vulnerable (and checkpointing makes the problem almost non-existent).

In SSB, simple flood network would help a lot to get coherent view.

I'm less and less convinced that replication as it exists now really needs to work the way it does. It is complex, slow, and computationally expensive.

Recently I've been playing with simulated models of pure flood network a'la bitmessage, where FOAF is used only to limit spam (ie you set some target message rate, and throttle people further afar). Each message records trust links en-route to prove social path it came from towards you. It's far less computationally expensive, as you don't maintain the graph and associated traveling salesman problem whatsoever, however the cost is constant (but capped) bandwidth usage.

@ezdiy in #ssbc
Re: %ksFB43iqh

What degree of consistency do you think we'd need here? do you think it would be enough to have a fork-proof that killed a feed?

Forks are easy (simply punish forks by collecting from people who trusted you, just like you punish excessive spending). The most problematic is consistency in time - basically when computing "credit gradients", at the moment you can't make any assumptions at which point in time they reside. Time in SSB is subjective, and simple collateral credit rating algorithms (where your underwriters are anchored at some point in time) need correct clock.

The way attacker exploits it is that they have a partial control over how far and where the feed spreads, because the network isn't perfectly connected - one can selectively create disperaging isles with drastically opposing perspectives standing in their own clique.

I can owe you yesterday, you owe me tomorrow, and everyone else should have at least semi-coherent idea which is it, and most importantly, that neither of us can introduce wide split-views of it by feeding the network selectively.

This becomes less of a problem with schemes like the visibility in post above, because the incentives align correctly (if you intentionally limit replication, you limit visibility to yourself...).

@ezdiy in #ssbc
Re: %ksFB43iqh

I was searching a term you used and this was first result: http://www.whatsonweibo.com/nude-pics-naked-loan-controversial-online-loaning-china/

Controversial as it may be, that is an excellent example of "social collateral". The only difficulty is how machine can determine the photos are of any worth :)

More realistic example is "attention economy" - while everyone could implement it subjectively, it would still have huge discouraging impact. Basically when your SSB client sees somebody is in negative a lot, it makes its feed less visible (a'la facebook).

The idea is that this would punish mainly celebrities (who'd be the ones with most underwriters in any case). If you as a celeb abuse your status to get cheap credit you don't repay, people will be less likely to spread your platform. It's a weak feedback loop, but at least there's one.

@dominic in #ssbc
Re: %ksFB43iqh

@ezdiy I was searching a term you used and this was first result: http://www.whatsonweibo.com/nude-pics-naked-loan-controversial-online-loaning-china/ #hypercapitalism #china

What degree of consistency do you think we'd need here? do you think it would be enough to have a fork-proof that killed a feed?

@ezdiy in #ssbc
Re: %ksFB43iqh

yes, well, there is always gonna be trust when dealing with any computer/idea space into realworld/meat space

The whole point of smart contracts is to remove the need for that trust in its entirety if oracle exists (the contract itself is executed on-chain, and consensus builders can individually consult the oracle), or at least minimize by enforcing a fidelity bond (escrow schemes) when a party defaults on their obligations when dealing with intrinsic fiat trust (craigslist with decentralized arbiters). But the moment you rely on naked trust alone, you're indeed back to standard banking with centralized trust arbiters and all. In short:

  • CC are better because you can have fancy contracts where many people can verify that something is true or not, and rubberstamp accordingly.
  • For example, if SSB had consistent feeds, I could write ETH contract where I pay you if you follow me, and it could be completely trustless. But as of now, this is impossible because SSB is not consistent, not even on feed level. So there is no oracle. If there is no oracle, we have craigslist, where:
  • CC remains completely unaware that there is some craigslist out there, it knows only that 3 people agreed to do escrow transaction, but doesn't need any context, it simply "trusts" the escrows.

Even full artificial intelligence would still need the concept of trust.

Any statistical scoring, no matter how smart, is still based on "history predicts the future" fallacy, it remains a naked trust, inherently flawed and exploitable. You'd create an adversarial learning race of machine learned statistical models. To that end, HFT finance works already a bit like that and it's not a pretty sight.

But if you want to have something deterministic, you can go back to basic sound finance. All you need is collateral, and a way to collect that collateral when somebody defaults in weakly coupled graph of escrows. In context of LETs, that means socializing the collateral and default risk - a clique will be taxed by strangers (when you transact with them) to a degree of insurance collateral - the more naked (riskier) someone's promise is, the more costlier it will become to transact for them. Another way to look at it is pooled insurance - when the network state taxes you because you trusted somebody you shouldn't, the burden is not as high because the whole group who trusted the defaulter serve as underwriters.

It should be noted that this is different from interest. Interest in modern banking is basically usury - the interest rate doesn't reflect default risk, but monopolistic pricing of credit access (ie banks charge high interest because only they have monopoly on IOUs). The risk for them is low simply because they have courts system to collect debts, the only real risk is of total market collapse.

In decentralized system, however, the credit cost would hopefuly reflect true risk of default, and everyone would need to collect interest in order to protect themselves whenever distant bonds unwind (due to network effects, you'll be paying this mandatory insurance almost all the time).

contract signatures, surely there is an easy way for a contract to verify that a transaction is sent to it, which implies a signature?

Ethereum uses secp256k1 ECDSA, not ed25519. It has an ecrecover (costs 3k gas I think) which can be used to verify arbitrary ECDSA. You can also inquire about the sender indeed, but that is not terribly useful to operate on external state (the whole point of having a contract).

@Matt dug ### Tech Tree [cel-ssb-tech-tree.txt](&QlNj+owC5yMkRfwFnMnAuiAk3MQD+bqSGaz in #ssbc
@dominic in #ssbc
Re: %ksFB43iqh

@ezdiy yes, well, there is always gonna be trust when dealing with any computer/idea space into realworld/meat space. A trustless nakamoto style system depends on some sort of computer science "proof" and there is no proof that I relayed a file, or let you stay in my apartment, or that you are a single individual, or that my vps is really running exactly the code you sent me, etc.

Even full artificial intelligence would still need the concept of trust.


re: contract signatures, surely there is an easy way for a contract to verify that a transaction is sent to it, which implies a signature?

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Super disappointed with a critical piece of software being closed source: https://github.com/janeasystems/node-mobile-react-demo/issues/1

Node.js is open source but they want to make Node.js-ChakraCore-iOS proprietary. It's not the first time I hit this wall when building something for Scuttlebutt, previously I bumped into http://underdark.io and OpenGarden MeshKit (how can you even name it OpenSomething if it's not open?).

@cellular in #ssbc
Re: %ksFB43iqh

@dominic thanks for clarifying that about the unspent output.

i like the auction idea!

@nichoth dug [@yangwao](@NaDXehMSIgk08W5RXZJ0p+7m+19iIWEuAtD7FRESJX8=.ed25519) it would in #ssbc
@cellular voted [@yangwao](@NaDXehMSIgk08W5RXZJ0p+7m+19iIWEuAtD7FRESJX8=.ed25519) by just a
@cellular in #ssbc
Re: %ksFB43iqh

@Wao i wasn't thinking of lightning network or sidechains, just relaying transactions between ssb and cryptocurrency networks, and how to incentivize that.

by offline, i meant you could sign a transaction and publish it to your feed, and your peers relay it. then rely on your peers to relay back transactions of interest to you. like a highly asynchronous light client.

@ezdiy thanks for those numbers. i guess that would be around $0.50-$1 USD to verify a ssb message on ethereum. could have niche uses, maybe, idk. i don't indent to implement this any time soon, but i think it could be interesting.

@ezdiy in #ssbc
Re: %ksFB43iqh

@Dominic

I would be surprised if it made sense to implement ed25519 as an ethereum contract, but I figure they'd have a built in function to verify ethereum signatures though?

There is none, by design. The rationale is that this is good for generality - you count cost of individual field multiplications - and can implement any 256bit crypto you like, on another hand, it makes things a little more awkward than they need to be.

Then they DM me on ssb with their timespace coordinates, and I have my drone deliver the sandwich.

This is all cosmetic, though as I said before. Technically neither protocol deals with another, as you have no way to propagate the state. However SSB indeed makes a nice place for craiglist and to establish double escrows. However it can't enforce anything, it merely brokers trust one needs to transact in the first place, while the settlement still remains trustless.

@dominic in #ssbc
Re: %ksFB43iqh

@yangwao by just associating a eth keys and ssb keys, and being able to link from ssb messages to eth transactions, you could do a lot. All that would really be necssary is to wire in a ethereum lightclient into your ssb ui. Then I could be like "who wants to buy this sandwich?" everyone sends bids to a contract, which refunds everyone but the highest, within a time limit.

Then they DM me on ssb with their timespace coordinates, and I have my drone deliver the sandwich.

Then they could confirm they have it via ssb.

So, this applies the strengths of each protocol: consistent transactions on eth, and eventually consistent social replication on ssb.

I would be surprised if it made sense to implement ed25519 as an ethereum contract, but I figure they'd have a built in function to verify ethereum signatures though?

@cel I don't think you could pay a fee to who ever chose to relay it like that. on bitcoin the "miner fee" is just a unspent output, like leaving some money on the table, that anyone can take. So, that free money just needs to go into a block, but of course it's the miners that decide what the block will be, so naturally they take this bit. You'd have to pay a specific node to relay - but anyway, relaying is so cheap that it can be free, pub servers already do stuff like that for free.

@ezdiy in #ssbc
Re: %ksFB43iqh

gas cost to verify an ssb message?

Quite high, ballpark is 100k-200k for verification, half of that for signing and keygen. Still not nearly as bad as secp256k1.

One point add/double for ed25519 is 6-7 field muls and about 10 add/subs, those are just 256bit MULMODADDMOD, 8 gas each in EVM.

ed25519 scalarmult is comprised of doing 255+128 of those, the total is:

As for mutual funds/LETs with ability to span beyond immediate cliques - this has been tried before with Ripple classic. It ended up with new Ripple, which is essentialy classic banking. It is extremely difficult to create an automated credit scoring system. I pose that decentralized credit scoring is possible, but not in naive fashion you purport it to be.

@Wao in #ssbc
Re: %ksFB43iqh

@Dominic yes, I quite also idea to be separated, not to be tighten much.

@Wao dug [@yangwao](@NaDXehMSIgk08W5RXZJ0p+7m+19iIWEuAtD7FRESJX8=.ed25519) it would in #ssbc
@Wao in #ssbc
Re: %ksFB43iqh

I quite like idea. I'll be doing some smart contracts over Ethereum in August this year, so I probably gain some knowledge and help around with integration to ssb.

@cel you mean lightning network? Maybe @Habo would know. Or some kind of sidechains? There is lot of this around Bitcoin, but none is in production, only on testnets. Ethereum is further in this. But I maybe wrong and some things already changed.

Tokens for offline things would not work afaik. Ethereum is blockchain thing, where this need to be verified online, sadly.

@cellular in #ssbc
Re: %ksFB43iqh

@Wao Previously i thought about bitcoin integration in the context of mutual credit and collaborative funding: %yHnS2Mx...

a simple cryptocurrency integration would be to be able to publish a ssb message with a cryptocurrency transaction, and let pubs relay it to the cryptocurrency's network. to incentivize nodes to relay the transaction, i think a peer could include an extra transaction fee that could be claimed by whoever relays it. (i recall reading that bitcoin has such a protocol feature, which segwit makes use of, but i don't know what it is called. does anyone here know more about this? cc @ralphtheninja).

another level of integration would be to relay transactions from the cryptocurrency network into ssb. with bitcoin, i am not sure of a good way to do this. a feed could publish a message "please publish transactions sent to bitcoin address X", but i don't see much incentive for peers to heed these.

with ethereum, i think more integration would be possible. a contract could receive and validate ssb messages, storing the latest sequence, timestamp, and message id for each feed. if it stores or points to the feed's messages in sequence, then it could be used for replication. it could keep an ETH balance for each feed, to pay for the gas cost of adding a new valid message from that feed, and to reward the node that adds the message. then one could fund the contract to incentivize others to relay one's ssb messages to it.

i think we could similarly incentivize nodes to send ssb messages to the contract that match other criteria, like that relay transactions that send to a particular address, or that emit particular events. then it would be possible for a ssb peer to subscribe to transactions that are of interest to it. i think the contract would then need to index the ssb follow graph, so that "is in my feed's gossip neighborhood" can be part of a criteria that a ssb feed author funds/subscribes to - otherwise, a socially-disconnect node might send a ssb message to the contract and collect a reward, but ssb peers would not replicate the feed, so it would not be useful.

@ezdiy do you think this could work?

has anyone implemented verifying ed25119 signatures on ethereum? i have found an implementation of deriving secp256k keys in solidity, and vbuterin's implementation of ed25519 in python. what would be the gas cost to verify an ssb message?

what i am envisioning here is that ssb clients could eventually include wallet UIs for dealing with cryptocurrencies, so that uxers could send and receive tokens in the peer-to-peer offline-capable way of ssb.

@cellular in #ssbc
Re: %swj1Y0iI0

maybe i was overthinking this. anyway, the idea is there in case anyone wants to do anything with it.

@Mikey dug [@mixmix](@ye+QM09iPcDJD6YvQYjoQc7sLF/IFhmNbEqgdzQo3lQ=.ed25519) yes, sure. in #ssbc
@Kas voted # custom syntax highlighting [ssb-marked][] supports the [github-flavored-
@cellular in #ssbc

custom syntax highlighting

ssb-marked supports the github-flavored-markdown feature of specifying a language string in a markdown code block:

```[lang]
[code]
```

currently, git-ssb-web handles this language string and passes it to highlight.js for syntax-highlighting code blocks in markdown files and issue comments. i'm not aware of other ssb clients using this language field.

i propose doing something similar to custom emoji for the code language field: when using a language string for a code block, include a corresponding object in the mentions array of the message, linking to a blob that identifies or defines the syntax for the language. then clients could use this to highlight syntax for a language without needing to build in support for it.

highlight.js supports many languages, and defines them with a declarative format. i think these language definitions would be a good candidate for using as the contents of the linked blobs for languages syntax definitions. a downside is that some of the language definitions have circular references, so they cannot be encoded as straight JSON. (does this mean the language is context-sensitive?). i was able to fix the javascript one by disabling substitutions in template strings, but that might not be ideal. so probably a different encoding would be needed for these. there are various npm modules for encoding/decoding JSON with circular references, but i didn't find any with compatible implementations in other languages. there is also YAML, but i think that comes with more complexity than is needed here. does anyone have any other suggestions? i'm also open to other language syntax definition formats, with an interest towards cross-implementation compatibility.

@dominic in #ssbc
Re: %ksFB43iqh

@yangwao it would be pretty easy to associate a ssb id with a cryptocurrency address (sign a claim about the ssb id with the cc address then post it to ssb under that id) then you could make a payment to a ssb id, etc.

ssb could be used for all the things that needs to be tracked in an economy but doesn't need to be specifically consistent. Like, build the craig's list on ssb, but payments via eth.

@andrestaltz dug [@Wao](@NaDXehMSIgk08W5RXZJ0p+7m+19iIWEuAtD7FRESJX8=.ed25519) Only support in #ssbc
@ezdiy in #ssbc
Re: %ksFB43iqh

@Wao Only support for protocol handlers in clients and cosmetic stuff like that. Sure you can announce your currency tokens or whatever, but no meaningful interaction between the two protocols is possible as there is fundamental impendance mismatch:

Satoshi currencies have a consensus (as a core design property), ssb doesn't not (as a core design property).

Thus no tighter protocol integration is possible, because SSB can't serve as a coherent oracle for CC contracts.

@ezdiy in #ssbc
Re: %rCVYkYdCe

That prize is for wireless connectivity solutions (layer 3, basically). It will not fund the application layer.

Where does the NSF thing state that? From what I can tell, the reqs are pretty open ended. Common sense tells me that they want whole ready to deploy system, ie an app to which you "give wifi router, disk drive" and it does stuff - something ssb and few other mesh networking apps already do.

@ev in #ssbc
Re: %7a4hXeESi

A good test is can you disable that file and the rest of the app keeps working. - @dominic

^ better said.

@Wao in #ssbc
Re: %ksFB43iqh

How would cryptocurrency work on ssb? I think ethereum (tokens) would be sufficient for start?

@Wao dug I wrote a cli tool a while ago for building DAG-like work structures: https in #ssbc
@andrestaltz dug https://blog.mozilla.org/blog/2017/06/21/2-million-prize-decentralize-web-a in #ssbc
@andrestaltz dug # Funding / Support Saw this http://akina.org.nz/news/rotaryakl2017/ $10k in #ssbc
@andrestaltz dug [@mixmix](@ye+QM09iPcDJD6YvQYjoQc7sLF/IFhmNbEqgdzQo3lQ=.ed25519) yes, sure. in #ssbc
@neftaly in #ssbc
Re: %dzKt4CvrH

Also FWIW we're now using multihash in yardstick (Conqa's centralized distributed DB)

@dominic in #ssbc
Re: %7a4hXeESi

@mixmix yes, sure.

so here is some example, that I saw:

https://github.com/ssbc/patchbay/blob/master/message/html/compose.js#L68-L82

Here it loads a file-input, and exactly a file input. It would be more depjecty to for compose to just load "actions that can insert things into the markdown"

In other places, a depject modules are being split to finely, too many small files that are quite coupled . like here: https://github.com/pietgeursen/patch-gatherings/tree/master/gathering/html depject isn't doing anything useful there.

It would be more depjecty to for a module to represent a feature. A good test is can you disable that file and the rest of the app keeps working. Using require within a feature would make sense, i think.

@Mikey dug [@mixmix](@ye+QM09iPcDJD6YvQYjoQc7sLF/IFhmNbEqgdzQo3lQ=.ed25519) if you use in #ssbc
@mixxx in #ssbc
Re: %7a4hXeESi

are you hammered. I was a bit when I wrote the the dialogue part of that post on ben's computer

@ev in #ssbc
Re: %7a4hXeESi

@mixmix if you use a nail to hammer a nail into a hammer do you nail a hammer into a nail?

@mixxx in #ssbc
Re: %7a4hXeESi

@dominic useful to note this wasn't a critique of depject - this was an exploration of where it was making our lives better, and where it was worst. I think we were reflecting that in our zeal and excitement we used the hammer for the wrong things at time. We're thinking about what a moderated depject / require pattern might look like for core

@dominic in #ssbc
Re: %rCVYkYdCe

@customdesigned it is certainly possible to implement moderation, copyright or otherwise, you could post a message that some blob X is copyrighted. Then, peers following that feed would have to not replicate that blob. This would necessarily be opt-in, to prevent abuse of the censorship feature. Some people may wish to censor offensive, but not illegal content, and also different content may be illegal or not in different juristrictions.

@nichoth dug made a placeholder as a reminder to have a go at the mozilla thing : %3YgVx in #ssbc
@erkan dug > every minute is gonna be a lot! that is 60*24=1440 a day, and […] Curren in #ssbc
@mixxx in #ssbc
Re: %rCVYkYdCe

made a placeholder as a reminder to have a go at the mozilla thing : %3YgVxb6... , thanks for the reminder @olizilla

@CustomDesigned in #ssbc
Re: %rCVYkYdCe

The source feed could send a Delete message that signs the sequence numbers and hashes before and after the deleted range. Recipients could use that to validate the feed minus the censored message.

@CustomDesigned in #ssbc
Re: %rCVYkYdCe

today, the biggest headache of running NNTP server is to deal with censorship requests.

The NNTP server is (was) dishing out the censored content to thin clients (newsreaders). They cannot "unsend" the copies that went to other nodes. The censorship only works for thin clients using public nodes that receive the request.

With SSB, at least currently (except for maybe patchfoo), each user has their own copy of articles. This was how it was in the old days with NNTP. If you get a censorship request (sent to every SSB node?!), you have to stop sending the censored blob to peers. Or do you? If you only replicate to authorized peers, that isn't a "public" server in my book. But replicating copyrighted material (without a license) to private parties is still illegal in the US. I am obviously not a lawyer, but SSB would seem to count as "distribution".

I have more questions than answers.

So, couldn't the database mark censored items, and not send them? Is there a way to do so without messing up validation of the chain of posts?

@CustomDesigned dug > The US Constitution forbids Federal censorship. I don't know about that, in #ssbc
@Kas voted > The US Constitution forbids Federal censorship. I don't know about that,
@CustomDesigned in #ssbc
Re: %rCVYkYdCe

That prize is for wireless connectivity solutions (layer 3, basically). It will not fund the application layer.

@CustomDesigned in #ssbc
Re: %rCVYkYdCe

NNTP has been gossiping for decades. Have there been any legal problems for NNTP?

@CustomDesigned in #ssbc
Re: %rCVYkYdCe

Authorities do insist on having censorship power, and all internet platforms, with few notable exceptions - Tor, Retroshare and Freenet (and their various clones), comply.

The US Constitution forbids Federal censorship. And the 14th amendment can be construed to forbid it to States as well. But sadly, you are all too correct.

Consider this scenario. Fred says something really stupid and dangerous on SSB while drunk/high. Now he wants to delete it before the FBI shows up at his door. What can Fred do? Should SSB have any support for a Delete request (obviously, recipients don't have to comply)?

@CustomDesigned dug https://blog.mozilla.org/blog/2017/06/21/2-million-prize-decentralize-web-a in #ssbc
@CustomDesigned in #ssbc
Re: %rCVYkYdCe

Legal liability for users content - all parties involved (company doing a product on ssb, end users, pubs)

That is what worries me most, honestly. I've seen too many cases of government dropping the hammer on innocent folk in the name of a metaphorical "War" on SomeAbstractBadThing. Or even just incompetent pursuit of real criminals - like the 2009 case where FBI had the IP of some dude committing wire fraud, and seized all the servers in the data center as evidence.

That said, since most content is open, the government has all they need to pursue specific suspects - it just isn't all in one convenient place like facebook/twitter.

As long as the protocol is open, and there are solid free/libre implementations (preferably in several languages), there is plenty of room for competition in the GUI arena, both paid and free, libre and closed. For example, a gratis closed app could always subscribe you to an ad feed. Windows is a great platform for that sort of app, open source devs can concentrate on more open platforms.

@Kas in #ssbc
Re: %rCVYkYdCe

Rumble, Briar

I downloaded both to see what it was all about…

Rumble seems very promiscuous:

“Every message here will be forwarded to devices around you”

Worldwide? How is that going to scale [if the app becomes popular]? Or is the scope limited in geography or FOAF-wise (or should I say DOAD?)?

Briar: I can't seem to proceed without adding contacts face-to-face.

@CustomDesigned dug # art~hack patchcore discussion this is from ben's laptop butt from the br in #ssbc
@mixxx dug i am not sure about routes. i'm hesitant to specify a format for links that in #ssbc
@mixxx in #ssbc

Funding / Support

Saw this http://akina.org.nz/news/rotaryakl2017/ $10k grant

Could be a cheap thing to enter for ssbc. It got me thinking about reaching out the Akina about whether they would be interested in mentoring / supporting this project. They work with social enterprises, offering guidance and help them get a bunch of pro-bono work from larger organisation. I know a couple of people who work there.

I'm not really interested in SSBaaS, but I think we should be challenging organisations to think about what a "venture" can look like. I think of us as a thing that's doing important work, and I think we can do better than 1/10 survival-rate of the average startup.

@CustomDesigned dug Oh, we definitely need the hash extention. If we didn't have that, you'd ju in #ssbc
@CustomDesigned subscribed to channel #ssbc
@cellular voted # art~hack patchcore discussion this is from ben's laptop butt from the br
@dominic in #ssbc
Re: %7a4hXeESi

To be honest, I think patchcore uses "first" way too often, and it basically uses a module location pattern that puts the module at the same place as the name. (but this only makes sense with "first" because otherwise there is more than one thing with that name and then it can't follow that location pattern). Require always points to exactly where the module is.

depject was never about not using require - it was about not using require for opinions

But then, require can still be a confusing mess. see patchwork@2 for a reminder.

When you use first it should either because there are many things that you expect to potentially provide that opinion, or a default behaviour you can imagine being overridden. If you expect that there is exactly one way to do that thing, it's a fact not an opinion.

patchcore/sbot.js

This is an example of a case where there is a basic behaviour that gets over ridden. In patchbay@6 there is basic and embedded versions (embedded runs sbot in the UI thread, mainly for experiment, but still, it's just an opinion)

@Mikey dug # art~hack patchcore discussion this is from ben's laptop butt from the br in #ssbc
@mixxx dug ### Tech Tree [cel-ssb-tech-tree.txt](&QlNj+owC5yMkRfwFnMnAuiAk3MQD+bqSGaz in #ssbc
@regular voted I wrote a cli tool a while ago for building DAG-like work structures: https
@ezdiy in #ssbc
Re: %rCVYkYdCe

The US Constitution forbids Federal censorship.

I don't know about that, legal censorship is still extremely common - for example copyright takedowns, requests to remove libel, offensive material, illegal porn or nazi imagery (europe). Anyone running a reasonably big service with user data deal with those on day to day occurance. In the US, not responding within 48h removes your safe harbor and you are automatically liable.

NNTP has been gossiping for decades. Have there been any legal problems for NNTP?

Yes, plenty. And it's a good example - today, the biggest headache of running NNTP server is to deal with censorship requests.

At least on usenet you can choose not to carry alt.bin.* and alt.sex,* saving you a lot of trouble. No such thing on SSB.

@kas No idea about useabily of either app, just saying that there's been always a lot of effort in the mobile space wrt mesh (another example is opengarden). As for Briar, it has intentionally difficult onboarding until it's out of beta.

@ezdiy dug https://blog.mozilla.org/blog/2017/06/21/2-million-prize-decentralize-web-a in #ssbc
@ben in #ssbc
Re: %7a4hXeESi

#🍆 #art~hack

@ezdiy in #ssbc
Re: %rCVYkYdCe

@CustomDesigned

That said, since most content is open, the government has all they need to pursue specific suspects

The issue is that the protocol is too open. How do you censor a really, really bad blob? How do you coordinate it?

Authorities do insist on having censorship power, and all internet platforms, with few notable exceptions - Tor, Retroshare and Freenet (and their various clones), comply. In the even of mainstream popularity, the scale of the potential problems is expected to be almost that of Tor.

@olizilla Not sure why, but I'm reminded of Solid - Tim's half hearted attempts to make amends for his past sins.

SSB is a solid contender, but there are many other much more mature in the mobile space - Rumble, Briar to name a few.

@ben in #ssbc

art~hack patchcore discussion

this is from ben's laptop butt from the brains of @mmckegg @dinosaur @mixmix

mikey: "I think you should supply introductory context"
ben: "like a photo of the projector we're using?"
mixx: "...... i just got that"
matt: "dominic won't like this. the important thing is we have a lot of context, people will not understand, we should post this privately"

mikey: "the edges of depject"
matt: "after 6 months on depject and patchcore, the things that are rubbing me the wrong way"
mix: "the things we're both still using and or are nice to over-ride and the things where we're like what is that"

mix: "earlier we discussed how depject is rad, but it's also a horror, in that it enables a proliferation of apis, which is super dangerous and hard to maintain. So we decided to crawl the patchcore repo and figure out the what we think about different things"


depject will never help with:

Depject isn't giving us any particular advantage over require
for these particular things:

(The things that patchcore has that you want to use the
patchcore version and ensure you are using the patchcore
version of).

  • patchcore/blob/html/input.js
  • patchcore/blob/obs/has.js
  • patchcore/channel/obs/recent.js (not being used by either matt nor mix)
  • patchcore/channel/obs/subscribed.js
  • patchcore/contact/async.js (needs ssb-contacts)
  • patchcore/feed/obs/recent.js
  • patchcore/feed/obs/thread.js
  • patchcore/feed/pull/* (tightly coupled to indexes / plugins)
  • patchcore/lib (fuckoff)
  • patchcore/invite.js
  • patchcore/sbot.js (keep connection and stream)
  • patchcore/message/async/name.js (needs rewrite as obs)
  • patchcore/message/html/action/*.js (should be a reduce not a map)
  • patchcore/message/html/layout/*.js (needs paring back)
  • patchcore/message/html/meta/channel.js (roll your own in your own layout)
  • patchcore/message/html/author.js (not used? .. roll your own?)
  • patchcore/message/html/backlinks.js (stable, index dep)
  • patchcore/message/html/link.js (stupid, obsolete)

depject works well with:

(We like the patterns in these)

  • patchcore/blob/sync/url.js
  • patchcore/config.js
  • patchcore/emoji.js
  • patchcore/keys.js
  • patchcore/message/async/publish.js
  • patchcore/message/html/decorate/data-id.js
  • patchcore/message/html/render/*.js (fine)
  • patchcore/message/html/markdown.js (might need to swap)
  • patchcore/message/html/timestamp.js
  • patchcore/message/obs/*.js
  • patchcore/message/sync/root.js
  • patchcore/message/sync/unbox.js (...might want control over this?)

Nice Properties:

  • small (low complexity - predictable
    inputs and outputs. it has a single
    purpose that is safe to reimplement)
  • apps would want to fork it
  • stable primitive
@noffle in #ssbc
Re: %ksFB43iqh

I wrote a cli tool a while ago for building DAG-like work structures: https://github.com/noffle/tdag

screenshot.png

@lzlr in #ssbc
Re: %rCVYkYdCe

It will have to be monetization through non-free app.

This makes me think of @andrestaltz discussion of a mobile app... i would (will) gladly pay $5 for that as soon as it's available. Obviously, viral growth is reserved for apps that are "free", but nothing ever is... and i'm not sure super-virality is the objective (i'd prefer it weren't, but it's not my toys).

thinking of spaced-repetition/todo/dictionary apps in the Paid universe... perhaps there's hope for developer sustaining network engagement that is non-free.

Maybe fork off our own network?

in that discussion of "coinfusion" and the impracticality of digital currency, i thought of a (an?) use-case for an ethereum contract that would spin up independent SSB pubs (on Heroku?). hooray for collective payment of the network bills! i'd certainly use something like that among my close friends. we currently use Slack instead... but there's something less guerrilla about it, less crypto... less... #solarpunk :)

@ezdiy in #ssbc
Re: %rCVYkYdCe

@lzlr

in that discussion of "coinfusion" and the impracticality of digital currency?

No, this is not about any block chain fork (SSB has no blockchain to begin with), but a protocol fork (as in, git). Generally, you can integrate any CC with SSB the way you'd integrate it somewhere else - only fairly loose, user controlled interaction. You can't link CC contracts to SSB either.

It will have to be monetization through non-free app.

The standard on the table these days is always Canadian Devil:

  • global search
  • spam filters
  • consensus on pet names...
  • photo filters...
  • UI cosmetics (emoji etc)

As for honest, purely paid app, it sure is a way to sponsor development and would be beneficial in that it could remain opensource, but it is much harder to set up professional development for something like that (need to find a developer willing to work for/free peanuts first).

@ansuz in #ssbc
Re: %dzKt4CvrH

yes, otherwise your feeds can fork and the network can disagree about which is the real feed.

@olizilla dug [@CustomDesigned](@iOyfRmje5LFAErH7M3faTLNMQUTXCnjECbLtniVJ478=.ed25519) > in #ssbc
@ezdiy in #ssbc
Re: %rCVYkYdCe

"venture" can look like

I've been sporadically soliciting for a month now to get beancounters and codemonkeys together to see if something interesting could happen. This is the feedback thus far received:

  • Q> (eco) It will have to be monetization through non-free app. Maybe fork off our own network?
  • A> Why not SSB mainnet? Sure there will be competition, but users they gain still enhance your ecosystem. The onboarding cost of getting critical mass problem is cooperative!
  • Q> Err, sure, but why not just clone whatsapp/whatever?
  • A> Works fundamentally different. Potential to be disruptive enough to catch on.
  • Q> (tech) ecosystem is very NIH-ish, seasoned js programmers struggling to give estimates => unclear development costs
  • A> This will hopefuly improve, if the system comes to a point of diversification to get better choice of developer pool
  • Q> Legal liability for users content - all parties involved (company doing a product on ssb, end users, pubs)
  • A> Unchartered area, need to lawyer up first.
@olizilla dug # Funding / Support Saw this http://akina.org.nz/news/rotaryakl2017/ $10k in #ssbc
@olizilla in #ssbc
Re: %rCVYkYdCe

https://blog.mozilla.org/blog/2017/06/21/2-million-prize-decentralize-web-apply-today/

@cellular in #ssbc

Tech Tree

cel-ssb-tech-tree.txt

I'm probably missing some things here that I thought were important at some point, but this is what seems relevant to me today.

@cellular in #ssbc
Re: %b6nlgiAu3

@tom: ssb-mobile roadmap

@pie pete dug # art~hack patchcore discussion this is from ben's laptop butt from the br in #ssbc
@neftaly in #ssbc
Re: %dzKt4CvrH

If you post from one identity from multiple devices on the same threads, do they need to be synced for sequences to work correctly?

@neftaly in #ssbc
Re: %dzKt4CvrH

Shouldn't the sigils only be a user-interface hint? So if you type %whatever, the UI takes that as a hint to show an autocorrect, but it actually encodes it as a special symbol/token of sort (such as a URI). That'd make sigils/links way more extensible for 3rd party things too I guess.

@jbizzle dug ### Tech Tree [cel-ssb-tech-tree.txt](&QlNj+owC5yMkRfwFnMnAuiAk3MQD+bqSGaz in #ssbc
@nichoth dug ### Tech Tree [cel-ssb-tech-tree.txt](&QlNj+owC5yMkRfwFnMnAuiAk3MQD+bqSGaz in #ssbc
@neftaly in #ssbc
Re: %dzKt4CvrH

Regarding the hash extension, couldn't you then make a post with a broken hash algo key, that intentionally collides with the key of a legit message originally made with a non-broken key algo, and overwrites the index reference? Though I guess some kind of fix would be to ignore new messages containing any sort of blacklisted hashe (even just mentioning one in a comment body etc) after deprecation.

@jbizzle dug I wrote a cli tool a while ago for building DAG-like work structures: https in #ssbc
@coffee dug I wrote a cli tool a while ago for building DAG-like work structures: https in #ssbc
@tom in #ssbc
Re: %b6nlgiAu3

Great to hear there's work happening on this. Is there a publically viewable description of the dependency tree and related task list anywhere? Might help spread the work around. #apk

@Mikey dug ### Tech Tree [cel-ssb-tech-tree.txt](&QlNj+owC5yMkRfwFnMnAuiAk3MQD+bqSGaz in #ssbc
@jamen dug dnssb: `[ssb-dns]` git-ssb: `[post, git-repo, git-update, issue, issue-edit in #ssbc
@cellular in #ssbc
Re: %YCHmqr71j

i am not sure about routes. i'm hesitant to specify a format for links that are not cypherlinks.

for git-ssb, i have written up my current ideas for how to identify and link to a git object. this does not include linking to a diff, or a branch, or a file at a branch + path. linking to a git object at a line number could be done by appending #L<num> to the link id, and adding an additional property to the message with the line number if/where it is appropriate.

@Mikey dug [@ahdinosaur](@6ilZq3kN0F+dXFHAPjAwMm87JEb/VdB+LC9eIMW3sa0=.ed25519) thanks in #ssbc
@mixxx in #ssbc
Re: %YCHmqr71j

@ahdinosaur thanks for the PR feedback - posted some more thoughts : https://github.com/ssbc/patchbay/pull/118

@Mikey dug [@Matt](@FbGoHeEcePDG3Evemrc+hm+S77cXKf8BRQgkYinJggg=.ed25519) I wanna talk in #ssbc
@Matt dug [@Matt](@FbGoHeEcePDG3Evemrc+hm+S77cXKf8BRQgkYinJggg=.ed25519) I wanna talk in #ssbc
@pie pete dug [@Matt](@FbGoHeEcePDG3Evemrc+hm+S77cXKf8BRQgkYinJggg=.ed25519) I wanna talk in #ssbc
@mixxx in #ssbc

@Matt I wanna talk more about scuttle-flows and to help map out the possible pieces of the ecosystem you're naming.

Can we gatherings a meeting next week with the parties interested in investing?

Also, I want one of the pieces to be imMOUtable

@happy0 dug yep, there's been many discussions, here are some links: - [when @olizilla in #ssbc
@jiangplus dug Good to hear, [@Piet](@U5GvOKP/YUza9k53DSXxT0mk3PIrnyAmessvNfZl5E0=.ed25519 in #ssbc
@jiangplus dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@ansuz subscribed to channel #ssbc
@pie pete dug Current status: trying to compile `node-sodium` for iOS. Managed to compile in #ssbc
@andrestaltz in #ssbc
Re: %b6nlgiAu3

Current status: trying to compile node-sodium for iOS. Managed to compile libsodium for iOS arm64 (haven't tested it though), but to make the file build/Release/sodium.node I need to fight a bit with GYP and C compilation flags.

@regular subscribed to channel #ssbc
@dominic in #ssbc
Re: %dzKt4CvrH

Oh, we definitely need the hash extention. If we didn't have that, you'd just have to hash every object with every hash algorithm. If all the algorithms are secure, this would be secure, but what if one becomes insecure? Maybe you'd be able to generate an object that has the same sha2 hash as a given blake2 hash? (they are the same length)

But since we have the extention, we know that we mean specifically the blake or the sha hash.

You could use two different algorithms to refer to one object, and you'd need a lookup table to map the hashes, or hash everything twice.

Messages also have a hash property which indicates the primary hash algorithm the idea is to upgrade a hash, refer to that message's primary hash + new hash. maybe %<hash_sha256(msg)>.sha256/<hash_blake2(msg)>.blake2

Which effectively says "of all the messages with this sha256 hash, I mean the one that also has this blake2 hash" so if sha256 get weak, you can still refer to that object securely from new messages.

That is basically the plan, but not actually implemented yet.

@dominic in #ssbc
Re: %dzKt4CvrH

Re:sigils % & @ one reason was to have these as a user interface. The user types @ and that triggers autocomplete. Users are already familiar with this idea from twitter, etc. Context isn't quite enough, you can paste either types into a markdown post, so it help the UI to know which type it is. (blobs, messages, and feeds) are all stored different places.

We could use a protocol prefix, or on the links? as they are rendered? This would be an easy way to integrate with other p2p apps.

@dominic in #ssbc
Re: %dzKt4CvrH

Does each new post in a message chain add 1 to the last-seen sequence number?

no, it's sequence number per feed, so it's also the length of the current list of your posts.

If a message is not msg.sequence === latestSequence(feed_id) + 1 will be rejected as invalid.

It uses a number, because when you replicate each peer sends <id>:<sequence>. and one peer with the higher sequence for that id sends the messages the other is missing. This idea comes from the original amazon scuttlebutt paper. flowgossip.pdf

@Kas in #ssbc
Re: %dzKt4CvrH

A month ago I was a bit more naïve that today: %LfOpUwZ...

@neftaly in #ssbc
Re: %dzKt4CvrH

Also, I am concerned about having hash types in IDs, as there is a potential implication that (ignoring the fact that only SHA256 & ED25519 is currently supported) a SHA-3 ID for a bit of content is just an alias for a SHA-256 ID. Is this a thing?

@neftaly subscribed to channel #ssbc
@neftaly in #ssbc

I sent Dom the following last week, but he refused to answer unless I posted to SSB!

I've been having a play around with SSB, and was curious why messages and blobs have a distinct identifier? Couldn't you just infer what they are by context?
Also, why don't you use a protocol prefix for SSB identifiers? For example (based off https://tools.ietf.org/html/rfc6920):
ssb://sha-256;UuDYPy7ae9ese2I7opJxiWVPQcgtZEF4amYqb9qQLiw?type=message
cause then you could do clickable links etc

I would also like to know more about how sequence works -

  • Does each new post in a message chain add 1 to the last-seen sequence number?
  • What about messages that arrive late (and have a low seq number)?
  • What about messages that falsely claim to be from the future (sequence + 100)?
  • How is it different to simply inferring the sequence number from the previous prop?
@Olavi Haapala dug Okay, found something that could revolutionise everything: http://www.janea in #ssbc
@VictorBjelkholm dug Hell yeah. in #ssbc
@CustomDesigned in #ssbc
Re: %b6nlgiAu3

What about a javascript wrapper around native libsodium that queues calls, and feeds them to libsodium synchronously?

@CustomDesigned dug ## Dev diary: building an SSB app for Android Started making an SSB app fo in #ssbc
@Joey Hess dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@andrestaltz in #ssbc
Re: %2ZsMn39xq

I guess that means also relicensing easy-ssb-pub as AGPL, which is :+1: by me.

@andrestaltz dug done: %7lF0WSHzQVE+SVKWeY2F3buKGh4l+Bq2gGQcrxLcu54=.sha256 in #ssbc
@ansuz dug done: %7lF0WSHzQVE+SVKWeY2F3buKGh4l+Bq2gGQcrxLcu54=.sha256 in #ssbc
@ansuz dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@angelo voted done: %7lF0WSHzQVE+SVKWeY2F3buKGh4l+Bq2gGQcrxLcu54=.sha256
@noffle voted ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer
@Carlos Galarza dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@cellular in #ssbc
Re: %2ZsMn39xq

done: %7lF0WSH...

@Mikey dug that's quite like something I was imagining. We could then have module con in #ssbc
@mixxx dug ok cool, thanks all. i'll update the repo shortly in #ssbc
@mixxx in #ssbc
Re: %YCHmqr71j

that's quite like something I was imagining.

We could then have module contribute to router.sync.route and have views which didn't have the same socket path at all, like git.html.repo, git.html.diff.

That already feels like a way less cluttered and muddy space that router.html.page

@cellular in #ssbc
Re: %2ZsMn39xq

ok cool, thanks all. i'll update the repo shortly

@cellular voted Yes
@Matt dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@arj in #ssbc
Re: %2ZsMn39xq

Yes

@mixxx dug i'll try to respond to this more later. for now, i'll just add that despite in #ssbc
@Mikey in #ssbc
Re: %YCHmqr71j

I have a strong hunch that ther router should be seperated from element / view rendering

@mix okay cool. what if a "route" was a function (path) => (undefined | (props) => HTMLElement)? in english, what if a route was a function that receives the path, and returns either undefined (the path does not match this route) or a function that will render the properties (message, etc) into html.

@mixxx in #ssbc
Re: %YCHmqr71j

@dinosaur at the moment there's a challenge with routing in that patchbay and patchwork use different module / plug 'paths' to render a page.
I have a strong hunch that ther router should be seperated from element / view rendering ... at the moment they're fused in patchbay - you pass a message to app.html.page and it decides what to render. It was formally router.html.page but I made a partial step towards being similar to patchwork.

I think people should be able to consume views and routes however they want. At the moment they can't unless they follow some artibtrary pattern of inputs for a view. And the view does checking that it's ok that it's being called. Could be my rails legacy speaking but it feels like the wrong place to be doing that logic.

One idea is that there could be an early router part which parses the /git/:id/blob/:blobId etc. part out into an unambiguous object like

{ 
  type: 'git',
  repo: 'id',
  baseBranch: masterBranchId,
  diffBranch: diffBranch,
  filePath: '/router/html/page/gatherings.js'
}

Theree could also be layer here which does the checking of whether the parts are need to have a clear and rendereable route.

If it's legit the router invokes the view.

@mixxx dug [@mix](@ye+QM09iPcDJD6YvQYjoQc7sLF/IFhmNbEqgdzQo3lQ=.ed25519) here's a [str in #ssbc
@mixxx dug url encoding is so ugly. this is also an option which could work: https://w in #ssbc
@Mikey dug Related work: [ipfs ahdnling of links](https://github.com/ipld/specs/tree/m in #ssbc
@Aljoscha in #ssbc
Re: %YCHmqr71j

Related work: ipfs ahdnling of links

The ipfs guys define a general standard for following links from node to node. Something similar could be done for ssb messages. URIs could then simply correspond to such a format, e.g. by url-encoding it.

@cellular in #ssbc
Re: %YCHmqr71j

i'll try to respond to this more later. for now, i'll just add that despite how the git-ssb-web routes work, it is more useful for a link to a git-ssb object to include the message id of the message that pushed it, rather than the repo message id. you can still get the repo id from the git-update message, for use with the existing ssb-git-repo API. linking to the git-update message allows for deterministically finding the git object, by following hash links, whereas if the link is based on the root message id, you have to search forward to find the content.

@webi dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@Mikey dug url encoding is so ugly. this is also an option which could work: https://w in #ssbc
@Mikey in #ssbc
Re: %YCHmqr71j

@mix here's a strawman proposal:


"route path" format:

  • start with a / sigil
  • follows web standards for pathname, query (after ?), and hash (after #)
    • /gatherings: gatherings page
    • /git/:repoId/:type/:blobId/:file: how git-ssb-web routes pages
      • so the flume branch of scuttlebot, the package.json file: /git/%25M0TrM%2BoJT2i%2FphUJO%2FfZ2wkK2AN2FB1xK0tqR7SNj58%3D.sha256/blob/545a1edbeabbc77f82598a24f6a42ca839daf0fa/package.json
      • we could also do this with less pathname, more query

"router" api (basically web history api):

  • router.sync.open(path) opens a path in a new tab, starting new history
  • router.sync.push(path) changes current tab to path, pushing path to history
  • router.sync.set(path) changes current tab to path, overwrites history
  • router.sync.go(n) loads a path from history, n is a number (can be negative to go back)
  • router.sync.goBack() same as go(-1)
  • router.sync.goForward() same as go(1)
  • router.obs.path returns current path
  • router.obs.page returns current page html

"page" api (a plug that gives a page):

  • a function of shape (path) => HTMLElment | undefined
  • module path is router.html.page

@mixmix is it possible for you to describe how you do routing in patchbay, what problems you've encountered so far that you want to improve, or any context from your discussions so far regarding a common routing system for patch*?

:heart:

@angelo dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@angelo in #ssbc
Re: %2ZsMn39xq

:+1: sure thing

@dominic in #ssbc
Re: %YCHmqr71j

url encoding is so ugly. this is also an option which could work: https://www.npmjs.com/package/base64-url

@mixxx in #ssbc

Patch-router

We need a routing system for the patch-core eco-system. I'd love it to be common / shared.
Requirements are that :

  • a raw message / feed / blob id can take you to representation of that thing
  • for more complex systems (e.g. git-ssb), can provide links which can take someone to a very specific place e.g. :
    • the flume branch of scuttlebot, the package.json file
    • the diff between the scuttlebot master branch and flume branch, in package.json , Line 32

Related but different is an elegant and consistent way to represent these routes in markdown.
Also, should these links be URI encoded - this may or may not be a required for browsers... but could be fixed in the rendering of links in lite clients.

cc @cel @matt @mikey

@cellular voted Hell yeah.
@andrestaltz dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@andrestaltz in #ssbc
Re: %2ZsMn39xq

Hell yeah.

@mixxx dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@Mikey dug ### proposal: relicense ssb-viewer as AGPLv3+ when i started on ssb-viewer in #ssbc
@cellular in #ssbc

proposal: relicense ssb-viewer as AGPLv3+

when i started on ssb-viewer, it was a small, pretty basic thing, and i thought it would be most useful to people under a liberal license. but now i see it is being worked on significantly, and turning out to be a capable, useful client. being a web server, is a possible vector for antidisintermediation: %cuMtZxy...

to ensure freedom for users, would authors @arj, @angelo, and @andrestaltz be willing to license their existing contributions to ssb-viewer ( %MeCTQrz..., %UfT/1Xe...) under AGPLv3+?

@jolyon dug it's a layered word play - a hub for patches - sounds like git-hub - patch in #ssbc
@regular dug So I spent some hours trying [that](https://github.com/janeasystems/node-mo in #ssbc
@andrestaltz dug [@mafintosh](@jpq43ybzjW+u2lABZCPD8OVVvp85CKeY4qSlXTA31j4=.ed25519) just po in #ssbc
@Carlos Galarza dug ## Dev diary: building an SSB app for Android Started making an SSB app fo in #ssbc
@Carlos Galarza dug And... for Android https://github.com/InstantWebP2P/node-android in #ssbc
@dominic in #ssbc
Re: %b6nlgiAu3

@mafintosh just pointed me to a version of blake2b that he handwrote in web assembly (supported in node 8 and all browsers except IE) it's only 1/4 the speed of c sodium, and the output file is only 1.5k! possibly this is will just make crypto viable as is

@Matt dug it's a layered word play - a hub for patches - sounds like git-hub - patch in #ssbc
@Mikey dug > * "how to build ssb app" tutorial :ok_hand: * standard style :ok_hand: in #ssbc
@jamen dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@mixxx dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@mixxx in #ssbc
Re: %81APrvHuB

it's a layered word play

  • a hub for patches
  • sounds like git-hub
  • patch prefix = patchw* ecosystem
@pie pete dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@Mischa dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@andrestaltz in #ssbc
Re: %b6nlgiAu3

So I spent some hours trying that approach for scuttlebot (normal sbot as a background thread in ChakraCore in iOS, normal ssb-client in React Native) and basically I can't get it started because the background thread can't find native sodium and leveldb on iOS. I think there should be a way of getting https://github.com/mochtu/libsodium-ios into one of those npm sodium packages that bundle prebuilt bindings (should be an easy PR, right?) and same thing for leveldb, but this is far from my skills as I've never touched node.js native bindings.

@dominic some hints here?

I still want to push for this approach for a while since, once the native stuff are figured out, we can use our conventional approach of sbot server + ssb client with muxrpc to fetch data and display it, and it would be quite good as a basis for development since we wouldn't have to worry about performance due to a hacky stack of modules.

I could push the two efforts: the previous one for Android, and this new one for iOS. Whichever approach "wins" first in convenience and quality, we try to port to the other platform.

@Wao dug YUSS!!! :trumpet: :confetti_ball: :dancer: in #ssbc
@Wao dug :boom: !!! :dancer: :cocktail: in #ssbc
@Wao dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@Wao in #ssbc
Re: %9W+HJ7fPv
  • "how to build ssb app" tutorial :ok_hand:
  • standard style :ok_hand:
@Wao dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@jbizzle dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@jamen subscribed to channel #ssbc
@Mikey in #ssbc
Re: %9W+HJ7fPv
@andrestaltz in #ssbc
Re: %b6nlgiAu3

And gosh, this may help a ton, even though it's API doesn't match with fs, it's still an incredible asset to use: https://github.com/wkh237/react-native-fetch-blob

@andrestaltz dug - "content is always a blob hash": %Bsoq076eGE0g7YyWz2Wzh8TqM1SS6L0gg8nAwBV in #ssbc
@andrestaltz dug # wishlist (personal roadmap) draft (previous wishlist: %ycm4IqQ8iJn9VZGAc in #ssbc
@Mikey in #ssbc
Re: %9W+HJ7fPv
@andrestaltz in #ssbc
Re: %81APrvHuB

Ah I see, patch-hub as in "github". :+1:

@Mikey in #ssbc

wishlist (personal roadmap) draft

(previous wishlist: %ycm4IqQ...)

i notice that my wishlist (personal roadmap) is mostly disparate tasks, without many dependencies.

#somebodyshould #wishlist

@Mikey in #ssbc
Re: %81APrvHuB

@andrestaltz maybe https://github.com/ssbc/patch-hub

@andrestaltz in #ssbc
Re: %81APrvHuB

Nice!

Pardon my ignorance, what is patch-hub?

@andrestaltz dug _Tech Tree_ ![tech_tree_mix.png](&dqRc159CARTAaUALFuidojPXgCrAg+8fAox8kFnn in #ssbc
@Mikey dug _Tech Tree_ ![tech_tree_mix.png](&dqRc159CARTAaUALFuidojPXgCrAg+8fAox8kFnn in #ssbc
@mixxx in #ssbc

Tech Tree

tech_tree_mix.png

The lines are sometimes not hard deps, rather things I imagine doing in a particular order.
Note I have very little idea about what I'm doing in the git-ssb domain (yet)

@andrestaltz in #ssbc
Re: %b6nlgiAu3

And... for Android https://github.com/InstantWebP2P/node-android

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Another link (discoverable from the first, but not so obvious): https://github.com/janeasystems/node-mobile-react-demo

Peer-to-peer shared album app, based on Node.js on mobile running a PouchDB server, with a React Native interface.
The app uses Node.js to set up a UDP broadcast communication layer that enables synchronization of the PouchDB database between all the peers on the local network.
PouchDB uses MemDOWN for the levelDB adapter, which stores the database in memory only, with no persistence between runs.

@andrestaltz in #ssbc
Re: %b6nlgiAu3

Okay, found something that could revolutionise everything: http://www.janeasystems.com/blog/node-js-meets-ios/

Basically, running normal node.js on a different thread than React Native's JS thread. This would have the benefit of (1) not having to carefully hackily port node.js stuff to RN, (2) being on a different thread than JS for UI.

Point (2) was actually spinning in my mind already when I accidentally started syncing my phone with my computer's ssb feeds. It's not a good idea to have hard core SSB stack and UI in the same process or thread. Patch* already separates these, as far as I know. Even when you run sbot server on one terminal, and sbot feed, you also have multiprocessing going on. So it would be natural to expect multiprocessing/multithreading for mobile.

I'm going to give that approach a shot, while pausing this approach, but just for a while, I don't want to spend to much time on this detour.

@dominic in #ssbc
Re: %jeAzYsgXW

Okay I just confirmed that udp broadcast works both between my laptop and phone and back, both ways.
This is running linux in a container on the phone.

But if that works, the problem is somewhere between the app and that, but there isn't a firewall, obviously. I feel that is something I'd definitely want if I was writing a game, so it's gotta be possible.

I looked at mdns and stuff when I first started building this stuff, but it needed a binary addon, etc, and just made a quite simple thing quite complicated.

@Mikey dug Updated the roadmap! ![ssb-mobile-roadmap.svg](&l0lXvSEO7FmrQ10bQfd2rrSo24 in #ssbc
@andrestaltz in #ssbc
Re: %jeAzYsgXW

(would probably make sense to put the svg itself in git, but it's also nice to have it visually in Patch*, so maybe I won't make it a git repo)

@andrestaltz in #ssbc
Re: %jeAzYsgXW

Updated the roadmap!

ssb-mobile-roadmap.svg

@andrestaltz in #ssbc
Re: %jeAzYsgXW

Good to hear, @Piet!

@Soggypretzels

How hard do you think Bluetooth would be to implement?

Hard, but certainly possible. There are actually some libraries out there that do this, but none (that I know of) are open source. For some reason people want to make a business out of bluetooth P2P.

Either we would have to hope they open source this, or we need to build it ourselves with plenty of hours of effort with Java development and ObjectiveC or Swift.

@dominic

I think the most enabling thing here would be a proper fs interface.

Yes, agreed. Enabling blobs is quite important.

my linux on andoid can receive my laptop's UDP multicast, at least. Phone is providing the wifi.

That sounds normal, I think I did the same. But two android devices receiving each other's multicast didn't work, for some reason. When I ran arp -a on one of my phones, it showed my LAN gateway and my computer only, not other devices.

@andrestaltz dug So great seeing your roadmap [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc in #ssbc
@andrestaltz dug [@piet](@U5GvOKP/YUza9k53DSXxT0mk3PIrnyAmessvNfZl5E0=.ed25519) shs is secre in #ssbc
@dominic in #ssbc
Re: %jeAzYsgXW

my linux on andoid can receive my laptop's UDP multicast, at least. Phone is providing the wifi.

@Matt dug So two news: - I accidentally left Patchwork opened on the computer and my in #ssbc
@pie pete dug [@piet](@U5GvOKP/YUza9k53DSXxT0mk3PIrnyAmessvNfZl5E0=.ed25519) shs is secre in #ssbc
@mixxx dug So two news: - I accidentally left Patchwork opened on the computer and my in #ssbc
@mixxx dug [@piet](@U5GvOKP/YUza9k53DSXxT0mk3PIrnyAmessvNfZl5E0=.ed25519) shs is secre in #ssbc
@dominic in #ssbc
Re: %jeAzYsgXW

@piet shs is secret-handshake. I think most of the work with changing to async crypto is rewriting the javascript, especially the parts of the application that assume a function is gonna be sync.

If you really wanna get your low level hands dirty
I think the most enabling thing here would be a proper fs interface.
It would need open, read, write, stat, readdir, mkdir, ftruncate, fsync, fdatasync, close ... just the low level functions in the fs module, i.e. the ones that are about file descriptors instead of paths.

This will enable flume & blobs (and the various other things that use fs)

@nickname in #ssbc
Re: %jeAzYsgXW

fallback for LAN discovery

How hard do you think Bluetooth would be to implement? I had a dream of two people meeting over drinks, casually bumping their phones to allow NFC to negotiate some handshake and the phones quietly scuttling over an ad-hoc network in the background.

@pie pete in #ssbc
Re: %jeAzYsgXW

So great seeing your roadmap @andrestaltz

I've been meaning to learn how node does stuff with native libs and the leaf in your tree about making the crypto async pushed me into having a play with libsodium.

I spent the last couple of days playing with adding an async version of sodium's crypto_secretbox_easy and crypto_secretbox_open_easy

I got those functions passing tests but it took me quite a while (very rusty c++)

@Dominic This was more of a spike, but I'm keen to have a crack at making async versions of the most performance critical crypto functions.
Can you tell me what those functions are?
What's shs (mentioned above)?

@mixxx dug here's a tasty pull request: %Hmi6csTK6JLq2QejKDQvliuNhUmCrUA+J56m44l9PA0=. in #ssbc
@andrestaltz in #ssbc
Re: %b6nlgiAu3

s/jsDNS/jmDNS/

@andrestaltz in #ssbc
Re: %b6nlgiAu3

So two news:

  • I accidentally left Patchwork opened on the computer and my phone started syncing my real feed data!

long-feed-on-mobile.jpg

Was so fun to do this mistake and see things working :)

Second news:

  • Could not get two phones replicating their feeds in realtime through LAN

Because Google apparently pooped on Android: https://android.stackexchange.com/questions/49188/how-to-get-mdns-working-for-chrome-on-android

I figured I have to use something called jsDNS for Java and/or Android. Might be time for creating react-native-jmdns. Or I could try using react-native-ssdp and wrapping that as an sbot plugin.

@andrestaltz in #ssbc
Re: %jeAzYsgXW

Another thing I could add to the roadmap

  • Use node-ssdp (UPnP) to allow LAN discovery of SSB peers

In a quick test with two android devices in the same LAN, they weren't able to find each other through sbot's own multicast dns thing. Maybe there's some bug there, but it would anyway be good to have a fallback for LAN discovery.

@Mikey in #ssbc
Re: %K4IGzX2og

here's a tasty pull request: %Hmi6csT... :watermelon:


i'm trying to go back on the git-ssb train. i need to remember that git-ssb-web is so easy and great.

npm install -g git-ssb # if not already
# with sbot running (or Patchwork)
git ssb web

browse to http://localhost:7718/%25Hmi6csTK6JLq2QejKDQvliuNhUmCrUA%2BJ56m44l9PA0%3D.sha256

@andrestaltz dug I've just added some content to the ssbc handbook: - **blogposts** : [@and in #ssbc
@Mikey dug I've just added some content to the ssbc handbook: - **blogposts** : [@and in #ssbc
@regular dug I've just added some content to the ssbc handbook: - **blogposts** : [@and in #ssbc
@cellular voted I've just added some content to the ssbc handbook: - **blogposts** : [@and
@mixxx in #ssbc

I've just added some content to the ssbc handbook:

  • blogposts : @andrestaltz sensatinal Off-grid social network
  • guides : @noffle's tasty git-ssb-intro
  • media : the articles that the media have written (that have legit names on them or aren't copypasta)

Are we missing any sweet content?

Check it out : scuttlebutt.nz

PRs welcome : https://github.com/ssbc/ssb-handbook

@Toady voted [@johnny](@dnr1swLSAgf36g+FzGjNLgmytj2IIyDaYeKZ7F5GdzY=.ed25519) that is a
@dominic in #ssbc
Re: %fXv6M90EY

@johnny that is a policy matter, I think by default you have to follow it. you can also set

"master": [<key>,...]

in your config and then those keys will be given full api access, just like adding to ~/.ssh/authorized_keys

@johnny voted [@johnny](@dnr1swLSAgf36g+FzGjNLgmytj2IIyDaYeKZ7F5GdzY=.ed25519) that is a
@Kas voted [@johnny](@dnr1swLSAgf36g+FzGjNLgmytj2IIyDaYeKZ7F5GdzY=.ed25519) that is a
@johnny in #ssbc
Re: %fXv6M90EY

@EMovhfI...

will an sbot allow connection from an ssb-client if the keys loaded into ssb-client are followed by that bot? or only if it is the "owner"

@johnny voted [@kas](@dBQlwh9Gtr3i5YMOGtIOKtGNVepeu+nyb6KGl1vtOcM=.ed25519) correction: i
@Kas in #ssbc
Re: %fXv6M90EY

you can use ssb-feed to create a feed "remotely"

Thanks, I didn't know that! :+1:

@regular subscribed to channel #ssbc
@andrestaltz in #ssbc
Re: %jeAzYsgXW

Agreed. And when it comes to using async crypto everywhere, we can at least be aware to not add new sync crypto code in the stack.

@andrestaltz dug We should time things like this for when they are most exciting to work on. in #ssbc
@dominic in #ssbc
Re: %jeAzYsgXW

We should time things like this for when they are most exciting to work on. We want it to feel like something has happened, theirfore it should wait until at least we have a usable mobile client.

@andrestaltz in #ssbc
Re: %jeAzYsgXW

Hmm yeah and I realized this task doesn't need to be done necessarily after react-native-sodium. So it's not depending on anything else in order to be started.

@andrestaltz dug Hmm, for "fix all crypto to be callback based" that is gonna be a pretty ma in #ssbc
@jolyon dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@cellular voted # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9
@ralphtheninja dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@Kas voted [@kas](@dBQlwh9Gtr3i5YMOGtIOKtGNVepeu+nyb6KGl1vtOcM=.ed25519) correction: i
@dominic in #ssbc
Re: %jeAzYsgXW

Hmm, for "fix all crypto to be callback based" that is gonna be a pretty mammoth task: but, if we do the easiest parts first, not such a big deal: shs will be the easiest, because it's decoupled from everything else. Then signatures (for message verification) and private messages.

@pie pete dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@nickname dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@dominic in #ssbc
Re: %fXv6M90EY

@kas correction: it's cumbersom to use multilpe id's via patchwork, but if you just want to post a message it's actually pretty easy. you can use ssb-feed to create a feed "remotely", using sbot via the client api but creating valid messages for a new feed.

One day's worth of data is not much, but @angelo is not building something that runs for just one day, he's gonna keep it running a long time.
After a week or two, it's gonna be the biggest single feed.

And of course, it's not just this moisture data, there are loads of other sources of sensor data that might be interesting!

@andrestaltz in #ssbc
Re: %b6nlgiAu3

LAN sync from mobile sbot to remote sbot

So this one actually works too. Both directions of syncing works. What doesn't work, which I'm investigating currently is: ssb on mobile should be able to fetch its stored feed and display it. But it can't, unless it connects to another peer. As soon as it is connected to another peer, subsequent calls to pull(ssb.createFeedStream(), something) will work as expected.

@Kas in #ssbc
Re: %fXv6M90EY

every minute is gonna be a lot! that is 60*24=1440 a day, and […]

Currently it is cumbersome to use multiple SSB identities on the same computer: you either need to run multiple instances of sbot [at different ports], which is very resource heavy, or you need to switch between multiple secret files, which is also a drag (with shutdown, restart, and whatnot).

It would be great if sbot could do the equivalent of virtual hosts on a webserver: one sbot instance could ‘serve’ multiple secret files. That way, one could post data to a separate account that isn't used for anything else won't be replicated by people who do not wish to do so.

That said, 1440 × 600 bytes == 844 kB is not an awful lot of data. I assume hardly anyone would raise an eyebrow if I posted less than a handful of JPGs daily on a photo log. Isn't the ‘problem’ with @angelo's data rather that it's relevant only to a very limited forum?

@ub|k dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@jbizzle dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@xj9 dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@winmix dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@Mikey dug # ssb-mobile roadmap ![ssb-mobile-roadmap.svg](&mSltK2OdIP21t0zBbT/Bwqf7d9 in #ssbc
@andrestaltz in #ssbc

ssb-mobile roadmap

ssb-mobile-roadmap.svg

green is done
yellow is in progress
gray is untouched

notice also some hashtags, they describe the knowledge needed to tackle each piece.

(PS: I'm calling it roadmap, not tech tree, because according to the dictionary there's nothing in "roadmap" that makes it strictly a list: "a plan or guide for future actions")

@angelo in #ssbc
Re: %pd7hgCZcU

@nichoth I just pushed the code involved in this git-ssb...

the code for the ssb logger: %scoopninja-datalogger
the code for the microcontroller w/ sensors: %moisturelogger

Not sure if it's interesting or useful to anyone else. There's not a whole lot there at the moment, it's pretty simple.

@mycognosist dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@angelo voted or it could publish a message only when the moisture has changed past some
@angelo voted [@angelo](@f0fnLU+tV6pQKbSXaE3azBvvjmru/9wexJYFA9XFAs8=.ed25519) we don't a
@Mikey dug or it could publish a message only when the moisture has changed past some in #ssbc
@cellular in #ssbc
Re: %fXv6M90EY

or it could publish a message only when the moisture has changed past some threshold, rather than at an interval. then it could be useful for alerts, but not take up as much data.

@dominic in #ssbc
Re: %fXv6M90EY

@angelo we don't actually have any side protocols yet. But a close thing is that there are several protocols in ssb, for example %ssb-blobs.

If you really want a realtime feed instead of an archived one, have a look at hypervision: https://github.com/mafintosh/hypervision

@cellular voted @cel That ended up being pretty easy and not as bad to scroll past. Looks a
@Aljoscha dug Oh I see now that "You can create a new feed for each weird project, rather in #ssbc
@Matt dug Ah, awesome. I like the sound of scopes! Being able to indicate a feed is m in #ssbc
@angelo in #ssbc
Re: %fXv6M90EY

Ah, awesome. I like the sound of scopes! Being able to indicate a feed is meant for a specific app or is of an overall type feels at first glance like a great way to enable sharing of the network without everything smashing in to everything else. And, if clients want to continue showing the firehose of everything they still can.

I can also imagine some folks may want to go further than just filtering display of scopes, but may just want to opt to stay away from the data. That may be due to expected size of the data or other things. I suppose that could cause downstream effects when it comes to replication of data, but it would be easier than whack-a-mole blocking everyone using x app and sucking up disk/bandwidth/etc all over the place.

@angelo in #ssbc
Re: %uX+MolQ45

@cel That ended up being pretty easy and not as bad to scroll past. Looks a lot like patchbay now. Thanks for the pointer!

@Matt in #ssbc
Re: %fXv6M90EY

Oh I see now that "You can create a new feed for each weird project, rather than polluting your main social identity" is already what you are doing. Never mind then!

But I do have plans to add "scopes" to feeds. So you can say that a particular feed is for "Ferment" or "PatchGit" and then it won't display at all in other clients (well at least not in Patchwork). Pubs will still replicate you, but other apps won't touch it.

This is slightly nicer than just using a different network key because you can still leverage existing pubs!

@Matt in #ssbc
Re: %fXv6M90EY

Patchwork doesn't show messages it doesn't know how to render.

What it does do is allow links to non-patchwork messages and it will attempt to open them with an external app (at the moment only git-ssb does this falling back to git.scuttlebot.io, but ideally will work with PatchHub once that is a thing).

Something to keep in mind is that "identities" are essentially free! You can create a new feed for each weird project, rather than polluting your main social identity. Then if people get annoyed by how much data it's taking up, they can block it (without blocking you too) :laughing:

@angelo in #ssbc
Re: %fXv6M90EY

@Dominic Ah, that makes sense. I'll do some thinking on it and look in to blobs.

I need to sit down and revisit the goals I have... for this specifically and the wider implications I had started thinking about (data streaming, exploration, and visualization based on SSB. I think your proposal makes a lot of sense for data storage, replication, and sharing. At first glance it would make it less useful for any amount of real-time handling of the data.

Do you have any examples of existing side-protocols that could help guide my thinking?

Thanks! I appreciate the discussion!

@ansuz in #ssbc
Re: %fXv6M90EY

What about using the app key to make your sensor use a diffferent network? A single pub could gather it all up, and expose it all via a web interface. Sort of a smart home setup, but your lightbulbs won't break if the pub goes down.

@Aljoscha in #ssbc
Re: %fXv6M90EY

I'd argue against explicit hiding and rather for not showing unknown message types by default. Anybody can post any kind of (free-form) message, having to opt-out on a case-by-case basis seems unreasonable. And while something like hidden: true is a nice convention, there is absolutely no guarantee that all messages you might receive will follow that convention. Actually, there might be message types which are fully intended to be displayed - your client just does not know how.

In a dev-focussed client it might make sense to display unknown messages, ideally with a way to access the raw json. But for something like patchwork, the UI should probably find a better way to deal with unknown message types.

@angelo voted > I modified patchfoo locally to hide these messages you could also of cou
@ivan dug ## Dev diary: building an SSB app for Android Started making an SSB app fo in #ssbc
@xj9 dug [@angelo](@f0fnLU+tV6pQKbSXaE3azBvvjmru/9wexJYFA9XFAs8=.ed25519) I'm not sa in #ssbc
@xj9 dug One of the main things that bothers me with Unicode emoji is the fact that, in #ssbc
@xj9 dug I've been looking into binary formats lately. I highly recommend looking in in #ssbc
@angelo in #ssbc
Re: %pd7hgCZcU

@nichoth That describes where my thinking started, but the microcontrollers I'm using don't have the capability to run node/SSB.

What I ended up doing right now is I have a pine64 board also on my network running a small web service and SSB to collect the data from the sensors. My local network is pretty reliable so it at least solve internet connectivity issues or web service outage issues. It also keeps my data at home.

I plan on sharing my code at some point for both the sensor controllers and little SSB logger web service -- it isn't anywhere at the moment, it's an embarrassing mess. ;)

I'm actually also streaming this data to ubidots.com since it was quick and easy to set up, but costs money eventually. I also can't really slice and dice the data on my terms, only within their widgets. I'd prefer to own my data.

If I wasn't using SSB as the way to store it at home I'd probably run a database server on something and push the data in there. I could also just shove the data out to CSV and load in a spreadsheet app and look at the data there. Maybe those are still better options for this kind of streaming data. Then I have to worry about backups, instead of SSB just... well... keeping my data everywhere! :)

@angelo in #ssbc
Re: %fXv6M90EY

That's a great point. So, for reference here's about the last 12 hours of data (rendered from another source I'm shipping this data to at the moment):

12 hours of moisture data graph

I find the data personally interesting, but not super actionable at that granularity. Less granular data could still work for alerts that I need to water or take action. Having something able to just watch the feed of one or more of these and then notify me is one of the uses.

Next, I want to see trends over time, especially once I get temperature, sunny-ness, and some other things also lined up with the moisture data. Having slightly more granular data seems better there for slicing and dicing. Sun (with clouds or shadows) may change more frequently. Temperature less so.

It's totally possible that SSB isn't quite the right thing for this. Having a feed of this data is nice (I haven't actually starting utilizing the data I'm sending in to SSB yet, so we'll see how it works out in practice), especially if it's just available on other machines around without need to do any special syncing (outside of running SSB).

@angelo in #ssbc

Okay, so, not sure if this is something that anyone's thought about yet: noisy SSB data messages.

I've been building a plant monitor -- soil moisture, etc -- and I started tossing the data in to SSB w/ a new type. It's on my network, so I gossip to it, but I'm not a friend so it isn't being sent anywhere else at the moment.

I see this in my feed... it takes a recording every minute:
2017-05-31 at 10.54 PM.png

I modified patchfoo locally to hide these messages, but I'd like to find a way not to possibly spam the network with these and bother everyone else.

Has there ever been a proposal for some sort of extra information on a message to basically indicate "do not show this message in a standard message UI/feed"? I'm thinking about adding some sort of UI to patch* to enable graphing these types of messages for a given feed ID or even building a dashboard.

I thought initially about maybe proposing a hidden: true property to the message, but hidden doesn't feel quite right. Thoughts from the #ssbc crew?

@angelo voted this
@angelo voted One of the main things that bothers me with Unicode emoji is the fact that,
@Carlos Galarza dug One of the main things that bothers me with Unicode emoji is the fact that, in #ssbc
@Carlos Galarza dug I'm imagining distributed recipes for emojis and emoji-combinations. If we in #ssbc
@Carlos Galarza dug So, whenever you reference an emoji, you also include the hash of the blob in #ssbc
@Carlos Galarza dug Burn the unicode consortium! :fire: :smile: :globe_with_meridians: :bank: in #ssbc
@Carlos Galarza dug @andrestaltz that would be up to how the client/application is implemented. in #ssbc
@Carlos Galarza dug Good suggestion, @cel. I like the motivations. in #ssbc
@Carlos Galarza dug Why not? Sounds okay by me, since it's just how some client may interpret a in #ssbc
@Carlos Galarza dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@jdormit in #ssbc
Re: %zVCGMJzjR

I'll have to explore the ecosystem a little bit! Thanks for the reply :)

@jdormit in #ssbc
Re: %zVCGMJzjR

Listening to it now! Love that ssb is getting more exposure.

It got me interested in contributing. Is there a good place to get started?

@Olavi Haapala dug The podcast is now published!! https://softwareengineeringdaily.com/2017/05 in #ssbc
@Olavi Haapala dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@Olavi Haapala voted [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc4Y7wYal7PFc+w=.ed25519) :thum
@Olavi Haapala dug [@andrestaltz](@QlCTpvY7p9ty2yOFrv1WU1AE88aoQc4Y7wYal7PFc+w=.ed25519) :thum in #ssbc
@Mark Bennett dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@nanomonkey in #ssbc
Re: %RfQ2qb/wq

@mixmix I was just wondering when there would be the first reference to the Magister Ludi

@nanomonkey dug I'm imagining distributed recipes for emojis and emoji-combinations. If we in #ssbc
@nanomonkey in #ssbc
Re: %RfQ2qb/wq

Can we embed our own custom svg emoji also? That would be cool.

@jolyon dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@nickname dug Okay, so, not sure if this is something that anyone's thought about yet: no in #ssbc
@nickname in #ssbc
Re: %RfQ2qb/wq

One of the main things that bothers me with Unicode emoji is the fact that, as a font they can be rendered differently, but because the meaning of an emoji is often more symbolic than literal, even slight changes to the way it is displayed can drastically change the meaning of the message. I could be sending a message on my android phone, and when I read the same message on an iPhone I come off as more of an asshole, just because the eyebrows for that emoji on the iOS font are a little more angled than on the android font or whatever.

When I use a custom emoji I would want it to be tied with a specific image. If someone uploads their own version of :dearGodWhy: that seems like a synonymous emoji, it could still have a very different meaning in another context that could cause me to be misinterpreted. Obviously, just like anything else, there is nothing stopping clients from displaying whatever they want. However, I feel that each emoji use should be somehow associated with a specific blob if we want to truly retain message immutability.

@ColinMcCahon dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@cblgh dug Okay, so, not sure if this is something that anyone's thought about yet: no in #ssbc
@cblgh dug > Can we embed our own custom svg emoji also? Everyone please keep in mind in #ssbc
@cblgh dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@cblgh dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@Kas voted every minute is gonna be a lot! that is 60*24=1440 a day, and a message wit
@Kas voted One of the main things that bothers me with Unicode emoji is the fact that,
@Kas voted Will moving to in-feed emoji fix my terrible broken Windows Patchwork emoji
@Kas in #ssbc
Re: %RfQ2qb/wq

We can just make all emoji custom emoji.

:thumbsup:

@Kas in #ssbc
Re: %RfQ2qb/wq

Good suggestion, @cel. I like the motivations.

@Kas voted # proposal: custom emoji example: > ``` { type: "post", text: "post co
@nichoth dug @nichoth That describes where my thinking started, but the [microcontroller in #ssbc
@nichoth in #ssbc
Re: %fXv6M90EY

This is an interesting example. Is your application open source? A distributed architecture would be nice to have. You could be storing data in a sensor, then need to collect it and synchronize it at a later time if the sensor loses the network connection. What made you choose ssb, and what other tools are available that could do this? (I know very little about ssb, so can't say how useful it is here)

@Aljoscha in #ssbc
Re: %RfQ2qb/wq

Can we embed our own custom svg emoji also?

Everyone please keep in mind that ssb is not tied to web technologies in any way. Rendering markdown in native GUI libraries is pretty simple, and so is embedding raster graphics. Svgs however require a dedicated engine, limiting the usefulness of lightweight clients (and by lightweight I mean something like a gtk application or a tui, not a browser tab).

@jbizzle dug [@angelo](@f0fnLU+tV6pQKbSXaE3azBvvjmru/9wexJYFA9XFAs8=.ed25519) I'm not sa in #ssbc
@jbizzle in #ssbc
Re: %fXv6M90EY

This is interesting to me as well. I don't know if there is any type of deduplication built into ssb, but your example got me wondering if the data is similar enough to be a good use-case for a sort of dedupe compression

@jbizzle in #ssbc
Re: %RfQ2qb/wq

I'm very interested in this proposal

just to add: @chambaz and I have been talking about the possibility for subjective emojis. Our thoughts are mainly that anyone could assert any emoji to map to an image of their choosing, and when reading a message with that emoji they'll see their subjective assertion in the message rendering :smile:

@andrestaltz dug Burn the unicode consortium! :fire: :smile: :globe_with_meridians: :bank: in #ssbc
@andrestaltz in #ssbc
Re: %RfQ2qb/wq

Why not? Sounds okay by me, since it's just how some client may interpret a message. How would clients choose to install this feature or not? depject?

@andrestaltz dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@andrestaltz dug I'll have to explore the ecosystem a little bit! Thanks for the reply :) in #ssbc
@andrestaltz dug Listening to it now! Love that `ssb` is getting more exposure. It got me i in #ssbc
@winmix dug The podcast is now published!! https://softwareengineeringdaily.com/2017/05 in #ssbc
@winmix dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@jfr dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@eos voted Okay, so, not sure if this is something that anyone's thought about yet: no
@eos dug # patch-gatherings is live > Plan gatherings / events on scuttlebutt! Hola in #ssbc
@eos subscribed to channel #ssbc
@pie pete dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@dangerousbeans dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@dangerousbeans in #ssbc
Re: %b6nlgiAu3

:sparkling_heart:

@dangerousbeans dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@dangerousbeans dug ![device-2017-03-17-233002.png](&U7Wk16nOcSCISXKhe3YMToQJ2COFhue8pLMW0R4IVX in #ssbc
@interfect in #ssbc
Re: %RfQ2qb/wq

Will moving to in-feed emoji fix my terrible broken Windows Patchwork emoji? We can just make all emoji custom emoji.

@Iain Kurkporkchop dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@radsocks69 dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@Matt in #ssbc
Re: %RfQ2qb/wq

@interfect Yes! But we should also just fix the terrible broken windows emoji :laughing:

@Matt in #ssbc
Re: %RfQ2qb/wq

:thumbsup:

Yes! This is really nice!

@Matt dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@arj dug :raised_hands: :raised_hands: :raised_hands: :raised_hands: :raised_hands: in #ssbc
@Mikey dug That's a great point. So, for reference here's about the last 12 hours of d in #ssbc
@Mikey dug # proposal: custom emoji example: > ``` { type: "post", text: "post co in #ssbc
@Mikey dug The podcast is now published!! https://softwareengineeringdaily.com/2017/05 in #ssbc