Jonathan Edwards 6/14/18 11am ET
- Never heard of PPIG. What conferences do you go to?
- <programming>
- Strangeloop
- Splash LIVE
- Talk vs attending
- What value do you get?
- Do you schedule meetings?
- Methodology problem (or is it a collaboration problem?)
- Coolness isn’t right criteria
- What about success of a project or methodology?
- Is the goal “getting ideas out there” (BV or Alan Kay) or transferring these ideas into a project (Haskell or Google)?
- My current research direction
- Ultimate goal: truly open source software, where people can fork/customize their applications in real time. A world where 10% (instead of 0.01%) of users can edit their tools, would be a world with lots of amazing, free tools.
- Sub-goal: people be able to navigate and understand the relevant section of the project they are trying to modify, and make the modification
- Any 10x or 100x programmer has trouble with this.
- Files and folders. Ugh. What runs when?
- Imperative programming: need to read every line
- Solution:
- Remove all mutation from afar (explicit dependencies)
- Remove control flow
- Either FRP or synchronous languages
- Then we’ll have a declarative specification that we can build visual metaphor abstractions on top of
- Other things we’ll need that I’m not thinking about
- A version control system that could handle many, many divergent forks
- A way to share data between applications - a more semantic format, maybe
- The visual metaphor layer
- The “editing” layer that lives in each application
- The hosting and permissioning, and accounts for each application
- Current challenges
- Explaining to my friends and family what I do - which isn’t hard when things are going well
- Making enough money, so I can live, but also have enough time for this
- Picking which problems to work on, and how they fit into a larger solution/vision
- Collaboration with others
- You’ve worked at MIT and YC research
- Haskell is such an interesting success story of collaboration around laziness
- Reading papers vs coming up with my own ideas
- Presenting work vs working on new ideas
- Conferences?
- Notes
- Don’t read wadler
- https://arxiv.org/abs/1803.10195
- Notes on my direction
- Who hits wants
- It would be nice to point to a piece of code:
- what parts of the state does it depend on and what does it modify
- Subsetting the project enough so I can make some progress on it
- Pick a language to work within
- A issue we’re torn on:
- Nulls are formally messy but informally flexible and natural in some sense
- Andrew Myers from CMU HCI thinks nulls are natural
- Generally strategy:
- Yes tree-structured state
- No arbitrary graphs which can go any which way are too complicated: problems of pointers and heaps
Direct programming Notes
- Presentational
- I wouldn’t start by opening the base field. A better time may be when you should how you can drill down to any definition.
- Don’t need to explain the cursor location, action and optionally an argument
- The guiding principle: start with that, before explaining how the document works?
- Start with the goal of minimizing learning curve of beginner, then talk about how indirection is hard for them
- Sorry for getting the event invite in your video!
- How to evaluate the work
- See if it solves the indirection problem by teaching it to some students…?
- Meat
- I wouldn’t call it “Past State: date”. Maybe just the date. I prefer the word “version” to “state” for end user programmers.
- I’d highlight the history and state with different colors. One should be a “selection color” and the other should be a “change was made here color”
- I think the no-op default is exactly what you don’t want. You want it to change anything, so I’d default them all to 2.
- I don’t like the right-click multiply. I think I’d much, much prefer having to type 3 * 5 in the a-number field, and then on enter or leaving the field, having it evaluate and then add the multiplication to the history.
- Why don’t you have to select both the x and + to get both lines to be a formula? Does it automatically do everything after this line?
- Why doesn’t it create a formula that takes an argument, and then supplies the argument?
- I don’t normally think of math as a set of steps…
- If you set a state to itself, maybe that should be recorded in the history?
- The semantics of if’s are weird
- The template element in lists is a bit strange
- Compliments
- Being able to abstract over history to make a procedure is clever
- I really love how you can see every operation in a list loop, and how you can edit any iteration and it edits them all
- Very, very cool how you turned bug into code and also unit test
- The history is a script - I like this wordplay a lot