whyrusleeping changed the topic of #ipfs to: IPFS - InterPlanetary File System - https://github.com/ipfs/ipfs -- channel logged at https://botbot.me/freenode/ipfs/ -- code of conduct at https://github.com/ipfs/community/blob/master/code-of-conduct.md -- sprints + work org at https://github.com/ipfs/pm/ -- community info at https://github.com/ipfs/community/
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
mquandalle has quit [Quit: Connection closed for inactivity]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
voxelot has quit [Ping timeout: 265 seconds]
step21 has quit [Ping timeout: 244 seconds]
hellertime has joined #ipfs
<jbenet> blame: make equivalent https://github.com/ipfs/py-ipfs-api
pfraze has joined #ipfs
step21_ has joined #ipfs
<blame> QmTkukZw6MBSfGZ2nTubdCsMeoKyNbrNidyGiJMUEh2dCx
step21_ is now known as step21
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping> jbenet: you wanna CR 1627? its mostly good to go, just needs a little though on how to handle files in commands/cli/parse
domanic has quit [Ping timeout: 260 seconds]
<jbenet> whyrusleeping: CRed
<jbenet> important things to address
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping> jbenet: low mem in go will never return an error, it just panics
<jbenet> whyrusleeping: wow what
<jbenet> seriously?
<jbenet> it just kills the process?
<jbenet> also, btw, if i craft bad data, i can panic your node.
<whyrusleeping> jbenet: nope, that still wont happen
<jbenet> yep, it will error.
<whyrusleeping> you cant pass that function any bad data that will error
<whyrusleeping> not possible
<Tv`> jbenet: do you expect "var t T" to return an error?
<jbenet> i expect the marshal to fail in some odd way -- there's lots of err conditions here https://github.com/golang/protobuf/blob/master/proto/decode.go#L339-L473
<Tv`> anyway, most linux boxes are configured to overcommit memory anyway, you'll get oomkilled
<whyrusleeping> jbenet: you linked me to unmarshal
<whyrusleeping> your comment is on a function that calls marshal
<whyrusleeping> seriously, the panic there is okay. Any error returned from that call is programmer error.
<substack> cloning the ipfs specs repo for some offline airplane reading
<jbenet> substack: forgive some lack of links. any feedback + simplification would be great.
<substack> yep!
<whyrusleeping> jbenet: yeap, we wont hit any of those errors. i guarantee it
<whyrusleeping> unless someone changes the protobuf marshaler code to fail on a perfectly valid struct that we are creating in that function, its going to be fine
<whyrusleeping> its basically doing a string concatenation
<whyrusleeping> its doing [proto header] + "string you passed in" + [proto stuff]
<whyrusleeping> i could change it to actually do that too if we want
<jbenet> i dont pretend to know that protobuf does not have any bugs. this file is complex https://github.com/golang/protobuf/blob/master/proto/encode.go#L1194-L1235
<jbenet> dont lose much adding an err return here https://github.com/ipfs/go-ipfs/pull/1627/files#diff-bd0ca9f1e2d5c7ba128af01ec4c1131cR364 and guard against a panic we may not understand at all today..
* whyrusleeping sighs
therealplato has quit [Quit: Leaving.]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ianopolous> Are you guys saying that a Go program that runs out of memory won't throw an out of memory error, but just crash?
<jbenet> code gets very, very, very weird. someone might edit that proto and add a Marshal() method or compile it with something else that returns an error on some weird condition. this isn't an array out of bounds thing, this is complex code that varies by proto compiler that i have not read in detail that i do not understand. i do not feel even remotely sure that
<jbenet> there are not bugs that will return weird errors and do things the API promises will not happen.
<jbenet> ianopolous: apparently. was news to me. tbh i hadn't considered it.
<jbenet> Tv` on that, i expected something c-like, with the stack running into the heap and crashing. but not crash on heap alloc fail
<whyrusleeping> jbenet: if that code changes, we want things to fail. thats programmer error
<blame> https://github.com/BrendanBenshoof/ipfs_scratch/issues/1 <- jbenet please sanity check
<whyrusleeping> if one of us changes something that causes our base assumptions about the structure of data to fail. then we probably dont want to continue
<jbenet> whyrusleeping: i'm protecting code that other people will edit. it's really annoying to have to fight to get things like safe error handling and test coverage. to get the famously error-free qmail and djbdns djb restructured his programming to catch more errors and be less prone to code mutation introducing errors inadvertedly.
<whyrusleeping> example: if u.Hash() were to change, would we want to continue on erroneously? or would we want to halt immediately?
<Tv`> jbenet: a deterministic panic is way better
simonv3 has quit [Quit: Connection closed for inactivity]
<Tv`> Than running out of stack, that is
hellertime has quit [Quit: Leaving.]
<jbenet> whyrusleeping: this is totally different, this is an error case that we will not run into in our test suites (or we would fix), this is a weird edge case that might mysteriously be introduced and appear with very low probability, which users would encounter -- maybe end users who are using ipfs as bundled by someone else's application. who may not even know
<jbenet> how to open a terminal.
<jbenet> this isn't erlang, a crash is final here. and for an end user, may be terminal and fail some other application.
<jbenet> ipfs daemon is meant to be a very long running process, which should have robust error handling. this is not a panic-worthy error because the case of an error is not likley to be one we would even find. i would it expect it to arise with minuscule probability and only show up after thousands of runs.
<jbenet> again, this isnt a simple, predictable array out of bounds. it's a mess: https://github.com/golang/protobuf/blob/master/proto/encode.go#L1-L1336
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> btw, whyrusleeping and Tv`: talked to many users today wanting to store >10TB in ipfs nodes (one wanting 10TB/day, on a cluster of ~10 machines). that hits harsh bottlenecks atm. mostly add slowness (concurrency PR? sync?) but might also benefit from arena storage later.
<jbenet> (and ofc, davidar has been hitting bottlenecks already adding the massive archives)
<whyrusleeping> jbenet: if you turn off the sync calls in flatfs you hit the speed of the hash
<whyrusleeping> (or your drive, whichever comes first)
<jbenet> whyrusleeping: these are users who would not recompile.
<jbenet> whyrusleeping: these are users who use terminals but would not want to jump into that.
<whyrusleeping> right
<whyrusleeping> i dont expect any users to recompile
<jbenet> the one 10TB/day person is dealing with financial data of critical importance. we're talking a bank.
<jbenet> (so that's cool :) )
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
anshukla has joined #ipfs
lilsheep has joined #ipfs
<whyrusleeping> jbenet: re: mfs stuff.
<whyrusleeping> i've got a compromise between our discussion last night
<whyrusleeping> it will be a single root for the filesystem
<jbenet> (we could really do both, i'm not opposed to trying them both out and seeing which one people like more)
<whyrusleeping> nah, i thought it out and i think i've got a nice compromise
<jbenet> ok?
<whyrusleeping> multiple roots can exist like things in /dev/
<whyrusleeping> and they can be mounted onto the single filesystem however you like
<whyrusleeping> so instead of 'multiple filesystems' think of it like 'multiple devices'
<whyrusleeping> so ipns-fs stuff creates a root (device) that gets mounted on the fs
<jbenet> sounds like just rebranding :) ok se here's a discrepancy, you're seeing this as mounting other things into a non-merkledag fs. i'm seeing this all as a merkle dag.
<whyrusleeping> i think thats orthogonal
<whyrusleeping> we can come up with some sort of merkledag 'mount descriptors' that lets us have some immutable reference to the state of the filesystem
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping> also, all the commands you outlined last night work within this. sooo i thought we would be in agreement... >.>
<jbenet> hm i like the idea of mount descriptors
<jbenet> that are objects themselves, etc. but get transparently mounted. + resolved through
<jbenet> that's nice, and could work beyond ipns.
<whyrusleeping> yeap
<whyrusleeping> the 'ipfs create --pub-cmd=/bin/publish-thing' i was talking about last night
<jbenet> ok here's a new way to think about this. (1) i'm thinking about "ipfs files", a merkledag-only thing where everything adds up to a mutable root, to which there's a name pointed to in the node's internal state. no other stuff in the middle-- all straight merkledag. i think that's very useful to have.
<jbenet> (2) but i do see the need to have one fs where some paths are IPNS names, or even DNS names, or other protocols, that get republished to. (as it works in the `/ipns/` space). which actually sounds more like the proper root `/`
<jbenet> like the `/` in `/ipfs/...` and `/ipns/...`
<whyrusleeping> (there are two '/' in '/ipfs/' :P )
<jbenet> youuuuu know what i meanttttt
<jbenet> ttttt
steve__ has joined #ipfs
<whyrusleeping> i have no idea what youre talking about
<jbenet> (caaandy mountain)
<jbenet> the first "/" in `/ipfs/...`
<jbenet> like the "global root".
<jbenet> of everything.
<whyrusleeping> lol
<jbenet> where `/ipfs` is a mount point that resolves the first path component name as a hash in the merkledag.
steve__ has quit [Remote host closed the connection]
<whyrusleeping> alright, so i remove all notion of mounting from mfs
<jbenet> where `/ipns` is a mount point that resolves all names known about, and `/ipfs/local` as a shortcut to the node' internal name. (or `/ipfs/keys`)
<whyrusleeping> and make the pubcmd thing go away
<whyrusleeping> and make ipns fuse stuff a separate thing
Eudaimonstro has quit [Ping timeout: 246 seconds]
<jbenet> wehre `/dns` could be a mount point that republished to a dns server.
<jbenet> yeah i think so? one thing that bothers me right now is `/files/` is not rooted in the global root, it's really rooted in `$repo_state/files`
ygrek has quit [Ping timeout: 255 seconds]
<whyrusleeping> huh?
<jbenet> like the mfs `/files` or `/mfs` or `/` mfs root, i would love to have a pointer to it in the repo state
<jbenet> so that if you have $repostate = merledag hash of the ipfs node's state, $repostate/files would be the current mfs root
<whyrusleeping> oh
<jbenet> but idk how to get to $repostate from global root.
<jbenet> i dont want to do `/repo/` because its supposed to be a global identifier.
<jbenet> maybe this is a special path like `/ipns/local`
<jbenet> `/ipfs/repo` gives you the local repo? kinda nasty because things under `/ipfs` are supposed to be immutable.
<whyrusleeping> how about thats a thing thats not the thing i'm working on
<jbenet> hahahahahhaha
simonv3 has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
kord_ has quit [Quit: Leaving...]
kord has joined #ipfs
compleatang has quit [Quit: Leaving.]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
voxelot has joined #ipfs
<gendale_> so am I right in saying the web gateways are literally just setting up an ipfs mount point inside the nginx serve?
lilsheep has quit [Quit: This computer has gone to sleep]
<jbenet> gendale_ not even, gateways run on go-ipfs daemons, so nginx just proxy-passes.
<jbenet> dont even have to mount
<gendale_> oh wow
<gendale_> haha what a software
fiatjaf has left #ipfs ["undefined"]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<gendale_> how do you access the web interface?
<gendale_> i'm not super familiar with ipfs and i'm not sure how to proxy forward
thomasreggi has joined #ipfs
thomasreggi has quit [Remote host closed the connection]
thomasreggi has joined #ipfs
<jbenet> gendale_ use http://localhost:5001/webui
<jbenet> gendale_ you can change the ports in the config
<gendale_> so to set up a web gateway, i can just redirect nginx to hit port 8080, correct?
<jbenet> gendale_ yep!
warptangent has quit [Remote host closed the connection]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
warptangent has joined #ipfs
lilsheep has joined #ipfs
pfraze has quit [Remote host closed the connection]
domanic has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> whyrusleeping: opinion requested: on creating "completely private networks", a thought was to base it on a key-- peers would share a key with each other and use it to encrypt the transport (or at least to be verified on handshake)
<jbenet> dead simple way to ensure only connect to nodes with secret
<jbenet> (could even be a daemon option --private-network-secret=<key-in-base58>
anshukla has quit [Remote host closed the connection]
<whyrusleeping> jbenet: i like that, was discussing it with zignig earlier
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> whyrusleeping yep, i think we can add it with a config key. it's a much requested feature.
<whyrusleeping> jbenet: want me to write that up tomorrow?
<whyrusleeping> shouldnt take long
<jbenet> sgtm!
<jbenet> maybe encrypt _all connections_ with an AES key derived from the given secret (hash it beforehand)
<jbenet> so this isn't the secureConn, but a different conn that wraps everything at the very edge-- so you wouldnt even see the handshake
<jbenet> (that's the safest way to do it, that way all traffic is encrypted without revealing ipfs node or identities)
<whyrusleeping> i was thinking of just exchanging nonce-hashed shared keys in the handshake
<whyrusleeping> but that works too
<jbenet> and then config value + daemon --opt.
sharky has quit [Ping timeout: 272 seconds]
<whyrusleeping> me: "oh look, an easy thing i can do", jbenet: "no, here, it needs to be harder and more complicated"
notduncansmith has joined #ipfs
<whyrusleeping> me: " :( "
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> "it needs to be correct and secure". "exchanging nonce-hashed shared keys"? what do you mean by that?
<whyrusleeping> we each have K, and on handshake, we send eachother a random nonce
<whyrusleeping> the other person appends the nonce to the key, and hashes that and sends the hash back
<whyrusleeping> if both peoples hashes are correct, you can talk
<jbenet> yeah and then what, you just terminate the connection?
<whyrusleeping> no, do normal secio stuff
<jbenet> (aside from revealing identity, protocol version, possibly more in the connection, and that there is a secret in play, that you now may want to go search for
sharky has joined #ipfs
<jbenet> totally encrypted traffic allows me to bind a port at 443, and pretend it's TLS.
<jbenet> it may not fool firewalls that look for patterns, but it might go through many holes.
<jbenet> " yeah and then what, you just terminate the connection?" if it's wrong.
<whyrusleeping> oh, probably
inconshreveable has joined #ipfs
mildred has joined #ipfs
notduncansmith has joined #ipfs
<ipfsbot> [go-ipfs] jbenet deleted p2p-filter-race at a8ca3bc: http://git.io/vGK5l
domanic has quit [Ping timeout: 250 seconds]
notduncansmith has quit [Ping timeout: 252 seconds]
mildred has quit [Ping timeout: 246 seconds]
amstocker has joined #ipfs
<davidar> jbenet: if that were your motivation, why not actually use tls?
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
mildred has joined #ipfs
amstocker_ has joined #ipfs
amstocker has quit [Ping timeout: 246 seconds]
voxelot has quit [Ping timeout: 265 seconds]
mildred has quit [Quit: Leaving.]
mildred has joined #ipfs
simonv3 has quit [Quit: Connection closed for inactivity]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
mildred has quit [Ping timeout: 240 seconds]
Eudaimonstro has joined #ipfs
mildred has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
mildred1 has joined #ipfs
lilsheep has quit [Quit: This computer has gone to sleep]
Eudaimonstro has quit [Read error: No route to host]
Eudaimonstro has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
mildred has quit [Remote host closed the connection]
mildred has joined #ipfs
xelra has quit [Ping timeout: 268 seconds]
amstocker_ has quit [Ping timeout: 246 seconds]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
amstocker has joined #ipfs
xelra has joined #ipfs
atomotic has joined #ipfs
marianoguerra has joined #ipfs
Eudaimonstro has quit [Ping timeout: 256 seconds]
Eudaimonstro has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
Tv` has quit [Quit: Connection closed for inactivity]
Eudaimonstro has quit [Remote host closed the connection]
chriscool has joined #ipfs
Poefke has quit [Remote host closed the connection]
chriscool has quit [Ping timeout: 264 seconds]
thomasreggi has quit []
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ianopolous> jbenet, whyareyousleeping: what exactly is the threat model you are trying to counter with the encrypted traffic? I would avoid inventing your own crypto scheme, just use tls if all you care about is obscuring internode traffic. If you also care about whitelisting network members then combine that with a membership scheme. e.g. make your own CA.
<davidar> and i imagine traffic analysis of ipfs over tls would look a lot like websocket over tls
<cryptix> hey ppl
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<davidar> hey cryptix
<cryptix> hello :)
<davidar> hows things?
<cryptix> things are moving again, so good for a change :)
amstocker has quit [Ping timeout: 246 seconds]
dignifiedquire has joined #ipfs
compleatang has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<dignifiedquire> jbenet: if you are around, what were your initial thoughts when you created the logo, i.e. what were you trying to visualize and what feelings did you want to bring across?
dignifiedquire has quit [Quit: dignifiedquire]
notduncansmith has joined #ipfs
dignifiedquire has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
Encrypt has joined #ipfs
inconshreveable has quit [Remote host closed the connection]
Poefke has joined #ipfs
slothbag has joined #ipfs
Encrypt has quit [Quit: Lunch time!]
ei-slackbot-ipfs has joined #ipfs
atomotic has quit [Quit: Textual IRC Client: www.textualapp.com]
bedeho has quit [Ping timeout: 264 seconds]
compleatang has quit [Quit: Leaving.]
okket_ has joined #ipfs
okket has quit [Excess Flood]
felixn has quit [Ping timeout: 244 seconds]
felixn has joined #ipfs
hellertime has joined #ipfs
voxelot has joined #ipfs
akhavr has quit [Ping timeout: 264 seconds]
therealplato has joined #ipfs
akhavr has joined #ipfs
voxelot has quit [Ping timeout: 246 seconds]
atomotic has joined #ipfs
Encrypt has joined #ipfs
akhavr1 has joined #ipfs
akhavr has quit [Ping timeout: 264 seconds]
akhavr1 is now known as akhavr
t3sserakt has joined #ipfs
akhavr1 has joined #ipfs
akhavr has quit [Ping timeout: 256 seconds]
akhavr1 is now known as akhavr
wking has quit [Ping timeout: 250 seconds]
wking has joined #ipfs
M-prosodyContext has quit [Ping timeout: 250 seconds]
reit has quit [Ping timeout: 250 seconds]
davidar has quit [Ping timeout: 250 seconds]
davidar_ is now known as davidar
infinity0 has quit [Ping timeout: 264 seconds]
M-prosodyContext has joined #ipfs
M-davidar has joined #ipfs
thelinuxkid has quit [Ping timeout: 250 seconds]
infinity0 has joined #ipfs
reit has joined #ipfs
thelinuxkid has joined #ipfs
<cryptix> sigh.. anybody good at guessing encoding/marshalling formats here? need to know what this is: /ipfs/Qmb2J34b3WU5agp7s4Hx5pgoocMDs68UgYUFF256fFQdFY
Poefke has quit [Remote host closed the connection]
Poefke has joined #ipfs
slothbag has quit [Quit: Leaving.]
<M-davidar> cryptix: something to do with google play services?
<cryptix> yup
<cryptix> i fear java serializable but hope for protobufs but the .proto files i found didnt work to decode it
pfraze has joined #ipfs
<M-davidar> yeah, can't even see anything that looks like a magic number
nessence has quit [Remote host closed the connection]
<M-davidar> ugh, can everyone stop using html+js for everything
<M-davidar> A simple desktop app shouldn't consume multiple gigabytes just to startup...
<M-davidar> use qml, ffs
<M-davidar> I'm looking at you, atom and mapbox studio
<rschulman> atom is so sluggish I went back to vim
<M-davidar> rschulman: yeah, same (although have also been using sublime text recently)
<M-davidar> it's a pity limetext seems to be dead, looked like a good compromise between sublime and atom
<M-davidar> perhaps even vim for that matter, with the termbox frontend and some key bindings
<cryptix> neovim! ;)
<rschulman> cryptix: I haven't tried neovim yet. Does it have features that vim doesn't or is it just a codebase cleanup?
<cryptix> yea, the latter
<M-davidar> No emacs people around apparently
pfraze has quit [Remote host closed the connection]
nessence has joined #ipfs
<cryptix> ( M-davidar: it is protobuf :)
nessence has quit [Ping timeout: 260 seconds]
nessence has joined #ipfs
atomotic has quit [Quit: Textual IRC Client: www.textualapp.com]
Tv` has joined #ipfs
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ipfs
dignifiedquire has quit [Quit: dignifiedquire]
dignifiedquire has joined #ipfs
<dignifiedquire> M-davidar: I missed the conversation, damn… EMAAAAAACS ;)
keroberos has quit [Ping timeout: 240 seconds]
vijayee_ has joined #ipfs
vijayee_ has quit [Client Quit]
_whitelogger has joined #ipfs
keroberos has joined #ipfs
<clever> cryptix: the protobuf format is fairly simple, every field is tagged with its type/size and field#
<clever> about the only thing your missing is the field# to name mappings
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
pfraze has joined #ipfs
Eudaimonstro has joined #ipfs
mkarrer has joined #ipfs
mkarrer_ has quit [Ping timeout: 264 seconds]
<daviddias> cryptix: neovim looks interesting
<daviddias> does it break compatibility with vim plugins?
<jbenet> dignifiedquire: thanks for asking. p2p, mesh. distributed systems. nodes. compatibility. building block. a cube. a box. storage. it certainly needs improvement to get there.
<jbenet> dignifiedquire: though before you spend any time on it -- the logo is not up for a fundamental redesign. we can certainly have real designers fix it, but the basic idea is set: it's a cube, whose vertices are dots, as in nodes in a p2p network. the edges of the logo end flush with the hex, to fit with all the node (and other standard hex logos). two colors,
<jbenet> well, same color, different shades. minimalist, basic, building block. box/storage.)
<jbenet> that said, all for creating all sorts of cool imagery to supplement + improve the story / site / etc. (e.g. we'll be getting a mascot at some point) )
<jbenet> (just managing expectations, so you dont get disappointed if you want
<jbenet> to change the logo, but i seem to be like http://i0.kym-cdn.com/entries/icons/original/000/007/423/untitle.JPG later.
<jbenet> it was a hard question that we spent a lot of time deciding, a lot of time ago.
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<daviddias> jbenet: any key benefits of having the signature of a record as a separate MerkleDAG object? It can definitely be done, but adds more complexity through indirection in the code
therealplato1 has joined #ipfs
<cryptix> Clever: thanks for that insight -everything makes sense now :) also found the .proto in chromiums src tree
therealplato has quit [Ping timeout: 260 seconds]
<jbenet> daviddias: short answer: uniform cryptographic artifacts. a signature is just a merkle object, pointing to the public key, the object being signed, and the sig data (which is a signature over the object's hash).
mildred has quit [Quit: Leaving.]
<jbenet> daviddias: that way we write the signing tooling _once_ and everything can do signatures. it's ok if we link to "Object" twice or whatever. also i do realize it's tricky to have a signature over a record, ... linked to from the record. that doesnt work, so the sig has to be around it. i thought i implemented that somewhere correctly (the reference was to a
<jbenet> SignedObject, which transparently dereferenced the Object
<daviddias> Oh, I think I hadn't glanced through this, making more sense now
<daviddias> so, when we `provide` a record, we sent to a given Peer, the 'Record', the 'Signature' and the 'PubKey'
<jbenet> daviddias: that was Pre-LD Era
mildred1 has quit [Ping timeout: 246 seconds]
<jbenet> need to update it
<jbenet> daviddias: well, sort of. IF in a context where they can resolve ipfs links, we can just send them the "Signature", they can get the Key from it, and the Record. (Signature.Object)
<jbenet> but IF they cannot resolve (core DRS, chicken egg problem), yes, you stream "Signature/**/*" (i.e. Signature and all children)
<daviddias> cool, that is where my head was getting at
<daviddias> so, but that means that Public Key MerkleDAG Objs
<daviddias> will have to be replicated in the DRS context
<daviddias> and bitswap context
<daviddias> unless bitswap can tap also into the MerkleDAG obj store DRS has and retrieve things from there two (writing this is making me realize that probably this is what you had in mind)
<jbenet> yeah the MerkleDAG obj store DRS uses, and bitswap uses, is the same one: the local repo's mdag store.
<jbenet> of course, they could be different, but in a standard/basic IPFS node they'd be the same
<daviddias> got it :) thanks jbenet !
<daviddias> (so many dependencies)
<jbenet> yeah ffs.
<jbenet> you could do away with a lot of them if you assume an altruistic world
<jbenet> i.e. dont need bitswap, providers, etc. which are the main things that make the dependency graph weird.
simonv3 has joined #ipfs
voxelot has joined #ipfs
<cryptix> daviddias: re neovim: i use vim-go, ctrlp, nerdtree, tagbar.. they all work
<rschulman> cryptix: that's pretty impressive as it is.
<daviddias> cryptix: have to check it out :)
<whyrusleeping> jbenet: when can we get a mascot! i want a jellyfish
<whyrusleeping> cryptix: neovim is great, theyre doing an awesome job
<daviddias> whyrusleeping: can I persuade you to a cuttlefish ? http://i.ytimg.com/vi/MLWN6mvtUc4/maxresdefault.jpg
<whyrusleeping> daviddias: thats so adorable
<whyrusleeping> i'd have to think about it
<whyrusleeping> but i really like the jellyfish idea
<whyrusleeping> because they form swarms
<daviddias> and they are incredibly smart
<daviddias> oh, i see your point
<whyrusleeping> yeah, if cuttlefish moved about in swarms, i would be totally down
<Tv`> fwiw cuttlefish as mascot might get you confused with Ceph
marianoguerra has quit [Ping timeout: 244 seconds]
<dignifiedquire> jbenet: thanks for the clarification, not looking to change the actual logo form (hex shape, nodes, etc) just looking for ways to improve it and the way it’s displayed
<jbenet> dignifiedquire: then go for it :D -- just didnt want to disappoint you _after_ doing lots of work
marianoguerra has joined #ipfs
vijayee_ has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
vijayee_ has joined #ipfs
<dignifiedquire> jbenet: :) though I might make some color suggestions: http://giphy.com/gifs/rainbow-waterfall-vomit-moZM0cd3y7x2U
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> hahaha
<dignifiedquire> jbenet: one more question, which general style would you prefer (not restricted to the logo): 1. cool or warm 2. in your face or subtle 3. handmade or industrial grade
<jbenet> Cool, direct but not in your face, industrial.
<dignifiedquire> jbenet: thanks :)
<dignifiedquire> jbenet: that will help a lot in the not wasting my time area
atomotic has joined #ipfs
anshukla has joined #ipfs
<voxelot> daviddias O/
<daviddias> voxelot: hey
<voxelot> any section on the node ipfs roadmap that needs work next or should be started on? looking to help out
<daviddias> for sure
<daviddias> I've listed the current pieces (and the missing ones) for libp2p
<daviddias> I'm focused on the DRS (distributed record store)
therealplato has joined #ipfs
<daviddias> and it's dependencies (IPLD, IPRS, MerkleDAG Store and so on)
<voxelot> so how about i work on random-walk?
<daviddias> that was what I was going to suggest :)
<voxelot> haha cool
<daviddias> random-walk is doing random searches on the kad-router, and adding the peers we connect to as candidates to our kbuckets
therealplato1 has quit [Ping timeout: 244 seconds]
<daviddias> are you familiar with our DHT? or the code we have written?
<daviddias> I would say also that a great way to help is continuously improving code coverage, it is a great way to learn what the code is doing, detecting anything that might be wrong or simply making the right questions that will help improve the docs
<voxelot> yeah i'm familiar with DHT, S/Kad and Coral being used here right?
<daviddias> we are using kad-router is just Kademlia
<daviddias> we are using just Kademlia for the kad-router *
<daviddias> but yes, the idea is in the future to have something like Coral
<voxelot> ohh i see, S/Kad for identity
<voxelot> i'm going to look at the go code and get a feel for how it works
<daviddias> somethings might differ from the Go code
<daviddias> as we have been improving how things are connected internally
<daviddias> let me know of any question that pops up
<voxelot> yeah will do! thanks
marianoguerra has quit [Ping timeout: 255 seconds]
anshukla has quit [Ping timeout: 260 seconds]
<voxelot> this should be on the road map next to kad-routing? https://github.com/diasdavid/node-ipfs-kad-router
<whyrusleeping> jbenet: i think our api server hides panics...
<whyrusleeping> coooooool, it does
steve__ has joined #ipfs
<ipfsbot> [node-ipfs] diasdavid pushed 1 new commit to master: http://git.io/vG1v1
<ipfsbot> node-ipfs/master 12c8e55 David Dias: Update roadmap
Eudaimonstro has quit [Ping timeout: 250 seconds]
<ipfsbot> [go-ipfs] whyrusleeping pushed 2 new commits to feat/mfs: http://git.io/vG1kx
<ipfsbot> go-ipfs/feat/mfs 5a16160 Jeromy: switch to single root for mfs...
<ipfsbot> go-ipfs/feat/mfs 918198f Jeromy: mfs mounting to integrate with ipns...
pfraze has quit [Remote host closed the connection]
pfraze has joined #ipfs
pfraze has quit [Ping timeout: 264 seconds]
<daviddias> voxelot: yes, it should, thanks !
<ipfsbot> [node-ipfs] diasdavid pushed 1 new commit to master: http://git.io/vG13j
<ipfsbot> node-ipfs/master 89d4942 David Dias: Update README.md
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/symlinks: http://git.io/vG1si
<ipfsbot> go-ipfs/feat/symlinks 4bcacc5 Jeromy: address most of CR comments...
therealplato has quit [Ping timeout: 272 seconds]
thomasreggi has joined #ipfs
pfraze has joined #ipfs
therealplato has joined #ipfs
therealplato has quit [Read error: Connection reset by peer]
thomasreggi has quit [Read error: Connection reset by peer]
therealplato has joined #ipfs
thomasreggi has joined #ipfs
therealplato1 has joined #ipfs
therealplato1 has quit [Read error: Connection reset by peer]
<cryptix> jbenet: thx for the RTs :) have you tried it yet?
<jbenet> I haven't! I need to
<cryptix> no worries :) wont run
therealplato1 has joined #ipfs
therealplato1 has quit [Read error: Connection reset by peer]
therealplato1 has joined #ipfs
therealplato1 has quit [Read error: Connection reset by peer]
<cryptix> maybe i can poll Luzifer for some github webhook knowledege and build some ipfs mirroring
steve__ has quit [Remote host closed the connection]
therealplato1 has joined #ipfs
therealplato1 has quit [Read error: Connection reset by peer]
therealplato has quit [Ping timeout: 244 seconds]
therealplato has joined #ipfs
therealplato has quit [Read error: Connection reset by peer]
JasonWoof has quit [Ping timeout: 265 seconds]
therealplato has joined #ipfs
therealplato has quit [Read error: Connection reset by peer]
therealplato has joined #ipfs
therealplato has quit [Read error: Connection reset by peer]
inconshreveable has joined #ipfs
<ipfsbot> [go-ipfs] whyrusleeping created temp-nosync (+1 new commit): http://git.io/vG1wU
<ipfsbot> go-ipfs/temp-nosync 0a938c1 Jeromy: temporarily disable syncing in flatfs...
<daviddias> jbenet: if the signature points to the object it signed
<daviddias> and if the id of a MerkleDAG obj is its value and mlinks
<daviddias> pointing to something that requires 'us' to be complete in order to tell us the hash it returns, it is complicated
<daviddias> type Signature struct {
<daviddias> PublicKey dag.Link
<daviddias> Object dag.Link
<daviddias> Bytes []byte // sign(privateKey, Object.Hash)
<daviddias> Can we take out that `Object dag.Link`?
<daviddias> }
<jbenet> daviddias read the issue and keychain thing I linked
<jbenet> The issue comment*
Encrypt has quit [Quit: Eating time!]
<daviddias> that is where I got that from, but I'll read it again, just to be sure
<jbenet> The root is the signature object. Everything else is under that
<jbenet> What do you mean by "pointing to something that requires us to be complete in order to tel is the hash it returns...". Parse error
<jbenet> the object _by definition_ cannot point to its signature.
<jbenet> So the signature points to the object
<daviddias> If the root is the Signature object, then the Record (https://github.com/ipfs/specs/tree/master/records#the-interface) can't have a Signature
<daviddias> That makes sense
<whyrusleeping> jbenet: for the symlink PR, should 'ipfs add asymlink' add a symlink object? or follow the link?
<jbenet> When grabbing a record, you see that it's a signed object, and cleanly traverse to the Object (or call it target?) of the signature object
<whyrusleeping> (i'm leaning towards the former)
bedeho has joined #ipfs
<jbenet> daviddias: "the record" is both objects together. Or really, just the signature because, the signature contains everything underneath
<jbenet> daviddias think of it like a Commit in git
<jbenet> when you checkout commit foo, you access get(foo).tree
marianoguerra has joined #ipfs
<jbenet> Similarly here, you access get(foo).Value, and the value of a SignedRecord type (in go code) is r.Object.Value()
<jbenet> (Think of composition)
<jbenet> (( and the tree "get(foo).tree" is said to be "part of commit foo" just like the "signature.Object" (a record) is part of the SignedRecord.
nessence has quit [Remote host closed the connection]
simonv3 has quit [Quit: Connection closed for inactivity]
<jbenet> type SignedRecord struct { Record } <---- OOP composition
<jbenet> whyrusleeping: in git we trust
<daviddias> Roger :)
<jbenet> whyrusleeping: add the symlink
<daviddias> Thanks for clarifying that
<whyrusleeping> jbenet: beautiful, done and done
<jbenet> whyrusleeping which I guess is not what we were doing, And I contradicted myself?
<jbenet> or is that what rht suggested? (brain is tired)
<whyrusleeping> nope, dont worry about it
<whyrusleeping> previously we followed the links
<whyrusleeping> which in my opinion was wrong
notduncansmith has joined #ipfs
<jbenet> daviddias: yeah don't mean to be redundant, merkle datastructures are often flipped
Eudaimonstro has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> daviddias like git commit chains and blockchains point to previous nodes only. There is no next
<daviddias> I'm adding another comment on the issue, to clarify the structs, I'm getting confused by things like:
<daviddias> type Record struct {
<daviddias> Scheme Link // link to the validity scheme
<daviddias> Signature Link // link to a cryptographic signature over the record
<daviddias> Expires Data // datetime at which record expires
<daviddias> Value Data // an opaque value
<daviddias> }
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/symlinks: http://git.io/vG1yE
<ipfsbot> go-ipfs/feat/symlinks 167532c Jeromy: fix direct symlink adding...
amstocker has joined #ipfs
atomotic has quit [Quit: Textual IRC Client: www.textualapp.com]
<jbenet> daviddias yeah sorry that one is wrong
<jbenet> I wrote that spec before implementing it and realizing the typing composition
<daviddias> no worries, glad it is a editorial mistake, my head was in an infinite loop at 100% CPU trying to understand this ahaha
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/symlinks: http://git.io/vG19p
<ipfsbot> go-ipfs/feat/symlinks ee0b99f Jeromy: rm panic...
<whyrusleeping> jbenet: https://github.com/ipfs/go-ipfs/pull/1627 has been addressed
adamprocter has joined #ipfs
Eudaimonstro has quit [Ping timeout: 246 seconds]
<adamprocter> Hi very new user, have managed to get ipfs working on 2 macs with go get after unzip and mv did not work (command not found) - tried same on CENT OS vps but signal: killed so i was advised by IPFS twitter likely go comile memory hog, but same error on copy, unzip, move - command not found
<adamprocter> and echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python27/bin:/usr/local/go/bin:/root/gotest/bin
<jbenet> adamprocter: where did you move it?
<adamprocter> mv ipfs /usr/local/bin/ipfs
<jbenet> ok, stat /usr/local/bin/ipfs
<adamprocter> i just download, unzip , move is that it
<adamprocter> File: `/usr/local/bin/ipfs'
<adamprocter> Size: 4096 Blocks: 8 IO Block: 4096 directory
<adamprocter> Device: fc01h/64513dInode: 114848 Links: 2
<adamprocter> Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
<adamprocter> Access: 2015-09-02 13:57:15.706001871 -0400
<adamprocter> Modify: 2015-09-02 13:57:06.842002085 -0400
<adamprocter> Change: 2015-09-02 13:57:06.842002085 -0400
<jbenet> Supposed to be, but something's odd about the system.
<adamprocter> it was same pain on my 2 macs :(
<adamprocter> but go get worked
<ipfsbot> [go-ipfs] whyrusleeping force-pushed feat/symlinks from ee0b99f to 56f01e4: http://git.io/vG8px
<ipfsbot> go-ipfs/feat/symlinks 56f01e4 Jeromy: rm panic...
<adamprocter> say what do I need to do that ?
<jbenet> try this: echo "echo it works">/usr/local/bin/testbin && chmod +x /usr/local/bin/testbin
<jbenet> Then enter: testbin
pfraze has quit [Remote host closed the connection]
<adamprocter> ok it echo'd it works
<adamprocter> [root@procterbot ~]# echo "echo it works">/usr/local/bin/testbin && chmod +x /usr/local/bin/testbin
<adamprocter> [root@procterbot ~]# testbin
<adamprocter> it works
<adamprocter> [root@procterbot ~]#
<jbenet> Interesting
<whyrusleeping> enter: which ipfs
<jbenet> enter: /usr/local/bin/ipfs
<adamprocter> [root@procterbot ~]# which ipfs
<adamprocter> /usr/bin/which: no ipfs in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python27/bin:/usr/local/go/bin:/root/gotest/bin)
<adamprocter> [root@procterbot ~]#
<adamprocter> [root@procterbot ~]# /usr/local/bin/ipfs
<adamprocter> -bash: /usr/local/bin/ipfs: is a directory
<adamprocter> [root@procterbot ~]#
<jbenet> Oh haha
<whyrusleeping> ah
<jbenet> You need to move the binary
<jbenet> Not the whole directory
<adamprocter> hahahahaha
<adamprocter> sugar
<jbenet> Remove it first. Can you point out the docs that misled you?
<adamprocter> thats why is failed on all 3
<jbenet> We should fix that
<adamprocter> of course :D
notduncansmith has joined #ipfs
<adamprocter> Then, unzip the archive, and move ipfs somewhere in your $PATH:
notduncansmith has quit [Read error: Connection reset by peer]
<adamprocter> I suggest the folder is called something else after unzip, maybe Mac OS X > ipfs Linx x86_64 > ipfs
<jbenet> Hmm. We should probably show a "cd archive_folder" or whatever
<jbenet> The hard part is archive folder names change per arch
<adamprocter> sorry for a novice totally followed it straight
<adamprocter> cd would be fine
<jbenet> You're right this is broken on our docs. The algorithm should be exactly right, not assume you've installed bins before
<adamprocter> unzip / cd folder / mv
<adamprocter> cool what permission should file be ? as I FTP'd it up
<adamprocter> Permission denied
<adamprocter> my FTP always gets it wrong
<jbenet> chmod +rx
<adamprocter> no idea how I move a file between these things now but I have 2 macs and cent OS on the go :D
<ipfsbot> [go-ipfs] whyrusleeping created fix/panic-ignore (+1 new commit): http://git.io/vG1bk
<ipfsbot> go-ipfs/fix/panic-ignore d85d61c Jeromy: recover and print panics that happen in API server...
<whyrusleeping> adamprocter: 'ipfs add file' on one, and on the other 'ipfs get <hash> -o filename'
<whyrusleeping> (once you have ipfs running that is)
<adamprocter> nice, its running
<jbenet> or ipfs cat <hash> For stdout
<whyrusleeping> yeap
<adamprocter> while im here and every one is being awesome how do I say "get into this folder here please"
<whyrusleeping> huh?
<adamprocter> so I add file from Macbook and I want Cent OS to get it and place into a specific folder say /root/gotest/blogengine/files/
<jbenet> And another one, and another one, and another process race
<whyrusleeping> ipfs get <hash> -o /root/gotest/blogengine/files/filename
<whyrusleeping> jbenet: its my favorite type of race at this point :P
<jbenet> :c
<whyrusleeping> kinda like a stockholm syndrome type of thing
<whyrusleeping> you know?
<adamprocter> :D
<jbenet> Hahahahah
<adamprocter> and do i run a cron job to check or can IPFS on Cent OS be getting at intervals ? (sync)
<jbenet> whyrusleeping: push and hooks
<jbenet> We need those
<jbenet> Hooks will be complex. Maybe chriscool can help figure that out
<adamprocter> thanks so much I will try and move one file manually and then dinner :D but I could Cron overnight for now ?
<whyrusleeping> jbenet: push will be fun
anshukla has joined #ipfs
Eudaimonstro has joined #ipfs
pfraze has joined #ipfs
<adamprocter> the hash is per file or per device ?
<ipfsbot> [go-ipfs] whyrusleeping opened pull request #1636: recover and print panics that happen in API server (master...fix/panic-ignore) http://git.io/vG1xr
<whyrusleeping> adamprocter: its per file
gendale__ has joined #ipfs
<whyrusleeping> its the hash of the merkledag root of the file
<adamprocter> cool, plenty to think about now :D
gendale_ has quit [Ping timeout: 244 seconds]
<whyrusleeping> jbenet: i really wish i better understood what this implied: 'swarm_test.go:82: error swarm dialing to peer dial attempt failed: misdial to <peer.ID aySUDn> through /ip4/127.0.0.1/tcp/33217 (got <peer.ID >)'
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> oh maybe tried to dial itself?
thomasreggi has quit [Remote host closed the connection]
<whyrusleeping> maybe?
<whyrusleeping> i'm not sure why the 'got peer' part is a blank peer
<adamprocter> ok i added and got a hash but get just hangs
<adamprocter> ipfs get QmQHK5KffG5gojkJJQyfDWetag2X6vYxbGRZT1qfHEjjeh -o /gotest/src/github.com/adamprocter/staging/ipfs_file.md
<whyrusleeping> adamprocter: huh, i got it
<adamprocter> oh… erm maybe I miss understand
<adamprocter> all running ipfs an via terminal on mac 2 I put: ipfs get QmUZWQxExtBHVD3Z5XRAxEiwHCegqpbUZz25uSNm5SuiNv -o /Users/adamprocter/Desktop/ipfs_file.md - does not go back to command prompt and nothing on desktop
mquandalle has joined #ipfs
chriscool has joined #ipfs
<whyrusleeping> adamprocter: do you have the daemon running on both machines?
<adamprocter> yep
<adamprocter> dont worry quit terminal restarted daemon got it :D
<adamprocter> woot
<whyrusleeping> lol, weird
<whyrusleeping> resolution issues
<adamprocter> gonna try once more same with CENT then I am gonna skip around my office and go home :D
ygrek has joined #ipfs
<adamprocter> oh it went through the process (good) but said no such file or directory
<adamprocter>
<adamprocter> dont answer that
<adamprocter> no slash needed before gotest - yes!!! it worked
<adamprocter> thanks so much this is a great start for me :D
<whyrusleeping> adamprocter: awesome :)
<adamprocter> I will likely return with more stupid questions - thanks again for you time. have a good evening/ day
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
adamprocter has left #ipfs [#ipfs]
Encrypt has joined #ipfs
<jbenet> daviddias: did you find these useful? https://github.com/ipfs/specs/tree/master/keychain#diagrams
<ipfsbot> [go-ipfs] jbenet pushed 1 new commit to master: http://git.io/vGMkd
<ipfsbot> go-ipfs/master a47d6fe Juan Benet: Merge pull request #1636 from ipfs/fix/panic-ignore...
<daviddias> jbenet knowing that system existed and how it was structured really helped
patcon has joined #ipfs
<daviddias> It can be also be interesting to make a front end like keybase for other uses
<jbenet> daviddias yeah
<jbenet> so the crazy thing is entire webservices become single datastructures + a static frontend
<jbenet> it's so cool
<daviddias> Yes! :D
<whyrusleeping> <3 front end web apps
anshukla has quit [Remote host closed the connection]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
compleatang has joined #ipfs
compleatang has quit [Client Quit]
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/mfs: http://git.io/vGM32
<ipfsbot> go-ipfs/feat/mfs 669feac Jeromy: some cleanup...
hellertime has quit [Quit: Leaving.]
okket_ has quit [Remote host closed the connection]
okket has joined #ipfs
amstocker has quit [Ping timeout: 246 seconds]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<dignifiedquire> jbenet: did you realize that the logo shape is nearly identical to the one from sudoroom? https://sudoroom.org/
<jbenet> yeahhhhhhh-- there's only so many ways to do a hex-inspired-cube-mesh-of-nodes. its similar components, but looks very very different thanks to color diff. when i realized, i tested this out with people, and you're the first person to point it out.
<jbenet> (unprompted)
<dignifiedquire> okay :) just wanted to put it out there
<jbenet> the ratios, the cut off edges, and the colors really distinguish them. i dont think it's confusing. do you?
<whyrusleeping> jbenet: lets use a jellyfish as our logo
<whyrusleeping> i like jellyfish
<dignifiedquire> whyrusleeping: I’m totally down for that :) abstract jellyfish would be awesome :P
<dignifiedquire> s/abstract/stylized/
<jbenet> logos need to be very simple. to trivially drawable, and highly recognizable. there's a difference between a logo and a mascot.
<dignifiedquire> you could create a logo shape based of an animal, e.g. things like this: https://dribbble.com/shots/1404333-Neg-Fox , https://dribbble.com/shots/1812943-Argonaut-Octopus
<dignifiedquire> looks like there is already a media company who is doing sth similar: https://dribbble.com/shots/569287-Jellyfish
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
thomasreggi has joined #ipfs
<Bat`O> hi, is there a big file hosted somewhere on ipfs so i can do test on it ?
thomasreggi has quit [Remote host closed the connection]
thomasreggi has joined #ipfs
<ansuz> ^ the immortal jellyfish
<whyrusleeping> ansuz: that is awesome
<ansuz> and relevant
<dignifiedquire> ansuz: that thing looks amazing
<ansuz> because 'permanent web'
<ansuz> but I also like cubes
<ansuz> http://static01.nyt.com/images/2012/12/02/magazine/02jellyfish1/02jellyfish1-superJumbo-v3.jpg <- that could be inside of a cube, but it's much harder to draw
<ansuz> and I don't think they swarm
<ansuz> oh, yes they do
<ansuz> (swarm)
<ansuz> "Through asexual reproduction, the resulting polyp colony can spawn hundreds of genetically identical jellyfish—near perfect copies of the original adult."
<dignifiedquire> sounds like the dream ;)
* ansuz drops their DNA into a merkle tree
<dignifiedquire> they could be abstracted in a nice way, so they are easier to recognize and draw for logo and branding purposes
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/symlinks: http://git.io/vGMgk
<ipfsbot> go-ipfs/feat/symlinks 5ba7d61 Jeromy: symlink handling in files ls...
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/symlinks: http://git.io/vGMg7
<ipfsbot> go-ipfs/feat/symlinks a4e7287 Jeromy: add tests for symlinks...
sasha has quit [Ping timeout: 240 seconds]
zorun has quit [Ping timeout: 252 seconds]
zorun has joined #ipfs
sasha has joined #ipfs
sasha is now known as Guest41313
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
thomasreggi has quit [Remote host closed the connection]
dignifiedquire has quit [Quit: dignifiedquire]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
amstocker has joined #ipfs
<whyrusleeping> jbenet: if you have time, could you go over 1627 again?
<jbenet> sure
<voxelot> also, is there a random walk already implemented in go peer discovery or is this a new feature for node?
<whyrusleeping> voxelot: random walk?
<voxelot> will be good for discover, also... ipfs google? :)
<whyrusleeping> jbenet: :D
<ipfsbot> [go-ipfs] jbenet closed pull request #1627: implement symlinks in unixfs, first draft (master...feat/symlinks) http://git.io/vGlw4
<jbenet> whyrusleeping: congrats. big deal.
<whyrusleeping> i'm excited to finally have this in
<jbenet> "random walk" is what daviddias is calling making random queries to the dht to dicover more peers. (what go-ipfs calls "dht.Bootstrap()")
<voxelot> ahh ty jbenet
<jbenet> voxelot: you just run a random query over the dht. it will connect to other peers and discovery will be a side effect.
<lgierth> jbenet: random walk is glossary material. do we have one yet? gonna start one in notes.git now otherwise
<ipfsbot> [go-ipfs] jbenet deleted t0062-cleanup at 3562e72: http://git.io/vGMya
<jbenet> lgierth go for it
<whyrusleeping> jbenet: i think for 1589 we need to have n.Repo.Config() return an error
<ipfsbot> [go-ipfs] jbenet deleted check-peerid at dc68ae7: http://git.io/vGMyA
<lgierth> whyrusleeping: what does mfs stand for again?
<whyrusleeping> lgierth: mutable filesystem
<lgierth> thnx
<whyrusleeping> the name isnt official, but i needed something to use while i worked on it
<ipfsbot> [go-ipfs] jbenet closed pull request #1623: Fix and refactor daemon api test (master...fix-check-api-test) http://git.io/vGZ3T
<whyrusleeping> (i also like three letter things)
ygrek has quit [Ping timeout: 264 seconds]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet> tlts
<whyrusleeping> lgierth: lol, nice
mkarrer has quit []
nessence has joined #ipfs
<whyrusleeping> jbenet: if i'm using a process, do i need to select over process.Closed() AND process.Closing() ?
<jbenet> no
<jbenet> dont even need to select on them at all. it's for convenience.
<jbenet> the semantics are: Closing() happens after it starts closing, but may be before fully closed. Closed() means it's done.
<Luzifer> cryptix: lets talk tomorrow… I'll ping you after lunch… Just came back from service at the fire dept…
mkarrer has joined #ipfs
<whyrusleeping> jbenet: is there an error for goprocess that we can return like 'error: process closed'
<jbenet> important distinction, for example, suppose you spawn long running proc A like proc.Go(func(p) { for { doStuff(p) } } and it has a work loop inside. you then want it to end, so you call "a.Close()". a immediately enters closing state (so <-a.Closing() would not block, but <-a.Closed() would still block). the inside work loop must exit before the process can
<jbenet> be torn down. so inside work loop can check its proc and see whether <-p.Closing(), and if so exit. both are for convenience.
<jbenet> whyrusleeping: whats the case? avoiding the panic? (yeah maybe that's the right thing to do. will make the interface nastier.
<jbenet> but will avoid disaster.
<jbenet> alterntively, we can find a better interface there
<whyrusleeping> so, i'm in bitswap, and i wanted to select on bitswaps context and sending on a channel
<whyrusleeping> so if bitswap was closed, i would return ctx.Err()
<whyrusleeping> but process doesnt really have an equivalent
<jbenet> https://travis-ci.org/ipfs/go-ipfs/jobs/78469142 linux notificaitons have been failing a lot.
<whyrusleeping> ill take a look at that next if you want
<jbenet> ah interesting.
chriscool has quit [Ping timeout: 255 seconds]
<jbenet> so, : select { case <-p.Closed(): return nil, proc.ErrClosed; ... } ?
<jbenet> btw, the thing is that shutdown may fail, and if so, the error will be returned on p.Close()
<jbenet> that's the real, ctx.Done()
<jbenet> but it only happens _after_ p has closed.
<jbenet> so really: select { case <-p.Closed(): return nil, p.Close(); ... } -- may want to just add a p.Err() that blocks on <-p.Closed() and returns the err after.
<jbenet> so: select { case <-p.Closed(): return nil, p.Err(); ... }
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping> would that return the result of p.Close()?
<Bat`O> whyrusleeping: does a block size can tell me if it's a terminal block or an "aggregator" block ?
<jbenet> whyrusleeping: yeah the error is saved on the proc, so that every call to p.Close() gets it
<jbenet> (p.Close() may be called in many places)
<Bat`O> i'm asking this because 'ipfs object links" list the direct block child of a file, but i can't tell, appart from the size if there is indirect child
<whyrusleeping> jbenet: so i could do { case <-p.Closed(): return p.Close() ...
<whyrusleeping> right?
<jbenet> no select, always block i think
<jbenet> Oh
<jbenet> you mean in calling code
<jbenet> yes
<whyrusleeping> okay
<whyrusleeping> cool
<jbenet> i meant, can add: func (p *Process) Err() error { <-p.Closed(); return p.closeErr }
<whyrusleeping> alright, ill PR that
nessence has quit [Read error: Connection reset by peer]
nessence_ has joined #ipfs
<whyrusleeping> jbenet: oooh yeah, still need to look at that test failure
<whyrusleeping> jbenet: lol, i google something about godep
simonv3 has joined #ipfs
<whyrusleeping> and start reading an issue
<whyrusleeping> and oh look, jbenet commented on it
marianoguerra has quit [Ping timeout: 240 seconds]
<jbenet> whyrusleeping: this is you with PRs: https://youtu.be/ioZXCcyRgPA?t=11
<jbenet> + a chainsaw labeled 0.4.0
<jbenet> haha
<whyrusleeping> lololol, i enjoy multitasking
<whyrusleeping> it gives me more outlets if i'm blocked on one thing
<ipfsbot> [go-ipfs] thelinuxkid opened pull request #1638: Fix docker image link (master...master) http://git.io/vGMjc
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
akhavr has quit [Ping timeout: 256 seconds]
<jbenet> ok i'm going to pass out. super tired. let's try to land a lot of these this week
<whyrusleeping> jbenet: lol, your schedule
<whyrusleeping> is it actually before midnight over there?
<lgierth> utc+2 :)
<whyrusleeping> jbenet: goprocess tests dont pass >.>
<ipfsbot> [go-ipfs] whyrusleeping pushed 1 new commit to feat/rm-worker: http://git.io/vGDU2
<ipfsbot> go-ipfs/feat/rm-worker c9e76e5 Jeromy: remove context from HasBlock, use bitswap process instead...
<whyrusleeping> daviddias: ping
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ipfsbot> [go-ipfs] whyrusleeping pushed 2 new commits to master: http://git.io/vGDTH
<ipfsbot> go-ipfs/master f4989c3 Andres Buritica: Fix docker image link...
<ipfsbot> go-ipfs/master 3fc1854 Jeromy Johnson: Merge pull request #1638 from thelinuxkid/master...
t3sserakt has quit [Quit: Leaving.]
<voxelot> is there a way to traverse the data stored on a node by the peer id alone?
Guest41313 is now known as Sasha
<whyrusleeping> voxelot: programmatically? or through the API?
<whyrusleeping> oh wait, i misread
<whyrusleeping> no
<voxelot> right, thinking in the direction of building a search engine in the future
<whyrusleeping> voxelot: my thoughts on the search engine, were to index content by listening to the dht
<voxelot> yup, i was thinking of a more proactive approach like making a crawler, without too much dht spamming
<whyrusleeping> you dont need any dht spamming
<whyrusleeping> just make a bunch of nodes that record all provide messages
<whyrusleeping> and provider request message
<whyrusleeping> s
<voxelot> ohh true, although it would be expensive to get a large amount of nodes out with S/Kademlia with anyti-sybil right
<voxelot> not sure how many listeners would be needed to index enough for a search engine
<whyrusleeping> voxelot: not entirely, S/Kademlia does good at anti-sybyl, but that doesnt mean you need to perform a sybil attack to list to most requests
nessence_ has quit [Remote host closed the connection]
<whyrusleeping> kademlias strength comes from the number of requests it makes
<whyrusleeping> all you have to do is receive one of those
<voxelot> interesting
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
JasonWoof has joined #ipfs
nessence has joined #ipfs
pfraze has quit [Remote host closed the connection]
<lgierth> whyrusleeping: but don't you have to serve tons of bytes in order to get all that stuff, given your indexing node is in competition with other nodes leeching the same stuff?
<lgierth> that probably isn't a problem if you want to index the less popular stuff
<whyrusleeping> lgierth: potentially yeah
<whyrusleeping> which means, that to efficiently index it all, you have to make the network better :D
<lgierth> :):)
<lgierth> and actually provide the stuff you nidex
<lgierth> which is in your own interest of course
<voxelot> like google working with spacex to get satelites up, sybiotic relationships
anshukla has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
Encrypt has quit [Quit: Sleeping time!]
Eudaimonstro has quit [Remote host closed the connection]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
patcon has quit [Ping timeout: 255 seconds]
amstocker has quit [Ping timeout: 246 seconds]
P104 has joined #ipfs
pfraze has joined #ipfs
akhavr has joined #ipfs
anshukla has quit [Remote host closed the connection]
thomasreggi has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
danslo has quit [Quit: Leaving.]
P104 is now known as uuidgen
uuidgen has quit []
P104 has joined #ipfs
P104 has quit [Client Quit]
uuidgen has joined #ipfs
uuidgen has quit []
uuidgen has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<daviddias> whyrusleeping: here:)
<daviddias> Got it
<daviddias> Thank you
<whyrusleeping> no probs!
<whyrusleeping> i'm trying to figure out how to fix the assets bindata stuff
<daviddias> whats that?
<whyrusleeping> we have the welcome docs in text form
<whyrusleeping> and we run some code to generate them into go files
<daviddias> ok, still didn't get what is the current issue
<whyrusleeping> oh, merge conflict
<ipfsbot> [node-ipfs-api] diasdavid tagged v2.3.1 at 185d37f: http://git.io/vGDwm
<daviddias> ah, so it works, nice :)
simonv3 has quit [Quit: Connection closed for inactivity]
<whyrusleeping> yeah, i'm updating dev0.4.0
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
nrw has quit [Ping timeout: 256 seconds]
nrw has joined #ipfs
domanic has joined #ipfs
uuidgen has quit []
ygrek has joined #ipfs