Leaked transcript of censored Bret Victor talk

Another masterpiece from Bret Victor: The Future of Programming.

What you probably don’t know is that his talk was actually an hour long. The second half was censored from the internet by an as yet unexplained mechanism. Luckily his talk was written on sheets of cellulose which survived the digital attack. I have seen these slides and can exclusively reveal their contents.
Continue reading “Leaked transcript of censored Bret Victor talk”

Down the rabbit hole of types

Time for a progress report, now that I have some progress to report. I didn’t get much research done last semester because I was teaching a new class: 6.170 Software Studio. It was a noble experiment with mixed results, but that is another story. Back in March I presented the latest version of Subtext at the IFIP Working Group 2.16 on Programming Language Design. I realized then that Subtext should be statically typed. Ever since I have been falling down the rabbit hole of types.
Continue reading “Down the rabbit hole of types”

Turing on programming

The process of constructing instruction tables should be very fascinating. There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself.

– Turing, A. M., 1946, Proposed electronic calculator, report for National Physical Laboratory, Teddington

So was Turing wrong, or are we just doing it wrong?

The voice whispering bulllshhhiiittt

Zed Shaw has another awesome rant at http://vimeo.com/43380467. I agree with much of what he says about both the web and OO. I don’t see the causal connection though: they both suck, but it is probably just a coincidence. However the best part of the talk was when he invoked the voice in the back of your head whispering “bulllshhhiiittt”. That nails what programming is like for me. Most of what we have to deal with is just so wrong wrong wrong. Having to get stuff done despite the deep wrongness of it all leads to textbook cognitive dissonance. I have always been slightly amazed by the people who seem so happy and satisfied with programming. I suspect that it ultimately comes down to personality differences. I also suspect that it is a hyper-sensitivity to wrongness that drives misfits and rebels ranging from Steve Jobs to the Unabomber. Does anyone else feel the wrongness of programming?

Update: the other thing I like about Zed’s talk is that it aligns perfectly with my research direction. Decades of listening to that whispering voice have driven me to develop a post-object language. I think the best way to demonstrate this language is by reinventing the web. So I am traveling the same path as Zed but in the opposite direction.

Domain specific programming experience

The discussion on the last post suggested Domain Specific IDEs as a possible way forward. By restricting the domain (e.g. games) the IDE might gain enough semantic insight into the program to properly support advanced interaction designs like live code execution and direct manipulation of results. Well here is a perfect example: the Iguana Translator. These guys have done a great job building an advanced programming experience for the domain specific problem of mapping between data formats. I love seeing new ideas deployed out on the front lines of programming. Hats off to iNTERFACEWARE.

An IDE is not enough

The internets are buzzing with new IDE ideas. I credit Bret Victor’s masterful demo for much of this. Chris Granger is having amazing success kickstarting his IDE concept. Josh Marinacci discussed some possibilities. [Another one: Instant C#] I have been working in this area for over a decade and have very mixed feelings about these events. On the one hand, it is great to wake people out of their stupor and and show them what might be possible. But on the other hand I am bothered with the unspoken implication that such things are possible with current programming languages. Just slap a magical new IDE on top of Java or JavaScript and the world will be a better place. Unfortunately I don’t believe that is possible, and I fear it will lead only to disappointment and further fatalism.
Continue reading “An IDE is not enough”

Kickstarter: the aftermath

On Kickstarting research I asked for comments on the Light Table project. They were largely positive. Now, for the sake of argument, let’s assume this will be a complete disaster (a reasonable assumption based on history). What are the consequences?

Are people going to be pissed off and give similar efforts a bad rap? Or will they just see it as $50 donated to a good cause? Or, to paraphrase P.T.Barnum, is there a micro-investor born every minute?

Kickstarting research

Chris Granger has a Kickstarter project to fund his IDE concept Light Table. He is looking for $200K and already has more than $100K in 13 days. It took him 6 days to build the demo.

There is much I want to say about this, but it all pales in comparison to the raw facts above. Let’s skip the sterile debate on whether there is anything intellectually new in the proposal. What is the bigger meaning of these events?

Microsoft endorses JavaScript (except when they need to get work done)

This post from the JavaScript team at Microsoft endorses JavaScript evolution as the basis of the future web, and criticizes the “clean break” of Dart. It also reveals Script#, Microsoft’s equivalent to GWT, used to write “hundreds of thousands” of lines of code in their Office Web Applications. This is hypocrisy. They endorse JavaScript while finding it unusable for their own mission critical work. Many of the touted benefits of Script# are based on static typing, and will not be possible in future JavaScript till they add type guards (currently slotted for ES7 == JS.next.next). The ES committee is doing a valiant job of evolving the language (and has some really good ideas worth stealing), but it is going to take time. That fact and the unfortunate history of political dysfunction over JavaScript means we need to seriously consider alternative approaches like Dart.

Real world visual programming

I saw an interesting demo at SPLASH of an end-user visual programming language: Cloud Extend. There were two main interesting points. First, it is used to build plugins for Salesforce. Major web applications like Salesforce, and especially Facebook, are becoming software platforms unto themselves. This is a great target domain for end-user programming tools.

The second interesting thing was how radical they are in conceptually simplifying the language. For example, they tried eliminating variable binding, essentially using only global variables. That turned out not to work, so they brought back a limited form of binding. I really like that they are going at conceptual simplicity rather than the focus on syntactic simplicity that most end-user work seems stuck in. For example, rather than use standard nested if-then-else blocks like everyone else, they have imposed a global decision-tree structure on the program. Whether or not that works, it is the kind of radical simplification we need to make progress. I also like that they are working with real end users, and adjusting based on what works. This language is a valuable data-point on how simple we can make an end-user programming language, and has some fresh thinking. Worth following.

Devolving Subtext to JavaScript

I have to rewrite Subtext in JavaScript. First, a quick update. I presented my prototype implementation at the working group this summer, to a tepid response. But in the course of preparing for that I thought of a radical simplification to the language. That inspired a whole rampage of brutal simplifications. The code is so much happier now. And when the code is happy, I’m happy.

I have also been spending a lot of time thinking about my “market”. I have an idea for targeting web/mobile apps with a new twist. More anon. In other news, I am going back to calling the language Subtext. The name is apropos to my new direction, and it seems to be my brand. People ask me if I’m the “subtext guy”.

Now I need to run inside the browser. But rewriting my evolving Java implementation in JavaScript fills me with dread. People that do serious large-scale programming in JavaScript are often deeply troubled by it, and resort to tools like Google’s Closure and GWT that treat the language as a bug to be worked around. The fact that Google felt the need to make big investments in these tools is an indictment of the language that can not be easily dismissed. I have come up with the following three-step strategy:

Continue reading “Devolving Subtext to JavaScript”

The Frontier of Touch

I have been looking at the various touch/tablet platforms. It seems to me that the JavaScript/HTML5 stuff is way out past the frontier of civilization. There is a saying that when armchair warriors meet they talk about strategy and tactics, but when generals meet they talk about logistics. Likewise when someone shows me a new programing language/platform I am not interested in syntax or semantics or architecture. Instead I care most about three things: first the API docs; second the rename refactoring; and third the debugger. The further you get from the civilized regions of programming the less developed these crucial logistics become. This is entirely a matter of personal preference. There are a lot of young gun-slinger programmers who relish operating out where law and civilization haven’t yet reached. I did too back when my Testosterone level was higher. But now I value more highly my time and effort, as they are depleting resources. Continue reading “The Frontier of Touch”