<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:access="http://www.bloglines.com/about/specs/fac-1.0">
<access:restriction relationship="allow" />
<channel>
<title>gulik</title>
<link>http://gulik.pbwiki.com/</link>
<description>RecentChanges for gulik</description>
<image>
 <url>http://gulik.pbwiki.com/feedlogo.gif</url>
 <title>PBwiki</title>
 <link>http://pbwiki.com/</link>
</image>
<generator>PBwiki 3.7</generator>
<webMaster>support@pbwiki.com</webMaster>
 <item>
  <title>Canvas</title>
  <link>http://gulik.pbwiki.com/Canvas</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Canvas">Canvas</a></h3>
Here, the &quot;drawer&quot; is the object which draws (as opposed to the furniture item).<br />Child canvases<br /> glue.<span style="color:red;background-color:#fcc;"> ParentCanvas-&gt;View-&gt;ChildCanvas.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> ParentCanvas-&amp;gt;View-&amp;gt;ChildCanvas.</span> Views could then decide what of the following child behaviours are used...<br />Another thought: Views might be Canvases.<br />One of the enhancements would be to add child canvases. Child canvases could be used in many ways, for example:<br />An integer-based system could have a method that returns the size of the pixel (e.g. 257 micrometers), so pixel-by-pixel control can still be achieved with multiplication. For example, on my current monitor, each pixel is 282 micromillimeters (exactly!). If the GUI API provided a method for returning the pixel size (both horizonally and vertically) then an application can choose to align graphics with pixels, or alternatively just ignore them and use absolute coordinates instead (e.g. 100mm x 200mm).<br />Juan Vuletich's Morphic 3 has a very flexible coor]]></description>
  <pubDate>Wed, 23 Jul 2008 14:25:52 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Unnamed Grand Project</title>
  <link>http://gulik.pbwiki.com/Unnamed+Grand+Project</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Unnamed+Grand+Project">Unnamed Grand Project</a></h3>
Ideally the user's credentials will be associated or associatable with an opened link file.<br />Firefox / IE plug-in? No - the SiteBrowser has its own navigation, authentication, caching and so forth; making it a plug-in would confuse the user. Instead, have some file association or link of some sort from an HTML page which would open up the SiteBrowser as a separate application on that link.<br /><span style="color:red;background-color:#fcc;">Mini-installer</span><span style="font-weight:bold;color:green;background-color:#cfc;">Perhaps I could make a mini-installer</span> (VM + small image) which downloads image, starts image, restarts image on crash, manages logs and image backups, receives link files and starts up new image or sends it to an existing image, ...? Maybe it could be written in C with versions for each OS? Make sure it gives the user a good experience:<br />Everything is OS-dependant.<br />If passed a settings or site-link file, it does that. If no arguments, it starts up Squeak normally.<br />It pings the central server to make sure the latest image and VM are downloaded. It keeps a cache.<br />It starts u]]></description>
  <pubDate>Thu, 10 Jul 2008 15:15:37 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
When writing concurrent code, always keep in mind that multiple Processes may enter that method.<br />Aquire locks in a particular order. TODO: Is there a way we can automate this? For example, by assigning each lock a number, and locks need to be aquired from lowest to highest number or the Process will cause an error?<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Use a code verifier to find concurrency bugs? Such a tool probably needs to first be written.</span><br />Performance tuning<br />Reasons for poor performance in highly parallel environments:<br />]]></description>
  <pubDate>Tue, 08 Jul 2008 11:55:38 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
The plurion:<br />http://www.merlintec.com/merlin6/e_main.html<br /><span style="font-weight:bold;color:green;background-color:#cfc;">D. Lea. Concurrent Programming in Java: Design Principles and Patterns. Addison-Wesley, Reading<br />MA, 1997.<br />D. C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann. Pattern-Oriented Software Architecture -<br />Patterns for Concurrent and Networked Objects. Wiley, 2000.</span><br />Reading material from Jason Johnson about alternative concurrency architectures:<br />http://research.microsoft.com/~simonpj/papers/stm/#beautiful<br />]]></description>
  <pubDate>Tue, 08 Jul 2008 11:53:48 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
Don't require that operations on your API need multiple method invocations (e.g. Canvas&amp;gt;&amp;gt;setColor:, followed by Canvas&amp;gt;&amp;gt;drawLine:).<br />When writing concurrent code, always keep in mind that multiple Processes may enter that method.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Aquire locks in a particular order. TODO: Is there a way we can automate this? For example, by assigning each lock a number, and locks need to be aquired from lowest to highest number or the Process will cause an error?</span><br />Performance tuning<br />Reasons for poor performance in highly parallel environments:<br />]]></description>
  <pubDate>Tue, 08 Jul 2008 11:52:06 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
