<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>doc.mashweb.club – DOM</title>
    <link>/tags/dom/</link>
    <description>Recent content in DOM on doc.mashweb.club</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Thu, 05 Jan 2017 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="/tags/dom/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Zen-White-Paper: Zen vs. website builders</title>
      <link>/zen-white-paper/practices/website-builders/</link>
      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>/zen-white-paper/practices/website-builders/</guid>
      <description>
        
        
        &lt;p&gt;It is important to characterize and visualize how Zen will be different from &amp;ldquo;website builders&amp;rdquo; and WCMSs like Wix.com and Weebly.com. In contrast to such WCMSs, which prescribe construction methods at the level of business type, templates, plugins, modules, fonts, etc., Zen will give the user ultimate control of detail at the element/node/NodeList level of web pages. Zen will allow a DOM node to be grabbed and &amp;ldquo;dragged&amp;rdquo; to different positions in its containing NodeList because this is the simplest metaphor for that operation. Drag-and-drop is a classic feature of direct-manipulation interfaces (DMIs) and this metaphor of &amp;ldquo;moving&amp;rdquo; an HTML element or node is so compelling that we have to look at the code to see that the element has not moved in terms of x and y coordianates, but rather in terms of its cardinal position in a NodeList. Zen will allow a DOM node to be &amp;ldquo;cut and pasted&amp;rdquo; to any valid position in the DOM—an interaction between multiple NodeLists. An HTML element&amp;rsquo;s style has four possible, well-supported values for its display property: block, inline, inline-block, and none. Live demo code to implement GUIs to rearrange element positions in the NodeLists of the first three of these display styles is located on the author&amp;rsquo;s GitHub Pages here, here, and here. (Right-click on the links to open the pages in new tabs or windows.) The method of sliding elements in these prototype GUIs was partly inspired by the 15 Puzzle and JavaScript-based implementations of the 15 Puzzle. There are notes about some of these implementations on this website. Below is a screen recording of Jamie Wong&amp;rsquo;s AI-based automated 15-Puzzle solver, which is written solely in JavaScript, HTML, and CSS (Figure 13).&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;/images/15-puzzle.gif&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;Figure 13. Jamie Wong&amp;#39;s 15-Puzzle solver.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Presently, the customization of templates, plugins, and modules for website builders and web CMSs and the creation of novel comment systems, forums, wikis, and presently unimagined communication systems are far outside the bounds of casual web authorship.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Zen-White-Paper: Concessions to usability</title>
      <link>/zen-white-paper/practices/concessions-to-usability/</link>
      <pubDate>Thu, 05 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>/zen-white-paper/practices/concessions-to-usability/</guid>
      <description>
        
        
        &lt;p&gt;Some concessions to manipulability are necessary so that Zen can successfully edit all webpages. When HTML elements are grabbed Zen should temporarily apply suitable styles to HTML elements like high-contrast borders to make them visible during element selection. When the display-style property of an HTML element is none, Zen should make it possible for users to temporarily set it to another value so the element can be seen. Likewise, wherever desired, Zen should employ similar tactics to make all elements visible and manipulable, whether they are too small; too big; too transparent; or animated. Zen should employ intuitive, adaptive, custom cursors with contrast and distinctive patterns that show up with whatever colors are behind them. The animations in Figures 14 and 15 are actual screen recordings of rough-prototype GUIs for rearranging NodeLists that contain just blocks or just inlines, respectively.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&#34;/images/block-demo.gif&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;Figure 14. Block-manipulator prototype. Click to open the live demo in a new window.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


&lt;figure&gt;
    &lt;img src=&#34;/images/inline-demo.gif&#34;/&gt; &lt;figcaption&gt;
            &lt;h4&gt;Figure 15. Inline-manipulator prototype. Click to open the live demo in a new window.&lt;/h4&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;


      </description>
    </item>
    
    <item>
      <title>Zen-White-Paper: Principles</title>
      <link>/zen-white-paper/principles/</link>
      <pubDate>Wed, 04 Jan 2017 00:00:00 +0000</pubDate>
      
      <guid>/zen-white-paper/principles/</guid>
      <description>
        
        
        &lt;p&gt;As pointed out by David Ungar (who pioneered the type of prototypal object system that JavaScript uses), from values derive principles and from principles derive practices.&lt;a href=&#34;/zen-white-paper/notes/#fn:35&#34;&gt;&lt;sup&gt;35&lt;/sup&gt;&lt;/a&gt;
