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”

The Genius of Jobs

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.