dhruvbaldawa has quit [Read error: Connection reset by peer]
spossiba has quit [Remote host closed the connection]
spossiba has joined #ipfs
rtjure has joined #ipfs
kvda has joined #ipfs
dhruvbaldawa has joined #ipfs
neosloth has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
mildred3 has quit [Ping timeout: 240 seconds]
neosloth has left #ipfs ["Killed buffer"]
dhruvbaldawa has joined #ipfs
upperdeck has quit [Read error: Connection reset by peer]
dhruvbaldawa has quit [Read error: Connection reset by peer]
upperdeck has joined #ipfs
niekie has quit [Quit: No Ping reply in 180 seconds.]
dhruvbaldawa has joined #ipfs
niekie has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
Milijus has quit [Ping timeout: 260 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
charley has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
TheWhisper[m] has joined #ipfs
pawalls has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
Emilylovesleep[m has joined #ipfs
charley has joined #ipfs
echoSMILE has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
pawalls has quit [Remote host closed the connection]
pawalls has joined #ipfs
neosloth has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
anthk_ has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
skywavesurfer has quit [Ping timeout: 246 seconds]
skywavesurfer has joined #ipfs
dhruvbaldawa has joined #ipfs
<kpcyrd>
based on that error, I'd guess ~ isn't properly expanded if HOME isn't set, trying to create a folder the folder ./~/.ipfs, which fails because ./~/ doesn't exist
<kpcyrd>
*trying to create the folder
dhruvbaldawa has quit [Ping timeout: 240 seconds]
tec__ has joined #ipfs
tec__ has quit [Quit: bye..]
tec__ has joined #ipfs
tec__ has quit [Client Quit]
tec__ has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
}ls{ has joined #ipfs
skoocda has joined #ipfs
dhruvbaldawa has joined #ipfs
muvlon has quit [Quit: Leaving]
reit has joined #ipfs
muvlon has joined #ipfs
charley has quit []
skoocda has quit [Quit: Leaving]
dhruvbaldawa has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
Mateon3 has joined #ipfs
Mateon1 has quit [Ping timeout: 255 seconds]
Mateon3 is now known as Mateon1
dhruvbaldawa has quit [Ping timeout: 240 seconds]
guideline has quit [Ping timeout: 252 seconds]
dhruvbaldawa has joined #ipfs
chriscool has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 240 seconds]
guideline has joined #ipfs
igorline has joined #ipfs
cubemonkey[m] has joined #ipfs
dhruvbaldawa has joined #ipfs
ulrichard has joined #ipfs
NullConstant has joined #ipfs
muvlon has quit [Ping timeout: 264 seconds]
infinity0 has quit [Ping timeout: 260 seconds]
<whyrusleeping>
kpcyrd: hrm... that could be, yeah. Though I would imagine the escaping code would error out instead of just use "~" as a literal name
ruunyan has quit [Ping timeout: 240 seconds]
infinity0 has joined #ipfs
ruunyan has joined #ipfs
m0ns00n has joined #ipfs
muvlon has joined #ipfs
upperdeck has quit [Read error: Connection reset by peer]
upperdeck has joined #ipfs
pfista has quit [Ping timeout: 255 seconds]
rendar has joined #ipfs
drwasho has joined #ipfs
larpanet has quit [Ping timeout: 240 seconds]
inetic has joined #ipfs
drwasho has quit []
Roderick has quit [Ping timeout: 240 seconds]
krs93 has joined #ipfs
akagetsu01 has joined #ipfs
Alpha64 has quit [Read error: Connection reset by peer]
igorline has quit [Quit: WeeChat 1.9]
mildred3 has joined #ipfs
maxlath has joined #ipfs
ylp has joined #ipfs
ruunyan has quit [Quit: meow]
ruunyan has joined #ipfs
ecloud_wfh is now known as ecloud
krs93 has quit [Read error: Connection reset by peer]
mildred3 has quit [Ping timeout: 248 seconds]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
krs93 has joined #ipfs
kvda has joined #ipfs
mildred3 has joined #ipfs
jungly has joined #ipfs
jaboja has joined #ipfs
erictapen has joined #ipfs
erictapen has quit [Remote host closed the connection]
erictapen has joined #ipfs
chriscool has quit [Ping timeout: 240 seconds]
upperdeck has quit [Ping timeout: 240 seconds]
upperdeck has joined #ipfs
mntr[m] has joined #ipfs
leochill has joined #ipfs
maxlath has quit [Ping timeout: 246 seconds]
ccii1 has joined #ipfs
ccii has quit [Ping timeout: 240 seconds]
jaboja has quit [Ping timeout: 240 seconds]
igorline has joined #ipfs
mildred1 has joined #ipfs
mildred1 has quit [Client Quit]
mildred3 has quit [Quit: WeeChat 1.9]
obensource has quit [Ping timeout: 252 seconds]
dimitarvp has joined #ipfs
dhruvbaldawa has quit [Remote host closed the connection]
reit has quit [Quit: Leaving]
obensource has joined #ipfs
jaboja has joined #ipfs
A124 has joined #ipfs
leochill has quit [Quit: WeeChat 1.9]
bauruine has quit [Ping timeout: 246 seconds]
lassulus has quit [Ping timeout: 252 seconds]
leochill has joined #ipfs
lassulus has joined #ipfs
bauruine has joined #ipfs
Milijus has joined #ipfs
bedeho has joined #ipfs
Milijus has quit [Ping timeout: 240 seconds]
bedeho has quit [Remote host closed the connection]
Milijus has joined #ipfs
akagetsu01 has quit [Quit: Updating details, brb]
mikedd_ has joined #ipfs
mikedd_ has quit [Client Quit]
mikedd has joined #ipfs
obensource has quit [Ping timeout: 240 seconds]
Caterpillar has joined #ipfs
dhruvbaldawa has joined #ipfs
erictapen has quit [Remote host closed the connection]
Betsy has joined #ipfs
erictapen has joined #ipfs
neosloth has quit [Quit: Leaving]
obensource has joined #ipfs
bedeho has joined #ipfs
bedeho has quit [Ping timeout: 252 seconds]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
dhruvbal_ has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
user1234[m] has joined #ipfs
NullConstant has quit [Ping timeout: 240 seconds]
jkilpatr has quit [Ping timeout: 255 seconds]
muvlon has quit [Quit: Leaving]
A124 has quit [Ping timeout: 260 seconds]
moshisushi has joined #ipfs
A124 has joined #ipfs
nekomune has quit [Ping timeout: 240 seconds]
bedeho has joined #ipfs
Milijus has quit [Quit: Leaving]
erictapen has quit [Remote host closed the connection]
erictapen has joined #ipfs
erictapen has quit [Remote host closed the connection]
erictapen has joined #ipfs
jkilpatr has joined #ipfs
PyHedgehog has joined #ipfs
jaboja has quit [Ping timeout: 248 seconds]
inetic has quit [Remote host closed the connection]
<ilyaigpetrov>
Let's assume that I want to build youtube caching layer based on ipfs. I need to make a mapping from video id to ipfs hash id, better if it would be decentralized too. What could I use for building such mapping layer?
nekomune has joined #ipfs
bedeho has quit [Remote host closed the connection]
<ilyaigpetrov>
inter planetary record system (IPRS) maybe, if it were implemented
}ls{ has quit [Ping timeout: 264 seconds]
spossiba has quit [Ping timeout: 248 seconds]
spossiba has joined #ipfs
<lgierth>
ilyaigpetrov: how you're gonna model this mapping data structure depends mostly on how many writers there will be
<lgierth>
if it's just one, you can just go with IPNS
<lgierth>
if it's more than one, a CRDT structure will be better
dhruvbal_ has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
}ls{ has joined #ipfs
<ilyaigpetrov>
lgierth: this video uses pubsub I guess, which is implemented via floodsub currently. Not sure if floodsub is efficient/ready for usage
<lgierth>
it's still experimental but people have been using it for about a year
<lgierth>
definitely a good time to start trying it out
erictapen has quit [Ping timeout: 255 seconds]
dhruvbaldawa has quit [Ping timeout: 255 seconds]
<ilyaigpetrov>
I need to know more about floodsub, can't find much info about it on the internet, all references are to ipfs which has only sources to read
<lgierth>
i think we might have come up with the term floodsub ourselves
<lgierth>
it doesn't form a CastTree or anything similar, just floods the network
<lgierth>
there's gonna be a smarter underlying algorithm some time soonish, but i don't know much about it unfortunately
<lgierth>
vyzo and stebalien know more
<ilyaigpetrov>
Maybe it means that the cast tree is one level tree: one_root -> each_peer and it just sends message to all pears one by one
<lgierth>
it doesn't touch on the underlying algorithm, but specifies the interface and wire format
A124 has quit [Ping timeout: 260 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
inetic has quit [Ping timeout: 246 seconds]
bedeho has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 240 seconds]
erictapen has joined #ipfs
erictapen has quit [Remote host closed the connection]
erictapen has joined #ipfs
erictapen has quit [Remote host closed the connection]
erictapen has joined #ipfs
A124 has joined #ipfs
<A124>
Will there be some love soon for UDP based transport? a) Router killer issue, b) High latency links show terrible speeds over TCP.
<A124>
Badge: No AB testing, but Badgerds seems really faster for most operations. Much slower for listing recursive pins.
<A124>
Also, in terms of testing experimental features, is there any document how people should proceed with testing and reporting?
inetic has joined #ipfs
krs93_ has joined #ipfs
leochill has quit [Ping timeout: 240 seconds]
krs93 has quit [Ping timeout: 252 seconds]
maxlath has joined #ipfs
leochill has joined #ipfs
bedeho has quit [Remote host closed the connection]
bwerthmann has quit [Ping timeout: 255 seconds]
anthk_ has quit [Remote host closed the connection]
anthk_ has joined #ipfs
<lgierth>
yeah definitely gonna have some udp transport soon
m0ns00n has quit [Quit: quit]
maxlath1 has joined #ipfs
maxlath has quit [Ping timeout: 246 seconds]
maxlath1 is now known as maxlath
<MatteoHirschstei>
Hi. I'm accessing ipfs webui using http://ipfs_ip:5001/webui but it shows no connections, no peers, nothing. Instead ipfs swarm peers show a long list of peers. How can I solve this?
PyHedgehog has quit [Quit: Connection closed for inactivity]
shizy has joined #ipfs
reit has joined #ipfs
krs93_ has quit [Ping timeout: 248 seconds]
ashark has joined #ipfs
maxlath has quit [Remote host closed the connection]
maxlath has joined #ipfs
NullConstant has joined #ipfs
Mgtuiw611 has joined #ipfs
Mgtuiw611 has quit [Read error: Connection reset by peer]
<Kubuxu>
MatteoHirschstei: due to protection of the API (CORS) it won't work with IP instead of localhost
<Kubuxu>
Checkout `ipfs daemon --help` and note about CORS Headers
<Kubuxu>
MatteoHirschstei: ^^
<kpcyrd>
whyrusleeping: this behaviour would be analogous to bash expansion, if you cd into an empty folder and execute `touch somethingoriginal*` it would create the file `somethingoriginal*`
<kpcyrd>
if you execute it again, it's touching the same file, since somethingoriginal* now expands to ['somethingoriginal\*']
pat36 has joined #ipfs
Bhootrk_ has joined #ipfs
Bhootrk_ has quit [Max SendQ exceeded]
NullConstant has quit [Ping timeout: 260 seconds]
xnbya has quit [Ping timeout: 276 seconds]
xnbya has joined #ipfs
tHurst0n has joined #ipfs
ccii1 has quit [Quit: Leaving.]
igorline has quit [Quit: WeeChat 1.9]
bedeho has joined #ipfs
ashark_ has joined #ipfs
ashark has quit [Ping timeout: 248 seconds]
Alpha64 has joined #ipfs
droman has joined #ipfs
NullConstant has joined #ipfs
ylp has quit [Quit: Leaving.]
krs93_ has joined #ipfs
ulrichard has quit [Remote host closed the connection]
jaboja has quit [Ping timeout: 255 seconds]
bedeho has quit [Remote host closed the connection]
<MatteoHirschstei>
Kubuxu:
<MatteoHirschstei>
Kubuxu: yes, it was the issue about localhost. I forwarded the port through ssh and it is working
rendar has quit [Quit: std::lower_bound + std::less_equal *works* with a vector without duplicates!]
<Kubuxu>
yeah, as long as browser sees it as localhost it should be fine
bedeho has joined #ipfs
reit has quit [Quit: Leaving]
<MatteoHirschstei>
Kubuxu: can I use IPFS by IP, is this issue limited to the web ui, or not?
<Kubuxu>
it is limited to webui and sites accessing the API (quite rare currently)
bedeho has quit [Remote host closed the connection]
bedeho has joined #ipfs
brixen has quit [Ping timeout: 248 seconds]
linear has quit [Ping timeout: 248 seconds]
markedfinesse has quit [Ping timeout: 248 seconds]
linear has joined #ipfs
jaboja has joined #ipfs
brixen has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbal_ has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
maxlath has quit [Ping timeout: 252 seconds]
markedfinesse has joined #ipfs
stebalien has left #ipfs ["User left"]
stebalien has joined #ipfs
pcctw has joined #ipfs
Xe is now known as uuuuuuuuuuuuuuuu
uuuuuuuuuuuuuuuu is now known as Xe
maxlath has joined #ipfs
erictapen has quit [Ping timeout: 240 seconds]
lothar_m has joined #ipfs
lothar_m has quit [Client Quit]
lothar_m has joined #ipfs
erictapen has joined #ipfs
erictapen has quit [Remote host closed the connection]
ot8[m] has joined #ipfs
erictapen has joined #ipfs
}ls{ has quit [Ping timeout: 248 seconds]
}ls{ has joined #ipfs
xnbya has quit [Ping timeout: 240 seconds]
xnbya has joined #ipfs
chriscool has joined #ipfs
jaboja has quit [Ping timeout: 260 seconds]
ashark has joined #ipfs
ashark_ has quit [Ping timeout: 240 seconds]
kevina has quit [Read error: Connection reset by peer]
ashark_ has joined #ipfs
dhruvbal_ has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
ashark has quit [Ping timeout: 240 seconds]
NullConstant has quit [Ping timeout: 240 seconds]
dhruvbaldawa has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
erde74 has joined #ipfs
inetic has quit [Ping timeout: 246 seconds]
krs93_ has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
jungly has quit [Remote host closed the connection]
maxlath has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
Aranjedeath has joined #ipfs
pat36 has quit [Read error: Connection reset by peer]
pat36 has joined #ipfs
m0ns00n has joined #ipfs
dhruvbaldawa has joined #ipfs
Jesin has quit [Quit: Leaving]
dhruvbaldawa has quit [Read error: Connection reset by peer]
duracrisis has quit [Quit: Remember, smarter not harder!]
spossiba has quit [Quit: Lost terminal]
spossiba has joined #ipfs
duracrisis has joined #ipfs
duracrisis is now known as Guest67931
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
p4u[m] has joined #ipfs
<p4u[m]>
I'm looking for a list of IPFS gateways accessible from the Internet such as gateway.ipfs.io
<p4u[m]>
I'm not able to find anything on google, can you give me a hand please?
dhruvbaldawa has joined #ipfs
maxlath has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
<MatteoHirschstei>
anybody can list here why should I use ipfs over maidsafe or viceversa?
jokoon has joined #ipfs
erictapen has quit [Ping timeout: 240 seconds]
Jesin has joined #ipfs
warner has quit [Ping timeout: 260 seconds]
dhruvbaldawa has joined #ipfs
Guest67931 has quit [Changing host]
Guest67931 has joined #ipfs
warner has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 248 seconds]
maxlath has quit [Ping timeout: 260 seconds]
reit has joined #ipfs
dhruvbaldawa has joined #ipfs
rsynnest_ has quit []
rsynnest has joined #ipfs
<r0kk3rz>
MatteoHirschstei: maidsafe is different
maxlath has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 264 seconds]
Guest67931 is now known as starship
Encrypt has joined #ipfs
starship is now known as duracrisis
cranau[m] has joined #ipfs
bedeho has quit [Remote host closed the connection]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
Betsy has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
bwerthmann has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 240 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
heimindanger has joined #ipfs
erde74 has quit [Quit: Leaving]
igorline has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
krs93_ has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
krs93__ has joined #ipfs
dhruvbaldawa has joined #ipfs
bedeho has joined #ipfs
krs93_ has quit [Ping timeout: 240 seconds]
dhruvbaldawa has quit [Ping timeout: 240 seconds]
krs93__ has quit [Ping timeout: 248 seconds]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
igorline has quit [Ping timeout: 260 seconds]
bedeho has quit [Remote host closed the connection]
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
pawn has joined #ipfs
<pawn>
Is it a bad idea to use IPFS as a database solution for applications (replacing MySQL backends)?
<Alpha64>
yes
pawn has quit [Remote host closed the connection]
<Alpha64>
you can't run queries against it
maxlath has quit [Ping timeout: 246 seconds]
<whyrusleeping>
You could build something on top of ipfs that would work for that though
<whyrusleeping>
it really depends on *how* youre using it
<Alpha64>
yes, like hosting the contents of an sqlite db
<Alpha64>
but if you are hitting ipfs each with each request then it's a bad idea
<Alpha64>
that looks very cool, have you tried it?
<whyrusleeping>
Yeah, i've used orbit
tHurst0n has quit [Ping timeout: 248 seconds]
<whyrusleeping>
I havent used noms on ipfs yet, its on my todo list
m0ns00n has quit [Quit: quit]
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
erictapen has joined #ipfs
Encrypt has quit [Quit: Quit]
jaboja has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
BobWhite[m] has joined #ipfs
pat36 has quit []
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Ping timeout: 240 seconds]
chriscool has quit [Ping timeout: 240 seconds]
jkilpatr has quit [Ping timeout: 264 seconds]
<aboodman>
Alpha64: hey thanks, let me know if you have any questions
<aboodman>
(i'm one of the people working on noms)
NullConstant has joined #ipfs
ccii has joined #ipfs
<aboodman>
speaking of which: hi #ipfs, i work on a database called noms that we think could be especially helpful to people building for the decentralized web
<aboodman>
we're looking for people who are building dapps -- particularly multiuser apps -- who might like to collaborate
<aboodman>
ping me here or in our slack channel or at noms@attic.io for questions
<aboodman>
cheerio
dan_ has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
bwerthmann has quit [Ping timeout: 248 seconds]
bwerthmann has joined #ipfs
jkilpatr has joined #ipfs
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
jaboja has quit [Ping timeout: 240 seconds]
pawn has joined #ipfs
<pawn>
Alpha64: why?
dhruvbaldawa has joined #ipfs
jokoon has quit [Quit: Leaving]
NullConstant has quit [Remote host closed the connection]
dhruvbaldawa has quit [Ping timeout: 240 seconds]
droman has quit [Read error: Connection reset by peer]
captain_morgan has quit [Remote host closed the connection]
captain_morgan has joined #ipfs
dhruvbaldawa has joined #ipfs
Jesin has quit [Quit: Leaving]
asenski[m] has joined #ipfs
Alpha64 has quit [Quit: Alpha64]
ilyaigpetrov has quit [Quit: Connection closed for inactivity]
dhruvbaldawa has quit [Ping timeout: 240 seconds]
<aboodman>
pawn: i think you could query sqlite on top of ipfs, it would just be slow.
<aboodman>
I think that the bigger issue will be that decentralized apps are inherently disconnected. Nodes need to constantly sync with each other. With something like SQLite (and most other current DBs) you'll have to write that yourself, which is quite difficult.
<ogd>
aboodman: do you have docs on your sync algorithm?
<aboodman>
oh well that's the default merge policy
<whyrusleeping>
its pluggable IIRC yeah?
dhruvbaldawa has joined #ipfs
<aboodman>
yeah, the merge policy i linked above is the default one
<aboodman>
you can put in any merge policy you want. as long as it is commutative, then the resulting db schema will be a crdt.
<whyrusleeping>
hot
<whyrusleeping>
though writing a merge strategy with no conflicts ever is...
<aboodman>
yeah it kind of falls nicely out of the design.
<whyrusleeping>
hard
ashark_ has quit [Ping timeout: 248 seconds]
<whyrusleeping>
i read (admittedly somewhat quickly) through the prolly tree stuff
<aboodman>
yeah i think it would be good to write some abstractions on top of the core noms types that have higher level semantics
<aboodman>
like a classic case will be `Counter` instead of `Number`
<whyrusleeping>
yeah
<whyrusleeping>
so all operations on them are defined in mergeable semantics
dhruvbaldawa has quit [Read error: Connection reset by peer]
<aboodman>
but i think it is nice that noms itself only defines very primitive types
spossiba has quit [Ping timeout: 252 seconds]
<aboodman>
and you can build (or share) the appropriate crdt for your usecase
<aboodman>
like there are tons of variants on Set CRDTs. Noms doesn't take a position. You can use whichever one you want.
spossiba has joined #ipfs
<whyrusleeping>
ah yeah, that is pretty nice
<whyrusleeping>
👍 to minimal composeable tools
<aboodman>
another example will be list. it's basically impossible to merge concurrent edits to a list, because it could mean anything, semantically
<aboodman>
but you could build a Queue library on top of a noms list, that does the right merge
<Kythyria[m]>
aboodman: That has the interesting corollary that it's impossible to make an editable text type.
<Kythyria[m]>
Which, uh.... has been done. A lot.
<aboodman>
this gets into semantics, but I would argue that the correct name of the data type that is used for an editor is `Sequence`
<aboodman>
and in that case a correct merge can be defined
<Kythyria[m]>
What's the difference between list and sequence?
igorline has joined #ipfs
dhruvbaldawa has joined #ipfs
<aboodman>
let me put it differently: you can define lots of different merge semantics for an array
<aboodman>
the right thing depends on how it is being used
<aboodman>
if you are building a text editor, then you have enough information to know how to implement the merge
<aboodman>
but we (noms) are at the layer below. we don't know if the person using our List datatype is using it to build an editor, or a queue, or what
<Kythyria[m]>
I wouldn't say array is meaningfully a type if you can't define what operations on it do.
matoro has quit [Ping timeout: 240 seconds]
<ogd>
aboodman: thanks, is there a description of the network protocol + dag exchange 2 peers use to get in sync w/ each other?
<whyrusleeping>
ah nice, eventually consistent sort of thing? or more strict consensus style?
matoro has joined #ipfs
<aboodman>
ooooh that *ogd*
* aboodman
waves
<ogd>
whyrusleeping: eventually consistent, our api is get(key, cb(err, values) {}) where values is the array of all values for that key. if you put(key, singleValue) then it is a 'merge'
<whyrusleeping>
ah, nice. kinda like a grow-only bucket DHT idea
<ogd>
whyrusleeping: yea. you can also attach a reduce function to merge on write if you want. but philosophy is core doesnt have a default merge strategy
<whyrusleeping>
yeah, makes sense. You cant define a merge that makes everyone happy
<whyrusleeping>
can you remove values?
<ogd>
yea theres .delete too
<whyrusleeping>
does it actually remove the value? or does it just put in a sentinel that says "X is no longer valid" ?
echoSMILE has joined #ipfs
ubeatlenine has joined #ipfs
dhruvbaldawa has joined #ipfs
<ogd>
it derefs the internal pointer to the blob, so in subsequent operations that blob will not get replicated. but there is a small tombstone that gets stored. its sort of built in GC
<whyrusleeping>
got links to this? i'd love to read through it all
<ogd>
aboodman: ah cool so the sync method basically walks the remote log from the latest common hash and requests all the new ones, makes sense
<whyrusleeping>
ala git, i believe
dhruvbaldawa has quit [Ping timeout: 248 seconds]
<aboodman>
the commit concept was lifted directly from git
<aboodman>
i'm not sure what git does these days for sync, but yeah, in our case we do basically what you'd guess
digitalism has joined #ipfs
digitalism is now known as Gytha
Gytha is now known as Vladislav
Vladislav is now known as dragrope
<ogd>
aboodman: yea thats cool. git has packfiles as an optimization
<aboodman>
one cool thing is that noms does not yet have (or need) a high level sync operation. it can be built completely out of Get/GetMany/Has/HasMany/Put/Commit
<ogd>
aboodman: in dat we support live sync and replication of a subset of files so the replication protocol is less linear and more... tree-like
<aboodman>
there is somethign fancy about the underlying blockstore that makes has checks fast, but i can't remember
ubeatlenine has quit [Quit: Bye]
<aboodman>
actually sorry one correct ogd - if you do `noms pull db::dataset` we do not need to walk back to common ancestor. you just recursively walk the ref starting at db::dataset
<aboodman>
if you have some of that tree locally, we'll eventually figure that out
<aboodman>
finding common ancestor is only needed in order to merge/fastforward correctly
<ogd>
ah cool
dhruvbaldawa has joined #ipfs
dhruvbaldawa has quit [Read error: Connection reset by peer]
<ogd>
aboodman: can you query a remote db without syncing the whole thing first?
<aboodman>
yes!
<ogd>
aboodman: cool, then i guess it gets cached?
<aboodman>
yes it does. currently only in memory, though a persistent cache would be easy to add (yay immutability)