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
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