Real-time tasks have an ordering by priority - some I/O activities are more important to service than others.<br />In a dominioned system, CPU usage is scheduled per dominion which in turn shares its allocation across the processes in itself. CPU usage would also be billed/accounted according to dominion. It should be difficult for one dominion to deny resources to another, and it should be impossible for low-priority dominions to deny resources to higher-priority dominions.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Making Squeak multi-threaded<br />If I were working on a concurrent VM, I'd just barge ahead and parallelise the Squeak VM:<br />* I'd refactor the VM so that multiple copies of the interpreter state could be held in the heap. I'd design it so that each pthread would run one instance of the standard Squeak interpreter, and so that each interpreter runs multiple green theads as it does now. This makes forking a very cheap operation and allows for having as many green threads as would fit in memory.<br />** Each interpreter has it's own sch</span>]]></description>
  <pubDate>Tue, 08 Jul 2008 11:05:21 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
The plurion:<br />http://www.merlintec.com/merlin6/e_main.html<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Reading material from Jason Johnson about alternative concurrency architectures:<br />http://research.microsoft.com/~simonpj/papers/stm/#beautiful<br />(Simon-Peton-Jones, Beautiful concurrency)<br />http://research.microsoft.com/~simonpj/papers/stm/#composable (SPJ and<br />others, Composable memory transactions)<br />http://www.drjava.de/e-presentation/html-english/img0.html (Stefan<br />Reich, Escape from multithread hell)<br />http://Erights.org (various regarding the E language and the futures<br />technology)<br />http://armstrongonsoftware.blogspot.com/2006/09/why-i-dont-like-shared-memory.html<br />(Joe Armstrong - explanations why shared memory is bad. His blog<br />contains various examples of how things are done in Erlang in the<br />Actor model)<br />http://www.eros-os.org/pipermail/e-lang/2001-July/005410.html</span><br />]]></description>
  <pubDate>Tue, 08 Jul 2008 10:30:28 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
This abstraction allows for use of SIMD-like parallelism. If using a FIFO queue, objects could be queued until there are enough objects to run a parallel instruction on all of them in one go. One example would be 3-D graphics transformations, multimedia instructions, or hand-optimised primitives.<br />Objects could also be passed between streams in efficient bulk operations.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Parallel programming techniques<br />Parallel algorithms can get confusing. Here are some tips which can make parallel code easier to write:<br />Wherever possible, encapsulate the parallellism.<br />Keep locked regions of code as small as possible.<br />When suitable, use the fact that writing an object reference is an atomic operation. Rather than holding a lock, make a shallow copy of the object in question, make the changes, and then write the copy back to the original.<br />Learn how to use Semaphores well! They can do a whole bunch of tricks. See the Little Book of Semaphores: http://www.greenteapress.com/semaphores/<br />Keep side-effect</span>]]></description>
  <pubDate>Tue, 08 Jul 2008 10:21:28 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
Job management<br />A library could be written to manage &quot;jobs&quot; and job queues. Jobs can be submitted to a job queue, which are then processed by a limited set of threads. This could implement, e.g. scatter/gather type jobs.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">There are different types of job queues that could be made - compare the queuing features in Java's java.util.concurrent package.</span><br />Futures<br />A future allows a program to continue executing while a variable's value is being calculated. They're described above somewhere.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 17:23:31 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Parallel processing</title>
  <link>http://gulik.pbwiki.com/Parallel+processing</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Parallel+processing">Parallel processing</a></h3>
Parallel collections<br />Many of the methods on collections could be parallellised. For example, &quot;someCollection do: [:each ...]&quot; could easily fork off a thread for each element in that collection. There is a lot of scope for parallelisation here.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Using this abstraction, a parallel collection library could be built up. Compare Java's java.util.concurrent package.<br />Protected data types<br />Rather than include a mutex with every object you intend to protect in your code, it is less effort to have a library of thread-safe classes. A protected integer, for example, would be very useful if it had such methods as &quot;increment&quot; or &quot;waitUntilGreaterThan:&quot;. A protected data type would contain its own locks so that it's user doesn't have to have a separate lock for protecting it.</span><br />Job management<br />A library could be written to manage &quot;jobs&quot; and job queues. Jobs can be submitted to a job queue, which are then processed by a limited set of threads. This could impleme]]></description>
  <pubDate>Mon, 07 Jul 2008 17:19:55 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>SecureSqueak</title>
  <link>http://gulik.pbwiki.com/SecureSqueak</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/SecureSqueak">SecureSqueak</a></h3>
