Reifying Programming

Here is the abstract for my next talk:

The need to think abstractly makes programming difficult, especially for normal people. To make programming more concrete I propose to represent programs as data structures reifying their execution. Programming shifts from editing textual abstractions to direct inspection and manipulation of concrete executions. Reified execution also helps ground abstraction through a new testing mechanism: interventions. An intervention tests and overrides behavior at a specific point within a reified execution, replacing hand-coded tests and mocks. Intervention points are stable because programs are edited structurally, not textually. Interventions also provide scaffolding that assists program development through refactoring-like steps of gradual abstraction.

Update Here is the video I submitted to LIVE’17.

Chatterbase

Interesting code-essay from Joe Edelman: Chatterbase. I see this as a reply to my Transcript proposal (now Chorus). It is gratifying to get this kind of feedback. This is how we make progress – it is what academics mean when they talk about how research is a “conversation” – people’s work triggers others to contradict/extend it in a virtuous cycle of progress. While I have many issues with how academic computer science works, this is one piece of wisdom we shouldn’t ignore.

Joe’s declarative social appears to be essentially what I call social datatypes, but his soft automation attempts to go beyond the fairly rigid workflow envisioned in Chorus. As with Joe’s previous work he is deeply concerned with the humanism of social media – making it suit the way people naturally function rather than the other way around. I take his point, and would like to make Chorus work as informally as possible.

Joe makes the intriguing suggestion that out-of-band communication like email, chat, or even voice should suffice to satisfy obligations in the workflow. It is interesting to think about how that could be done. Here is a speculation: many current attempts at AI chatbots will fail to work beyond the most generic conversations because they have insufficient knowledge of the subject at hand. Perhaps the declarative scripts that Joe and I envision could supply the needed formal description.

I’m hoping this is the start of a little mini-field of people working on Socially-facilitating Software. Maybe someday we can hold a workshop. But in the meantime, in the spirit of encouraging the sort of conversation I spoke of above, I’ve add a “See also” section to the Chorus website.

 

I scare myself

I’m afraid the only way to realize the Transcript vision of end-user programming is to start a company. I did that once. After many years of toil and tears I was incredibly lucky to exit successfully and I swore then I would never put myself through that again. I would much prefer to have an open-source project delivering an excellent end-user experience while also continuing to research and innovate, working with interesting people on a humane schedule. As far as I can tell that has never happened.

Building a high-quality end-user product requires a lot of hard work that is not appealing to open-source contributors. They want to work on what they know and use – programming tools and libraries. Academic researchers want to play with cool new ideas. You need to pay professionals to do the hard design, engineering and support work required to deliver a product. You need to have revenue to pay those professionals. Unless I can find some benevolent sugar daddy I am afraid I may eventually need to start a company.

Does anyone know of open-source or academic projects that have built an innovative end-user product? Note: for end-users, not for programmers. Also note: innovative, not a clone of an existing commercial project. I’d love to see a successful example.