|
| 1 | +--- |
| 2 | +title: JE Meeting 02/27/19 |
| 3 | +--- |
| 4 | + |
| 5 | +# JE Meeting 02/27/19 |
| 6 | + |
| 7 | +talk forces me to focus on headlines |
| 8 | +what am I really saying if I only have this much bandwidth? |
| 9 | + |
| 10 | +Steve: expressions are the way to go |
| 11 | +JE: that's the whole FP thing |
| 12 | +Steve: what about that all FP isn't FP enough like my last paper |
| 13 | +JE: Haskell is imperitive is already a thing. already too general a point |
| 14 | +JE: lots of people are waking up to monads aren't great and now are exciting about algebraic effects |
| 15 | +JE: this feels too much of a common message |
| 16 | +JE: FRP feels like the core of your message for a while |
| 17 | + |
| 18 | +explaining pure frp / conal to humans |
| 19 | +good enough for salon |
| 20 | +key: explain denotational religion to normal people |
| 21 | +how neat would this be and explain some of the benfits |
| 22 | +but here's where it falls down and open problems |
| 23 | +it's not there yet |
| 24 | +have to admit its more complicated than ex. the elm architecture or something |
| 25 | + |
| 26 | +more modest claim is more interesting than a solution |
| 27 | +promising idea is better gives people something to do |
| 28 | + |
| 29 | +relational database were denegrated because too inefficient compared to my hand-optimized hand traversal algoritms, but they were wrong because we could have a general-purpose optimizer that does better than people... when people complain about sql they don't hand-write queries but just optimize sql... it doesn't solve everything buts its known as a big win. parser generators are another great example of this. there are technical connections between the two query optimization. why can't we do this for programming? focus on semantics and have a smart compiler do the optimiziation? programming is premature optimizaion handling bits and pointers... |
| 30 | + |
| 31 | +fp is about the what not the how, but it breaks down when we get big stateful systems. the advanges are irrelevant when simulating imperitive so we need to go further, so we need to go further and get the true semantics of them so we don't encode sequential semantics. it's frp but we haven't figured out how to do it yet. |
| 32 | + |
| 33 | +the story is about the failed promise of functional programming: was about to solve all our problems by getting rid of all our implementation details |
| 34 | + |
| 35 | +how the hell is memoization so hard in FP? why doesn't naive fib work? https://wiki.haskell.org/Memoization |
| 36 | + |
| 37 | +specification langauges throw aroudn quantifiers and sets and there are no way to implement those searches. prolog is done via searching and you specify how the searching happens. easy to check if specification is correct, but really hard to generate. like cryptography. |
| 38 | + |
| 39 | +there's no one essential complexity, but for any problem, there's some incidental and we're looking for better ways of reducing incidental complexity. there's no one optimal way of programming, but some ways have more complexity than others for variuos problems. |
| 40 | + |
| 41 | +for a wide class of problems, fp removes a lot of complexity that imperitive programing has. |
| 42 | + |
| 43 | +fp makes progress by getting rid of inesseitnal state, but when state is essential fp has problems. so what do we do when state is essential? FRP is an answer there. |
| 44 | + |
| 45 | +------------------------------------------------------------------------------ |
| 46 | + |
| 47 | +the talk to give at salon is the talk motivating your research. get up there and explain what I'm working on to my fellow researchers. this is your problem statement. here's why I think this is an interesting idea that has promise that'll revolutionize the world. |
| 48 | + |
| 49 | +one option is to tell the story of how I became convinced of this way over the other ways. |
| 50 | + |
| 51 | +then explain how there are open problems that need to be solved and which ones I'm working on now. |
| 52 | + |
| 53 | +the talk can be really different from the paper. don't worry about the paper, just put your talk together. when it's done we'll make a call on what to do with the paper. |
| 54 | + |
| 55 | +------------------------------------------------------------------------------ |
| 56 | + |
| 57 | +jquery --> neat but suffers from mutable state, etc |
| 58 | + |
| 59 | +trying to do fp UI with fay (silly poem?) --> a nightmare, just simulates jquery |
| 60 | + |
| 61 | +reactJS --> I fell in love. but there wasn't a great story for updating state |
| 62 | + |
| 63 | +Redux / Elm architecture --> I fell in love again. Then I worked on a large redux app and realized the out of tarpit problem |
| 64 | + |
| 65 | +Read staltz article about where the arrow lives. Fell in love with CycleJS. Const everywhere. Problems: hot and cold observables. Elm architecture again. String ids to connect things. |
| 66 | + |
| 67 | +Finally found my way back to Conal FRP and struggled for a while and eventually got it. Problems: no popular libraries (most in Haskell), doesn't transition to HTML-type interfaces well, really hard to work with the types (visualize things) http://soft.vub.ac.be/~cfscholl/ProWeb17/ProWeb_2017_paper_5.pdf |
| 68 | + |
| 69 | +Benefits of it: |
| 70 | + - denotative, so only subexpressions and no action at a distance |
| 71 | + - no strings ids to connect things, solve recursive knot with true recursion (but the fixpoint thing is a total nightmare) |
| 72 | + - less random apis (redux middleware, hot and cold observables) but harder to implement (no great ones) |
| 73 | + |
| 74 | +Ultimately I want modular/proportional understanding. I don't want my head to hurt. (Watching kids untangle messes. I don't want to give people the rope to hang themselves.) |
| 75 | + |
| 76 | +1. the arrow must live at the mutated thing - no action at a distance |
| 77 | +2. the computer must be able to staticly determine what could affect what (redux and string connectors are too messy) |
| 78 | +3. the api should be as simple as possible - least amount of arbitrary concepts, like middleware, dependency injection, etc... maybe cut this part out....? |
| 79 | + |
| 80 | +Maybe add stuff about JQuery blocks, react blocks, js projectional editors to what isn't harmful...? |
0 commit comments