Exceptions are stored - Processes that throw Exceptions not of interest to the user are suspended and made available for a sys admin to review.<br />Usable tools (leave these in - keep a dev image with all &quot;old Squeak&quot; in it).<br /> called<span style="color:red;background-color:#fcc;"> &quot;Subcanvas&quot;).</span><span style="font-weight:bold;color:green;background-color:#cfc;"> &quot;Subcanvas&quot;) with event handling.</span><br />Use it to make a demo of DPON.<br />Features:<br />Refactoring of core Squeak.<br />Version 0.2 - Make the basic API:<br /><span style="color:red;background-color:#fcc;">Secure Canvas, with event handling.</span><br />Dominions API (Status: prototype kind of works, on back burner for now).<br />APIs for secure programming: private methods, testing the sender, etc.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:33:19 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>SecureSqueak</title>
  <link>http://gulik.pbwiki.com/SecureSqueak</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/SecureSqueak">SecureSqueak</a></h3>
Exceptions are stored - Processes that throw Exceptions not of interest to the user are suspended and made available for a sys admin to review.<br />Usable tools (leave these in - keep a dev image with all &quot;old Squeak&quot; in it).<br /><span style="color:red;background-color:#fcc;">Simple</span><span style="font-weight:bold;color:green;background-color:#cfc;">A basic</span> Canvas<span style="color:red;background-color:#fcc;"> and event handler. Sub-canvas support etc will come later.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> package (actually called &quot;Subcanvas&quot;).</span><br />Use it to make a demo of DPON.<br />Features:<br />Package loading is atomic.<br /> circular<span style="color:red;background-color:#fcc;"> dependencies; it works fine.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> dependencies.</span><br />Namespaces!<br />Refactoring of core Squeak.<br /><span style="color:red;background-color:#fcc;">Code is guaranteed to work on all future releases unless it depends on kernel behaviour. Package dependencies are done by exact versions of packages; two packages of the same version can co-exist in an image at the same time.</span><br />Version 0.2 - Make the basic API:<br />Secure Canvas, with event handling.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:31:59 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>SecureSqueak</title>
  <link>http://gulik.pbwiki.com/SecureSqueak</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/SecureSqueak">SecureSqueak</a></h3>
REPLServer (may be removed by the user?)<br />Debugger (may be removed by the user?)<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Canvas (also called Subcanvas) for 2D graphics.</span><br />(this list is work in progress)<br />SecureSqueak is initially intended to be a kernel for running DPON on. DPON is a distributed object architecture that will allow for remote Package loading over a network. The ability to load Packages from a file will also be included. It is intended that other people can use SecureSqueak for other projects, such as web servers.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:29:09 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Unnamed Grand Project</title>
  <link>http://gulik.pbwiki.com/Unnamed+Grand+Project</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Unnamed+Grand+Project">Unnamed Grand Project</a></h3>
Current code is on http://www.squeaksource.com/SecureSqueak<br />Canvas<br />Status:<span style="color:red;background-color:#fcc;"> Not yet started.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> Actively coding this as of July 2008.</span><br />This is the UI drawing and event management. A Canvas class exists already in Squeak, but I plan to expand it significantly.<br />Canvas is part of SecureSqueak.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:26:06 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>ReactiveUIDesign</title>
  <link>http://gulik.pbwiki.com/ReactiveUIDesign</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/ReactiveUIDesign">ReactiveUIDesign</a></h3>
ReactiveUI is going to be a new user interface for Squeak. It will be able to be a drop-in replacement for Morphic and MVC.<br />ReactiveUI will run in a Site and will use the APIs provided by a SiteBrowser.<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Status<br />No code yet; only the ideas below. This project will not be started until the Unnamed Grand Project has been released, and this will be built using UGP as a base.</span><br />Why?<br />MVC is pretty old and tightly bundled with BitBlt / Forms. It doesn't use Canvas (because Canvas didn't exist back then!).<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:24:47 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>UIDesign</title>
  <link>http://gulik.pbwiki.com/UIDesign</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/UIDesign">UIDesign</a></h3>
SecureSqueak UI design<br /><span style="font-weight:bold;color:green;background-color:#cfc;">(This page contains very old ideas only - no factual information here. SecureSqueak will only have a minimal UI such as a command line, and it is up to an &quot;image maintainer&quot; to add a real UI to it)</span><br />SecureSqueak is meant to be a secure version of Squeak. This means that regardless of what the user does or what happens across the network, it will not crash. Specifically:<br />Remote code loaded into Squeak cannot crash the system, directly or indirectly.<br />]]></description>
  <pubDate>Mon, 07 Jul 2008 14:23:27 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Canvas</title>
  <link>http://gulik.pbwiki.com/Canvas</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Canvas">Canvas</a></h3>
