Repenting Syntax

Forgive me, for I have sinned. I have been seduced by Syntax — by its offer of quick implementation shortcuts, and by its promise of easy acceptance into the establishment. All lies, leading to perdition! I cast you out, Syntax!

Over the last two years I have been focusing on semantic issues. There were big gaps in what Subtext could do. I was also frustrated that my UI-centric demos did not communicate what was already fundamentally novel about Subtext. Computer scientists dismissed it as the old discredited idea of visual programming. Practitioners wanted me to port it to Java. I thought that a textual syntax would help convey the essential semantic issues, especially in academic papers. I also tried to better motivate the semantics by solving practical problems of web development.

Well, it didn’t work. Modern Computer Science is closed to radical new ideas. Fuck ’em. I am done with writing papers. I am going to implement and demo instead. I estimate that my videos have been seen 10,000 times as often as my papers have been read. I am not going to implement the system described in my last paper: typing syntax into a REPL to build a web app. BORRRRING.

It’s back to the drawing board. Literally. I think I should abandon the textual syntax and go back to where I left off with Schematic Tables. The semantics I have developed over the last two years is crucial, finally letting me do some real things. But the semantics is the secret sauce, not the main course: a better UI for complex information artifacts like programs.

I am not going to build web apps — that is the past. The triumphalism currently sweeping web developers is a sure sign of the end times. The future is outside the browser, in distributed virtual editable documents. Google Wave is just a foreshadowing. Programmers as well as users should have a persistent network-transparent direct-manipulation interface to their information artifacts. The document is the network.

Maybe I should also go back to calling it Subtext.

