{"id":72,"date":"2007-05-25T13:12:09","date_gmt":"2007-05-25T18:12:09","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=72"},"modified":"2007-05-25T14:23:00","modified_gmt":"2007-05-25T19:23:00","slug":"you-are-in-a-maze-of-twisty-little-classes-all-alike","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=72","title":{"rendered":"You are in a maze of twisty little classes, all alike."},"content":{"rendered":"<p>OK, so maybe going with WPF wasn&#8217;t such a great idea after all. It is just so incredibly over-generalized and over-engineered. I am hitting my gag limit. I don&#8217;t have the time or the interest to become an expert on this monstrosity. I am scared of having to debug the mysteries hidden within this black box. They are simplifying it for Silverlight, but that is not ready. I have this sinking feeling that I have made a big mistake. <!--more--><\/p>\n<p>I am also feeling uncomfortable with C#. It is just different enough from Java to be confusing. The library docs are not very good. Speaking of which,  they don&#8217;t even have a Javadoc equivalent &#8211; they have an XML format for embedded docs, but there is no way to compile it to a human readable form! Weak stories on version control and unit testing &#8211; you need to go with crufty Microsoft tools (SourceSafe is famous for corrupting repositories) or thinly supported third party tools. Jetbrains makes an amazing plugin for Visual Studio called <a href=\"http:\/\/www.jetbrains.com\/resharper\/\">Resharper<\/a> that eclipses Eclipse. Unfortunately it doesn&#8217;t support the C# 3.0 language features, and I would rather forgo them than give up Resharper. Overall, C# feels a little provincial &#8211; Java has a more diverse and vibrant community.<\/p>\n<p>What got me into this situation is my anger with Swing. Here is an anecdote. Take a look at the SwingSet2 demo that ships with every JDK. It is only in 1.6, <strong>10 years on<\/strong>, that it finally uses antialiased fonts on Windows. They have been able to do this since 1.4. What is wrong with these guys? What kind of UI framework team doesn&#8217;t care how ugly its demo app looks? Why did they wait till 1.6 to make this a default? <\/p>\n<p>I am really at a loss about how to handle my UI. Flash looks like the right thing, but ActionScript is too limited. Silverlight and JavaFX look promising, but they are not ready.<\/p>\n<p><a href=\"http:\/\/relo.csail.mit.edu\/\">Vineet <\/a> suggested I check out <a href=\"http:\/\/www.eclipse.org\/gef\/\">Draw2D<\/a>. I also just discovered <a href=\"http:\/\/www.eclipse.org\/mylar\/zest.php\">Zest<\/a>, which builds on it. Draw2D is a SWT framework for box-and-line diagrams, which comes close to my needs. It supports the layout of overlapping graphical components carrying behavior. There is support for scaling. Some primitive (synchronous) animation. No transparency. Maybe I can hack it up to add the features I need. That might be easier than using WPF. Ironically, the SWT team is currently porting to WPF.<\/p>\n<p>There is also <a href=\"http:\/\/www.alphaworks.ibm.com\/tech\/graphics\">SWG<\/a>, which is essentially a Flash clone on SWT. Unfortunately it forked SWT and is not being maintained. But maybe I could copy parts of it, like the animation framework. That is the beauty of open source &#8211; you can pierce the API to read it or hack it. The impenetrable black box of WPF is scaring me.<\/p>\n<p>Any advice?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>OK, so maybe going with WPF wasn&#8217;t such a great idea after all. It is just so incredibly over-generalized and over-engineered. I am hitting my gag limit. I don&#8217;t have the time or the interest to become an expert on this monstrosity. I am scared of having to debug the mysteries hidden within this black &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/alarmingdevelopment.org\/?p=72\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;You are in a maze of twisty little classes, all alike.&#8221;<\/span><\/a><\/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_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-72","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-1a","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/72","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=72"}],"version-history":[{"count":0,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/72\/revisions"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=72"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=72"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=72"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}