{"id":73,"date":"2007-05-31T12:23:37","date_gmt":"2007-05-31T17:23:37","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=73"},"modified":"2007-05-31T12:25:37","modified_gmt":"2007-05-31T17:25:37","slug":"staying-the-course","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=73","title":{"rendered":"Staying the course"},"content":{"rendered":"<p>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\u00e2\u20ac\u2122t turn into a quagmire.<!--more--><\/p>\n<p>SWT and Swing would require me to build a lot of low-level UI functionality myself. Been there, done that. It&#8217;s a real bummer having to build complex infrastructure while you are trying to explore design options.<\/p>\n<p>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\u00e2\u20ac\u2122t 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. <a href=\"http:\/\/www.virtub.com\/\">Buzzword <\/a>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.<\/p>\n<p>WPF reminds me of the early \u00e2\u20ac\u0153component  frameworks\u00e2\u20ac\u009d in the 90\u00e2\u20ac\u2122s 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\u00e2\u20ac\u2122s. 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 \u00e2\u20ac\u0153style sheet\u00e2\u20ac\u009d semantics for property overriding, \u00e2\u20ac\u0153routed events\u00e2\u20ac\u009d, 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. <\/p>\n<p>JavaFX can be seen as a response to this need. Sean McDirmid\u00e2\u20ac\u2122s <a href=\"http:\/\/lamp.epfl.ch\/~mcdirmid\/mcdirmid07live.pdf\">SuperGlue <\/a>is another. These may be examples of the next wave of language evolution. UI\u00e2\u20ac\u2122s 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 \ud83d\ude42 . Right now WPF is tubular.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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\u00e2\u20ac\u2122t turn into a quagmire.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_shortlink":"https:\/\/wp.me\/pfEnU-1b","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=73"}],"version-history":[{"count":0,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}