There is one gigantic problem with programming today, a problem so large that it dwarfs all others. Yet it is a problem that almost no one is willing to admit, much less talk about. It is easy to illustrate:
Coding again at last! In Dart. Herewith are my initial experiences with Dart.
The following is an abstract of a position statement for the Live programming workshop at ICSE.
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.
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?
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.
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.
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?
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?
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.
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”.
I saw some interesting work on touch programming languages at Onward. You may already have seen Codify. That is still a mostly textual language, as the clickety-click of the keyboard in the video attests. The new research explores how to program entirely in touch, which requires avoiding typing as much as possible.
Steve Jobs’ biographer, Walter Isaacson, writes in the NY Times:
The ability to merge creativity with technology depends on one’s ability to be emotionally attuned to others. Mr. Jobs could be petulant and unkind in dealing with other people, which caused some to think he lacked basic emotional awareness. In fact, it was the opposite. He could size people up, understand their inner thoughts, cajole them, intimidate them, target their deepest vulnerabilities, and delight them at will. He knew, intuitively, how to create products that pleased, interfaces that were friendly, and marketing messages that were enticing.
He seems at first to be praising Jobs’ empathy, but ends up describing a psychopath. Only by not feeling the emotions of others can one learn to ruthlessly manipulate them. Ironically, the lack of empathy is actually a great enabler of creativity. Thinking differently threatens and upsets people. To be creative you need to not give a damn what anyone else thinks or feels.
I am program chair of Onward! 2012. What do you want to see?
Here is one thing I am thinking about. I understand that in the real sciences, conferences often accept papers based solely on an abstract. That wouldn’t work for Onward, or even most of CS. Perhaps we should instead use the opposite of an abstract: a “concrete”. That is, an example. A common problem with big-idea papers is the lack of examples, making them quite difficult to understand. Perhaps we ought to require authors to submit an example up front in lieu of an abstract. That procedure might be beneficial both for the authors and the reviewers.