Here, the &quot;drawer&quot; is the object which draws (as opposed to the furniture item).<br />Child canvases<br /> glue.<span style="color:red;background-color:#fcc;"> ParentCanvas-&amp;gt;View-&amp;gt;ChildCanvas.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> ParentCanvas-&gt;View-&gt;ChildCanvas.</span> Views could then decide what of the following child behaviours are used...<br />Another thought: Views might be Canvases.<br />One of the enhancements would be to add child canvases. Child canvases could be used in many ways, for example:<br />For starters, the coordinate system should have the bottom left corner being 0@0.<br />The options are:<br /><span style="color:red;background-color:#fcc;">* Pixel-based.</span><span style="font-weight:bold;color:green;background-color:#cfc;">Pixel-based.</span> This gives code completely control over how pixels are placed at the expence of resolution independence - e.g. this has no meaning in a plotted environment and isn't convenient on a 600dpi printer canvas. The common problem here is when users upgrade from their 640x480 VGA screens to high-res 1920x1280 17&quot; LCDs - they can no longer read their text because the pixels are so small.<br />Point-based, u]]></description>
  <pubDate>Fri, 04 Jul 2008 20:23:24 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Canvas</title>
  <link>http://gulik.pbwiki.com/Canvas</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Canvas">Canvas</a></h3>
TransformingCanvas - warps the drawing commands of the child canvas, e.g. FishEyeCanvas, RotatingCanvas etc, ala Morphic3.<br />Perhaps:<br /><span style="color:red;background-color:#fcc;">BasicCanvas</span><span style="font-weight:bold;color:green;background-color:#cfc;">Canvas - bounds, position</span><br />subclass ParentCanvas. This would contain child canvases.<br />subclass<span style="color:red;background-color:#fcc;"> BitmapCanvas (form canvas).</span><span style="font-weight:bold;color:green;background-color:#cfc;"> FormCanvas (FormCanvas or RasterCanvas).</span> This can load images too.<br />subclass<span style="color:red;background-color:#fcc;"> VectorCanvas.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> GLCanvas.</span> This would add images<span style="color:red;background-color:#fcc;"> as subcanvases, and would use s display list.</span><span style="font-weight:bold;color:green;background-color:#cfc;"> by converting FormCanvases to textures?<br />...more canvas implementations</span><br />subclass ClippingCanvas<br /><span style="color:red;background-color:#fcc;">subclass</span><span style="font-weight:bold;color:green;background-color:#cfc;">subclass SubCanvas ??</span><br />e.g. the ClippedView:<br />ParentCanvas -&amp;gt; ClippedCanvas -&amp;gt; ImageCanvas.<br />]]></description>
  <pubDate>Fri, 04 Jul 2008 15:18:46 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Canvas</title>
  <link>http://gulik.pbwiki.com/Canvas</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Canvas">Canvas</a></h3>
dots / dashes?<br />Maybe lines are really rectangles - they have a width, a length and a fill colour!<br /><span style="font-weight:bold;color:green;background-color:#cfc;">Dots must have a circumference. They are really a circle.</span><br />Bezier or other curves?<br />Circles, eclipses, arcs?<br />]]></description>
  <pubDate>Fri, 04 Jul 2008 15:13:25 +0000</pubDate>
  <category>mod</category>
 </item>
 <item>
  <title>Canvas</title>
  <link>http://gulik.pbwiki.com/Canvas</link>
  <author>email.hidden@example.com (Michael van der Gulik)</author>
  <description><![CDATA[<h3>Michael van der Gulik edited <a href="http://gulik.pbwiki.com/Canvas">Canvas</a></h3>
They could be &quot;windows&quot; (frameless) that would appear &quot;on top of&quot; a parent canvas but be clipped by the parent's extent. The contents of the canvas could be cached by the so that the child can be moved across the screen without needing to redraw itself.<br />They could be used for scrolling inside a parent that manages some scroll bars. The child canvas would be clipped and only have a portion of itself visible inside the clipped extent on the parent. By changing the part of the child canvas that is shown and having it re-drawn, the child canvas would appear to scroll inside the clipped boundary the parent provides.<br /><span style="color:red;background-color:#fcc;">*</span><br />Sub-canvases would be useful for caching bitmaps and moving them across the screen smoothly. For example, a 2-D scrolling game could be made using sub-canvases to draw the actors and layers of the background.<br />Sub-canvases have a z-index.<br />For now: The Canvas implementation does it's best to render commands given to it. If it does not support anti-aliasing,]]></description>
  <pubDate>Fri, 04 Jul 2008 15:10:54 +0000</pubDate>
  <category>mod</category>
 </item>
</channel>
</rss>
