<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Backspaces</title>
	<atom:link href="http://backspaces.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://backspaces.net</link>
	<description>Applied Complexity for the Rest of Us</description>
	<lastBuildDate>Sat, 17 Sep 2011 03:14:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SFX CS590, WebGL, and Shaders</title>
		<link>http://backspaces.net/54/sfx-cs590-webgl-and-shaders/</link>
		<comments>http://backspaces.net/54/sfx-cs590-webgl-and-shaders/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 03:05:49 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://backspaces.net/?p=54</guid>
		<description><![CDATA[Note: this is just a quick overview of the SFX UNM CS590 course.  More in depth later! Just finished a nifty experimental educational stunt at the Santa Fe Complex (SFX): taking the UNM CS590 course taught by Ed Angel .. but given in Santa Fe at SFX to a group of folks interested in a [...]]]></description>
			<content:encoded><![CDATA[<p><em>Note: this is just a quick overview of the SFX UNM CS590 course.  More in depth later!</em></p>
<p>Just finished a nifty experimental educational stunt at the <a href="http://sfcomplex.org/">Santa Fe Complex</a> (SFX): taking the <a href="http://www.cs.unm.edu/~angel/BOOK/INTERACTIVE_COMPUTER_GRAPHICS/SIXTH_EDITION/">UNM CS590</a> course taught by <a title="Ed Angel @ UNM" href="https://www.cs.unm.edu/~angel/">Ed Angel</a> .. but given in Santa Fe at SFX to a group of folks interested in a wide variety of topics, from GPU programming to game programming to high performance parallel computation to ambient computing combining projectors and cameras to do computing in your spatial environment .. your whiteboards, rooms and domes.</p>
<p>Ed had just finished a <a title="Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL" href="http://www.pearsonhighered.com/educator/product/Interactive-Computer-Graphics-A-TopDown-Approach-with-ShaderBased-OpenGL/9780132545235.page">major rewrite of his textbook</a> to be <a title="GPU Shader Programs" href="http://en.wikipedia.org/wiki/Shader_(realtime,_logical)">Shader</a> based.  Shaders are programs running in your computer&#8217;s GPU chip with very fast matrix manipulations of huge number of vertices.  Not only were shaders a new addition to CS590, but <a href="http://www.khronos.org/opengl">OpenGL</a> itself had morphed considerably .. including not only the desktop C/C++ version, but also <a title="GLES for Embedded Systems " href="http://www.khronos.org/opengles/">GLES</a>, the Embedded Systems (phones and tablets, mainly) but the HTML5 <a title="WebGL" href="http://www.khronos.org/webgl/">WebGL</a> variant.  Within the class we had all versions being used.</p>
<p>I chose to use WebGL, mainly using Google Chrome, WebKit (Safari&#8217;s developer build), and Firefox .. all of which have most of HTML5 implemented.  The <a title="WebGL specs" href="http://www.khronos.org/registry/webgl/specs/latest/">documentation</a> was pretty raw but fortunately the <a href="http://learningwebgl.com/blog/">Learning WebGL</a> site is extraordinarily useful.</p>
<p>We had three fascinating homework assignments, plus a final project if taking the course for graduate school credits:</p>
<ul>
<li>Homework 1: <a title="Tessellation and OpenGL/WebGL practice." href="http://backspaces.net/CS591/hw1/hw1.html">Tessellation and Introduction to WebGL</a>.</li>
<li>Homework 2: <a title="Rubik’s Cube" href="http://backspaces.net/CS591/hw2/hw2.html">Rubik’s Cube</a></li>
<li>Homework 3: <a title="Maze Traversal" href="http://backspaces.net/CS591/hw3/hw3.html">Maze Traversal</a></li>
<li>Final Project: GPU Intensive Agent Based Model: <a href="http://backspaces.net/CS591/netlogo/netlogo0.html">Before</a> and <a href="http://backspaces.net/CS591/netlogo/netlogo1.html">After</a>.</li>
<li>Final Project Min Series: Several Minimal <a href="http://backspaces.net/CS591/min/">WebGL Experiments</a> for the final project.</li>
</ul>
<p>I kept stumbling over unsuspected surprises while doing these:</p>
<ul>
<li>Javascript: Holy cow, its Lisp without parens!  Closures etc.  Start with <a href="http://javascript.crockford.com/">Crockford</a> and <a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742">Good/Bad/Ugly</a>.</li>
<li>Self Documenting: Wow, WebGL is in a web page, I can do my <a href="http://backspaces.net/CS591/hw1/hw1.html">write-up next to the 3D model</a>!</li>
<li>HTML5: Not just 2D/3D Canvases but <a href="http://diveintohtml5.org/">way way more</a>!</li>
<li>GPU Programming: Thinking about 100&#8242;s of processors so dumb they can&#8217;t share data!</li>
<li>Interpreter: Because JS and all its libraries are just text, you can read the <a href="http://backspaces.net/CS591/hw1/hw1.html.txt">code</a> and <a href="http://backspaces.net/CS591/hw1/glx.js">libraries</a> easily.</li>
</ul>
<p>That&#8217;s all for now, just wanted to finally get this stuff posted.  All the source can be gotten from the <a href="http://backspaces.net/CS591/">CS591 directory</a>.  The zip files make downloads easy as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/54/sfx-cs590-webgl-and-shaders/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSSS2010 &amp; NetLogo Tutorial</title>
		<link>http://backspaces.net/52/csss2010-netlogo-tutorial/</link>
		<comments>http://backspaces.net/52/csss2010-netlogo-tutorial/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 22:11:54 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://backspaces.net/?p=52</guid>
		<description><![CDATA[We (Steve Guerin and myself) again presented the NetLogo tutorial at the Santa Fe Institute&#8217;s yearly Complex Systems Summer School.  We continued our use of a wiki-based, self-paced tutorial, which proved quite successful last year. This year we added a new section: our Bag Of Tricks which is a set of downloadable NetLogo files showing [...]]]></description>
			<content:encoded><![CDATA[<p>We (<a href="http://redfish.com">Steve Guerin</a> and myself) again presented the <a href="http://ccl.northwestern.edu/netlogo/">NetLogo</a> tutorial at the <a href="http://santafe.edu/">Santa Fe Institute&#8217;s</a> yearly <a href="http://tuvalu.santafe.edu/events/workshops/index.php/CSSS_2010_Santa_Fe-Schedule">Complex Systems Summer School</a>.  We continued our use of a wiki-based, self-paced tutorial, which proved quite successful last year.</p>
<p>This year we added a new section: our <a href="http://backspaces.net/wiki/NetLogo_Bag_of_Tricks">Bag Of Tricks</a> which is a set of downloadable NetLogo files showing standard techniques such as:</p>
<ul>
<li>Ant pheromone techniques</li>
<li><a href="http://www.red3d.com/cwr/boids/">Craig Reynolds</a> style Flocking simulation</li>
<li>Using two graph layouts to create a bouncing ball</li>
<li>How to have agents travel on links rather than patches</li>
<li>The n-body problem, both 2D and 3D</li>
<li>Use of NetLogo&#8217;s GIS extension.</li>
</ul>
<p>The tutorial session was given in the evening at the <a href="http://sfcomplex.org/">Santa Fe Complex</a>, an arts and technology non-profit here in Santa Fe, NM.</p>
<p>Note: the <a href="http://gisagents.blogspot.com/2010/07/netlogo-gis-examples-from-backspacesnet.html">gisagents</a> blog gave this a good mention.</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/52/csss2010-netlogo-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Website, Again!</title>
		<link>http://backspaces.net/46/new-website-again/</link>
		<comments>http://backspaces.net/46/new-website-again/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 03:21:45 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[About]]></category>

		<guid isPermaLink="false">http://backspaces.net/?p=46</guid>
		<description><![CDATA[Well, once again, I&#8217;m changing to a new web technology: First it was just HTML .. crafted by Netscape!  Remember the great HTML editor available in the Netscape browser? Next I converted to Textpattern, a brilliant CMS/Blog engine. Finally, because the  Santa Fe Complex is using WordPress, I&#8217;m converting to using it. This is not [...]]]></description>
			<content:encoded><![CDATA[<p>Well, once again, I&#8217;m changing to a new web technology:</p>
<ul>
<li>First it was just HTML .. crafted by Netscape!  Remember the great HTML editor available in the Netscape browser?</li>
<li>Next I converted to <a href="http://textpattern.com/">Textpattern</a>, a brilliant CMS/Blog engine.</li>
<li>Finally, because the  <a href="http://sfcomplex.org">Santa Fe Complex</a> is using WordPress, I&#8217;m converting to using it.</li>
</ul>
<p>This is <strong><em>not</em></strong> because I dislike Textpattern.  Indeed, I believe it to be the best blog/CMS combination I&#8217;ve seen.  Extraordinarily sophisticated.</p>
<p>But we, our 501c3 non-profit, chose WordPress for our site due to its huge popularity.  We have several professional web designers on our webteam who have extensive experience with WordPress.</p>
<p>So I decided to convert my website to WP so that I could better understand what we are doing.</p>
<p>The current page as of Thursday, September 3, 2009 is simply WP Classic (not Kubrick!) with my old site&#8217;s CSS.  It&#8217;ll change quite a bit over time as I begin to better understand WP.</p>
<p>Why Classic and not Kubrick?  Here&#8217;s a hint: try running</p>
<blockquote><p>grep &#8216;{&#8216; style.css | wc</p></blockquote>
<p>.. in both the themes.  Here&#8217;s what you&#8217;ll see:</p>
<blockquote>
<pre>wordpress/wp-content/themes/classic:  60     190    1102
wordpress/wp-content/themes/default: 130     458    2683</pre>
</blockquote>
<p>More than double the CSS for Default/Kubrick.  No brainer.</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/46/new-website-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Math on the Web</title>
		<link>http://backspaces.net/32/math-on-the-web/</link>
		<comments>http://backspaces.net/32/math-on-the-web/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 04:51:24 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=32</guid>
		<description><![CDATA[One of my favorite challenges to my friends is “Send me an equation”. It sounds like a dumb thing, but after a bit of thought, you’ll agree that Math Is A Second Class Citizen On The Web! The Math Typesetting for the Internet page has a good discussion on the issues. So what to do?! [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite challenges to my friends is “Send me an equation”.  It sounds like a dumb thing, but after a bit of thought, you’ll agree that</p>
<blockquote><p><strong>Math Is A Second Class Citizen On The Web!</strong></p></blockquote>
<p>The <a href="http://mathforum.org/typesetting/">Math Typesetting for the Internet</a> page has a good discussion on the issues.</p>
<p>So what to do?!  <a href="http://www.w3.org/Math/">MathML</a>?  <a href="http://www.cs.tut.fi/~jkorpela/math/"><span class="caps">HTML</span>/CSS</a>? <a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html"><span class="caps">ASCII</span> stunts</a>? <a href="http://www.codecogs.com/components/equationeditor/equationeditor.php">Equation Editors</a>? <a href="http://ktd.club.fr/programmation/latexit_en.php">LaTeX Tools</a>? <a href="http://www.math.union.edu/~dpvc/jsmath/">JavaScript</a>?</p>
<p>The fact is that it’s not at all easy to make a choice.  So here’s the road I took:</p>
<ol>
<li><strong>Notation:</strong> I decided on TeX notation.  It’s <em>the standard</em> and I decided I’d be ignorant not knowing it!</li>
<li><strong>Tools:</strong> LaTeXiT, TextMate and similar tools are good at equation creation, producing images/pdf helping visualize/debug the LaTeX source.</li>
<li><strong>Plugins:</strong> I decided to <strong>not</strong> use plugins: I’d need a different one for each blog, wiki, forum and so on.  They also often require root access.</li>
<li><strong>Images:</strong> I similarly decided <strong>not</strong> to use static images: they are inflexible and hard to manage, and also loose the basic TeX source.</li>
<li><strong>LaTeX2HTML</strong>: I did <strong>not</strong> want to use LaTeX2HTML (or similar) because my blog (and wiki and forum) all have their own markdown language that I did not want to “escape” by inserting raw <span class="caps">HTML</span>.</li>
<li><strong>LaTeX Source</strong>: I wanted to retain the LaTeX source in the <span class="caps">HTML</span> so that in the future I might use the equation in a different tool.</li>
</ol>
<p>This led fairly quickly to a very nifty solution: <a href="http://www.codecogs.com/">CodeCogs</a> has created a <a href="http://www.codecogs.com/components/equationeditor/equationeditor.php">LaTeX Equation Editor</a> and a web service for rendering the results!  <a href="http://sixthform.info/steve/wordpress/?p=67">Sixth Form Mathematics &amp; Law</a> blogs on using the CodeCogs facility for dynamic images created by a server.</p>
<p>The idea is quite elegant: send a LaTeX equation in a <span class="caps">URL</span> to a server which converts it, dynamically, to a tiny image.  The LaTeX segment below is rendered into the equation following it.</p>
<p style="text-align:center;"><a href="http://tinyurl.com/6epcd4"><strong>\int_{-\infty}^{\infty}e^{-x^{2}}dx=\sqrt{\pi}</strong></a></p>
<p style="text-align:center;"><img src="http://www.codecogs.com/eq.latex?\int_{-\infty}^{\infty}e^{-x^{2}}dx=\sqrt{\pi}" alt="" /></p>
<p>Click on the LaTeX code above to see the CodeCogs <span class="caps">URL</span> used and the result of its use as a stand-alone image.</p>
<p>Here’s the Textile markdown used in this article:</p>
<pre>!http://www.codecogs.com/eq.latex?
int_{-infty}^{infty}e^{-x^{2}}dx=sqrt{pi}!</pre>
<p>The following can be used instead and allows blanks in the LaTeX source:</p>
<pre>== &lt;img src=

http://www.codecogs.com/eq.latex?

int_{-infty}^{infty}e^{-x^{2}}dx=sqrt{pi}
/&gt; ==</pre>
<p>Note that the line breaks after the “?” in the above <span class="caps">URL</span>s are used to fit on the page, they do not occur in the <span class="caps">HTML</span>/Textile source.</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/32/math-on-the-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Processing: .. with Jython</title>
		<link>http://backspaces.net/30/processing-with-jython/</link>
		<comments>http://backspaces.net/30/processing-with-jython/#comments</comments>
		<pubDate>Sun, 29 Oct 2006 18:08:50 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=30</guid>
		<description><![CDATA[	<p>Last article showed how we could use <a href="http://processing.org">Processing</a> with Eclipse and Java 1.5.  Heady with success, I decided to try to convert the near-trivial <a href="http://backspaces.net/models/RandBoxes/applet">RandBoxes</a> Processing demo to Jython.</p>

	<p>Why??  Well, our group uses Blender quite a bit, and Blender uses Python as its scripting language.  More generally, Python is quite popular within our scientific community.</p>

	<p><a href="http://www.jython.org/Project/index.html">Jython</a>, a Python implementation using the <span class="caps">JVM</span>, has been surprisingly successful,    having most of what we like about CPython.  And its Java integration made it a natural for Processing.  <a href="http://itmaurer.com/jython/htdocs/presentation.html">This presentation</a> is a good overview.</p>]]></description>
			<content:encoded><![CDATA[<p>Last article showed how we could use <a href="http://processing.org">Processing</a> with Eclipse and Java 1.5.  Heady with success, I decided to try to convert the near-trivial <a href="http://backspaces.net/models/RandBoxes/applet">RandBoxes</a> Processing demo to Jython.</p>
<p>Why??  Well, our group uses Blender quite a bit, and Blender uses Python as its scripting language.  More generally, Python is quite popular within our scientific community.</p>
<p><a href="http://www.jython.org/Project/index.html">Jython</a>, a Python implementation using the <span class="caps">JVM</span>, has been surprisingly successful,    having most of what we like about CPython.  And its Java integration made it a natural for Processing.  <a href="http://itmaurer.com/jython/htdocs/presentation.html">This presentation</a> is a good overview.</p>
<h3>Java</h3>
<p>Here’s the Java 1.4 code we’re starting with, the Processing .java file created when creating the applet above.  A few notes:</p>
<ol>
<li>The two methods setup() and draw() are required by PApplet.</li>
<li>Class Box is an inner class, as is usual for Processing, because:</li>
<li>Several utilities are in PApplet like color(), random() and all drawing methods.  Use of inner classes lets you “inherit” these.</li>
</ol>
<pre>public class RandBoxes extends PApplet {
  int numBoxes = 1000;
  ArrayList boxes = new ArrayList();

  public void setup() {
    size(600, 500, JAVA2D);
    while(boxes.size() &lt; numBoxes)
      boxes.add(new Box(random(width), random(height)));
    println("number of boxes = "+boxes.size());
  }
  public void draw() {
    background(128);
    for (int i = 0; i &lt; boxes.size(); i++)
      ((Box) boxes.get(i)).step();
    if (frameCount%10==0)
      println("frameRate="+frameRate+" frameCount="+frameCount);
  }

  class Box {
    int c = color(255, 255, 0);
    float x, y;
    Box(float x, float y) {
      this.x = x;
      this.y = y;
    }
    public void step() {
      x = max(min(x+random(-1, 1), width), 0);
      y = max(min(y+random(-1, 1), height), 0);
      paint();
    }
    public void paint() {
      noStroke();
      fill(c);
      rect(x-2, y-2, 5, 5);
    }
  }
}</pre>
<h3>Jython</h3>
<p>Here’s the Jython I eventually came up with.  Note this is not “pythonic” yet, but at least runs.  Goals:</p>
<ol>
<li>Be able to run as an applet if possible</li>
<li>Avoid a “proxy class” subclass of PApplet even though that’s a common stunt to make Jython usage simpler .. i.e. hide any Processing or Jython “warts”!  See the Thoughts for an example.</li>
<li>Run easily in the standard Jython environment</li>
</ol>
<p>To run,</p>
<p>export CLASSPATH=~/local/processing/lib/core.jar:.</p>
<p>then put this in any file <em>other than</em> RandBoxes.py (see notes).  I use RandBoxesTest.py :</p>
<pre>from javax.swing import JFrame
from processing.core import PApplet
from random import uniform

winWidth=600
winHeight=500
numBoxes = 1000
boxes = []

class RandBoxes (PApplet):
  def __init__(self):
    pass
  def setup(self):
    self.size(winWidth, winHeight, self.JAVA2D)
    while len(boxes)&lt;numBoxes:
      boxes.append(
        Box(self, uniform(0,winWidth),uniform(0,winHeight)))
    print "number of boxes = %d" % len(boxes)
  # rqd due to PApplet's using frameRate and frameRate(n) etc.
  def getField(self, name):
    return self.class.superclass.getDeclaredField(name).get(self)
  def draw(self):
    self.background(128)
    for b in boxes: b.step()
    if self.frameCount % 10 == 0:
      print "frameRate=%f frameCount=%i" %
      (self.getField('frameRate'), self.frameCount)

class Box(object):
  def __init__(self, p, x, y):
    self.p = p
    self.x = x
    self.y = y
    self.c = p.color(255,255,0)
  def step(self):
    self.x = max(min(self.x+uniform(-1,1),winWidth),0)
    self.y = max(min(self.y+uniform(-1,1),winHeight),0)
    self.paint()
  def paint(self):
    self.p.noStroke()
    self.p.fill(self.c)
    self.p.rect(self.x-2,self.y-2,5,5)

if __name__ == '__main__':
  frame = JFrame(title="Processing",
    resizable = 0,
    defaultCloseOperation=JFrame.EXIT_ON_CLOSE)
  panel = RandBoxes()
  frame.add(panel)
  panel.init()
  while panel.defaultSize and not panel.finished:
    pass
  frame.pack()
  frame.visible = 1</pre>
<h3>Notes:</h3>
<ul>
<li>My first try did not use the 4 “global” variables: winWidth, winHeight, .. but it was pointed out to me that its more pythonic to use globals like this, and avoids overuse of “self”.</li>
<li>Similarly, to avoid way too many uses of “self.random()” and so on, I migrated to using Python utilities for max, min, random.uniform, and so on.  You can tell I was beset with way, way too many uses of self.foo()!</li>
<li>I tried using inner-classes within Jython, but apparently that doesn’t work, even with __future__ nested_scope.  The <a href="http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/409366"><span class="caps">ASPN</span> Cookbook</a> discusses solutions, but I decided simply to pass in the PApplet instance to the Box constructor.  Not sure what the most pythonic solution would be, but being explicit doesn’t hurt.</li>
<li>I chose to use JFrame for putting my PApplet subclass in an application even though PApplet has a main() that I could call.  (PApplet, like many Java Applets, has a main for running as an application).  I did this for three reasons: to learn Jython’s Java integration, to use the Python “if __name__” cliche, and to avoid having to use jythonc to create a .class file everytime I made a change.  The latter was a subtle point caused by the main() in PApplet actually running your class file.</li>
<li>The getField() utility was needed to disambiguate frameRate, a variable, and frameRate(), a method, both in PApplet.  This was a gift from Jeff Emanuel on the <a href="http://www.nabble.com/jython-users-f4123.html">jython-users list</a></li>
<li>I <em>did</em> succeed in building an Applet, see below.  This used jythonc to build a true Java .class file, and has facilities for including the Jython core libraries as well your Jython source.</li>
<li>The .py file cannot be RandBoxes.py due to a jythonc convention which creates a main() for the outermost Jython code.  This main throws an exception, which does not match the standard Java main() signature.  Because PApplet has its own standard Java main(), jython flags an error and stops.  And, yes, you can bet this took a <strong>long</strong> time to fine!</li>
</ul>
<h3>Applet</h3>
<p>To build the Applet, I used this jythonc command:</p>
<pre>jythonc -J-g:none --core --deep --jar RandBoxes.jar RandBoxesTest.py</pre>
<p>The applet tag looks like:</p>
<pre>  &lt;applet code="RandBoxesTest$RandBoxes"
         archive="RandBoxes.jar,core.jar"
         width=600 height=500&gt;
  &lt;/applet&gt;</pre>
<p>The Applet, and similar links, are here:</p>
<ul>
<li><a href="http://backspaces.net/models/RandBoxesPy/">The Jython Applet</a></li>
<li><a href="http://backspaces.net/models/RandBoxesPy/run.txt">The build shell script</a></li>
<li><a href="http://backspaces.net/models/RandBoxesPy/index.txt">index.html file</a></li>
<li><a href="http://backspaces.net/models/RandBoxesPy/RandBoxesTest.py">RandBoxesTest.py</a></li>
</ul>
<h3>Thoughts</h3>
<ul>
<li>Jython is for real:  It interoperates well with Java, implements a recent enough version of the Python language, has a good support forum and documentation.</li>
<li>This wasn’t easy, but was made possible due to the Jython community and website, and the Jython books (I used Jython for Java Programmers)</li>
<li>There is friction between Jython and Java, and is likely to remain there.  This will require Jython users trying to integrate with Java to smooth the way somehow.  Reflection, like in getField(), can help.  Also, Proxy classes are a very reasonable approach.  I used this initially, and then had the Jython code subclass PAppletProxy rather than PApplet :</li>
</ul>
<pre>        import processing.core.*;
        public class PAppletProxy extends PApplet {
          public float getFrameRate() {
            return frameRate;
          }
        }</pre>
<ul>
<li>Python: well, there’s good and bad.  Its a well crafted language, but I certainly made all the blunders newbies make: I got my indentation wrong, found myself using self.foo() way, way too much, and wished for standard lexical scoping.  But boy is the code clean.</li>
<li>Performance:  Java’s RandBoxes runs at about 40fps, while the Jython version runs at about 6-7fps, around 7 times slower, give or take.  This is really unfair in a way, I’m such a Jython newbie, and this is definitely a difficult task.  And for rapid prototyping, that sort of decrease may easily be acceptable.  I think if it were more like 2-3 times slower, that would be fine.  Any suggestions welcome!</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/30/processing-with-jython/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Processing: .. with Eclipse</title>
		<link>http://backspaces.net/29/processing-with-eclipse/</link>
		<comments>http://backspaces.net/29/processing-with-eclipse/#comments</comments>
		<pubDate>Tue, 17 Oct 2006 22:49:00 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=29</guid>
		<description><![CDATA[	<p>We at <a href="http://redfish.com">Redfish</a> have been using <a href="http://processing.org">Processing.org&#8217;s</a> graphics system for models requiring fairly sophisticated 3D capabilities.  Here&#8217;s an example prototype of the <a href="http://backspaces.net/models/Stadium/applet/">Pittsburgh <span class="caps">PNC</span> Baseball Stadium</a> done with Processing.  (Note: Our Redfish site has more information on the <a href="http://www.redfish.com/stadium/">project page.</a></p>

	<p>Processing is more than a graphics library, it has a delightful <span class="caps">IDE</span> which makes Java much easier, especially for the Java novice.  The <span class="caps">IDE</span> has great tools such as a web-page builder with the project as an applet.  It also can build an application version for Mac, Windows and Linux.</p>

	<p>One difficulty we faced however, was that we wanted to commit to fairly complicated models that would benefit from Java 1.5 (Processing uses an earlier version) and an <span class="caps">IDE</span> familiar to Java programmers.  We also are interested in interfacing Java to other languages such as Groovy, Python/Jython, Ruby/JRuby, and even JavaScript/Rhino.</p>

	<p>So I decided to experiment with Processing, using Eclipse and Java 1.5.  To do this, I made two models: <a href="http://backspaces.net/models/RandBoxes/applet/">RandBoxes</a>, which is really simple .. just showing 1000 boxes and randomly jiggling them each step.  The second model, <a href="http://backspaces.net/models/RoadGrid/applet/">RoadGrid</a>, is more complicated: it draws a rectangular road grid and has &#8220;cars&#8221; (rectangles) moving along the roads.  At each intersection, the cars randomly chose a new road segment.</p>]]></description>
			<content:encoded><![CDATA[<p>We at <a href="http://redfish.com">Redfish</a> have been using <a href="http://processing.org">Processing.org’s</a> graphics system for models requiring fairly sophisticated 3D capabilities.  Here’s an example prototype of the <a href="http://backspaces.net/models/Stadium/applet/">Pittsburgh <span class="caps">PNC</span> Baseball Stadium</a> done with Processing.  (Note: Our Redfish site has more information on the <a href="http://www.redfish.com/stadium/">project page.</a></p>
<p>Processing is more than a graphics library, it has a delightful <span class="caps">IDE</span> which makes Java much easier, especially for the Java novice.  The <span class="caps">IDE</span> has great tools such as a web-page builder with the project as an applet.  It also can build an application version for Mac, Windows and Linux.</p>
<p>One difficulty we faced however, was that we wanted to commit to fairly complicated models that would benefit from Java 1.5 (Processing uses an earlier version) and an <span class="caps">IDE</span> familiar to Java programmers.  We also are interested in interfacing Java to other languages such as Groovy, Python/Jython, Ruby/JRuby, and even JavaScript/Rhino.</p>
<p>So I decided to experiment with Processing, using Eclipse and Java 1.5.  To do this, I made two models: <a href="http://backspaces.net/models/RandBoxes/applet/">RandBoxes</a>, which is really simple .. just showing 1000 boxes and randomly jiggling them each step.  The second model, <a href="http://backspaces.net/models/RoadGrid/applet/">RoadGrid</a>, is more complicated: it draws a rectangular road grid and has “cars” (rectangles) moving along the roads.  At each intersection, the cars randomly chose a new road segment.</p>
<p>By a very fortunate coincidence, the Processing team had just done a fairly <a href="http://tinyurl.com/me99h">major cleanup</a>, making their system work nicely in Eclipse.  So I built a new Eclipse project, including the Processing core.jar file and the Processing JavaDocs, and using the Java 1.5 <span class="caps">SDK</span>.</p>
<p>The Processing <span class="caps">IDE</span> puts its code fragments into .pde (Processing Development Environment) files which the web-page builder includes in the applets above.  Here’s the <a href="http://backspaces.net/models/RandBoxes/applet/RandBoxes.pde">RandBoxes .pde file.</a> Note that there is no Class defined, nor imports.  The Processing <span class="caps">IDE</span> handles that for you by generating a java file automatically.  Here’s the RandBoxes.java file <a href="http://backspaces.net/models/RandBoxes/applet/RandBoxes.java">before</a> and <a href="http://backspaces.net/models/RandBoxes/eclipse/RandBoxes.java">after</a> formatting by Eclipse.  Note how the <span class="caps">IDE</span> “wraps” the .pde file in a class and adds a Main(), as per the Java norm.  It also does other preprocessing like changing the “color” type to a Java “int”.</p>
<p>Well, imaging my surprise when after dumping the above file into Eclipse, although it had many warnings, it none the less compiled and ran, both as an applet and as an application!  Here’s what Eclipse looked like:<br />
<img title="Eclipse Processing Warnings" src="/images/3.png" alt="Eclipse Processing Warnings" /></p>
<p>The next step was to upgrade the .java file to be 1.5 savy: removing unnecessary imports, migrating to generics, using the for/in loop and so on.  This resulted in the <a href="http://backspaces.net/models/RandBoxes/eclipse/RandBoxes1.java">RandBoxes1.java file</a>.</p>
<h3>Some code examples:</h3>
<p>Using generics, this:</p>
<pre>ArrayList cars = new ArrayList();
for (int i = 0; i&lt;cars.size(); i++)
     ((Agent) cars.get(i)).step();</pre>
<p>.. converted to:</p>
<pre>ArrayList&lt;Agent&gt; cars = new ArrayList&lt;Agent&gt;();
for (Agent car : cars) car.step();</pre>
<p>Converting to the new printf() facility, using a “static import”, this:</p>
<pre>println("frameRate="+frameRate
        +" frameCount="+frameCount);</pre>
<p>.. converted to:</p>
<pre>import static java.lang.System.out; // NOTE Static Import
...
out.printf("frameRate=%.2f frameCount=%dn",
            frameRate, frameCount);</pre>
<p>Another nifty 1.5-ism was using Generic methods.  Their syntax is a bit odd, but it sure is great not having to use casts all over the place!  Here’s an example taken from the second demo, RoadGrid.  This old-style method:</p>
<pre>public Object randomOneOf(ArrayList a) {
    return a.get(randomInt(a.size()));
}</pre>
<p>now looks like:</p>
<pre>public &lt;T&gt; T randomOneOf(ArrayList&lt;T&gt; a) {
    return a.get(randomInt(a.size()));
}</pre>
<p>After “modernizing” to 1.5, Eclipse shows no warnings:<br />
<img title="Eclipse Processing Update to 1.5" src="/images/2.png" alt="Eclipse Processing Update to 1.5" /></p>
<p>So Processing with Eclipse is working like a charm, and lets us use the latest Java version, use the JavaDocs easily, and even browse the Processing code.  And with a little hand tweaking of Processing’s IDE-generated web page, we can even use the new Java 1.5 applet.</p>
<p>One downside: many browsers are not yet using 1.5 so will not be able to view the newer version.  But a solution is <a href="http://retroweaver.sourceforge.net/">RetroWeaver</a> which converts a 1.5 class back to its 1.4 format, thus potentially letting us use Eclipse, Java 1.5, Processing .. yet deploying for 1.4 browsers.</p>
<p>We’ll follow up shortly with some other experiments with Processing with other languages .. stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/29/processing-with-eclipse/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>MOTH: My way Or The Highway</title>
		<link>http://backspaces.net/28/moth-my-way-or-the-highway/</link>
		<comments>http://backspaces.net/28/moth-my-way-or-the-highway/#comments</comments>
		<pubDate>Sat, 20 Aug 2005 02:17:00 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=28</guid>
		<description><![CDATA[

 ]]></description>
			<content:encoded><![CDATA[<p>Last year, Nick Thompson, Professor of Psychology and Ethology of Clark University, dropped by Santa Fe on Sabbatical.  Nick brought with him a puzzle relating to the <a href="http://en.wikipedia.org/wiki/Prisoner%27s_dilemma">Prisoner&#8217;s Dilemma</a>.</p>
<p>The core idea of the Prisoner&#8217;s Dilemma is a game where two folks choose to cooperate or not (defect).  The scoring is such that if you cooperate and your opponent defects, you (the &#8220;sucker&#8221;) get quite a low score.  If you both cooperate, however, you get a reasonable score but not as high as a defector gets against a cooperator.  This classic in game theory poses the paradox that your best move is to defect, even though if you both defect, you both get a very poor score.  Grim.</p>
<p><a href="http://www-personal.umich.edu/~axe/">Robert Axelrod</a> was puzzled by this, and suggested that if the game were repeated (iterated), the best outcome would could vary according to the strategy of the players.  This resulted in his now famous computer tournament pairing strategies against one another.  The sweet result was that a firm but friendly strategy, Tit for Tat, which cooperated initially, then simply repeated the opponent&#8217;s previous move from then on, was the overall winner.</p>
<p>Nick, looking at this, thought that it&#8217;d be nuts to stay in a series of Prisoner&#8217;s Dilemma games if the opponent was clearly no fun to work with.  Thus he introduced the idea of leaving the tournament.  <span class="caps">MOTH,</span> My way Or The Highway, builds a new suite of strategies which have the additional capability of leaving an unpleasant encounter.  This creates a pool of strategies without partners, so they are re-paired randomly, and the tournament continues.</p>
<p>The result is that Nick, along with several of our local <a href="http://friam.org">Friam group</a> here in Santa Fe, worked on a NetLogo model exploring this new approach.  This model expanded upon and validated <a href="http://aleph0.clarku.edu/%7Edjoyce/Moth/">earlier work</a> done by Nick and his colleagues David Joyce and John Kennison. This resulted in a paper delivered to the <a href="http://hcs.ucla.edu/arrowhead2005.htm">Lake Arrowhead Conference</a> on Human Complex Systems.</p>
<p>The <a href="/models/Moth.html">NetLogo Model</a> we created is viewable by you, gentle reader.  The explanation provided with the model presents considerable detail about the ideas behind the Moth strategy.</p>
<p>Not surprisingly, a quite successful strategy is a variation of Tit for Tat: play Tit for Tat and on the first defection by your opponent, leave the tournament to be paired with a (hopefully!) more cooperative player!</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/28/moth-my-way-or-the-highway/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Research</title>
		<link>http://backspaces.net/27/open-source-research/</link>
		<comments>http://backspaces.net/27/open-source-research/#comments</comments>
		<pubDate>Wed, 24 Nov 2004 05:06:00 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Talks]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=27</guid>
		<description><![CDATA[

 ]]></description>
			<content:encoded><![CDATA[<p>A friend of mine, <a href="http://research.sun.com/people/mybio.php?uid=6077">Michelle Aden</a>, recently asked me to write about some aspect of Open Source for a <a href="http://www.openstandardsalliance.org/">conference on that topic</a>.  It occurred to me that research had recently enjoyed becoming part of the Open Source community, so I looked into writing about that.</p>
<p>Here is the <a href="/research/opensource/OpenSourceResearch.html">resulting paper</a>.  It&#8217;s also available in <a href="/research/opensource/OpenSourceResearch.pdf"><span class="caps">PDF</span></a> and  <a href="/research/opensource/OpenSourceResearch.doc">Word</a> format.  </p>
<p>I should note that considerable editorial help came from <a href="http://www.thebolingroup.com/">Sherrie Bolin</a>, making it a <strong>much</strong> cleaner read!</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/27/open-source-research/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XHTML/CSS: The Quiet Web Revolution</title>
		<link>http://backspaces.net/26/xhtmlcss-the-quiet-web-revolution/</link>
		<comments>http://backspaces.net/26/xhtmlcss-the-quiet-web-revolution/#comments</comments>
		<pubDate>Sun, 10 Oct 2004 06:35:00 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=26</guid>
		<description><![CDATA[While updating my ancent website (started in the 1995’s .. so very html 1.0), I decided to look into the current state of the art of web publishing. Imagine my surprise when I found that the cruddy table based mess the .com sites used to achieve their unnatural, pixel perfect goals had been replaced by [...]]]></description>
			<content:encoded><![CDATA[<p>While updating my ancent website (started in the 1995’s .. so very html 1.0), I decided to look into the current state of the art of web publishing.</p>
<p>Imagine my surprise when I found that the cruddy table based mess the .com sites used to achieve their unnatural, pixel perfect goals had been replaced by a very clean separation of content and structure (xhtml) and the looks and style of the page (css).</p>
<p>I put together several examples for a talk to our local technical team.  Here’s the talk’s “slides” .. pages of reference material and demos.</p>
<blockquote><p>Note: The talk included considerable <span class="caps">CSS</span> magic by making simple changes in the style sheet using <a href="http://www.macrabbit.com/cssedit/"><span class="caps">CSSE</span>dit</a> and having immediate response in the preview page.  So some of that is missing for folks just looking at these pages.</p></blockquote>
<h3>The Basics</h3>
<blockquote><p>Here we look at old html and new xhtml and css.</p></blockquote>
<ul>
<li><a href="http://www.w3.org/MarkUp/Guide/">Basic &amp; Simple <span class="caps">HTML</span></a></li>
<li><a href="http://www.upsdell.com/BrowserNews/res_doctype.htm#a04">DocTypes</a></li>
<li><a href="/projects/xhtmlcsstut/StructureHTMLandCSS.html">New <span class="caps">XHTML</span>/CSS</a></li>
<li><a href="/projects/xhtmlcsstut/play0.html">Our Basic <span class="caps">XHTML</span> Doc</a></li>
<li><a href="/projects/xhtmlcsstut/StructureSimpleDoc.html">Our Doc’s Structure</a></li>
<li><a href="/projects/xhtmlcsstut/Mozilla001.jpg">Mozilla’s Editor’s Structural View</a></li>
</ul>
<h3>Before we start: Some of The Heros</h3>
<blockquote><p>These folks, and many others, brought order back from the chaos of the early, table-centric (read “Gawd Awful”) mess our poor web wandered into.  Notice how design played a strong role in achieving this revolution.  Techies — be humbled.</p></blockquote>
<ul>
<li><a href="http://www.alistapart.com/">A List Apart</a></li>
<li><a href="http://www.zeldman.com/">Jeffrey Zeldman</a></li>
<li><a href="http://www.meyerweb.com/eric/css/">Eric Meyer</a></li>
<li><a href="http://www.glish.com/">Eric Costello</a></li>
<li><a href="http://www.csszengarden.com/">Zen Garden</a></li>
<li><a href="http://webstandardsgroup.org/resources/">Web Standards Group</a></li>
</ul>
<h3>The Tutorial</h3>
<blockquote><p>Note: During this part, I used the <a href="/projects/xhtmlcsstut/StructureSimpleDoc.html">very simple</a> document discussed above, simply changing its style sheet.  Between step 1 and 2 I added a bit more material to show the impact of the styling.</p></blockquote>
<ul>
<li><a href="/projects/xhtmlcsstut/play0.html">Play0.html, our starting point</a></li>
<li><a href="http://www.w3.org/TR/REC-CSS2/box.html#box-dimensions">Styling 101 – The <span class="caps">CSS</span> Box Model</a></li>
<li><a href="/projects/xhtmlcsstut/play1.html">Play1.html</a> styled with <a href="/projects/xhtmlcsstut/play1.css">Play1.css</a></li>
<li><a href="/projects/xhtmlcsstut/play2.html">Play2.html</a> styled with <a href="/projects/xhtmlcsstut/play2.css">Play2.css</a></li>
<li><a href="/projects/xhtmlcsstut/play3.html">Play3.html</a> styled with <a href="/projects/xhtmlcsstut/play3.css">Play3.css</a></li>
<li><a href="/projects/xhtmlcsstut/play4.html">Play4.html</a> styled with <a href="/projects/xhtmlcsstut/play4.css">Play4.css</a></li>
</ul>
<h3>Help: The Great <span class="caps">CSS</span> Community</h3>
<blockquote><p>Here’s the tip of the help iceburg.  My recent experiences converting to xhtml/css and then Textpattern as a <span class="caps">CMS</span> really made me appreciate all the help out there.  Angels, we thank you!</p></blockquote>
<ul>
<li><a href="http://www.csscreator.com/css-forum/">The <span class="caps">CSS</span> Forum</a></li>
<li><a href="http://www.westciv.com/style_master/academy/browser_support/index.html"><span class="caps">CSS</span> Browser Support Charts</a></li>
<li><a href="http://glish.com/css/"><span class="caps">CSS</span> Layout Techniques: Eric Costello</a></li>
<li><a href="http://www.alistapart.com/articles/horizdropdowns">Drop-Down Menus, Horizontal Style: A List Apart</a></li>
<li><a href="http://www.alistapart.com/articles/taminglists"><span class="caps">CSS</span> Design: Taming Lists: A List Apart</a></li>
<li><a href="http://www.meyerweb.com/eric/css/edge/">The <span class="caps">CSS</span> Edge: Eric Meyer</a></li>
<li><a href="http://www.alistapart.com/articles/cms1/"><span class="caps">CMS</span> and the Single Web Designer: A List Apart</a></li>
<li><a href="http://wordpress.org/">WordPress</a></li>
<li><a href="http://textpattern.com/">Textpattern</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/26/xhtmlcss-the-quiet-web-revolution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Recent Web Findings</title>
		<link>http://backspaces.net/24/recent-web-findings/</link>
		<comments>http://backspaces.net/24/recent-web-findings/#comments</comments>
		<pubDate>Thu, 07 Oct 2004 23:01:00 +0000</pubDate>
		<dc:creator>backspaces</dc:creator>
				<category><![CDATA[Musings]]></category>

		<guid isPermaLink="false">http://backspaces.net/wordpress/?p=24</guid>
		<description><![CDATA[

 ]]></description>
			<content:encoded><![CDATA[<h3>Recent Web Findings</h3>
<p>This is a writeup on recent findings I&#8217;ve made in the web &#38; internet world as I explored it to upgrade my web site and to begin thinking about development issues we&#8217;ve been discussing at WedTech and other venues like Ars Publica, RedfishGroup, and other opportunities.</p>
<p>First and foremost is a huge change in the core web world itself.  Html has been regularized into being xhtml, a subset of xml.  (Xhtml is simply html with ballanced tags and other xml regularities.  We&#8217;ll use &#8220;html&#8221; from now on but mean xhtml)  In addition, the <span class="caps">MVC </span>style (Model, View, Controller) has become a core value, promoting an extremely clean separation of content from layout/looks.</p>
<p>The xml direction has prompted several new capabilities such as news feeds and added web semantics.  Robert&#8217;s recent posting on his web site&#8217;s use of feeds was quite interesting.  Google, Yahoo and other sites have dynamic interfaces letting you use the xml world to programmatically query their huge repositories.</p>
<p>While becoming immersed in all this, I tried some new tools.  </p>
<p><a href="/images/txp/txpadmin.gif"><img src="/images/txp/thumb/txpadmin.gif" alt="" height="69" width="69" class="right" style="float:right" /></a> One was <a href="http://textpattern.com/">Textpattern</a>, a content management system (CMS) which makes it quite easy to manage and update a web site.  It provides easy access to html/css, and makes it easy to incrementally modify both the content and looks of the site.  It provides a browser based &#8220;dashboard&#8221; for doing all this in a very simple way.  It manages fragments of content (articles) and html (forms), integrating them into pages for you.</p>
<p><a href="/images/txp/mysqladmin.gif"><img src="/images/txp/thumb/mysqladmin.gif" alt="" height="71" width="71" class="left" style="float:left" /></a> Textpattern is based on <a href="http://www.php.net/"><span class="caps">PHP</span></a> and <a href="http://www.mysql.com/">MySql</a>, two interesting core web technologies.  <span class="caps">PHP </span>is a server based dynamic page generation technology, while MySql is a freely available, well supported <span class="caps">SQL </span>server.  HostGo, our popular hosting service, provides both.  And there is an excellent phpMyAdmin web application for managing and viewing your MySql database.</p>
<p>Templating is a widespread technology for separating the php programming from the html content.  It works by <a href="http://kusor.com/en/txptagmanual/">custom defined html tags</a>.  For example, the tag <code>&lt;txp:page_title /&gt;</code> will generate a reasonable page title for the current page based on the section/category/article contents of the page.  It invokes this php function:</p>
<pre>
    function page_title($atts) {
        global $sitename,$id,$c,$q,$parentid,$pg;
        if (is_array($atts)) extract($atts);
        $sep = (!empty($separator)) ? $separator : ': ';
        $s = $sitename;
        if ($id)       return $s.$sep.fetch('Title','textpattern','ID',$id);
        if ($c)        return $s.$sep.$c;
        if ($q)        return $s.$sep.gTxt('search_results').$sep.' '.$q;
        if ($pg)       return $s.$sep.gTxt('page').' '.$pg;
        if ($parentid) return $s.$sep.'comments on '.
            fetch('Title','textpattern','ID',$parentid);
        return $sitename;
    }
</pre>
<p>All extensions to Textpattern are done via these tags.  Thus your article and form fragments have <strong>no</strong> php programming, keeping programming separate from content and form.  It is possible to use Textpattern with absolutely no knowledge of <span class="caps">PHP </span>and MySql.</p>
<p>Textpattern is installed on your server (hostgo for many of us) and the site is directly managed from there.  You need not have a local &#8220;mirror&#8221; of the site on your computer.  Because html/css is used, the actual content you add to the site is trivial html with none of the complex table layout, and embedded font, color, etc styling.   This leads to using a &#8220;MarkDown&#8221; style of data entry.  By markdown I mean any of several simple text-to-html schemes.  Wiki&#8217;s use a simple scheme of  <strong>* bold *</strong>, <em>_ italic _</em>, CamelCase or [http://foo/bar.html] links, and so on.  Several blogs use this text-to-html.  Textpattern comes with <a href="http://textism.com/tools/textile/">Textile</a>, a similar markdown.  There are others as well.</p>
<p>There are several very interesting Java/XML <span class="caps">CMS </span>systems too.  Carl&#8217;s presentation on <span class="caps">XML </span>and <span class="caps">XSLT </span>was quite an eye-opener.  Combined with Ant, the Java/Apache build tool, an entire site can be maintained from a command-line interface!  Very impressive and it has the advantage of being closer to the core xml used to have sites communicate with each other.</p>
<p>I view the Java/XML &#8211; <span class="caps">PHP</span>/MySql split as a positive thing, and something that brought about several <a href="http://www.firstmonday.dk/issues/issue3_3/raymond/">Cathedral and the Bazaar</a> discussions.  Some sites combine both technologies.  The http/webservices protocols provide clean separation.</p>
<p>Another tool I&#8217;ve begun using is <a href="/http://www.jedit.org/">jEdit</a>, another interesting open source project.  It has become a favorite among folks wanting an editor that runs on Windows, Mac, and Linux systems and which is easily modified via plugins and mode scripts.  I think the most interesting thing for us is its ability to manage all its plugins directly within jEdit via a <span class="caps">GUI </span>that directly interacts with the plugin website without having to download  and install.  This surprising design, including the network directly in the application, makes sense for us as we consider complexity applications.</p>
<p>Because html/css usage promotes very simple html, I find jEdit handles content creation, when I&#8217;m not using Textile directly, quite adequately, with the bonus of being a good xml editor (for Ant and most modern configuration scripts).  I use a separate css editor to very dynamically experiment with page style.  So with Textpattern, I generated a simple page, cut/paste it to a local html file, and started styling with a css editor.  Extremely simple and understandable, and very rapid design cycles.</p>
<p>During all these explorations, I found that the web communities have grown considerably in sophistication.  First and foremost were the Forum sites with easy to use &#8220;bulletin board&#8221; style posts.  The Textpattern forum (and WordPress, a blog system I also was exploring) are <strong>very</strong> active and useful.  Because Textpattern is meant for more than just blogging, it is a bit more complex to install and use.  The community was/is a huge help .. I visit daily and am starting to contribute help and plugins.</p>
<p>This community approach was used brilliantly by several open source projects.  One example is MySql&#8217;s on-line manual.  It allows readers to <a href="http://dev.mysql.com/doc/mysql/en/Number_syntax.html">leave comments</a> on each page!  This has lead to very rapid discovery of problems and interesting usages.  <span class="caps">PHP </span>uses the same style.  Some projects use this as a way to build the manual itself: the core developer(s) create an outline for a manual in an open Wiki, and the community fills it in.  This was used by the single Textpattern developer to document user-supplied plugins.  All this documentation is very dynamic, often to pointers to the discussions which lead particular decisions.</p>
<p>I find myself making choices of which software to start using based on their community.  A vibrant community often makes for a successful project.  So when looking for Java based systems recently, I found myself guided considerably by the community activities around the project.</p>
<p>These experiences led to suggesting that we have an explicit &#8220;portal&#8221; section part in the Ars Publica grant proposal.</p>
<p><a href="/images/eclipse/netlogofile.gif"><img src="/images/eclipse/thumb/netlogofile.gif" alt="" height="69" width="69" class="right" style="float:right" /></a> <a href="/images/eclipse/netlogoxtn.gif"><img src="/images/eclipse/thumb/netlogoxtn.gif" alt="" height="69" width="69" class="left" style="float:left" /></a> My most recent plunge into a new system is Eclipse, the open source <span class="caps">IDE </span>based on a plugin architecture which prompts considerable community activity.  What captured me was it superb integration into the Mac desktop and its ease of configuration.  No <span class="caps">IDE </span>is easy to use, but getting rid of barriers makes it much simpler.</p>
<p>My interest in Eclipse was not just as an <span class="caps">IDE. </span> Roger and others had found that it hoped to be used as an application framework.  It is called the Rich Client Platform (RCP).  So I&#8217;m currently going through a couple of <span class="caps">RCP </span>tutorials to see if it could be used as an integration platform for agent based modeling.</p>
]]></content:encoded>
			<wfw:commentRss>http://backspaces.net/24/recent-web-findings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