30 Replies to “Repenting Syntax”

  1. Wonderful, this just increased my chances of finally getting my hands on Schematic Tables by 100%. let us know when we can help out!

  2. I like your post and agree with most of it. However, The document is the network? There’s more to the internet than programmers. The internet is built on top of The Network. It’s physical, it has cables, switches, routers, and machines. That’s the network, not the web.

    –Wade

  3. Good! Build it. I hope to be impressed.

    When you say “Modern Computer Science is closed to radical new ideas”, are you referring to academia? For my part, I do not count academia as defining Computer Science – at least not exclusively. At one time academic journals were about the only medium for propagating interesting new ideas. That time is long past. Today far more interesting new ideas are exposed via weblogs and the associated sites. A large number of smart folk are on the web and sharing, and the count inside academia is small. To my mind, the heartbeat of modern Computer Science is in shared communications on the web, not old journals.

    If you can put work in the public space, and inspire others – nothing will be more effective. (Though if you are inside academia … you may not gain all the brownie points you deserve.)

  4. I’m conflicted.

    Programmers as well as users should have a persistent network-transparent direct-manipulation interface to their information artifacts.

    Agree completely. Totally. Unashamedly.

    The future is outside the browser

    I’m not so sure I’d give up on the browser as a delivery platform, especially with the coming of web socket. The browser is everywhere, it is the zero click install platform of choice for the users. Google Wave makes no apologies about breaking pretty much every idiom of web application design, and yet it still works in current browsers, allowing a fairly painless migration strategy for users. It spreads virally via url cut/paste.

    1. Agreed. Maybe the browser becomes the platform, and HTTP serves only as a program loader. At the moment, despite all the HTML5 triumphalism, it is still a pathetic platform, comparable to PC’s circa 1995. But it is evolving fast. My platform strategy is a whole other story deserving a separate post.

      1. I think the browser is still the most convenient “package manager” around.

        In fact, my room mate is the CEO of a semiconductor company here in the Boston area, and he always tells me the biggest benefit of the browser is it goes anywhere. As I see it, the browser is my package manager. It is incredibly lightweight: In Firefox, packages are limited to media type extensions (themes and plug-ins) and “places” aka bookmarks/history. This is easily the most brilliant package manager ever created, and you don’t have to read Redhat’s 500 some-odd manual on yumm or read blogs by the package management experts to understand that.

        1. I also agree that the ‘browser’ is a brilliant ‘program loader’ or ‘package manager’. However, I don’t think the browser should also equal javascript or HTML or even HTTP. You can rip those elements out and still have a great sandpit for security, great GUI library, and even a great virtual machine (eg. V8 or JVM).

          My original game changing browser idea was the “Personal Browser” (http://www.livemedia.com.au/Projects/Personal_Browser). More recently I’m starting look at the lower level protocols involved: SCTP for transport, Web-of-Trust for security, Argot for data presentation, URI for naming and location. There’s still some work to be done.

          Anyway.. my point being. I like where you’re going with this. Hopefully you have more time than I do to make it happen.

          1. Despite being a brilliant “program loader” and “package manager”, it could still be much more robust!

            For example, if I go to an ACM Citations page, and click on a DOI Bookmark, it could automatically forward me to an IEEE Citations page instead of stabilizing me on the DOI Bookmark. For the average user, bookmarking this interstitial link is difficult. What’s bogus is that the interstitial stuff like DOI Bookmark is what object-oriented programmers care about. Why? It allows the user agent to participate in media type negotiation.

            Say I go to ACM Citation 1299723 (“On Identifying Bug Patterns in Aspect-Oriented Programs” by Sai Zhang et al). Then I click on DOI Bookmark. It forwards me to the equivalent page on IEEE’s website. A proper user agent would be able to incorporate a chain of responsibility pattern saying, “Hey, you have an ACM account where you can download this privileged content. I’ll try requesting this content from ACM’s network for you first, then I’ll go to IEEE if the first resolver in the responsibility chain fails. Once at IEEE, you will have limited ‘preview’ representational access to the resource”.

          2. Looks like my personal browser idea has been partially done. See Opera Unity. Looks like this space is going to get more and more interesting.

    2. Brett,

      The biggest problem with HTML5 is that you can’t bundle rendering engines with the media type. This is the fundamental flaw of what OO programmers mean by “Browser”. The idea that your data and code are separated to the point that your end-point must predict your reply is just unnecessary physical coupling and bad design. OO programmers understand that your data and code go together. You can still use the Browser to do this, but you will need to build on top of the Browser to do so. GWT is building on top and the protocol it uses w/ the browser is basically GWT/Gears lock-in. If you can’t/don’t use GWT/Gears, you are locked-out.

  5. I don’t think the solution is either papers or demos. Work toward releasing something! Then you can demo it and write paper about it.

    It’s not about hating novel ideas, it’s about working code.

  6. I am done with writing papers. I am going to implement and demo instead.

    Finally, Hooray! 🙂 I just want to see it, and one day play with it.

  7. I think a better use of syntax in the case of Subtext would be syntax in the opposite direction, i.e. code generation. Let developers create Schematic Tables and let software use them. A set of master business rules can be defined in Subtext and if a developer wants to use the rules for a T-SQL stored procedure in Microsoft SQL Server and a code generator exists, it can create the T-SQL code automatically. The resulting code would be something no human would want to write in most cases and therefore be of great benefit for solving complex logic problems in systems with less efficient syntax.

  8. Totally agreed. All your sins shall be forgiven 🙂
    I dont’t know if the future is inside or outside of the browser. But your New Deal must find it’s way to the open minded. You were right: the best way to get to it is working software. I was excited watching your two demos and wished I could download and play with it. (Although I perfectly understand why you avoid releasing early/unfinished code.)
    Good luck at the drawing board and welcome back to your own way of reinventing programming.
    Cheers

  9. Awesome! Concentrate on implementing the concept and *then* decide whether it should work within or outside whatever the browser has evolved into by then.

    @John: ‘The biggest problem with HTML5 is that you can’t bundle rendering engines with the media type. This is the fundamental flaw of what OO programmers mean by “Browser”.’

    I don’t think you can blame OO programmers for that. After all, HotJava solved that problem 10 years ago but Netscape only added applets to their browser, not the entire HotJava technology stack. So, blame the C programmers, not the OO programmers! 🙂

    1. HotJava was way ahead of its time, but had sandbox issues highlighted by Ed Felten, so it was fortuitous that Netscape bailed on it – it would’ve sullied the Java brand name and slowed adoption. I wasn’t blaming OO programmers. I was saying OO programmers know why the browser as we know it today is what it is, and most OO programmers I know use the term Web Browser in a derogatory fashion.

      When I say “OO programmers”, I don’t mean 20-something year old Ruby programmers who grew up on the Web and don’t know / don’t understand its no different from a green screen dumb terminal. Instead, I mean people who built smart clients on the desktop before we even had the term “smart clients”. Same way with “agile” – the people who do these things best are the ones who look at the buzzwords and go, “oh, I’ve been doing that for 10 years, where has everyone else been?”

  10. I enjoy visual programming. I use a custom scripting language.

    I find that I can program complex systems visually better than with text-based solutions.

    Good luck to you!
    (I’m one of the many who enjoyed the film and never thought about reading the paper 🙂 )

  11. Great! Implementing a working program and demoing it is the way to go. Even better would be to finish something and release it(and demo it). This is the best way to impress people and push things in a new direction. Out of curiosity what was your goal with the submitted papers? Keep your eyes pealed for an interesting comment that I will post here later about a development environment that I found that seems to have a lot in common with some of your ideas. Don’t have time to talk about it now.

  12. Sounds good to me. I didn’t grasp Coherence very well, but I *loved* the paper on Subtext titled “No Ifs, Ands, or Buts” (or something like that). I always wondered if the concept would scale up to large systems, now maybe I’ll get a chance to find out!

  13. As it happens, I am one of those who watched the videos and read the papers — but I have been waiting impatiently for something to try out ever since I discovered your work.

    I’m very excited that you’re going to abandon the slow theoretical path and dive into the popularizing phase.
    Good luck!

  14. A file that’s portable and private like a word document, yet as interactive as a web page, might just be your “killer app”

  15. I’m not a huge fan of the name Subtext, to be honest. Honestly if I was just browing titles of papers or articles, I would pass it up just because of this – it makes me think of a text markup language like Textile or txt2tags. Seems like a liability having a name like that for something so potentially revolutionary.

  16. I like the name Subtext and I like the name Coherence, but at the end of the day, its just a name, so choose whichever you feel conveys its purpose more.
    I am glad you switched back to Visual programming, though. I’m not sure how to best allow people to type code with a keyboard (because I dislike the mouse, its slow and awkward compared to a keyboard: fast and precixe), but I definitely prefer a visual representation over a textual one.

    I’m also in favour of implementing demos. In my own programming language experimentation, I’ve noticed that people respond best when you show them an example or better again: a sample. You can talk about it forever and it will probably go over most peoples heads, but show it to them and it suddenly makes sense.

    As for a killer app, I’m not sure. Theres a few things which I, personally, want – but I have no idea if they are useful or popular ideas, so probably won’t make great “killer apps”. Maybe ignore Google Wave and just implement it anyway. Hmm.

  17. Pingback: Lost in the forest

Comments are closed.