Two-way Dataflow

I’ll be demoing my latest work at the Future Programming Workshop at both Strange Loop and SPLASH. My talk is called “Two-way Dataflow”. Here is the abstract:

Subtext is an experiment to radically simplify application programming. The goal is to combine the power of frameworks like Rails and iOS with the simplicity of a spreadsheet. Mutable state is a notorious source of complexity in application programming and indeed has long been a major dilemma in programming language design. I propose a new approach called two-way dataflow, which breaks the program into cyclic output and input phases. Output is handled with traditional one-way dataflow, which is realized here as a form of pure lazy functional programming. Input is governed by a new semantics called one-way action which is a highly restricted form of event-driven imperative programming. These restrictions statically order event execution to avoid callback hell. Two-way dataflow has been designed not only to simplify the semantics of application programming but also to support a representation that, like a spreadsheet, provides a fully WYSIWYG programming experience.

This work is still very experimental and preliminary but I hope it is complete enough to convey several key new ideas that are relevant to the current trends of “reactive” and “live” programming.

Developer inequality and the technical debt crisis

Recently there have been heated complaints that the culture of programming unfairly excludes some groups. They want to join the programming elite and get a spot at the startup trough. More power to them. I really have nothing to say about this issue because I think it is a distraction from a bigger issue with far greater importance to society. The bigger injustice is that programming has become an elite: a vocation requiring rare talents, grueling training, and total dedication. The way things are today if you want to be a programmer you had best be someone like me on the autism spectrum who has spent their entire life mastering vast realms of arcane knowledge — and enjoys it. Normal humans are effectively excluded from developing software. The real injustice of developer inequality is that it doesn’t have to be this way.
Continue reading “Developer inequality and the technical debt crisis”

See you at Strange Loop

Two announcements. First, the official Call for Submissions is up.
Second, we will be at StrangeLoop too. We are partnering with Alex Payne and his Emerging Languages Camp to run FPW on the day before StrangeLoop. You can submit for SPLASH or StrangeLoop or both. See the Call for more details.
Now you have twice the motivation to do a killer demo. Get on it!

The revolution will be screencast

Richard Gabriel and I are planning a workshop at SPLASH focused on screencast demos: The Future Programming Workshop. This will be a workshop in the sense of a writer’s workshop: the participants will present their talks/demos and the group will critique them. After the workshop people will revise their screencasts to be published on our website. Please signup at the website if you are interested.

Increasingly, new programming ideas show up first as video talks and screencast demos, long before any papers get written. A good example is Bret Victor’s videos. My own screencasts have led to far more interaction than my papers. Frankly, writing papers is really hard, especially for raw new ideas. Non-academics often struggle to write papers, effectively excluding them from the conversation. The point of this workshop is to foster the exchange of radical new programming ideas in their formative stage, via the medium of screencasts. We hope to build a community of explorers at the frontier of programming. Please join us.

Hello Lamdu

Interesting new work: Lamdu [Hacker News discussion] from Eyal Lotem and Yair Chuchem. They aren’t showing a lot of results yet, but I really like the espoused principles of the project. This is worth keeping an eye on.

They are building an advanced IDE for a variant of Haskell with keyword arguments and structural record types (Subtext makes the same choices). They have moved type inference from the compiler into the IDE, where it can be exploited for assisting programming. I like that they are thinking beyond just live execution to the bigger issues of code refactoring and intensional versioning. They also appreciate the benefits of normalizing code formatting: “co-macros” re-sugar into normal forms (ditto Subtext).

It will be most interesting to see in what ways Lamdu alters the experience of Haskell. I’ve long said that functional languages are a better fit for advanced IDEs. Haskell is the state of the art in functional programming, so it is a useful experiment to enliven and illuminate it, and perhaps even make it more friendly. If they can pull this off it will be a really big win because they can leverage the large capital investment in Haskell implementation and libraries.

I wish Lamdu the best of luck and look forward to learning more about it.