Staying the course

I appreciate all the advice people offered in response to my last post. I have decided to stick with my previous choice of WPF for the UI. I hope it doesn’t turn into a quagmire.

SWT and Swing would require me to build a lot of low-level UI functionality myself. Been there, done that. It’s a real bummer having to build complex infrastructure while you are trying to explore design options.

Flash has just the right UI model, is appealingly simple, and is well established. But ActionScript is still a toy programming language, and Flex Builder is still a toy IDE. I can’t find any convincing examples of complex apps built in Flash. Certainly none of the Flash developer tools are built in Flash itself. Dog food, guys. Buzzword is impressive, but I am not reassured when I hear that the Adobe developers themselves are amazed by it. Sorry, but building a word processor should not be an amazing feat for a modern UI. I might be able to get some quick prototyping done in Flash, but I am afraid it would run out of gas before long.

WPF reminds me of the early “component frameworks” in the 90’s like OLE, OpenDoc, and COM. These frameworks popularized the ideas of properties, events, reflection, and dynamic loading. Since the mainstream languages of the day (C and C++) could not handle these concepts directly, they had to be emulated in libraries with massively complex API’s. Eventually languages evolved to incorporate these features directly, making component programming much easier, as with JavaBeans and .NET. WPF is the same story all over again. It simulates a whole new layer of semantics involving declarative bindings between dynamically attached properties, a “style sheet” semantics for property overriding, “routed events”, a sub-language of time-varying functions, and a limited code-data isomorphism via XAML. The resulting complexity is really a plea for new programming language semantics.

JavaFX can be seen as a response to this need. Sean McDirmid’s SuperGlue is another. These may be examples of the next wave of language evolution. UI’s have been a driving force in language design ever since the invention of the GUI, which gave rise to Smalltalk and OO. But these new wave languages are still experimental, and I need to get going on building the wave coming after 🙂 . Right now WPF is tubular.

This entry was posted in General. Bookmark the permalink. Both comments and trackbacks are currently closed.


  1. Nat
    Posted June 1, 2007 at 2:37 am | Permalink

    Why is ActionScript a toy language? It’s just JavaScript isn’t it? It’s a dynamic, slots-and-prototypes object-oriented language. Apart from a bit of ugly syntax, it’s as capable and expressive as any OO language, and more so than many.

    It’s a shame you’re sticking with WPF, since that ties you to Windows. I’d like to play with Subtext but not enough to suffer Windows. Have you looked at Qt or Gtk+? Both are cross platform, have good support for generating language bindings and can produce modern graphical output with antialiasing, transparency and multilingual text output.

  2. Posted June 1, 2007 at 4:12 am | Permalink

    Hey John, I’d be curious to hear how we could make Flex Builder better. Actually, it would be fun to to talk to you a bit about AS3 as well, so if you have a chance, drop me a line.

    =Ryan Stewart

  3. Posted June 21, 2007 at 2:37 pm | Permalink

    Good choice, Jonathan. Indeed, WPF might seem over-engineered at the first sight, but it has a solid and extensible architecture. You’ll start appreciating it very soon.

    [OK, I’m ready now for the appreciation to start. I’ve spent the last 3 days banging my head against a series of walls. –Jonathan]

  4. Posted June 22, 2007 at 3:34 pm | Permalink

    Sorry to hear that 🙁

    Maybe if you describe your problems in your blog, someone will be able to help? Besides, it will be a good feedback for the WPF team.

  5. Nimrand
    Posted June 25, 2007 at 3:30 pm | Permalink

    Same here. I’d be more than happy to help with any specific WPF problems.

  • Subscribe to Blog via Email

    Enter your email address to subscribe to this blog and receive notifications of new posts by email.