wonks / ICFP_rehearsal_feedback

Temporary repository to collect feedback.
1 stars 2 forks source link

Talk 6: Edward Yang #6

Open rrnewton opened 8 years ago

rrnewton commented 8 years ago

Practice talk time -- 19:15

rrnewton commented 8 years ago

I think the focus on Haskell exclusively makes it seem a bit more parochial than it is -- Java, JS, and all the other managed languages have the same problem! Maybe if it's just "for instance" Haskell, with a gesture at the generality...

rrnewton commented 8 years ago

minor note: CNF summary slide came up just before the 6 minute mark.

I guess I would like to hear a punchier statement of "send things over the network in their in-memory format" somewhere earlier...

rrnewton commented 8 years ago

On the API example slide -- explaining the omitted initial object with a sentence may take more airtime than just having the initial object there but not talking about it...

rrnewton commented 8 years ago

The slide titled "Compaction" that talks about copying into the region "unless its already" there -- it has new in the corner, not append. But new should never satisfy that case of "already there", right?

cgswords commented 8 years ago

How does append not let you violate the type of region internals? It's not clear what you mean by "a region for each data structure".

rrnewton commented 8 years ago

Question: "Do you have any plans to extend this to support types with no thunks, that are always in NF? These would seem to be more likely with the upcoming LANGUAGE: Strict pragma."

rrnewton commented 8 years ago

"Safety?" slide -- I was a bit confused by the visual metaphore here. What are the scribbles inside the circle? The whole heap?

samth commented 8 years ago

The default Java serializer is well-known to be orders-of-magnitude worse than good Java serialization libraries.

rrnewton commented 8 years ago

"Serialization benchmark" -- which data type is this? It says "number of leaves" but I don't think you mentioned what the data is.

samth commented 8 years ago

Don't assume you'll be able to point at the screen in an effective way.

rrnewton commented 8 years ago

"Size blow up!" -- might be nice to list the 10Gbit number instead of 1GBit... We tested on 10G anyway, right?

rrnewton commented 8 years ago

@samth - you don't think a laser pointer will do it? Or you're anti-laser pointer? (Because of looking away from audience?)

samth commented 8 years ago

@rrnewton Sometimes laser pointers are very hard to see.

eholk commented 8 years ago

I love the hand-drawn slides! The conversational, story-telling nature of the talk made it easy to stay engaged.

On the Serialization benchmark slide, the y-axis was labeled slowdown, but you were talking about speedups. I also wasn't sure what "Binary" referred to in the results.

rrnewton commented 8 years ago

Question by @ccshan -- confused about the use case. Does a distributed computation "just in time" compact before it sends over the network?

Ed's answer -- in the "pessimal case" you have to compact on send. The trick though is that the data in compact form is still "data you can process in the normal way", you can "amortize the cost of compacting over multiple sends". In some cases you can "already have this compact data lying around so you can use it".

samth commented 8 years ago

Question: how would we do this in OCaml?

rrnewton commented 8 years ago

Question by @samth -- "this seems like in principle it could be used in other functional languages, but some details seemed like they relied on Haskell specifics. What would it take to adopt this in OCaml?"

Ed's answer: The biggest challenge is purity. Purity is how we enforce no mutable data in the compact region. If you had some way of checking the data should not be mutable, even at runtime, you could do it."

Sam followup: but IORef is just a type of data.

Ed: Compactable class manages this, Compactible instances are part of the trusted code base.

Sam: But then what is purity buying you?

Ed: I guess technically it doesn't buy you anything.

Sam: so type classes in OCaml would be one way...

rrnewton commented 8 years ago

Missed a bit of audio on Ed's response to Cameron... maybe can mention what that was here.

rrnewton commented 8 years ago

from @samth: why do you need IO on the compaction methods?

Ed: it could be referentially transparent... but you want it to only happen once.

Ken: something having performance implications should be no reason to put it in IO! Otherwise multiplication should be in IO.

Ed: It doesn't need to be in IO... it just needs to be in some monad that preserves ordering and prevents unsharing.

cgswords commented 8 years ago

My question was: "Is there an alternative garbage collection strategy that can alleviate some of the problems?"

ezyang commented 8 years ago

@cgswords Hey Cam, thanks for your feedback. You commented 'How does append not let you violate the type of region internals? It's not clear what you mean by "a region for each data structure".'; do you remember enough to elaborate more? I'm not completely sure what the confusion here is, but I'd like to fix it.