<whyrusleeping>
M-hash: tried those once. would not recommend
<M-hash>
really? i find them less effort than drinking enough mountain dew and never got the hang of coffee.
<M-hash>
(an earl grey though... well, that's another matter.)
<whyrusleeping>
M-hash: yeah, i dont know. It never had quite the same effect as the same amount of caffiene in coffee form
<whyrusleeping>
and it would always make me jittery, where coffee i could handle just fine
<M-hash>
true. I noticed that too... now I usually break them in half and space those apart about 45 minutes to simulate the smooth ramp up of drinking something.
<whyrusleeping>
hmm... not a bad idea
<M-hash>
thinking about it in terms of halflifes and action curves like a serious drug is almost enough to put one off caffeine though. almost. ^^
lithp has joined #ipfs
<whyrusleeping>
haha, almost
<Sonarpulse>
I would not worry about List<Hash> vs Map<String, Hash> normally, but this is the core of spec
<whyrusleeping>
Sonarpulse: its actually (List<Link>, Data)
<Sonarpulse>
Link is (String, Hash) then?
<whyrusleeping>
where Link = (Name, Hash<MerkleDag>, Size)
<Sonarpulse>
ok
<Sonarpulse>
what is the point of the name?
<Sonarpulse>
Especially if a name can be reused in a single node?
<whyrusleeping>
thats how you specify which child youre looking at
<whyrusleeping>
use cases for using the same name for multiple nodes are somewhat few
<whyrusleeping>
the only time we really do it is when we arent giving names to the links
<whyrusleeping>
and we rely on the links being ordered to traverse correctly
<Sonarpulse>
human readable paths (relative hash) seem like something that could be handled outside the thin waste
notduncansmith has joined #ipfs
<Sonarpulse>
Alternatively, might be good to state that names must be unique, for conceptual Map<String, (Hash, Size)>
notduncansmith has quit [Read error: Connection reset by peer]
doei has joined #ipfs
<Sonarpulse>
to make sure such paths can in fact address all children
<doei>
@whyrusleeping i'm sorry my connection hates me right now
jamescarlyle has joined #ipfs
<whyrusleeping>
Sonarpulse: yeah, unambiguous pathing is an interesting issue
<doei>
could you tell me what the ipfs cat hash is again?
<whyrusleeping>
Sonarpulse: jbenet had mentioned being able to also address links by their index
<whyrusleeping>
doei: run the command and find out ;)
<doei>
well i did, it works and all, but i don't understand what that specific hash relates to, or how to find it back
<Sonarpulse>
I'd propose the true merkel tree paths are hash ( '/' list-index )*
<Sonarpulse>
9812734091827304/0/6/4/3/5/4/3/2/4/6/7/87/89/9 is ugly, but so is the initial hash
<Sonarpulse>
will be using DNS or IPNS on top anyways
<M-hash>
not always! :)
<Sonarpulse>
*will be using......when one wants a nice name
jamescarlyle has quit [Ping timeout: 246 seconds]
<whyrusleeping>
doei: that hash is the hash of the welcome documents directory
<whyrusleeping>
so when you ran cat you specified that you wanted to cat the 'readme' object inside that dir
<M-hash>
sure! I'm just piping up as someone one who often wants does want to refer to that ugly hash in a static way :3
<Sonarpulse>
M-hash: 9812734091827304/0/6/4/3/5/4/3/2/4/6/7/87/89/9 is just as static
<Sonarpulse>
and even uglier!
<M-hash>
yeah, but I *use* /ipfs/Qm348u9[...]/this/is/my/human/filesystem" right now
<Sonarpulse>
the filesystem layer is called unixfs right?
<doei>
@whyrusleeping, ok cool, where is it stored?
<Sonarpulse>
Easy enough to have ipfs-unix-fs/Qm348u9[...]/this/is/my/human/filesystem or something
<ipfsbot>
[go-ipfs] whyrusleeping opened pull request #1743: allow for dht keys to be escaped (master...dht-key-escape) http://git.io/vnwXC
<spikebike>
hrm, seems like we need a name entries that take a date and produce the resulting checksum
<doei>
@whyrusleeping, ah ok got it (in files > all) thx for the help
<Sonarpulse>
M-hash: the data for a directory node would store the names of each child of the directory
<Sonarpulse>
Very simple to recursively use that data to convert names to indices
<whyrusleeping>
doei: yeah, all the data is stored in $IPFS_PATH/blocks
<whyrusleeping>
which defaults to ~/.ipfs/blocks
atrapado has quit [Quit: Leaving]
<doei>
alright, i thought it was weird not to have an ipfs command that lists everything stored locally
<doei>
(or i missed it)
<whyrusleeping>
doei: 'ipfs refs local' will show you every object thats stored locally
<whyrusleeping>
what that doesnt tell you is which of those are files or directories or other
doei has quit [Ping timeout: 240 seconds]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
doei has joined #ipfs
doei has quit [Changing host]
doei has joined #ipfs
apophis has quit [Ping timeout: 246 seconds]
Quiark has joined #ipfs
apophis has joined #ipfs
apophis has quit [Quit: This computer has gone to sleep]
apophis has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<zignig>
whyrusleeping: hola!
<whyrusleeping>
zignig: how goes it down there?
<zignig>
upsidedown, but otherwise well.
doei has quit [Ping timeout: 250 seconds]
<whyrusleeping>
well thats good
<whyrusleeping>
what have you been up to lately?
nf has quit [Quit: Page closed]
<fazo>
I've been thinking about a few really nice apps we could built over ipfs.
<zignig>
fazo: each one checks the others values and they come to a consenus.
<fazo>
yep, that's what I started building a few days ago.
<fazo>
I wanted to use it to sync directories on my computers
<zignig>
a good applicaiton.
<zignig>
i'm also looking a storing historical convergences by date.
<fazo>
well, I'm going to sleep now
<zignig>
fazo: gnite!
<fazo>
take a lot at that link if you'd like to see a small plan detailing how to build a search engine and a community board app (like reddit)
<fazo>
bye
fazo has quit [Quit: leaving]
<zignig>
will do , bye
simonv3 has quit [Quit: Connection closed for inactivity]
bedeho has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
voxelot has joined #ipfs
apophis has quit [Quit: This computer has gone to sleep]
amstocker has joined #ipfs
<spikebike>
seems like fazo's and similar uses cases are going to need something like a array/table of mappings of checksum=getChecksum(timestamp,name)
<spikebike>
not sure what to call said table/idea
<spikebike>
RSS feeds, forums, posts, reddit like content, blogs, etc.
nicolagreco has joined #ipfs
<spikebike>
would be way cool to use similar to see previous versions of objects
lithp has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<zignig>
spikebike: indeed, how to lay out the history will be the trick.
<zignig>
also making sure everyone has the _same_ history.
<spikebike>
doesn't seem that necessary
<spikebike>
certainly any ipns -> checksum is better than nothing
<spikebike>
if userA can see 16 previous versions and userB sees 18 previous versions doesn't seem like a big deal
Soft has quit [Read error: Connection reset by peer]
<spikebike>
these aren't financial transactions, just content.
<spikebike>
I'd rather have 90% of all previous versions than just the current version always
<zignig>
yes, I'm thinking of asset repositories more ( think thingiverse ) , where a canonical shared history is a good form of trust.
<spikebike>
ah, yeah, I was just thinking things like wordpress, facebook, reddit, slashdot, etc type content
fwippy has joined #ipfs
<zignig>
in those cases , current and most/some recent history would do.
<spikebike>
yeah, kinda like in wikipedia where you get the newest version unless you click on the history tab
notduncansmith has joined #ipfs
<zignig>
pretty much.
notduncansmith has quit [Read error: Connection reset by peer]
<spikebike>
and less like github where if you can download a repo you get every commit 100% of the time
rozap has joined #ipfs
<spikebike>
maybe each ipfs dirs should have a .ipfs_history with a line for each insert/delete/change fo rthat dir
<spikebike>
or API for similar
wopi has quit [Read error: Connection reset by peer]
<fwippy>
related tip: you can do `git clone --depth=1` to do a shallow clone with only the most recent data :)
wopi has joined #ipfs
<jbenet>
sorry for being afk everyone. @stanford meeting with various people.
<jbenet>
whyrusleeping: drop me the highest prio PRs for you here when you get a chance
<jbenet>
i'll CR them first
<zignig>
how did your meeting go ?
<zignig>
spikebike: i think convention rather than proscription is good , people will come up with cool ideas.
<zignig>
then everyone can use it if they like.
* davidar
waves to zignig
<zignig>
davidar: o/
<davidar>
zignig (IRC): by shared history, you mean like a git commit chain?
<M-hash>
fwippy: since i detect a git wizard... do you know if there's any way to ask a git remote what it has, or if it has hash=x?
Soft has joined #ipfs
hellertime has quit [Quit: Leaving.]
<zignig>
davidar: sort of, I'm still trying to wrap my head around it.
apophis has joined #ipfs
<zignig>
by the way ipfs is content based, if two nodes have a folder that has /2015/09/01/blah , if the top level (2015) has the same hash , they can be sure that all the content below is the same.
<zignig>
davidar: indeed, hopefully that won't happen any time soon.
<zignig>
that said I think the problems will extend beyond ipfs. ;)))
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<achin>
right now, the merkledag hashes are computed based on the serialized protobuf object. does this mean we are committed to using protobufs forever, or is there a plan to support other serialization methods (i think i remember seeing CBOR mentioned)?
<davidar>
zignig (IRC): am I the only one who has this urge to brute force a cycle into the merkledag? :p
<fwippy>
M-hash: `git ls-remote` might help you out. Alternately, you can add some extra info to your git log command, and look around manually for what you're interested in
<davidar>
achin (IRC): the plan is to move to multicodec iirc
yosafbridge has quit [K-Lined]
<M-hash>
fwippy: nope, ls-remote will only tell you about commits directly linked by refs, and git-log (afaik) can't work on a remote, so neither of these buy me what I want (which is cheaply checking *if* a remote has a commit, without downloading the whole thing up front)
<fwippy>
Ah; I'm not sure then, sorry.
<achin>
ok, neat. am i right in thinking this will be a breaking change? meaning all existing data serialized with protobufs will be unrecognizable as a multicodec? (or maybe there is a way to detect old versus new formats)
<zignig>
davidar: no, I have considered that. Major pain to do , and kind of breaks the whole acyclic bit.
<zignig>
but that's the point ;/
<davidar>
zignig (IRC): I know, hence why it would be cool
yosafbridge has joined #ipfs
<davidar>
Would be easier with one of the weaker multihash types
<achin>
the weakest is SHA1, which isn't all that weak (not close to MD5-level weak)
<davidar>
Hmm...
<davidar>
PR: md5 support for multihash
<davidar>
For, uh, legacy support...
<achin>
git commit -m "Add MD4 support for multihash. for reasons. that are boring. very boring. pls dont ask kthx"
<whyrusleeping>
spikebike: i love how you just keep an md5 collision around
<achin>
you never know when you might need it!
<davidar>
As of 2012, the most efficient attack against SHA-1 is considered to be the one by Marc Stevens[35] with an estimated cost of $2.77M to break a single hash value by renting CPU power from cloud servers.
<davidar>
:(
<spikebike>
whyrusleeping: heh, p2p backup, and various other backup solutions discuss checksums quite a bit
<spikebike>
that's a good one for "isn't md5 good enough"
<achin>
"Grant Proposal: IPFS team is asking $2.77M for IPFS R&D. for reasons. that are boring. pls dont ask"
<davidar>
Hehe
<spikebike>
davidar: does GPUS change that by 20x?
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping>
thats probably only about $1m in todays computing power
<davidar>
A collision attack is therefore well within the range of what an organized crime syndicate can practically budget by 2018, and a university research project by 2021.
<davidar>
spikebike (IRC): maybe? Try it :)
<zignig>
has there been any analysis on multihashes? presumably with 160bit truncation the collisions get (a bit) closer.
<spikebike>
fortunately sha2 has algorithmic as well as 256 bit improvements
rozap has quit [Read error: Connection reset by peer]
<zignig>
whyrusleeping: is it possible to add short messaging to the 'ping' functionality ( and a hook to have an external processor )
<whyrusleeping>
zignig: uhmm... what are you after?
<davidar>
zignig (IRC): ping Morse code :)
<zignig>
notification mostly, node A can send a "this is a cool hash" to node B.
<whyrusleeping>
zignig: ehhh, thats not really what ping is supposed to be used for, lol
rozap has joined #ipfs
<zignig>
if it's signed B can know that it is from A and act accordingly.
<zignig>
it's not, but it would be cool.
<davidar>
whyrusleeping (IRC): since when is anything on the internet used for what it was originally supposed to? :)
<whyrusleeping>
davidar: a fair point, lol
<whyrusleeping>
but at the stage of the game, we're rethinking a lot of things
<whyrusleeping>
so if we need a certain functionality, why not build it into a proper tool?
<zignig>
that's why it's called Alpha version...
<whyrusleeping>
yeap
trock has joined #ipfs
<davidar>
whyrusleeping (IRC): are you trying to tell me pwnat is some kind of awful hack? :p
<whyrusleeping>
lol, awful would be one term to describe what sort of hack it is ;)
<whyrusleeping>
but 'pretty freaking cool' would also work
<davidar>
I rest my case... :p
<zignig>
wtf pwnat.
<whyrusleeping>
now imagine we're building a car, and someone comes along and says 'man, this is cool, i can hack this car by taking the wheel, and putting my stuff in it, and then rolling it in front of my skateboard as i skate down the road'
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<zignig>
whyrusleeping: as long as has a keg in the boot.
wopi has quit [Read error: Connection reset by peer]
<davidar>
jk, BTW, no need to bring out the car analogies ;)
wopi has joined #ipfs
<whyrusleeping>
lol
<whyrusleeping>
i figured as much
fwippy has quit [Remote host closed the connection]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ion>
fps: AFAIU Gentoo uses merge3 for config updates.
voxelot has quit [Ping timeout: 255 seconds]
apophis has quit [Quit: This computer has gone to sleep]
<davidar>
whyrusleeping (IRC): btw, a better analogy would be "why are these indicators limited to just blinking on and off at a constant rate, there's wasted bandwidth there that I could be using to communicate messages to other drivers!" ;)
<davidar>
actually, that's not a bad idea
<davidar>
ip-over-indicators :)
<davidar>
hook in the brake and foglights, you could get some broadband happening
* davidar
runs to patent office
apophis has joined #ipfs
<davidar>
claim 73) all of the above claims, on a computer
<ion>
I totally read richardlitt’s message as a DoS threat at first.
sseagull has quit [Quit: leaving]
<davidar>
ion: lol. also, since when did i commit to writing todos?
<davidar>
TODO: whatever I get around to doing
<zignig>
TODO: find time to update TODOs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<zignig>
in the go-ipfs folder
<zignig>
grep -R TODO | grep -v Godeps | wc -l
<zignig>
257
<zignig>
looks like there is lots TODO.
* whyrusleeping
hides
* davidar
looks for whyrusleeping under the trapdoor
* davidar
cue zignig...
<zignig>
WHERE'S MY DINNER !
<davidar>
hehe
<davidar>
whyrusleeping (IRC): burke for ipfs mascot? :)
nicolagreco has quit [Quit: nicolagreco]
pfraze has quit [Remote host closed the connection]
pfraze has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<multivac>
jbenet: 2015-09-22 - 11:28:56 <davidar> tell jbenet people keep asking me what ipld is about, but I still don't completely understand the overall goals either
<jbenet>
thanks multivac
<davidar>
lol, took you long enough multivac
<jbenet>
davidar: o/
<davidar>
hey jbenet
<jbenet>
goal was a JSON-LD compatible thing, but we relaxed constraint to the "one huge JSON doc -- that's merkle-linked to provide transparent access"
<davidar>
jbenet: what about the metadata stuff?
<jbenet>
"metadata stuff" ?
<davidar>
i seem to recall you saying you wanted arbitrary metadata to be an intrinsic part of ipld?
<davidar>
or is that not the case anymore?
kerozene has quit [Max SendQ exceeded]
<davidar>
personally i'd be happy for it just to be layered on top of ipld
<ipfsbot>
[go-ipfs] jbenet pushed 2 new commits to master: http://git.io/vno5C
<ipfsbot>
go-ipfs/master 9c6ec29 Juan Benet: Merge pull request #1704 from klauspost/use-compression-level...
<ipfsbot>
go-ipfs/master 4b81d9e klauspost: Fix gzip compression level not being set....
<davidar>
jbenet, also, if jsonld is no longer part of the plan, the name ipld is a little bit confusing
<ipfsbot>
[go-ipfs] jbenet force-pushed test/gz from 6038c51 to 2eb8883: http://git.io/vno5i
<ipfsbot>
go-ipfs/test/gz 2eb8883 rht: Sharness: add test for compression level...
<davidar>
people see linked data and immediately assume rdf,etc
kerozene has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet>
davidar: "arbitrary metadata to be part of ipld?" i dont understand, i mean, links will be able to carry other meta-data now, is that it?
<jbenet>
and yeah, i'd like not to pretend it's the RDF model when it's not, but it may be ok to provide something that _can_ carry the RDF model.
<rendar>
hmm, what is RDF model?
<davidar>
jbenet: that's what I'm asking :). What I want to know is, is there anything other than "one huge JSON doc -- that's merkle-linked to provide transparent access", or is that it?
<davidar>
i'm happy if that's it
<davidar>
just don't want to confuse other people if it isn't
kerozene has quit [Max SendQ exceeded]
kerozene has joined #ipfs
<davidar>
specifically I'm referring to the @directive stuff
<jbenet>
davidar: the @directive stuff is not settled yet. we may do more there, but for now no.
<jbenet>
we will escape @ just in case though, to avoid a format change.
<jbenet>
user will see the same data in + out.
<davidar>
ok, cool, sgtm :)
akhavr has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<davidar>
jbenet, sorry about starting the npm argument btw, in hindsight I could have worded my initial remark less provocatively :)
<jbenet>
hahaha np. i'm just countering what i think are bad biases
<jbenet>
all popular-enough languages have something valuable to learn, and something interesting to them.
<davidar>
sure thing
<davidar>
the "nodejs can do no wrong" crowd have scarred me though :p
<jbenet>
js gets hated on a lot, very unfairly i think. its a quirky language, but the system/platform around it is amazingly powerful. (the browser ecosystem etc). in general, i've stopped looking at platforms as purely for their language-- because i find that the system around the language usually is more important to software development
<daviddias>
cheers to that! :)
atomotic has joined #ipfs
<jbenet>
and -- as far as i've experienced yet -- not a single language understands the importance of modularity + implements extremely good support for it -- as the "node/npm" platform.
<jbenet>
(let that be a challenge to bring all the other systems to par)
<davidar>
yeah, modularity and package management kind of suck in general
<davidar>
in terms of support, i mean :)
<jbenet>
not in the good parts of node. this is why i defend it. really worth experiencing.
<lgierth>
davidar: hey -- don't wanna spoil the bot fun
<lgierth>
for [gateway.]ipfs.io/(ipfs|ipns) urls it'd be useful i think
<davidar>
lgierth: cool, i'll do that once i work out why it's throwing regex errors and disabling the module entirely ;)
<davidar>
jbenet, alright i get that aspect
compleatang has quit [Quit: Leaving.]
<davidar>
personally i'm holding out for the 'there are no "open source projects" - only "the open source Key-Value database of all functions"' idea :)
<davidar>
jbenet, my thesis kind of almost tangentially touches on that sort of thing, so maybe i might be able to justify hacking on it a little bit at some point ;)
<davidar>
for suitable definitions of "justify" :p
<jbenet>
yay!
apophis has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
akhavr has quit [Ping timeout: 240 seconds]
<davidar>
there's also a lot of other tangential stuff I keep wanting to do and scaring my supervisors about scope creep though :p
* davidar
bbiab
<ion>
jbenet: It’s great you want to look at those languages for design ideas. I have had a bunch of ideas about how to do programming better over the years (having only had exposures to languages within the CLispScript triangle) only to learn that Haskell already did things better than any of those ideas once i got around to learning it. :-)
ygrek has joined #ipfs
<ion>
Erlang’s process model is amazing. There’s a project to implement it in Haskell.
<jbenet>
ion: yeah haskell typically already solved everything decades ago.
<jbenet>
ion: oh yeah? ptr?
<jbenet>
ion: the actor model is one thing i want to bring to all languages
<ipfsbot>
[go-ipfs] rht force-pushed test/gz from 2eb8883 to 43dbd1c: http://git.io/vno5i
<ipfsbot>
go-ipfs/test/gz 43dbd1c rht: Sharness: add test for compression level...
<jbenet>
btw, the actor model is CSP + a lot of tooling
<ion>
A major part of what makes what Erlang/OTP does great is the process supervision tree stuff which lets you handle and recover from failures really nicely.
<ion>
I’m under the impression that the actor model doesn’t cover that part, which is something all other languages should also learn from.
Gennaker has quit [Ping timeout: 256 seconds]
<achin>
isn't jbenet on the west coast? why are you awake?
<cryptix>
achin: lol that should be on the faq
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
devbug has joined #ipfs
<slothbag>
im getting errors about missing /vendor/go-log-v1.0.0
apophis has quit [Read error: Connection reset by peer]
<slothbag>
not sure if its a go problem or ipfs problem
<slothbag>
(trying to compile)
apophis has joined #ipfs
bedeho has joined #ipfs
apophis has quit [Client Quit]
Gennaker has joined #ipfs
slothbag has quit [Quit: Leaving.]
<rschulman>
jbenet: Haskell solved everything ages ago, but nobody knows because nobody can understand Haskell. ;)
<davidar>
rschulman: you take that back :p
<jbenet>
ion: process supervision sort of like unix proc trees with exception handling?
<davidar>
but yeah, a lot of haskell tutorials kind of suck
zero-ghost has left #ipfs [#ipfs]
<jbenet>
slothbag on windows?
<rschulman>
I know its completely cliche to say, but I have tried to understand haskell, and done a decent job of it, I think, right up until monads.
<rendar>
ion: basically erlang works with a parent process which monitors all their children and the parent process can be a children too, like in a tree of processes where parents monitor children, right?
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
nicolagreco has quit [Quit: nicolagreco]
vijayee_ has joined #ipfs
pfraze has joined #ipfs
<ion>
rendar: That's part of it, but handling the case of children dying the right way is an important part. When you spawn a child, you are linked to it: whenever one crashes, the other will be killed on the assumption that one can't operate without the other. A parent can optionally “trap exits”, i.e. receive a message instead of dying when a child crashes. You usually don't do that explicitly but use an OTP
<ion>
abstraction called the supervisor which lets you provide a static set of rules for what to do when an immediate child dies. How frequently can a child crash and be restarted until the supervisor gives up and dies itself so the parent supervisor can try to reach a working state by restarting a larger subset of the application? When one of the immediate children crashes, should one or more of the other children
<ion>
be restarted? You avoid defensive programming (which leads to an explosion of corner cases which you need to test) whenever “just crash and be restarted” is a good enough response to a failure. Note that defensive programming can simply not handle every possible situation such as hardware failures, but a crash-and-restart behavior can cover that, especially if you have redundant hardware on which to start
<ion>
things when a machine dies.
<ion>
Wow, that ended up being a long message.
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
ladd has joined #ipfs
kerozene has quit [Max SendQ exceeded]
nicolagreco has joined #ipfs
brab has quit [Ping timeout: 250 seconds]
nicolagreco has quit [Quit: nicolagreco]
nicolagreco has joined #ipfs
kerozene has joined #ipfs
pfraze_ has joined #ipfs
nicolagreco_ has joined #ipfs
voxelot has joined #ipfs
voxelot has joined #ipfs
nicolagreco has quit [Ping timeout: 246 seconds]
notduncansmith has joined #ipfs
nicolagreco_ is now known as nicolagreco
pfraze has quit [Ping timeout: 272 seconds]
notduncansmith has quit [Read error: Connection reset by peer]
<achin>
the functionalness of erlang helps a lot with this too
hrjet has quit [Ping timeout: 250 seconds]
hrjet has joined #ipfs
fiatjaf has left #ipfs ["undefined"]
nicolagreco has quit [Quit: nicolagreco]
pfraze_ has quit [Remote host closed the connection]
danielrf1 has joined #ipfs
Gennaker has quit [Ping timeout: 252 seconds]
kerozene has quit [Max SendQ exceeded]
nicolagreco has joined #ipfs
nicolagreco has quit [Client Quit]
danielrf has quit [Ping timeout: 240 seconds]
<ion>
The immutability of data and only having message-passing as the way to communicate between processes is important for all of this to work right, yeah.
<ion>
Asynchronous message passing at that. (You can implement synchronous messages on top of that.)
jhulten has joined #ipfs
danielrf2 has joined #ipfs
danielrf1 has quit [Ping timeout: 264 seconds]
jhulten has quit [Ping timeout: 252 seconds]
<achin>
so implementing code hotswapping in C++ sounds like a nightmare to me
<achin>
(though i bet someone has hacked hard enough to get something to work)
<ion>
achin: You can load a new version of a library, have a thread running the old code jump to a function in it at a convenient time (e.g. at the beginning of its main loop) and garbage collect the old library. That's what Erlang does.
<achin>
but you have state to transfer
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
kerozene has joined #ipfs
Gennaker has joined #ipfs
<ion>
Erlang keeps that on the stack. When the main loop of your process is to jump back to its beginning, you just tail-call the main loop function with the state as the parameter. When jumping to a new version, only which function you call changes. Of course the new version needs to accept the state in the exact format the old version uses and do a possible migration.
hellertime has quit [Ping timeout: 250 seconds]
hellertime has joined #ipfs
<ion>
And if you screw up something in the migration (e.g. fail to pattern match one of the possible forms for the state variable), it will just crash and be restarted by the parent supervisor. (A statically typed language with a decent type system would warn you about the missing pattern, Erlang won't.)
richardlitt has left #ipfs [#ipfs]
richardlitt has joined #ipfs
Tv` has joined #ipfs
<achin>
ion: erlang keeps state on the stack, but c++ doesn't (at least not always)
kerozene has quit [Max SendQ exceeded]
<ion>
achin: Yes, you need to program in Erlang in C++ to have Erlang in C++. :-P
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
kerozene has joined #ipfs
pfraze has joined #ipfs
simonv3 has joined #ipfs
kerozene has quit [Max SendQ exceeded]
jfis has quit [Read error: Connection reset by peer]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<rschulman>
Guys, just use Rust!
<rschulman>
(this message brought to you by the committee to piss off whyrusleeping)
<achin>
:D i've already written a tool in rust that will print out all the refs for an ipfs block
jhulten has joined #ipfs
* whyrusleeping
sips coffee menacingly
kerozene has joined #ipfs
<cryptix>
how about actionscript?..
fazo has joined #ipfs
kerozene has quit [Max SendQ exceeded]
lithp has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
kerozene has joined #ipfs
<ion>
PHP
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping>
cobol
devbug has joined #ipfs
<cryptix>
whyrusleeping: was about to say that :) if we want to get nodes in the financial sector, it might be a good bet :P
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
lithp has joined #ipfs
fazo has quit [Ping timeout: 272 seconds]
<rschulman>
whyrusleeping: Pure ASM?
<whyrusleeping>
rschulman: that may be preferable in some cases
<rschulman>
it'll be faster
<rschulman>
get you to your indecipherable crash damn quick
<whyrusleeping>
lol, i remember debugging a lock ordering issue once
<whyrusleeping>
and some of the code was 'optimized' x86 asm
<whyrusleeping>
i drank at work.
<whyrusleeping>
it was the only way
<rschulman>
haha
rvsv has left #ipfs ["ERC (IRC client for Emacs 24.5.1)"]
notduncansmith has joined #ipfs
atrapado has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
amstocker has joined #ipfs
hellertime1 has joined #ipfs
hellertime has quit [Read error: Connection reset by peer]
user24 has joined #ipfs
<ion>
If someone made a really nice command line interface for IPFS-as-a-VCS, that could be a serious contender to Git. Git gets many things right (and IPFS gets all of those equally right) and I love it, but there is merit to the complaints about its command line UI. Also being able to stream the repository contents on demand is a win, especially with large files (for which git seems to need third-party tools with
<ion>
out-of-repo storage).
<whyrusleeping>
:/
<whyrusleeping>
git has my favorite UI of any CLi tool
M-jgrowl has joined #ipfs
<whyrusleeping>
ion: but I do agree, it would be really cool to have an ipfs based DVCS
<achin>
on similar lines: one of the thigns i love about git is that it exposes all of its internal plumming commands (git-ls-tree git-commit-tree, etc). it would be awesome if ipfs did the same (so right now that might mean a slightly better "ipfs object" interface)
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping>
achin: what sort of interface do you imagine?
<achin>
i'm not totally sure. i like "ipfs object patch" to adding and removing links. but if i want to modify the data, i have to feed a JSON object to "ipfs object put", which feels a little inconsistant
<achin>
ion: it seems like the nextneg ipns might be all that would be required for ipfs-as-a-VCS (to handle branches). do you think anything else is missing?
<achin>
s/nextneg/nextgen/
<multivac>
achin meant to say: ion: it seems like the nextgen ipns might be all that would be required for ipfs-as-a-VCS (to handle branches). do you think anything else is missing?
<achin>
hehe, thank you robot
<whyrusleeping>
achin: try running commands before saying they dont exist :P
<achin>
uh oh!
<whyrusleeping>
theres also 'append-data'
<achin>
i admit i didn't try these commands, but i only looked at the output of "ipfs object patch --help". i don't see any reference to set-data or append-data
<whyrusleeping>
well, now i cant actually blame you
* whyrusleeping
sighs and writes some docs
nicolagreco has joined #ipfs
<ion>
:-)
<achin>
yay, "object patch set-data" does exactly what i want :)
<whyrusleeping>
wooo!
<whyrusleeping>
it will be in the helptext shortyl
<achin>
yay
devbug has quit [Ping timeout: 268 seconds]
nicolagreco_ has joined #ipfs
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco_ is now known as nicolagreco
devbug has joined #ipfs
captain_morgan has joined #ipfs
<noffle>
I'm sure this has already been discussed somewhere, but are there plans to separate out the pieces of the monstrous go-ipfs repo?
<whyrusleeping>
noffle: yeah, we want to
<ipfsbot>
[go-ipfs] whyrusleeping created doc/patch-data (+1 new commit): http://git.io/vni0V
<ipfsbot>
go-ipfs/doc/patch-data 62656cd Jeromy: document the set-data and append-data commands in patch...
<whyrusleeping>
we're really just waiting for go1.5 to be more stable and widespread
ianopolous has joined #ipfs
<whyrusleeping>
because its difficult to break it apart without the vendoring stuff
notduncansmith has joined #ipfs
* noffle
reads about golang vendoring
<noffle>
I'm a pretty hardcore golang plebe
<noffle>
at least in terms of *writing* it. I really love a lot of pike's design decisions
<noffle>
I feel like I see a bit of it in ipfs in the form of solid, well-defined command line tooling.
ianopolous2 has joined #ipfs
ianopolous has quit [Ping timeout: 240 seconds]
notduncansmith has quit [Ping timeout: 260 seconds]
ianopolous2 has quit [Remote host closed the connection]
<whyrusleeping>
we try :)
ianopolous2 has joined #ipfs
devbug has quit [Ping timeout: 250 seconds]
<achin>
i tried building go-ipfs from a git checkout, but i failed misserably :(
<noffle>
I think it's one of ipfs' strengths compared to other similar efforts. the CLI makes it trivial to play with the concepts of ipfs, and grok how things work and how powerful they are.
<whyrusleeping>
achin: what did you try?
devbug has joined #ipfs
<achin>
"make build"
<ipfsbot>
[go-ipfs] whyrusleeping opened pull request #1745: document the set-data and append-data commands in patch (master...doc/patch-data) http://git.io/vnigw
* achin
tries again to remind himself what didn't work
<achin>
oh yeah, i wanted to fix a doc issue in core/commands/diag.go, so i edited the file, did "make build", but when i ran `./cmd/ipfs/ipfs diag net --help` i didn't see my change reflected in the output
<whyrusleeping>
achin: strange
<whyrusleeping>
achin: can you try 'go build ./cmd/ipfs'?
<whyrusleeping>
and then ./ipfs
nicolagreco_ has joined #ipfs
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco_ is now known as nicolagreco
<achin>
whyrusleeping: no different (didn't help)
<achin>
to be clear on the change that i made, i took the "Sends out a message" string on line 56 and turn it into all caps (just to be something trivial and easy to recognize)
<ion>
achin: Perhaps make a typescript and pastebin^Wipfs it.
<achin>
ion: good idea
notduncansmith has joined #ipfs
* ion
realizes Microsoft is using the word now.
notduncansmith has quit [Read error: Connection reset by peer]
simonv3 has quit [Quit: Connection closed for inactivity]
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco has joined #ipfs
<whyrusleeping>
achin: stupid question, did you restart your daemon?
<whyrusleeping>
(99% of the time people have the 'i changed commands lib code and nothing happened' its that)
nicolagreco_ has joined #ipfs
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco_ is now known as nicolagreco
<whyrusleeping>
although helptext should all be done clientside...
<achin>
whyrusleeping: no i didn't. i didn't think to do so, since i was just shanging the helptext
<whyrusleeping>
hrm... it bugged out on me for some reason
<achin>
:( maybe your terminal is smaller than mine?
<whyrusleeping>
achin: ah
<whyrusleeping>
gotcha
<whyrusleeping>
i see the issue
<whyrusleeping>
when working on go code, you need to work inside your $GOPATH
<whyrusleeping>
so cd $GOPATH/src/github.com/ipfs/go-ipfs
devbug has quit [Ping timeout: 264 seconds]
<whyrusleeping>
when you were building cmd/ipfs
<whyrusleeping>
it was importing "github.com/ipfs/go-ipfs/core/commands"
<whyrusleeping>
which it finds inside the $GOPATH
<achin>
oh, i see. so should i clone the git repo into my $GOPATH first?
<ion>
achin: Yeah, when recording typescripts, it’s a good idea to restrict your terminal to 80×24. It would be nice if typescript told your terminal to resize itself just before recording.
<achin>
ah, nvm, there is already a repo there
<achin>
whyrusleeping: thanks! things are now working as expected
<whyrusleeping>
achin: woo!
notduncansmith has joined #ipfs
<achin>
expect incoming PR soon to fix a doc issue in the diag-net command :)
notduncansmith has quit [Read error: Connection reset by peer]
nicolagreco has quit [Quit: nicolagreco]
<whyrusleeping>
lol, sounds good
ianopolous2 has joined #ipfs
ianopolous3 has quit [Remote host closed the connection]
<richardlitt>
daviddias: done with line items.
<daviddias>
woop woop, thanks! :)
groxx has joined #ipfs
jedahan has joined #ipfs
danslo has joined #ipfs
nicolagreco has joined #ipfs
<richardlitt>
daviddias: don't think I'd be able to grok a high level
<richardlitt>
Hope those comments were helpful, though!
rendar has quit [Ping timeout: 246 seconds]
<richardlitt>
Some of the commenting could be better, it's really hit or miss throughout this module.
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
ianopolous2 has quit [Remote host closed the connection]
rendar has joined #ipfs
<daviddias>
richardlitt: they definitely were, you grabbed a bunch of stuff
<daviddias>
some tests are there, so that now I can open issues and point lines of code and tests as the starting point for other people to look at
<daviddias>
thought it would be a nice thing to do
<daviddias>
also for me to write down what I had in my head in the moment, so that information doesn't get stored just in my notebook
<richardlitt>
Cool.
ianopolous has joined #ipfs
notduncansmith has joined #ipfs
user24 has quit [Quit: ChatZilla 0.9.92 [Firefox 40.0.3/20150827181457]]
notduncansmith has quit [Read error: Connection reset by peer]
voxelot has quit [Ping timeout: 250 seconds]
ygrek has joined #ipfs
HostFat has joined #ipfs
ianopolous2 has joined #ipfs
ianopolous has quit [Ping timeout: 240 seconds]
notduncansmith has joined #ipfs
nicolagreco_ has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco_ is now known as nicolagreco
od1n has quit [Remote host closed the connection]
nicolagreco_ has joined #ipfs
nicolagreco has quit [Read error: Connection reset by peer]
nicolagreco_ is now known as nicolagreco
joshbuddy has joined #ipfs
svetter_ has joined #ipfs
ianopolous has joined #ipfs
od1n has joined #ipfs
nicolagreco has quit [Quit: nicolagreco]
ianopolous2 has quit [Ping timeout: 264 seconds]
kerozene has quit [Max SendQ exceeded]
Soft has quit [Read error: Connection reset by peer]
nicolagreco has joined #ipfs
simonv3 has joined #ipfs
kerozene has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<bret>
is there an ipfs channel that has all the activity of all the ipfs repos?
<whyrusleeping>
bret: nope, this is the only ipfs channel
<M-jfred>
So if ipfs is to be used as a CDN type thing, what kind of UI would make sense for 'pinning' content to a local node? Since that's a concept foreign to most Internet users today.
hellertime1 has quit [Quit: Leaving.]
voxelot has joined #ipfs
nicolagreco has joined #ipfs
Soft has joined #ipfs
joshbuddy has quit [Quit: joshbuddy]
akhavr has joined #ipfs
joshbuddy has joined #ipfs
nikor_ has joined #ipfs
notduncansmith has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
notduncansmith has quit [Read error: Connection reset by peer]
<nikor_>
Hello! Do anybody know if the node-ipfs code is available anywhere?
<nikor_>
achin: ahhh sorry.. the roadmap links to the code..
<nikor_>
achin: thank you =D
jimki has quit [Ping timeout: 252 seconds]
akhavr has quit [Read error: Connection reset by peer]
kerozene has quit [Max SendQ exceeded]
akhavr has joined #ipfs
kerozene has joined #ipfs
fazo has joined #ipfs
<ion>
M-jfred: I’d expect the average non-technical user only have what they publish themselves pinned.
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
nicolagreco has quit [Quit: nicolagreco]
joshbuddy has quit [Quit: joshbuddy]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
joshbuddy has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
<whyrusleeping>
domain registrars are the devil
<whyrusleeping>
i've paid a fairly high $60/yr for my domain
<whyrusleeping>
now they want $140/yr
akhavr has joined #ipfs
<svetter_>
nah, certificate authorities are the devil.
<achin>
is it a unique TLD or short name?
<whyrusleeping>
achin: its jero.my
<whyrusleeping>
which is my name
<fazo>
centralized stuff is the devil.
<achin>
yeah, i guess i'm not too surprised it's higher than a boring foo.com domain. but $140 sure is a lot
jimki has joined #ipfs
kerozene has quit [Max SendQ exceeded]
joshbuddy has quit [Quit: joshbuddy]
akhavr has quit [Read error: Connection reset by peer]
<whyrusleeping>
yeah... blech.
ianopolous2 has joined #ipfs
kerozene has joined #ipfs
<whyrusleeping>
and i dont know if i can transfer it anywhere else since i'm close to the deadline
akhavr has joined #ipfs
<ansuz>
everything is the devil
<whyrusleeping>
ansuz: i'm pretty sure that the salad i just ate was in fact, not the devil
<whyrusleeping>
but that might be a rare exception
<ansuz>
to your salad, you're the devil
<fazo>
I bet the company that packaged that salad or one of the ingrediends didn't run free software
<ansuz>
and as such, perhaps your opinion as to that salad not being the devil should not be taken as authoritative
<fazo>
and I bet they are probably corrupt and don't pay their workers enough
<ansuz>
^
<whyrusleeping>
lol
ianopolous has quit [Ping timeout: 260 seconds]
<fazo>
maybe they even replaced workers on minimum wage with machines, destroying families and their futures. And you hate THEIR sala
<fazo>
d?
<ansuz>
^^ machines are the devil
<fazo>
ansuz: yeah. There are even people using machines to communicate right now!!
<ansuz>
D:
<ansuz>
heathens
joshbuddy has joined #ipfs
<fazo>
they are building this devilish system that delivers content so well over p2p that nobody will care about infrastructure anymore and sysadmins will all lose their jobs
<fazo>
this proves that everything is the devil
<ansuz>
seems legit
akhavr has quit [Read error: Connection reset by peer]
notduncansmith has joined #ipfs
akhavr has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
joshbuddy has quit [Client Quit]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
<noffle>
^ geez, ipfs is the automotive industry of p2p
kerozene has quit [Max SendQ exceeded]
<ion>
I’m looking forward to the decentalized global mesh network citizens will build after the current infrastructure dies.
kerozene has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
<noffle>
ion: I'm eager to see how the current industry and model adapts to the impending distributed transition
<noffle>
and how ipfs and mobile are going to work together
svetter_ has quit [Quit: Leaving...]
Encrypt has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
sseagull has quit [Ping timeout: 240 seconds]
kerozene has quit [Max SendQ exceeded]
<fazo>
noffle: spoiler: it's gonna be bad
<fazo>
mobile devices will use gateways for a long while until someone figures out how to make battery that last through the day
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
compleatang has joined #ipfs
kerozene has joined #ipfs
joshbuddy has quit [Quit: joshbuddy]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
sseagull has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
ianopolous2 has quit [Ping timeout: 240 seconds]
joshbuddy has joined #ipfs
gordonb has quit [Quit: gordonb]
ygrek has quit [Ping timeout: 240 seconds]
gordonb has joined #ipfs
kerozene has quit [Max SendQ exceeded]
chriscool has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
kerozene has joined #ipfs
akhavr has joined #ipfs
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ion>
Even if a mobile device were to offload much of its IPFS networking to a server, it still doesn’t have to trust that server since it can still verify the hashes.
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
kerozene has quit [Max SendQ exceeded]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
<noffle>
ion: right. anyone can provide a gateway service to any mobile client, and there need not be any trust.
<noffle>
in that sense at least the gateway dependency is decentralized
<ion>
A gateway protocol still needs to happen, you need to be able to check that the gateway resolved an IPNS name or a path following an IPFS key correctly.
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
<fazo>
ion: the gateway could return the signed publication to the client
<noffle>
fazo: that's what I was thinking :)
<noffle>
but yeah, that still counts as a protocol
<fazo>
actually I'm pretty confident that relaying messages was either mentioned by one of the developers or in the spec
<noffle>
fazo: doesn't guarantee it's the latest data for that pubkey, but I don't think that can be solved(?)
<ion>
At the moment IPNS doesn’t even guarantee the latest data for a given pubkey.
<fazo>
noffle: yeah but when the device is active (phone awake for example) it could connect directly
<fazo>
the gateway is useful for when the device is asleep to save battery
doublec has quit [Ping timeout: 250 seconds]
<fazo>
gateway doesn't even need a new protocol if ipfs has message relay in the spec.
<noffle>
fazo: agreed; better to have mobiles be proper contributing nodes as much as possible
<fazo>
it just needs a low power mode that gets it to be less chatty, and this can be done in the impl
<fazo>
there's also the data caps problem
screensaver has quit [Remote host closed the connection]
<fazo>
we can't force nodes to use loads of bandwidth. There has to be a bandwidth-save mode in the impl for mobile devices.
simonv3 has quit [Quit: Connection closed for inactivity]
akhavr has quit [Read error: Connection reset by peer]
kerozene has joined #ipfs
akhavr has joined #ipfs
notduncansmith has joined #ipfs
nikor_ has quit [Quit: Lost terminal]
notduncansmith has quit [Read error: Connection reset by peer]
<fazo>
exit
<fazo>
whoops, wrong tab
<noffle>
there is no exit :)
<fazo>
I need to be careful changing window managers :(
<noffle>
from what to what?
<fazo>
bspwm to mutter (gnome)
<fazo>
but going back soon... too bad
rendar has quit []
akhavr has quit [Read error: Connection reset by peer]
pfraze has quit [Remote host closed the connection]
akhavr has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
kerozene has quit [Max SendQ exceeded]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
lithp has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ianopolous has joined #ipfs
kerozene has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
fazo has quit [Quit: WeeChat 1.3]
doublec has joined #ipfs
lithp has joined #ipfs
<ipfsbot>
[node-ipfs] diasdavid pushed 1 new commit to master: http://git.io/vnX0A
<ipfsbot>
node-ipfs/master 24eb1d2 David Dias: Update Swarm segment
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
kerozene has quit [Max SendQ exceeded]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<ipfsbot>
[node-ipfs] diasdavid pushed 1 new commit to master: http://git.io/vnXur
<ipfsbot>
node-ipfs/master b30664f David Dias: Update README.md...
akhavr has quit [Read error: Connection reset by peer]
kerozene has joined #ipfs
akhavr has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
Guest18452 has quit [Ping timeout: 260 seconds]
atrapado has quit [Quit: Leaving]
akhavr has quit [Read error: Connection reset by peer]
chriscool has quit [Ping timeout: 244 seconds]
fazo has joined #ipfs
kerozene has quit [Max SendQ exceeded]
gordonb has quit [Quit: gordonb]
akhavr has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
kerozene has joined #ipfs
Encrypt has quit [Quit: Sleeping time!]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
bedeho has quit [Ping timeout: 240 seconds]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
dsturb has joined #ipfs
bedeho has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
kerozene has quit [Max SendQ exceeded]
pfraze has joined #ipfs
kerozene has joined #ipfs
akhavr has joined #ipfs
pfraze has quit [Remote host closed the connection]
doublec has quit [Ping timeout: 260 seconds]
akhavr has quit [Read error: Connection reset by peer]
doublec has joined #ipfs
akhavr has joined #ipfs
notduncansmith has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
notduncansmith has quit [Read error: Connection reset by peer]
<whyrusleeping>
jbenet: the whole 'return the sorted array of records' thing is rather tricky
akhavr has joined #ipfs
<whyrusleeping>
theres a reason i went with the 'return the best index' approach
kerozene has quit [Max SendQ exceeded]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
pfraze has quit [Remote host closed the connection]
akhavr has quit [Read error: Connection reset by peer]
akhavr has joined #ipfs
<jbenet>
whyrusleeping and that reason is?
<jbenet>
(the sorted array of records is what we have to do later anyway, so at best it's only temporary here).
<whyrusleeping>
so, the dht gets an array of pair<peer, bytestring>
<whyrusleeping>
and then it has to pass that to an external function to be sorted
<whyrusleeping>
that external function converts those bytes into whatever format that particular thing uses
<whyrusleeping>
then sort those objects
<whyrusleeping>
but it cant return those objects to the dht
<whyrusleeping>
because the dht is a dumb kv store and cant know about the specifics of what its storing
<whyrusleeping>
so now i have to sort the objects and then find a way to map that sorting back onto the array of things the dht originally had
<whyrusleeping>
so that i can return a single value there
<jbenet>
oh in the dht? for "GetValue" ?
<whyrusleeping>
yeah
<whyrusleeping>
so i'm debating returning an array of indices
<jbenet>
here, how about this. keep your function, but decompose out the sort thing. so make it do the sort, and just pick the first and return that value. that way we can upgrate that logic and shed only the outter part
akhavr has quit [Read error: Connection reset by peer]
<whyrusleeping>
hrmmm... i think that still has the same issue
<jbenet>
so: getBestValue([][]byte) []byte ---calls--> getBestRecord(rs []Record) Record ---calls--> sort.Sort(rs.(RecordList)) or whatever.
<whyrusleeping>
right now, i dont sort, i call 'select'
<jbenet>
select?
akhavr has joined #ipfs
<jbenet>
why are you selecting?
<jbenet>
(where you = the code we all wrote :) )
<whyrusleeping>
select as in 'select the lowest number in this array'
<whyrusleeping>
its a fast operation that returns an index
<whyrusleeping>
used in selectionSort
<whyrusleeping>
it circumvents the problem by not requiring that i mirror a sort over two differently typed arrays ([]bytes and ipns records for example)
voxelot has quit [Ping timeout: 240 seconds]
<jbenet>
if you're concerned about this as a performance hit (i doubt it is one), maybe return an array of sorted indices as you mentioned
nicolagreco has joined #ipfs
<whyrusleeping>
i'm not worried about the performance.
notduncansmith has joined #ipfs
notduncansmith has quit [Read error: Connection reset by peer]
<jbenet>
ok what are you worried about?
<jbenet>
anyway we're going to have to do it later anyway, so either way. fine with whatever here.