{"id":87,"date":"2009-02-12T23:15:31","date_gmt":"2009-02-13T04:15:31","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=87"},"modified":"2023-12-20T16:25:22","modified_gmt":"2023-12-20T21:25:22","slug":"canvas-based-web-ide-from-mozilla-labs","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2009\/02\/12\/canvas-based-web-ide-from-mozilla-labs\/","title":{"rendered":"Canvas-based WEB IDE from Mozilla Labs&#8230;"},"content":{"rendered":"<p>I just caught wind of this&#8230;<\/p>\n<p><a href=\"https:\/\/bespin.mozilla.com\/index.html\" target=\"_self\" rel=\"noopener\">It&#8217;s called Bespin.<\/a><\/p>\n<p>I&#8217;ve been working on a project in my Software Engineering class &#8211; we&#8217;re supposed to build a web app that acts as an interactive family-tree viewer.\u00a0 And it has to use the CANVAS element.<\/p>\n<p>Canvas element you say?\u00a0 That&#8217;s right.\u00a0 Not SVG&#8230;.CANVAS.\u00a0 That means that Internet Explorer is right out, and it also means building or<a href=\"http:\/\/glimr.rubyforge.org\/cake\/canvas.html#KeyboardTest\" target=\"_self\" rel=\"noopener\"> finding an event handling library for Canvas<\/a> &#8211; because right out of the gate, Canvas doesn&#8217;t do event handling.<\/p>\n<p>Canvas just&#8230;displays.<\/p>\n<p><a href=\"https:\/\/bespin.mozilla.com\/index.html\" target=\"_self\" rel=\"noopener\">So look at Bespin.\u00a0 Holy crap.\u00a0 That&#8217;s pretty serious use of Canvas.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just caught wind of this&#8230; It&#8217;s called Bespin. I&#8217;ve been working on a project in my Software Engineering class &#8211; we&#8217;re supposed to build a web app that acts as an interactive family-tree viewer.\u00a0 And it has to use the CANVAS element. Canvas element you say?\u00a0 That&#8217;s right.\u00a0 Not SVG&#8230;.CANVAS.\u00a0 That means that Internet [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_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_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[5],"tags":[36,34,37,35],"class_list":["post-87","post","type-post","status-publish","format-standard","hentry","category-computer-science","tag-bespin","tag-canvas","tag-event-handling","tag-mozilla"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-1p","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/87","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=87"}],"version-history":[{"count":4,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/87\/revisions"}],"predecessor-version":[{"id":3278,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/87\/revisions\/3278"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=87"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=87"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=87"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}