&lt;sup&gt;, &lt;/sup&gt;&lt;a href=&#34;/zen-white-paper/notes/#fn:36&#34;&gt;&lt;sup&gt;36&lt;/sup&gt;&lt;/a&gt;
 We have just explored the values behind the Zen system. Now let&amp;rsquo;s examine the principles of the Zen system. Zen will complement the approach of Lively Kernel,&lt;a href=&#34;/zen-white-paper/notes/#fn:37&#34;&gt;&lt;sup&gt;37&lt;/sup&gt;&lt;/a&gt;
&lt;sup&gt;, &lt;/sup&gt;&lt;a href=&#34;/zen-white-paper/notes/#fn:38&#34;&gt;&lt;sup&gt;38&lt;/sup&gt;&lt;/a&gt;
 which shares Zen&amp;rsquo;s principles 1–3 as listed below. How much, if any, of Lively Kernel&amp;rsquo;s code it will borrow is yet to be determined. Note, in particular, the following principle 11 of Zen that is different than the principles of Lively Kernel:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It will run in any &lt;em&gt;browser&lt;/em&gt; without a download or installation. (Sometime in the future, an attempt might be made to make it work in mobile browsers.)&lt;/li&gt;
&lt;li&gt;It will be a composition environment, a GUI builder.&lt;/li&gt;
&lt;li&gt;It will store its apps as web pages.&lt;/li&gt;
&lt;li&gt;It will compose web pages using the DOM&amp;rsquo;s interfaces and APIs&lt;a href=&#34;/zen-white-paper/notes/#fn:39&#34;&gt;&lt;sup&gt;39&lt;/sup&gt;&lt;/a&gt;
&lt;sup&gt;, &lt;/sup&gt;&lt;a href=&#34;/zen-white-paper/notes/#fn:40&#34;&gt;&lt;sup&gt;40&lt;/sup&gt;&lt;/a&gt;
 but not SVG or Canvas drawing operations.&lt;/li&gt;
&lt;li&gt;Zen will allow its composition objects and simple programs to be inspected and edited via a Squeak-like object inspector.&lt;a href=&#34;/zen-white-paper/notes/#fn:41&#34;&gt;&lt;sup&gt;41&lt;/sup&gt;&lt;/a&gt;
 Zen will, by default, hide its visual programming environment. When visual programming is enabled, Zen will use HTML elements like &lt;code&gt;DIV&lt;/code&gt; to model nodes in the program&amp;rsquo;s abstract syntax tree (AST).&lt;a href=&#34;/zen-white-paper/notes/#fn:42&#34;&gt;&lt;sup&gt;42&lt;/sup&gt;&lt;/a&gt;
 Zen will enable these program nodes or blocks to be copied, pasted, and rearranged, just like the ordinarily visible parts of a Zen web page.&lt;/li&gt;
&lt;li&gt;It will enable its users to easily compose sequential programs, that is, programs that can wait for external, asynchronous events such as user input or I/O. Zen will synchronize its user&amp;rsquo;s sequential programs through Scheme continuations in an interpreter running on top of JavaScript in the web browser. (See below.)&lt;/li&gt;
&lt;li&gt;Zen will be loadable into any web page as a library, although caution will be required to ensure compatibility.&lt;/li&gt;
&lt;li&gt;It will &lt;em&gt;complement&lt;/em&gt;, &lt;em&gt;augment&lt;/em&gt;, and &lt;em&gt;interact&lt;/em&gt; with existing web page editors and website builders, not replace them.&lt;/li&gt;
&lt;li&gt;It will allow the Zen-editing of a web page to be locked, leaving intact the form and behavior it built inside the web page.&lt;/li&gt;
&lt;li&gt;Zen will not add more than 1–3 seconds to a web page&amp;rsquo;s TTI (time to interact).&lt;/li&gt;
&lt;li&gt;Zen will not follow Lively Kernel&amp;rsquo;s principle of implementing a scene graph.&lt;a href=&#34;/zen-white-paper/notes/#fn:37&#34;&gt;&lt;sup&gt;37&lt;/sup&gt;&lt;/a&gt;
 Instead, it will leverage the CSS2 visual formatting model&lt;a href=&#34;/zen-white-paper/notes/#fn:43&#34;&gt;&lt;sup&gt;43&lt;/sup&gt;&lt;/a&gt;
 and CSS3 features implemented by A-grade web browsers&lt;a href=&#34;/zen-white-paper/notes/#fn:44&#34;&gt;&lt;sup&gt;44&lt;/sup&gt;&lt;/a&gt;
 to model a document in a web browser.&lt;/li&gt;
&lt;/ol&gt;

      </description>
    </item>
    
  </channel>
</rss>
