<?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>Insufficiently Advanced</title>
	<atom:link href="http://itp.nyu.edu/~db1060/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://itp.nyu.edu/~db1060/wordpress</link>
	<description>&#34;Any technology distinguishable from magic is insufficiently advanced&#34; - Gehm&#039;s Corrollary</description>
	<lastBuildDate>Wed, 02 May 2012 15:08:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>SimuLaw &#8211; Final Paper</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=588</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=588#comments</comments>
		<pubDate>Wed, 02 May 2012 15:08:26 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=588</guid>
		<description><![CDATA[Simulaw_Paper_DBoyhan_Final]]></description>
			<content:encoded><![CDATA[<p><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2012/05/Simulaw_Paper_DBoyhan_Final.pdf">Simulaw_Paper_DBoyhan_Final</a></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=588</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw &#8211; Paper Proposal</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=583</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=583#comments</comments>
		<pubDate>Thu, 22 Mar 2012 19:13:41 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=583</guid>
		<description><![CDATA[There have been a number of attempts to use artificial intelligence techniques in the legal realm. Traditionally, researchers have tried to model either statutory laws (e.g., an expert system that determines whether a law has been broken), or to codify case law (precedent) in an effort to model legal reasoning (e.g., what precedent would apply to [...]]]></description>
			<content:encoded><![CDATA[<p>There have been a number of attempts to use artificial intelligence techniques in the legal realm.</p>
<p>Traditionally, researchers have tried to model either statutory laws (<em>e.g., </em>an expert system that determines whether a law has been broken), or to codify case law (precedent) in an effort to model legal reasoning (<em>e.g.,</em> what precedent would apply to a particular situation and how is a court likely to decide). I propose that instead of focusing on modeling the law (which will still be necessary, but simplified), we should attempt to model individual (or corporate or state or other &#8220;entity) <strong><em>behavior</em></strong> in reaction to laws. Using an &#8220;Agent-Based Modeling&#8221; approach, individuals, vehicles or corporations would be modeling much in the same way that they are modeled for other behaviors (population growth, traffic flow, disease spread).</p>
<p>Using an agent-based system (<em>e.g., </em>the Logo system), individual agents would be given certain motivations (acquire food, avoid arrest, cross the street) and the law, including law enforcement, act as incentives and penalties or modifiers to the motivations. Another way to visualize this would be invisible &#8220;semi-permeable&#8221; barriers that permit passage for individuals, but at a cost. Each agent must determine their &#8220;path&#8221; based on their perceptions of those costs and benefits.</p>
<p>One of the most important teaching tools I hope to demonstrate through this approach is the &#8220;<a href="http://www.econlib.org/library/Enc/UnintendedConsequences.html">law of unintended consequences&#8221;</a> &#8212; particularly perverse consequences.</p>
<p>I am working in RePast to do this modeling. The other part of this will be to discuss the process of incorporating RePast into Processing. This may warrant a secondary paper or a side-note approach to the paper.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=583</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw Update &#8211; March 19</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=580</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=580#comments</comments>
		<pubDate>Mon, 19 Mar 2012 17:56:26 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=580</guid>
		<description><![CDATA[Working in RePast has not been terribly complex so long as I stay in the built-in environment (something very similar to remaining strictly in Processing). However, once I try to move RePast fully into Java, problems constantly arise. The following is an overall summary of all my work to dates, together with notes on issues. Research &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Working in RePast has not been terribly complex so long as I stay in the built-in environment (something very similar to remaining strictly in <em>Processing</em>). However, once I try to move RePast fully into Java, problems constantly arise.</p>
<p>The following is an overall summary of all my work to dates, together with notes on issues.</p>
<p>Research &#8211; I have completed a fairly exhaustive review of ABMS literature and feel comfortable with the principles, modeling approaches, etc. I have a strong bibliography and literature review and feel I could write a survey/intro paper without too much difficulty.</p>
<p>Model – I have completed what I believe is a conceptually sound model. I am starting far simpler than I had hoped, but have fleshed out a basic &#8220;jay-walking&#8221; model using shorthand logic and some predicate calculus.</p>
<p>Programming – This is problematic. Repast is apparently written using a Design Patterns approach. I was unaware of this and did not find any indication of this in any of the documentation. Fortunately, Heather Dewey-Hagborg was able to help me understand this.</p>
<p>“Design Patterns” are an approach to writing Java (and presumably other object-oriented) applications. It is not so much a framework as a design philosophy, perhaps like RESTful design for web applications. Design Patterns require development of object frameworks. The most common appear to be “Observers” and “Factories”.</p>
<p>It appears in Repast that an Observer pattern is the fundamental pattern to work with. That is, everything is built in a &#8220;context&#8221; within RePast &#8212; all agents reside in the context. The context gets built with a context “factory”. I *believe* that the context is the subject in the Observer pattern, and that it is then necessary to add an actual observer.</p>
<p>There are also a set of external XML files that contain parameters that are passed to the runtime. For example, a simple model would have a &#8220;grid&#8221; &#8220;projection&#8221; and a &#8220;space&#8221; &#8220;projection&#8221; &#8212; you create a &#8220;context&#8221; and then add projections. While these would be created using Factories, it is also necessary to identify them as &#8220;child&#8221; projections in an XML file. I&#8217;m not sure why this is, I believe it&#8217;s so that you can modify the runtime as it is used. This is not so much of a problem. The XML files are just in another folder and you need to label and format them correctly.</p>
<p>The developers have also built &#8220;launchers&#8221; in Eclipse that replace the &#8220;main&#8221; Java method. Instead of executing main, Eclipse looks for launcher files. The launcher files are also XML files that contain a pointer to the ultimate &#8220;repast.main&#8221; method. Very confusing to me and not too well documented, but I think I can live with that or try to replace. In looking at repast.main, it appears to just do some error trapping and then have a set of parameters to be passed.</p>
<p>The system also uses &#8220;schedulers&#8221; that run continuously and can be used to monitor and execute certain agents or their methods. So, some agents can be &#8220;scheduled&#8221; to run continuously, while some methods of an agent can be set to run only if a variable is changed in another agent &#8212; so, you can &#8220;schedule&#8221; zombies to run all the time, but &#8220;humans&#8221; to run only when a zombie has &#8220;moved&#8221; (a variable set in the zombie class).</p>
<p>I originally thought the Java scripting language “Groovy” was also required, but based on consultation with the developers, that  does not appear to be necessary.</p>
<p>The Problems I’m Facing - (1) I don&#8217;t really understand Design Patterns yet. I&#8217;m working my way through the book Head First Design Patterns, but the more serious issue is (2) I still need to &#8220;detach&#8221; the java code from the runtime and run it just as a standard java library that can hopefully pass things to the Processing canvas. In theory, I can ask any agent to report back what and where it is and I can also tell the system to continuously &#8220;check&#8221; every location on the grid or on the continuous space and instruct it to &#8220;run&#8221; a method for each agent that occupies that space. Unfortunately, I can&#8217;t get even the simplest &#8220;pure java&#8221; app to work. I have some guidance from Argonne, but it doesn&#8217;t really help (attached below).</p>
<p>Guidance from Argonne National Laboratory:</p>
<p>(1) The /bin and lib/*.jar from repast.simphony.core and the same from repast.simphony.relogo.runtime and repast.simphony.runtime, although for the latter the lib jars are probably sufficient.</p>
<p>(2) You might also need repast.simphony.relogo.ide. With respect to the core /lib jars you won&#8217;t need the geotools ones if you are not doing any geographical work which you won&#8217;t if you are focusing on ReLogo. These are the jars prefixed with gt2-.</p>
<p>(3) You&#8217;ll also need the groovy-all.jar for ReLogo. There&#8217;s probably a version of this as an eclipse plugin if you are using the same eclipse that runs Repast, but you can get a stand alone version from the groovy website. You&#8217;ll want version 1.8.  [NOTE – THIS DOES NOT APPEAR TO BE NECESSARY]</p>
<p>(4) Lastly, I&#8217;d recommend you use the code from our git repository on sourceforge. This will give you the latest and greatest and we hope to release with that very soon. git://repast.git.sourceforge.net/gitroot/repast/repast.simphony</p>
<p>(5) NOTE – THE LAST RELEASE OF REPAST IS NOW OUT.</p>
<p>(6) There are some additional steps you&#8217;ll need to take to initialize an observer. These are pretty much what you find in the SimBuilder.groovy code that is part of every ReLogo project. I have attached a sample one to this email. The relevant code is:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">int minPxcor = p.getValue<span class="br0">&#40;</span>&quot;default_observer_minPxcor&quot;<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">int maxPxcor = p.getValue<span class="br0">&#40;</span>&quot;default_observer_maxPxcor&quot;<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">int minPycor = p.getValue<span class="br0">&#40;</span>&quot;default_observer_minPycor&quot;<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">int maxPycor = p.getValue<span class="br0">&#40;</span>&quot;default_observer_maxPycor&quot;<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">RLWorldDimensions rLWorldDimensions = new RLWorldDimensions<span class="br0">&#40;</span>minPxcor, maxPxcor, minPycor, maxPycor<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">LinkFactory lf = new LinkFactory<span class="br0">&#40;</span>UserLink<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">TurtleFactory tf = new TurtleFactory<span class="br0">&#40;</span>UserTurtle<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">PatchFactory pf = new PatchFactory<span class="br0">&#40;</span>UserPatch<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">ReLogoWorldFactory wf = new ReLogoWorldFactory<span class="br0">&#40;</span>context,&quot;default_observer_context&quot;, rLWorldDimensions, tf, pf, lf<span class="br0">&#41;</span>;</pre></div></div>

<p>ObserverFactory oF = new ObserverFactory(&#8220;default_observer&#8221;,UserObserver,wf);</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">            Observer dO = oF.createObserver<span class="br0">&#40;</span><span class="br0">&#41;</span>;</pre></div></div>

<p>For the world dimensions (i.e. the minPxcor etc.) you should substitute your own hardcoded values, for now. I believe the defaults are -16,-16 and 16, 16. For the various Factories, add &#8220;.class&#8221; on to the arguments (<em>i.e.,</em> new TurtleFactory(UserTurtle.class). That you don&#8217;t see it in the above is a groovy artifact &#8212; it will be necessary in Java. You&#8217;ll need to do the same with the UserObserver in the ObserverFactory. Then use that factory to create your observer. When you&#8217;ve done that, methods like createObserver should work</p>
<p>In addition, the single argument constructors for LinkFactory and TurtleFactory below are convenience constructors, which make use of some assumptions on the structure and loading of regular Repast Simphony projects. They automatically find all the necessary link and turtle types. You would likely need to use the non-automated version, which simply require you to explicitly specify any additional link and turtle types (if any) you&#8217;d like to use.</p>
<p>So this could be as simple as:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> LinkFactory lf = new LinkFactory<span class="br0">&#40;</span>UserLink.class, new ArrayList&lt;Class&lt;? extends BaseLink&gt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">TurtleFactory tf = new TurtleFactory<span class="br0">&#40;</span>UserTurtle.class, new ArrayList&lt;Class&lt;? extends BaseTurtle&gt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></div></div>

<p>This would for specifying no additional custom link or turtle classes.</p>
<p>To something like:</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">List&lt;Class&lt;? extends BaseTurtle&gt;&gt; customTurtles = new ArrayList&lt;Class&lt;? extends BaseTurtle&gt;&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">customTurtles.add<span class="br0">&#40;</span>MyCustomTurtle1.class<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">customTurtles.add<span class="br0">&#40;</span>MyCustomTurtle2.class<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">TurtleFactory tf = new TurtleFactory<span class="br0">&#40;</span>UserTurtle.class, customTurtles<span class="br0">&#41;</span>;</pre></div></div>

<p>For specifying MyCustomTurtle1 and MyCustomTurtle2 as additional custom turtle classes (I&#8217;ve omitted the link bit).</p>
<p>(8) The ContextBuilder&#8217;s build method, as used in a regular Repast Simphony simulation workflow, expects a non-null (i.e., instantiated) Context object. That looks like what&#8217;s going wrong here. In this &#8220;stripped down&#8221; approach, you&#8217;d need to instantiate your own.</p>
<p>(9) Given the use of the ContextBuilder, I&#8217;m not sure what level of integration with Repast you want. If its just using Repast classes (i.e. create a context, and run the schedule), then something like the following should work.</p>

<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> //-- Initialization --  Create the context</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> DefaultContext&lt;MyAgent&gt; context = new DefaultContext&lt;MyAgent&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> // Add any projections to it</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> GridFactory gridFactory = GridFactoryFinder.createGridFactory<span class="br0">&#40;</span>null<span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">Grid&lt;MyAgent&gt; grid = gridFactory.createGrid<span class="br0">&#40;</span>&quot;grid&quot;, context, new GridBuilderParameters&lt;MyAgent&gt;<span class="br0">&#40;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">        new WrapAroundBorders<span class="br0">&#40;</span><span class="br0">&#41;</span>, new SimpleGridAdder&lt;MyAgent&gt;<span class="br0">&#40;</span><span class="br0">&#41;</span>, true, <span style="">50</span>, <span style="">50</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> // Add agents</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> for <span class="br0">&#40;</span>int i = <span style="">0</span>; i &lt; count; i++<span class="br0">&#41;</span> <span class="br0">&#123;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">      int energy = RandomHelper.nextIntFromTo<span class="br0">&#40;</span><span style="">4</span>, <span style="">10</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">      context.add<span class="br0">&#40;</span>new MyAgent<span class="br0">&#40;</span>energy<span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"><span class="br0">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> // Create a schedule</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> ISchedule schedule = new Schedule<span class="br0">&#40;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> // Add actions to the schedule</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> private static class MyAction implements IAction <span class="br0">&#123;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">     Context&lt;MyAgent&gt; context;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">     public MyAction<span class="br0">&#40;</span>Context&lt;MyAgent&gt; context<span class="br0">&#41;</span> <span class="br0">&#123;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">      this.context = context;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">    <span class="br0">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">     @Override</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">    public void execute<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">      // probably want to use the random iterator here</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">        for <span class="br0">&#40;</span>MyAgent agent : context<span class="br0">&#41;</span> <span class="br0">&#123;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">            // do something with the agent</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">            // e.g. move it in the grid etc.</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">        <span class="br0">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">   <span class="br0">&#125;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">schedule.schedule<span class="br0">&#40;</span>ScheduleParameters.createRepeating<span class="br0">&#40;</span><span style="">1</span>, <span style="">1</span><span class="br0">&#41;</span>, new MyAction<span class="br0">&#40;</span>context<span class="br0">&#41;</span><span class="br0">&#41;</span>;</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;">  // -- Running -- Call execute on the schedule during Processing's event loop</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="" style="font-family:monospace;"> schedule.execute<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></div></div>

<p>(10) You could also use a ScheduleRunner to run the schedule, but that would integrate less well with Processing. See ScheduleRunner and its implementations in the repast source for more details.</p>
<p>(11) ReLogo in Java. Just to clarify &#8212; you should be able to use the various primitives in Java &#8212; BaseTurtles etc. provided the world is set up as we described in a previous email. These are just Java classes so they should work.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=580</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw &#8211; March 1 Update</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=578</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=578#comments</comments>
		<pubDate>Thu, 01 Mar 2012 19:09:25 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=578</guid>
		<description><![CDATA[I have been working regularly with Repast (repast.sourceforge.net) but I am continuing to have difficulties in using it in a &#8220;pure&#8221; Java mode. I was fortunate to be able to arrange a conference call among the lead developer, Michael North, and Heather Dewey-Hagborg and Dan Shiffman. It was recommended that I focus on the &#8220;ReLogo&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working regularly with Repast (repast.sourceforge.net) but I am continuing to have difficulties in using it in a &#8220;pure&#8221; Java mode. I was fortunate to be able to arrange a conference call among the lead developer, Michael North, and Heather Dewey-Hagborg and Dan Shiffman. It was recommended that I focus on the &#8220;ReLogo&#8221; tools built into RePast, which are essentially a version of the Logo programming language. Unfortunately, I have been unable to get even a very simple Java application to run, even after importing a large number of the RePast JARs and working through the API documentation. Heather spent significant time with me on trying to move forward, but I am still experiencing problems. I have reached out to Dr. North and hope to hear back from one of his colleagues.</p>
<p>In the meantime, following the advice of my thesis advisor, Kathy Wilson, I have also begun drafting out a paper independent of the development work. Perhaps the biggest hurdle to my thesis is not so much the technical problems (although they are significant), as how to model the law effectively. By definition, human laws (as opposed to laws of science) are abstract and subject to enormous interpretation. As a result, representing them in a computer simulation has always been extremely difficult.</p>
<p>The classic example that highlights this issue is the rule that &#8220;No vehicles are permitted in the park.&#8221; This <em>should </em>seem like an easy issue to model &#8212; test all &#8220;objects&#8221; that enter the part and, if they are vehicles, then &#8220;flag&#8221; this as a violation of the law. The problem is that what happens when someone decides to place a boat in the park as a statue? Now the rules must be expanded. What happens when a helicopter flies overhead? The problem becomes one of constant ad-hoc rule making.</p>
<p>I believe that in order to simulate the law, it would be more effective use a different approach. Namely, to model the behavior of human beings (or corporations) and view laws as (1) positive and negative influences on human behavior, and (2) barriers and entry-ways that are analogous to real, physical structures.</p>
<p>In other words, think of the law as a set of incentives and disincentives for behavior AND as a structure that actors must navigate. Those structures would be &#8220;semi-permeable&#8221; meaning that actors can choose whether to move around them or through them.</p>
<p>This also potentially leads to a predicate logic representation of the law and human behavior. Specifically, that law and human behavior could be represented as a series of predicates such as:</p>
<p>∀<em>x</em>: <em>P</em>(<em>x</em>) ∃Q(<em>x)</em>: <em>Q</em>(<em>x</em>) ¬ L (for a population P(x) there exists a sub-population Q(x) that does not obey the law).</p>
<p>I&#8217;m not fully sure this a helpful approach, but it does lend itself to modeling.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=578</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw &#8211; Progress Report &#8211; February 23</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=575</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=575#comments</comments>
		<pubDate>Sun, 26 Feb 2012 23:30:20 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=575</guid>
		<description><![CDATA[I am trying to integrate RePast Simphony with Processing to build some legal simulations that would be useful pedagogical tools for law students and non-lawyers. These would be sandbox-like simulations of interaction between actors (people, corporations or other autonomous entities) and legal processes (legislation, law enforcement, regulatory entities, or other legal frameworks). A very simple [...]]]></description>
			<content:encoded><![CDATA[<p>I am trying to integrate RePast Simphony with Processing to build some legal simulations that would be useful pedagogical tools for law students and non-lawyers. These would be sandbox-like simulations of interaction between actors (people, corporations or other autonomous entities) and legal processes (legislation, law enforcement, regulatory entities, or other legal frameworks).</p>
<p>A very simple example &#8211; a &#8220;Jaywalking&#8221; sim &#8211; this would be a extremely simple simulation of illegal pedestrian traffic crossing and the impact that regulatory law (the rule against jaywalking), torts (the penalties for injuring someone) and law enforcement would have on group behavior. The three classes of actors would be: (a) pedestrians, (b) vehicles, and (c) police. The rules would be modifiable by the user and could include the ability to change (a) the penalties for getting caught jaywalking, (b) the penalties for hitting a pedestrian, (c) the number of police allocated to watching for jaywalking. As a hypothesis, there would be an optimality point, above which, increased penalties or law enforcement would not be effective. The purpose of the model would be a simple demonstration of the &#8220;there &#8216;ought to be  a law&#8221; fallacy (e.g., by creating a law, we can always affect individual behavior).</p>
<p>A very complex example &#8211; an Intellectual Property simulation &#8212; actors would include (a) content creators (artists), (b) content consumers, (c) content owners, (d) content aggregators / distributors, (e) enforcement entities (public and private). Rules would be, again, modifiable by users and could include (a) ease of &#8220;protecting&#8221; ideas, (b) ease of &#8220;pirating&#8221; ideas, (c) cost of generating ideas, (d) penalty for being caught stealing ideas.</p>
<p>Progress &#8211; I have been attempting to build a simple RePast model in Eclipse without the using full RePast Simphony / Eclipse build. In other words, a simple RePast model that runs completely in Java. From there, I hope to move to Processing. Unfortunately, I have been having some difficulty with this. Although I have copied ALL of the RePast JARS into a new, clean Eclipse build, I have not been able to move execute within Eclipse, primarily because I can&#8217;t seem to understand where the MAIN class is built &#8212; I have tried using the context_constructor classes as the foundation for MAIN without success.</p>
<p>Next Steps &#8211;  I could use some help moving to straight Java. From there, I will need to understand the RePast classes better, but I believe that the best step would be to combined the Continuous Space and the Grid classes together to be initialized as a part of the size(x,y) class that Processing uses. Since Processing is essentially a screen based tool, (a) pulling appropriate x and y out of the GRID class and (b) mapping it to the screen would be critical.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=575</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw &#8211; Progress Report &amp; Schedule</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=572</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=572#comments</comments>
		<pubDate>Thu, 16 Feb 2012 19:59:45 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=572</guid>
		<description><![CDATA[During the last week I have been reviewing all the material I can find on modeling legal process using various simulation tools. There are a small handful of articles on using agents to simulate legal proceses, but none directly on point to my thesis. In addition, I have also been working in RePast Simphony and moving [...]]]></description>
			<content:encoded><![CDATA[<p>During the last week I have been reviewing all the material I can find on modeling legal process using various simulation tools. There are a small handful of articles on using agents to simulate legal proceses, but none directly on point to my thesis. In addition, I have also been working in RePast Simphony and moving through the tutorials on working in that environment. Finally, I have been researching the process of using Java in Processing and building libraris for Processing. Both seem possible.</p>
<p>I have also been working on building a mental model for a very simple agent based simulation of a legal process. The simplest I can think of would be an examination of &#8220;jay-walking&#8221; (e.g., cross a street against a traffic light).</p>
<p>There would like be three classes of actors:</p>
<p>Pedestrians &#8211; Pedestrians want to cross the street as quickly as possible, but do not want to get hit by a car or fined by the police. Pedestrians will check for the presence of police, the presence of cars, the condition of the light (a &#8220;2 state light&#8221; versus a &#8220;3 state light&#8221; may be an interesting component), and the presence of other pedestrians in the cross walk.</p>
<p>Cars &#8211; Cars want to pass through the traffic light without hitting a pedestrian or getting fined by the police. They want to go as fast as possible. Cars <em>may</em> be interested in running red lights, but this adds another layer of depth to the simulation.</p>
<p>Police &#8211; Police want to prevent pedestrians from crossing against the light and cars from hitting pedestrians.</p>
<p>The rules that affect the behavior of the pedestrians, from a purely legal standpoint, will be the severity of the punishment for breaking the law, the likelihood of getting caught and the likelihood of being hit by a car.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=572</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SimuLaw Research</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=567</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=567#comments</comments>
		<pubDate>Thu, 09 Feb 2012 18:50:10 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=567</guid>
		<description><![CDATA[I had a call today with Dr. Michael North of the Argonne National Laboratory. Dr. North (Mike) is the lead developer of Repast Simphony and the Deputy Directory of the Center for Complex Adaptive Agent Systems Simulation. Dr. North was amazingly supportive and helpful with the initial questions and issues I have for my thesis. He has [...]]]></description>
			<content:encoded><![CDATA[<p>I had a call today with Dr. Michael North of the Argonne National Laboratory. <a title="Dr. Michael North" href="http://www.dis.anl.gov/staff/north.html)" target="_blank">Dr. North</a> (Mike) is the lead developer of <a title="RePast Simphony" href="http://repast.sourceforge.net/repast_simphony.html" target="_blank">Repast Simphony</a> and the Deputy Directory of the Center for Complex Adaptive Agent Systems Simulation.</p>
<p>Dr. North was amazingly supportive and helpful with the initial questions and issues I have for my thesis. He has offered to put me in touch with additional colleagues at the labs and is quite interested in a Processing library that would allowing developers to access RePast through Processing (similar, perhaps to JBox to Box2D). He shared a number of additional resources and recommendations.</p>
<p>One of Dr. North’s suggestions was to look more closely at the LOGO implementation of RePast. “ReLogo,&#8221; as it is called, is a GUI based implementation of LOGO that opens up the full range of ABM methods available in RePast without the complexity of Java. The turtle metaphor is still extremely strong and implementing just those features in Processing might be a really good first step.</p>
<p>He also indicated that in order to get Processing to work with RePast, I will need to do additional research on whether the Processing environment can do “joint compilation.” This, unfortunately, is something beyond me right now, and will require consultation with Dan Shiffman and Heather Dewey-Hagbourg.</p>
<p>The structure of development in RePast is either to use: (1) a true GUI to generate Groovy, or (2) use Groovy to generate Java that is then compiled within RePast, or (3) to use Java directly. Although I’m not familiar with Groovy, I understand it is a scripting language built within Java that is ultimately compiled into normal Java. As I understand it, Groovy has a simpler and “more forgiving” syntax than Java and so can be used for rapid prototyping.</p>
<p>Dr. North has kindly agreed to offer me what resources he can, including access to other developers. I have shared my library of articles with him through <a title="Mendeley" href="http://www.mendeley.com/" target="_blank">Mendeley</a>, the free academic papers and citations system, and we have tentatively planned a conference call for two weeks from now.</p>
<p>One insight I had that distinguishes my project from some of the traditional &#8220;artificial intelligence &amp; law&#8221; work that has been done to date is to use laws as a “real” but “invisible” barrier or obstacle that actors (agents) must interact with the same way they would interact with streets, buildings and other actors. As a “semi-permeable barrier” simple laws, like “don’t jay-walk” could be decisions that actors, who want to cross the street, would have to navigate. Some may decide it’s not worth the effort, others will persevere. The “permeability” of the barrier will correspond directly to factors such as (1) how strongly the law is enforced, (2) how easy it is to break the law, (3) how expensive the cost of enforcement is, (4) how expensive the cost of violation is, etc. Actors (the simulated human agents) behave as they normally would (needs, desires, limitations), but in addition to navigating the “real” world (streets, buildings, etc.) they must also navigate the “invisible” world of the law.</p>
<p><em><strong>*NOTE: Ideally, I (and Mike) would like to coax Dan Shiffman and/or Heather Dewey-Hagbourg onto the call to discuss the project.*</strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=567</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Algorithms Research Studio &#8211; Agent Based Modeling &#8211; Literature Review</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=563</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=563#comments</comments>
		<pubDate>Thu, 02 Feb 2012 20:43:35 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=563</guid>
		<description><![CDATA[algorithms-litreview-dboyhan]]></description>
			<content:encoded><![CDATA[<p><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2012/02/algorithms-litreview-dboyhan.pdf">algorithms-litreview-dboyhan</a></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=563</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talk to Me</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=561</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=561#comments</comments>
		<pubDate>Mon, 17 Oct 2011 17:43:16 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Interaction Design]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=561</guid>
		<description><![CDATA[I was a little unpleasantly surprised by the MOMA exhibit &#8220;Talk to Me&#8221; &#8212; ALthough the pieces were generally good, in many respects, the entire point of the overall exhibit &#8212; interactivity as art, seemed very lost. While some of the pieces did have real interactivity, even that seemed to be diminished relative to what [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>I was a little unpleasantly surprised by the MOMA exhibit &#8220;Talk to Me&#8221; &#8212; ALthough the pieces were generally good, in many respects, the entire point of the overall exhibit &#8212; interactivity as art, seemed very lost. While some of the pieces did have real interactivity, even that seemed to be diminished relative to what I would expect from a museum presentation.</p>
<p>To start with, those pieces that had no interactivity at all. One example would be &#8220;<a href="http://moma.org/interactives/exhibitions/2011/talktome/objects/146347/">Dwarf Fortress</a>&#8220;. Dwarf Fortress is apparently a strategy game that has significant complexity and relies entirely on ASCII based characters to create the world. In spite (or perhaps because) of being extremely &#8220;retro&#8221; it apparently has a strong following. The art piece was a wall-sized depiction of one world in the game. The problem is, it was entirely static. It was a very large, imposing and engaging *static* image. Even a time-lapse video of the piece would have been more engaging.</p>
<p>Another example would be the &#8220;art game &#8221;<a href="http://moma.org/interactives/exhibitions/2011/talktome/objects/145533/">Passage</a>&#8220;. Passage is an &#8220;art game&#8221; in which the player has to explore an extremely pixelated world, looking for treasure and/or a mate. If the player finds a mate, there are certain areas that are open to the player that are not open to a single player and vice versa. The game itself is intended as a metaphor about life. As time passes for the player, the player moves further to the right of the screen, representing the passing of time and mortality. Although the piece is not to everyone&#8217;s taste, it is notable for its high degree of pixelation and yet continued ability to tell story, and the fact that it is a representation of an individuals mortality. As such, the effect is completely lost on a normal-sized screen with an ordinary joystick. There is little difference in playing the game at the exhibit as compared to playing the game at home. This is an example where it would have been far more effective to large static images than a smaller moving image. Obviously a much larger moving image would have been the best solution.</p>
<p>Finally, there were a number of pieces of interactive design (a unique keyboard) or human prosthetics or augmentation, that were all displayed behind glass. Given their nature, it was extremely disappointing not to be able to touch the pieces, even if they were only replicas of the original. Overall, given the subject, it seemed the exhibit was trapped in a pre-interactive age rather than embracing the subject it portrayed.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=561</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nudge and Stupid Terminals</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=557</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=557#comments</comments>
		<pubDate>Mon, 17 Oct 2011 17:24:59 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Interaction Design]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=557</guid>
		<description><![CDATA[The question of providing people with enough information to make a &#8220;good&#8221; decision, without either (1) trivializing / 0ver-simplifying, or (2) overwhelming the audience is a fascinating one to me and a genuinely serious issue as information  becomes cheaper and cheaper and &#8220;attention&#8221; becomes the commodity. Both the reading from Nudge and the &#8220;Humans as Stupid [...]]]></description>
			<content:encoded><![CDATA[<p>The question of providing people with enough information to make a &#8220;good&#8221; decision, without either (1) trivializing / 0ver-simplifying, or (2) overwhelming the audience is a fascinating one to me and a genuinely serious issue as information  becomes cheaper and cheaper and &#8220;attention&#8221; becomes the commodity. Both the reading from Nudge and the &#8220;Humans as Stupid Terminals&#8221; readings relate to this issue. Unfortunately, I did not find the Nudge reading particularly helpful and while the &#8220;Humans as Stupid Terminals&#8221; was interesting, it was more a restatement of the issues of information glut and overload than what I consider particularly useful guidance.</p>
<p>There is significant information on providing information to people where there is relatively binary decision that does not require a prior value judgement. For example there is voluminous information  on the best way to design traffic signs or voting booths so that drivers and voters can get to where they want for vote for whom they want. These are situations where the &#8220;user&#8221; has typically made a decision *before* the actual process is presented &#8212; &#8220;I know I want to go to Denver, I just need to know where to turn off&#8221; &#8212; &#8220;I know I want to vote for the independents, I just need to know what boxes to check.&#8221; And, of course, the Metro and stove examples in the book.</p>
<p>Similarly, there is an enormous amount of information on how to effectively influence individuals to a make decision in a manner that you would like. The arts of marketing, advertising, lobbying and even effective management are all built around the notion of influencing users in a direction you would like to steer them. This is the whole issue of &#8220;influence&#8221;.</p>
<p>However, I have yet to see a really meaningful answer to the question &#8220;How much information does a user need in order to make a rational decision?&#8221; (the &#8220;mappings&#8221; question raised in Nudge. The medical choices issue is a good one, but highlights that there are relatively few doctors a patient will deal with who do not have a bias &#8212; surgeons vs. radiation treatment (and presumably in chemotherapy). As Nudge points out, there are no experts in &#8220;wait and see.&#8221; Nor are there likely to be. Similarly, a simple comparative cell service pricing chart is likely to be simple and effective but is unlikely to ever effectively communicate the &#8220;softer&#8221; issues such as customer service. More importantly, no cell carrier would *ever* willingly participate in such a plan and would use all their own influence to prevent it.</p>
<p>But let&#8217;s take a simpler issue &#8212; food labeling. I was struck this weekend by the difference in food labeling in countries when we purchased a large quantity of Coca Cola imported from Mexico. It still has sugar in it, rather than corn syrup. The bottles looked virtually identical to US bottles with the exception of (1) the &#8220;made in mexico&#8221; label, and (2) an ugly, obvious sticker with nutritional information added in the US to comply with FDA laws and obviously not required in Mexico.</p>
<p>My question, of course, is how useful are such labels and how do you make them &#8220;good enough&#8221; that people make &#8220;the right decision&#8221;? Forgetting for a moment that a &#8220;right decision&#8221; is extremely relative, we&#8217;re going to play god for a moment and assume that the &#8220;right&#8221; decision is that Coca Cola is fine is moderate amounts (1 or 2 bottles a week) for people who do not have diabetes, sensitivity to caffeine or other ingredients, are taking care of their teeth regularly and do not have serious weight issues.</p>
<p>A label with calories and nutritional information does not convey that. The US cigarette label comes close, but has no comparative feature.</p>
<p>We know how to label poisons &#8212; &#8220;This Will Kill You&#8221; &#8212; We know, to a less extent, how to label dangerous but less-than-lethal but otherwise dangerous substances &#8212; &#8220;Do Not Operate Heavy Machinery&#8221; &#8212; We don&#8217;t seem to know how to manage beyond that &#8212; &#8220;This is moderately enjoyable, but also somewhat addictive and a certain percentage of people get sick or die each year as a result of its use. That percentage is small in the individual case and larger in the aggregate.&#8221;</p>
<p>In short, how do we communicate enough, clearly and not too much and yet not incorporate too much bias into the communication?</p>
<p>People are just plain bad at assessing risks. Some <a href="http://reason.com/archives/2006/08/11/dont-be-terrorized" target="_blank">data</a>:</p>
<p style="padding-left: 60px;">&#8220;&#8230; your chances of dying in an airplane crash? A one-year risk of one in 400,000 and one in 5,000 lifetime risk. &#8230; Drowning? A one-year risk of one in 88,000 and a one in 1100 lifetime risk. In a fire? About the same risk as drowning. Murder? A one-year risk of one in 16,500 and a lifetime risk of one in 210. &#8230; And the proverbial being struck by lightning? A one-year risk of one in 6.2 million and a lifetime risk of one in 80,000.&#8221;</p>
<p>These numbers seem very very flawed to me. A lifetime of murder as 1 in 210? And yet, this piece suggests similar <a href="http://www.livescience.com/3780-odds-dying.html" target="_blank">numbers</a>.</p>
<p>So, no answers here, just the question, how on earth do you get people to recognize that they are 25 times more likely to be murdered than to do in a plane crash? (no jokes in poor taste here). I have no idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=557</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Multiple Faces of Emotional Design</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=555</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=555#comments</comments>
		<pubDate>Mon, 17 Oct 2011 15:02:12 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Interaction Design]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=555</guid>
		<description><![CDATA[Donald A. Norman&#8217;s book, Emotional Design is a great read and one that everyone in design, interaction and technology should read. His chapter on &#8220;The Multiple Faces of Emotional Design&#8221; discusses the visceral, behavioral and reflective aspects of design. In very simplified terms, visceral design is the appearance or &#8220;surface&#8221; quality of the design of [...]]]></description>
			<content:encoded><![CDATA[<p>Donald A. Norman&#8217;s book, <a href="http://www.amazon.com/Emotional-Design-Love-Everyday-Things/dp/0465051367/ref=sr_1_1?ie=UTF8&amp;qid=1318862372&amp;sr=8-1" target="_blank">Emotional Design</a> is a great read and one that everyone in design, interaction and technology should read. His chapter on &#8220;The Multiple Faces of Emotional Design&#8221; discusses the visceral, behavioral and reflective aspects of design. In very simplified terms, visceral design is the appearance or &#8220;surface&#8221; quality of the design of an object &#8212; is it attractive or appealing? In other words, is it something we have an emotional, visceral reaction to? Behavioral design is the way in which the object is used &#8212; how effectively we operate or &#8220;behave&#8221; with the object (also software, etc.). Finally, reflective design refers to how we feel about the object or design &#8212; what emotions it evokes using or having used it. In other words, how we reflect on the object.</p>
<p>This analysis is amazingly clear and useful in the question of design. In looking at Apple products, it&#8217;s easy to see that one of the reasons that they are so successful is that they tend to address all three qualities &#8212; they are attractive (and therefore we have an emotional reaction to them beforehand), they are typically easy to learn and use and therefore the behavioral aspect is positive, and, because of (1) their general ease of use, and (2) cultural/societal &#8220;approval&#8221; of Apple devices, we typically feel good or &#8220;reflect positively&#8221; on having used devices.</p>
<p>This is also a really useful tool in analyzing why some designs fail, and also in recognizing that design does not have to successfully address all three aspects. For example, a number of the teapots that Norman refers to in his book have little practical use but are extremely attractive. Their visceral and reflective design is extremely good therefore, while their behavioral design is poor. This does not mean they have failed if the designers goal was *not* to make a &#8220;useful&#8221; teapot. On the other hand, user interfaces (such as the early incarnations of Android and Windows) had relatively good *initial* visceral appeal &#8212; people wanted to play with them. However, once users began to spend time with the devices or interfaces, they quickly found them frustrating. The visceral design was there but the behavioral design was poor. Consequently, the reflective design was poor too. Few people felt particularly good about being foiled an operating system.</p>
<p>This does raise one question I have about Norman&#8217;s approach: Although I can see it&#8217;s possible to design something that is heavily visceral or behavioral (attractive but not easy to use, not attractive, but easy to use), I wonder if there are any devices or designs, other than his example of momentos, that are heavily reflective. That is, is it possible to design something that is neither attractive or easy to use, but which creates a good emotional reaction having used it? While this may sound glib, in fact, the only thing that immediately comes to mind is something like the <a href="http://en.wikipedia.org/wiki/Unix" target="_blank">UNIX</a> operating system. I don&#8217;t think anyone would argue that UNIX is either particularly attractive, nor that it&#8217;s particularly easy to use (assuming we&#8217;re not talking about an <a href="http://en.wikipedia.org/wiki/XWindow" target="_blank">X-Window</a> interface or the like). However, at least personally, I found it *enormously* rewarding to have actually wrested something out of UNIX. This may be pure masochism on my part, but actually having worked in a UNIX command line, while neither viscerally pleasing nor behaviorally pleasing, is at least something I can take some pride in. However, I suspect this was not a design consideration. Heathkits were actually more rewarding than Norman suggests, in that there was a great deal of learning accomplished and the design and layout of the instractions were usually a delight. The last suggestion of reflective design, fashion, sadly, remains a total mystery to me, but then I can&#8217;t imagine wearing anythign but the most comfortable shoes social strictures would allow.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=555</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How We Decide</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=552</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=552#comments</comments>
		<pubDate>Mon, 17 Oct 2011 14:33:32 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Interaction Design]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=552</guid>
		<description><![CDATA[Jonah Lehrer&#8217;s &#8220;How We Decide&#8221; provides a very interesting take on the nature of designing interactions, interfaces and general usability. He provides a story about a weapons operator on the USS Misouri during the first Gulf war. The operator was faced with the challenge of determining, with very very little time and *no* margin of [...]]]></description>
			<content:encoded><![CDATA[<p>Jonah Lehrer&#8217;s &#8220;How We Decide&#8221; provides a very interesting take on the nature of designing interactions, interfaces and general usability. He provides a story about a weapons operator on the USS Misouri during the first Gulf war. The operator was faced with the challenge of determining, with very very little time and *no* margin of error, whether a radar signal was a threat to the ship or a friendly aircraft. A wrong decision in either direction would result in loss of lives. The operator made the right decision without any immediate indication of how the decision was reached. Only after a lengthy post-mortem were the clues that the operator had relied on discovered. To simplify Lehrer&#8217;s analysis, the brain formed patterns and associations of &#8220;right&#8221; and &#8220;wrong&#8221; actions at a chemical and consequently emotional level. A missile felt &#8220;wrong&#8221; to the operator, in a way that he could not articulate, especially given that he had never been exposed to the &#8220;messages&#8221; before. However, he had seen friendly planes before which, having not been a threat, were eventually associated with being &#8220;right&#8221;. The operator did not have time to identify and analyze all of the factors necessary to make an informed decision, but, instead, relied on those essentially &#8220;sub-concious&#8221; feelings. Similarly, we often talk about &#8220;intutive&#8221; decision making.</p>
<p>I wondered how this related to the notion of &#8220;your first choice typically being the correct one&#8221;, at least on multiple-choice exams. A fast good <a title="Google Search" href="http://www.google.com/search?q=first+choice+usually+right+one&amp;sourceid=ie7&amp;rls=com.microsoft:en-US&amp;ie=utf8&amp;oe=utf8" target="_blank">search</a> reveals that most teachers and test preparation advisors recommend *not* changing your choice (intuition / emotional decisions win). However, at least one study I <a title="Choice Study" href="http://psych.colorado.edu/~vanboven/teaching/p7536_heurbias/p7536_readings/kuger_1stinstinct.pdf" target="_blank">found</a> indicates that the opposite is actually trued. &#8220;Counter-factual&#8221; thinking leads people to believe that their first choice is usually better, but in fact, based on the studies, most test-takers are better off changing their answers. This surprised me and appears to be contrary to Lehrer&#8217;s premise. You could argue that the decision to fire a missile is not comparable to a multiple-choice exam, but in fact, it is still a time-pressured decision making. It does make me wonder whether Lehrer&#8217;s premise (at least with respect to emotional decision making) has some shortcomings. It is, in many respects, similar to Gladwell&#8217;s hypothesis in <a title="blink" href="http://www.amazon.com/Blink-Power-Thinking-Without/dp/0316010669/ref=sr_1_1?ie=UTF8&amp;qid=1318861537&amp;sr=8-1" target="_blank">Blink</a>.</p>
<p>It&#8217;s my sense that there is a definite bias, at least in our culture to &#8220;rely on intuition.&#8221; Popular psychology regularly talk about human beings having unique decision making talents that operate at a subconcious or &#8220;pre-cognitive&#8221; level as a result of evolutionary forces (the fastest, best decision maker was most likely to survive ). And there is certainly an enormous amount of evidence associated with neural pathways developing for decision making. However, I do wonder if instinct, intuition and &#8220;emotional decision making&#8221; were really as effective as people like Lehrer and Gladwell suggest, why logic and decision making tools (game theory, occams razor, etc.) evolved. In fact, the whole unique frontal cortext that human beings possess is an argument that while emotional decision making can be valuable, it is not a deciding factor in species survival.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=552</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autonomous Weapons</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=548</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=548#comments</comments>
		<pubDate>Fri, 14 Oct 2011 18:52:20 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=548</guid>
		<description><![CDATA[This is my current proposed subject for my Future of Infrastructure research paper. A few links that I found particularly interesting: Recent Washington Post Article Paper from the Naval Warfare College. Info from Defense Update. My initial thoughts &#8212;  Erosion / Evolution of US Military Man-in-the-Middle Doctrine and the changing face of warfare There is [...]]]></description>
			<content:encoded><![CDATA[<p>This is my current proposed subject for my Future of Infrastructure research paper.</p>
<p>A few links that I found particularly interesting:</p>
<p>Recent Washington Post <a href="http://www.washingtonpost.com/national/national-security/a-future-for-drones-automated-killing/2011/09/15/gIQAVy9mgK_story.html">Article</a></p>
<p><a href="http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA464896&amp;Locat">Paper</a> from the Naval Warfare College.</p>
<p>Info from<a href="http://defense-update.com/features/du-1-07/armedUAVs_8.htm"> Defense Update</a>.</p>
<p>My initial thoughts &#8212;  Erosion / Evolution of US Military Man-in-the-Middle Doctrine and the changing face of warfare</p>
<p>There is an excellent argument that technology drives the way wars are fought. Many have argued that machine guns and powerful mobile artillery ended the primacy of the infantry / cavalry charge and lead to the trench warfare of World War I. Similarly, effective mobile armor and air power ended trench warfare and lead to the “blitzkrieg” model of warfare. Nuclear weapons are arguably the reason that there has not been a “total war” (Ludendorff) since World War II and lead directly to “low intensity” “guerilla” and “insurgency” warfare. Although the US attempted to counter this threat through a number of approaches including targeted killings (the Phoenix Program), aggressive propaganda (the “hearts and minds” program) and electronic intelligence (the “electronic battlefield”), success was limited and a paradigm shift did not occur as demonstrated by the Allied success in the first Gulf War (using traditional blitzkrieg warfare techniques) and the problems in the second Gulf War (given the huge number of casualties caused by IED’s and other insurgency / low intensity tactics).</p>
<p>A new warfare paradigm, however, <strong>may</strong> be emerging. Remotely operated vehicles and weapons actually were relatively well known as far back as World War II (the Germans had a large arsenal of such weapons and even the Allies had remotely piloted planes used as flying bombs). However, all such weapons have always had a human operator, or a “man-in-the-middle”. With the exception of land-mines and sea-mines, essentially all weapons (at least in the US) have required human intervention in order to kill. This doctrine most likely [research needed] arose as result of the nuclear cold war and severe concerns about a nuclear power “launching on warning” – essentially turning some degree of decision making over to machines.</p>
<p>However, over the last [20] years, <strong>truly</strong> autonomous weapons have begun to emerge. These are weapons that are permitted to “kill” without intervening human action. Unlike land and sea mines, which are typically mechanically triggered and are generally considered “defensive” weapons (that is, they are typically used to defend a position rather than being used to attack a position, although this is subject to debate). Autonomous weapons, including those that identify and discriminate between tanks and other vehicles, weapons that rely on facial and iris recognition are starting to emerge into the battlefield. I would like to analyze this, identify the trend, try to determine whether “man-in-the-middle” doctrine is changing and consider whether this is a fundamental shift in warfare akin to machine guns, blitzkrieg and nuclear weapons.</p>
<p>&#8212;</p>
<p><object width="517" height="388"><param name="movie" value="http://www.youtube.com/v/ua3nLmE7Kow?version=3&#038;feature=oembed"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/ua3nLmE7Kow?version=3&#038;feature=oembed" type="application/x-shockwave-flash" width="517" height="388" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=548</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clusters and Medical Resources (and lawyers)</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=528</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=528#comments</comments>
		<pubDate>Fri, 08 Apr 2011 13:41:22 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=528</guid>
		<description><![CDATA[In working with clusters, I was reminded of the old statistics saw that “correlation does not necessitate causation” (or something to that effect). The point being, among other things, that just because clusters are identified does not mean that there is any underlying meaning behind the clusters. Unsurprisingly, what sounds at first glance like a [...]]]></description>
			<content:encoded><![CDATA[<p>In working with clusters, I was reminded of the old statistics saw that “correlation does not necessitate causation” (or something to that effect). The point being, among other things, that just because clusters are identified does not mean that there is any underlying meaning behind the clusters.</p>
<p>Unsurprisingly, what sounds at first glance like a relatively dry and academic point is actually a tremendously political issue and one that has serious implications for many people.</p>
<p>Human beings are “programmed” to identify patterns. This was an incredibly important evolutionary development. The human beings that only saw random stripes or dots in the tall grass were far less likely to reproduce and pass along their genes than the human beings who were able to “connect the dots” into something with a long tail and big teeth. Pattern recognition is a survival function.</p>
<p>However, sometimes patterns don’t always exist. Evolutionarily speaking, it’s better to think you saw a tiger and be wrong that fail to see a tiger that’s actually there. So evolution favors false positives over false negatives.</p>
<p>This means that we often simply see patterns that just aren’t there. If this is an issue of marketing a new soda to a demographic that actually doesn’t have any interest in an exciting new soft drink, that just means lost money to a company. If clustering suggests that a new drug may increase the risk of heart attacks, then, unfortunately, an otherwise useful drug may not be brought to market. When clustering suggests to us that there is something causing cancer in a population, you suddenly have a very very serious issue.</p>
<p>Cancer clustering is one of the more controversial issues in oncology and law right now.</p>
<p>And to be clear, the issue is not one of protecting companies who may have been polluting the environment and causing cancer. The issue is one of resources for the rest of the medical community.</p>
<p>Human beings are very good at seeing patterns, even if none exist. Lawyers are similarly very good at convincing people that patterns exist .</p>
<p>As shown below, random dots will cluster.  This graphic comes from the <a title="State of Delaware Dept. of Public Health - Cancer Clusters" href="http://dhss.delaware.gov/dph/dpc/cancercluster.html" target="_blank">State of Delaware Department of Public Health</a>. It’s a graphic intended to demonstrate the potentially misleading appearance of clusters.</p>
<div id="attachment_529" class="wp-caption aligncenter" style="width: 310px"><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/random_dots.png"><img class="size-medium wp-image-529" title="Random Dot Pattern from Delaware DPH" src="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/random_dots-300x212.png" alt="Random Dot Pattern from Delaware DPH" width="300" height="212" /></a><p class="wp-caption-text">Random Dot Pattern from Delaware DPH</p></div>
<p>The <a href="jnci.oxfordjournals.org/content/100/9/614.full.pdf" target="_blank">following</a> is an interesting article from Oxford University Press on the same issue. In short, clusters are real. They are also, at times, incorrectly identified. The resources (and here, I’m not concerned about the companies so much as the EPA, the CDC, etc.) are enormous.</p>
<p>However, I simply have no idea of how you would go about telling people who have sick family members that it’s a statistical anomaly, or that there are inadequate resources to pursue it. And there are always lawyers lawyers lawyers looking to intervene in both sides of the argument.</p>
<p>On a totally unrelated note, there are amazing studies that have been done with clustering of the Enron email corpus. The data is readily available and quite bit of fun to play with. Here are some interesting images links:</p>
<div id="attachment_533" class="wp-caption alignleft" style="width: 527px"><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/enron_vis_1.png"><img class="size-large wp-image-533" title="Enron Visualization by J.Heer" src="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/enron_vis_1-1024x749.png" alt="Enron Visualization by J.Heer" width="517" height="378" /></a><p class="wp-caption-text">Enron Visualization by J.Heer</p></div>
<div id="attachment_534" class="wp-caption alignleft" style="width: 527px"><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/enron_1_all.png"><img class="size-large wp-image-534" title="Enron Visualization by J.Heer" src="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/04/enron_1_all-1024x653.png" alt="Enron Visualization by J.Heer" width="517" height="329" /></a><p class="wp-caption-text">Enron Visualization by J.Heer</p></div>
<p><a href="http://hci.stanford.edu/jheer/projects/enron/" target="_blank">http://hci.stanford.edu/jheer/projects/enron/</a></p>
<p><a href="http://hci.stanford.edu/jheer/projects/enron/v1/" target="_blank">http://hci.stanford.edu/jheer/projects/enron/v1/</a></p>
<p><a href="http://hci.stanford.edu/jheer/projects/enron/v2/" target="_blank">http://hci.stanford.edu/jheer/projects/enron/v2/</a></p>
<p><a href="http://bailando.sims.berkeley.edu/enron_email.html" target="_blank">http://bailando.sims.berkeley.edu/enron_email.html</a></p>
<p><a href="http://infosthetics.com/archives/2006/10/enron_explorer_data_visualization.html" target="_blank">http://infosthetics.com/archives/2006/10/enron_explorer_data_visualization.html</a></p>
<p><a href="http://snap.stanford.edu/data/email-Enron.html" target="_blank">http://snap.stanford.edu/data/email-Enron.html</a></p>
<p><a href="http://www.cs.cmu.edu/~enron/" target="_blank">http://www.cs.cmu.edu/~enron/</a></p>
<p><a href="http://sgi.nu/enron/" target="_blank">http://sgi.nu/enron/</a></p>
<p><a href="http://www.isi.edu/~adibi/Enron/Enron.htm" target="_blank">http://www.isi.edu/~adibi/Enron/Enron.htm</a></p>
<p><a href="http://edrm.net/resources/data-sets/edrm-enron-email-data-set-v2" target="_blank">http://edrm.net/resources/data-sets/edrm-enron-email-data-set-v2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=528</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Computer Generated Suggestions &#8211; Ubiquitous, Annoying, Generally Worthless</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=522</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=522#comments</comments>
		<pubDate>Fri, 01 Apr 2011 15:37:50 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=522</guid>
		<description><![CDATA[Once I started really looking at this, I was utterly amazed at how it affects every aspect of our interaction with computers. And how it has become, in essence, more noise to be ignored than useful. Spell-Check / Autocorrect &#8212; Everywhere, everyday. Occasionally useful in word processing, less useful and more annoying in GMail, genuinely [...]]]></description>
			<content:encoded><![CDATA[<p>Once I started really looking at this, I was utterly amazed at how it affects every aspect of our interaction with computers. And how it has become, in essence, more noise to be ignored than useful.</p>
<p>Spell-Check / Autocorrect &#8212; Everywhere, everyday. Occasionally useful in word processing, less useful and more annoying in GMail, genuinely distracting and painful in SMS and mobile mail.</p>
<p>GoogleAds and other auto-generated Ad services &#8211; I use AdBlock+ for Firefox. Once I turned it off, it was, surprisingly, not so overhwelming as I expected. I think I&#8217;ve generated an internal filter to this stuff. As long as the ads are not either (1) offensive/pornographic, or (2) those insane popups that still show up on some high end sites, I can&#8217;t really see them. They&#8217;re just more noise. That said, I use the &#8220;<a href="https://addons.mozilla.org/en-us/firefox/addon/readability/">readability</a>&#8221; plug-in, or <a href="www.instapaper.com/">Instapaper </a>to help cut down serious infringements on reading stuff that matters.</p>
<p>Amazon recommendations &#8212; I buy a lot of books. Amazon is consistently one of the most useless recommendation systems out there. I&#8217;ve also tried, in no particular order: <a href="http://www.librarything.com">www.librarything.com</a>, <a href="http://lifehacker.com/5233568/bookarmy-suggests-new-books-readers-with-similar-tastes">BookArmy</a>, <a href="http://lifehacker.com/5111262/whichbook-will-help-fill-your-reading-list">WhichBook</a>, <a href="http://lifehacker.com/369212/find-books-youll-love-at-booklamp">BookLamp</a>, and <a href="http://lifehacker.com/software/books/what-should-i-read-next-like-lastfm-for-books-318931.php">What Should I Read Next?</a>, <a href="http://www.goodreads.com">www.<strong>goodreads</strong>.com</a>, and <a href="http://www.bookseer.com">www.<strong>bookseer</strong>.com</a>. They all want me to read Harry Potter. I don&#8217;t have anything personally against Harry, but it&#8217;s not my cup of tea. </p>
<p> Finally, there&#8217;s LinkedIn&#8217;s and FaceBook&#8217;s &#8220;you may know&#8221; recommendations. It&#8217;s rare that I actually do know any of those people. Much rarer still that I would want to link to them.</p>
<p>I realize now that these suggestion services are, for the most part, something of a cross between a dynamic &#8220;filler&#8221; and mass-marketing / spam. That is, once upon a time, sites used to regularly restructure their layout with the same content so that when people came back to the site it looked new. Thankfully, people don&#8217;t do that anymore. And mass-marketing / spam has really a tiny tiny percentage of successful hits. But it&#8217;s so cheap, it&#8217;s worth it to the websites and vendors to continuously bombard us with this noise. And I&#8217;ve seen no evidence that any of the recommendation services have improved significantly over the last 10 years, so, for me, it&#8217;s simply another form of graphic noise to ignore.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=522</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PageRank and &#8220;the Market&#8221;</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=517</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=517#comments</comments>
		<pubDate>Fri, 25 Mar 2011 16:02:14 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=517</guid>
		<description><![CDATA[I had an argument once with a colleague about the quality writing and communication and the popularity of those communications. In short, my colleague argued that even if another colleague (a &#8220;coac&#8221; or &#8220;colleague of a colleague&#8221;) wrote a blog that only 10 other people read, it was still a good blog. My counter was that, [...]]]></description>
			<content:encoded><![CDATA[<p>I had an argument once with a colleague about the quality writing and communication and the popularity of those communications. In short, my colleague argued that even if another colleague (a &#8220;coac&#8221; or &#8220;colleague of a colleague&#8221;) wrote a blog that only 10 other people read, it was still a good blog. My counter was that, unless the subject matter of the blog was so esoteric that there would only be 10 other people in the world interested and knowledgeable on the subject, then no, it was not a good blog if only 10 people read it. We argued about it quite heatedly, but my basic position was that if someone was writing on subjects of relatively broad impact (say, healthcare or the economy) and was publishing publicly (through a blog that has adequate tags, etc.), THEN, if only 10 people are reading it, it&#8217;s not a good blog. Wow, those words have come back to haunt me.</p>
<p>In truth, this appears to be EXACTLY how the PageRank system works. There&#8217;s even a great quote from the <a title="PageRank Paper" href="http://ilpubs.stanford.edu:8090/422/1/1999-66.pdf" target="_blank">paper </a>on this very subject: &#8220;The average web page quality experienced by a users is higher than the quality of the average web page. This is because the simplicity of creating and publishing web pages results in a large fraction of low quality web pages that users are unlikely to read.&#8221; In short, if it&#8217;s read, it&#8217;s better than if it&#8217;s not read. And for much of the web, this is true. The whole &#8220;wisdom of crowds&#8221; thing. The whole &#8220;efficiency of the market&#8221; thing. Good, valuable, clear, dense information will win out over bad information. That&#8217;s the concept.</p>
<p>And now, I wonder. This may be true if you wish to get information the good restaurants in New York City. Or the best places to go bird watching in Central Park. People will search. They will find and link to and refer others to the best places. And those will rise up with PageRank algorithm.</p>
<p>That&#8217;s true for those things that can, by their nature, have validity and usefulness determined by consensus. Which is fine. But there are many many many things that consensus is very very bad at. It&#8217;s the reason why we have the Supreme Court in the United States and decisions like Brown v. Board of Ed.  Because lots of times, consensus is wrong, or just wrong-headed.</p>
<p>And that means that looking for information on cancer treatments using PageRank is a very very questionable assumption. Because most people are not experts on cancer treatment. And yet, many people are affected by cancer and by worry for their loved ones and themselves and so look for the best information they can find. Unfortunately, for something like cancer treatment, the information that everyone finds is not necessarily the best information. And so PageRank fails.</p>
<p>PageRank is also, I suspect, extremely susectible to manipulation by individuals or organizations adept at generating interest in a subject. People talented in PR and grass roots initiatives frequently have a natural talent for drawing attention to something that, perhaps, was not always of interest to people. But if enough &#8220;buzz&#8221; is generated, then, again, the PageRank algorithm will bubble up the pages.</p>
<p>I know there are literally an endless number of ways to approach searching. From purely keyword, to purely popularity to heavily analytical, using linguistic formulas. At the end of the day though, I suspect that expertise is the only true factor in really determining value, at least where there are issues that are not simply consensus issues (<em>e.g.,</em> &#8221;great movie&#8221; is probably a consensus issue, while atomic weight of Cessium is most definitely not). So, do you insert a &#8220;person in the middle&#8221; much the way wikipedia does? I&#8217;m not sure. I suspect that, in fact, the very reason why google has not eliminated wikipedia and the like is because editorialized expertise has as much of a place as consensus and therefore cannot be eliminated.</p>
<p>Lastly, WOW. How about this &#8211;&gt; &#8220;&#8221;Currently, the predominant business model for commercial search engines is advertising. The goals of the advertising business model do not always correspond to providing quality search to users. &#8230; In general, it could be argued from the consumer point of view that the better the search engine is,the fewer advertisements will be needed for the consumer to find what they want. This of course erodes the advertising supported business model of the existing search engines. However, there will always be money from advertisers who want a customer to switch products, or have something that is genuinely new. But we believe the issue of advertising causes enough mixed incentives that it is crucial to have a competitive search engine that is transparent and in the academic realm.&#8221;</p>
<p>WOW. Can&#8217;t really add to that. Wow.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=517</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parts of Speech, Bayesian Analysis, Magic</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=506</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=506#comments</comments>
		<pubDate>Fri, 04 Mar 2011 15:56:19 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=506</guid>
		<description><![CDATA[Oh, spelling and grammar. My greatest educational and professional bane. My (close to) greatest source of embarrassment. Until roughly the late 19th century, spelling for most people, even the &#8220;educated classes&#8221; was essentially a process of deciding what looked good. It wasn&#8217;t even probabilistic so much as optimistic. Note that Terry Pratchett described one character&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Oh, spelling and grammar. My greatest educational and professional bane. My (close to) greatest source of embarrassment. Until roughly the late 19th century, spelling for most people, even the &#8220;educated classes&#8221; was essentially a process of deciding what looked good. It wasn&#8217;t even probabilistic so much as optimistic. Note that Terry Pratchett described one character&#8217;s writing approach as more &#8220;ballistic&#8221; than probabilistic. That is, he fired away and charged on regardless.</p>
<p>It was only the creation of publicly available schooling that really started to alter the spelling landscape. That and Samuel Johnson&#8217;s dictionary, which was essentially the first of its kind.</p>
<p>Bayesian analysis is, honestly, a little bit like magic. It is for me, very reminiscent of Arthur C. Clarke&#8217;s quotation that inspired my blogs name &#8212; &#8220;Any sufficiently advanced technology is indistinguishable from magic.&#8221; Bayesian     analysis, even though it is, in many respects, quite accessible once you have read through the formula a few times. At the same time, when actually working with a good training set and a good test set, it&#8217;s ability to identify patterns (parts of speech, spam, etc.) is really nothing short of magical. I&#8217;m always reminded of the silly question &#8220;how does the aspirin know where the headache is?&#8221; But it does seem that way. The impact of probability on our ability to perform these sorts of analysis is transformational.</p>
<p>However, I also want to note that I have been working with variants of these technologies for many many years, and the expression about &#8220;almost only being acceptable for horseshoes and hand grenades&#8221; remains equally true with grammar, spelling, OCR, writing and speech recognition.</p>
<p>I have been working, as an extension of my professional responsibilities, with OCR, grammar checking, handwriting recognition and speech recognition for more than 20 years. I have tried every commercially available OCR package, grammar checking package (yes, there used to be more than 1), handwriting recognition package (LiveScript currently makes the best on the market, but people have completely forgotten the Apple Newton and the early Palm recognition applications. Similarly, Kurzweill&#8217;s speech recognition systems were originally hardware based and there were multiple other packages out there.</p>
<p>OCR, in particular, is critical in the legal profession. The core of litigation is to conduct &#8220;discovery&#8221; wherein you review *enormous* quantities of documents looking for materials relevant to the matter. Historically, this has meant paper. Boxes and boxes and boxes of paper. Warehouses full of paper that had to be OCR&#8217;d. For many years, one couldn&#8217;t expect an accuracy of much more than 75% &#8211; 80%. That means one in every 4 or 5 words is wrong. Not just wrong, but *completely* wrong. When you&#8217;re reviewing or searching through hundreds of thousands of documents, this is a serious issue. Speech recognition was about the same and handwriting recognition was an unmitigated disaster.</p>
<p>Over the last 10 years or so, the accuracy has gone up significantly, so that many vendors claim 99%+ on &#8220;good OCR&#8221; and 95% on speech and handwriting recognition.</p>
<p>I feel comfortable in saying that (1) these numbers are still wildly inflated and (2) even if they are accurate, you need to look at a broader context. Namely, documents tend to average 250 to 500 words per page. A typically &#8220;bankers box&#8221; for paper (a standard box for storing papers) holds between 5000 and 15000 pages. This means, on average, there will be 12,500 and 75,000 spelling mistakes for a single box of documents. If you are relying on word and phrase search to review these documents (which you must), then this is a major problem. There are no better solutions, but OCR is still really on a mediocre technology at best. When it attempts to handle formatting and the like, it tends to fail utterly.</p>
<p>Speech recognition and handwriting recognition are, at best, 95% accurate. Again, a number that I believe to be highly overstated. Considering that the average human being speaks at between 80 and 120 words per minute in normal conversation, this means for every minute of dictating or transcribed dialog, there will be at least 4 to 6 completely incomprehensible spelling errors. Worse, they will not be misspellings but completely wrong words. If you are going to dictate for 20 minutes, you are going to spend at least another 20 minutes identifying the misinterpretations that the system has generated.</p>
<p>In short, I feel all of these technologies have a significant improvement left to be generated.</p>
<p>Getting the code to work was, frankly, quite a bit more difficult than previous work, and unfortunately, I still don&#8217;t have anything to show.</p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=506</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ngram&#8217;s, Press Releases and the SEC</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=492</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=492#comments</comments>
		<pubDate>Fri, 25 Feb 2011 17:37:08 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=492</guid>
		<description><![CDATA[I tried a few different datasets to generate the text. The first was a set of press releases. The second was from filings made by companies with the Securities and Exchange Commission. press-releases text-release-generated 10q_mda generated]]></description>
			<content:encoded><![CDATA[<p>I tried a few different datasets to generate the text. The first was a set of press releases. The second was from filings made by companies with the Securities and Exchange Commission.</p>
<p><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/02/press-releases2.txt">press-releases</a></p>
<p><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/02/text-release-generated.txt">text-release-generated</a></p>
<p><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/02/10q_mda1.txt">10q_mda</a></p>
<p><a href="../../../%7Edb1060/wordpress/wp-content/uploads/2011/02/generated.txt">generated</a></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=492</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stop List &#8211; Stop Tokenizer &#8211; Google Patent</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=475</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=475#comments</comments>
		<pubDate>Fri, 18 Feb 2011 15:41:20 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Learning_Bit_by_Bit]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=475</guid>
		<description><![CDATA[&#8220;Stopwords&#8221; are those words (and potentially phrases) that search engines and search parsers filter out from the query. In my own experience, we frequently refer to them a &#8220;noise&#8221;. Typical examples include &#8220;a&#8221;, &#8220;an&#8221; and &#8220;the&#8221;. Most electronic content management systems (&#8220;ECM&#8217;s&#8221;) which store large quantaties of text data will remove these from the full text [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Stopwords&#8221; are those words (and potentially phrases) that search engines and search parsers filter out from the query. In my own experience, we frequently refer to them a &#8220;noise&#8221;. Typical examples include &#8220;a&#8221;, &#8220;an&#8221; and &#8220;the&#8221;. Most electronic content management systems (&#8220;ECM&#8217;s&#8221;) which store large quantaties of text data will remove these from the full text index because they add a significant amount of space without adding much value.</p>
<p>When a search string is put together, the parser that takes the search string will often remove these terms.</p>
<p>This is usally a good thing, but not always. I find myself amazed that I have real-world experience with this. One of my responsibilites in my current job is to act as an &#8220;electronic discovery liaison&#8221;, which essentially means acting as an attorney, but, in part, also crafting or assisting in crafting queries to gather electronic documents for discovery purposes.</p>
<p>In really abbreviated terms, &#8220;discovery&#8221; is the process where one side in a legal dispute has the right to request documents and other materials from the other side as a part of the litigation, regulatory inquiry or the like. Often this involves very very broad requests &#8212; for example, &#8220;all documents relating to home mortgages&#8221;. At one of my former employers, roughly 1 billion unique email messages were generated every year. This means that putting together and parsing an appropriate full-text query is a very challenging process and requires real research on the subject and frequently interviews with the experts.</p>
<p>Unfortunately, sometimes stop words can be a hindrance. For example, if one was search for information on &#8220;Subordinated Convertible Debentures, 2008 Series A&#8221; (as opposed to series B), removal of the letter &#8220;A&#8221; would be problematic.</p>
<p>Apparently Google has recognized this issue and has, sadly, obtained a patent on their solution to it&#8211;&gt; <a href="http://www.seobythesea.com/?p=1109">http://www.seobythesea.com/?p=1109</a>. In simple terms, it appears that Google runs searches both with and without stop words, analyzes the results and determines whether the stop words were effective.</p>
<div id="attachment_483" class="wp-caption alignleft" style="width: 143px"><a href="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/02/most-common-words-chart.jpg"><img class="size-medium wp-image-483" title="most-common-words-chart from http://www.seobythesea.com/?p=2795" src="http://itp.nyu.edu/~db1060/wordpress/wp-content/uploads/2011/02/most-common-words-chart-133x300.jpg" alt="most common words chart from http://www.seobythesea.com/?p=2795" width="133" height="300" /></a><p class="wp-caption-text">Image from http://www.seobythesea.com/?p=2795</p></div>
<p>Stop words are obviously an important search engine optimization (&#8220;SEO&#8221;, or &#8220;how do I get my page to show up first?&#8221;) issue, and apparently much work has been done by SEO analysts to determine how the major search engines approach this issue. A really interesting analysis was done here &#8211;&gt; <a href="http://www.seobythesea.com/?p=2795">http://www.seobythesea.com/?p=2795</a>, which, among other things, offered the attached following graph.</p>
<p>Ironically, a simple search of Google, Yahoo and Bing all resulted in basic *and* huge stop word lists.</p>
<p><a href="http://www.lextek.com/manuals/onix/stopwords1.html">http://www.lextek.com/manuals/onix/stopwords1.html</a></p>
<p><a href="http://armandbrahaj.blog.al/2009/04/14/list-of-english-stop-words/">http://armandbrahaj.blog.al/2009/04/14/list-of-english-stop-words/</a></p>
<p><a href="http://www.textfixer.com/resources/common-english-words.txt">http://www.textfixer.com/resources/common-english-words.txt</a></p>
<p><a href="http://www.ranks.nl/resources/stopwords.html">http://www.ranks.nl/resources/stopwords.html</a></p>
<p>I opted for a relatively small stop word list and modified the sample code by Heather, together with some random text pulled from &#8211;&gt; http://watchout4snakes.com/CreativityTools/RandomParagraph/RandomParagraph.aspx which generated the following paragraph:</p>
<blockquote><p>The birthday  accommodates stop words on top of an explanatory lyric. The degenerate  overlooks stop words throughout the league. The originator precedes  search engines underneath an eccentric injustice. How will stop words  orbit without a clock? Stop words discriminates search engines within an  appearance. The rose figures stop words into each regardless  obstruction.</p></blockquote>
<p>The result set follows:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
</pre></td><td class="code"><pre class="test" style="font-family:monospace;">START   END TOKEN
4    12  |birthday|
13    25  |accommodates|
26    30  |stop|
31    36  |words|
40    43  |top|
50    61  |explanatory|
62    67  |lyric|
73    83  |degenerate|
84    93  |overlooks|
94    98  |stop|
99   104  |words|
105   115  |throughout|
120   126  |league|
132   142  |originator|
143   151  |precedes|
152   158  |search|
159   166  |engines|
167   177  |underneath|
181   190  |eccentric|
191   200  |injustice|
211   215  |stop|
216   221  |words|
222   227  |orbit|
228   235  |without|
238   243  |clock|
245   249  |stop|
250   255  |words|
256   269  |discriminates|
270   276  |search|
277   284  |engines|
285   291  |within|
295   305  |appearance|
311   315  |rose|
316   323  |figures|
324   328  |stop|
329   334  |words|
340   344  |each|
345   355  |regardless|
356   367  |obstruction|</pre></td></tr></table></div>

<p>And the code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.Set</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.tokenizer.EnglishStopTokenizerFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.tokenizer.IndoEuropeanTokenizerFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.tokenizer.LowerCaseTokenizerFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.tokenizer.StopTokenizerFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.tokenizer.TokenizerFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.aliasi.util.CollectionUtils</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.lingpipe.book.tok.DisplayTokens</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> SimpleStopTokenizer_v2 <span style="color: #009900;">&#123;</span>
 <span style="color: #666666; font-style: italic;">/* Dave Boyhan - david.boyhan@gmail.com 2/18/11 
 * A small modification of the SimpleStopTokenizer written by Heather Dewey-Hagborg here --&gt; http://itp.nyu.edu/varwiki/uploads/SimpleStopTokenizer
 * the Indo-European tokenizer will tokenize, the resulting tokens will be converted to lower case, and 
 then stop words will be removed.
 */</span>
&nbsp;
 <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
 <span style="color: #003399;">String</span> text <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;The birthday accommodates stop words on top of an explanatory lyric. &quot;</span> <span style="color: #339933;">+</span>
 <span style="color: #0000ff;">&quot;The degenerate overlooks stop words throughout the league. The originator precedes search engines underneath &quot;</span> <span style="color: #339933;">+</span>
 <span style="color: #0000ff;">&quot;an eccentric injustice. How will stop words orbit without a clock? Stop words discriminates search engines&quot;</span> <span style="color: #339933;">+</span>
 <span style="color: #0000ff;">&quot; within an appearance. The rose figures stop words into each regardless obstruction. &quot;</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #666666; font-style: italic;">//Note that punctuation was added to the stop list as well</span>
&nbsp;
 Set<span style="color: #339933;">&lt;</span>String<span style="color: #339933;">&gt;</span> stopSet <span style="color: #339933;">=</span> CollectionUtils.<span style="color: #006633;">asSet</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;.&quot;</span>, <span style="color: #0000ff;">&quot;?&quot;</span>, <span style="color: #0000ff;">&quot;a&quot;</span>, <span style="color: #0000ff;">&quot;able&quot;</span>, <span style="color: #0000ff;">&quot;about&quot;</span>, <span style="color: #0000ff;">&quot;across&quot;</span>, <span style="color: #0000ff;">&quot;after&quot;</span>, <span style="color: #0000ff;">&quot;all&quot;</span>, <span style="color: #0000ff;">&quot;almost&quot;</span>, <span style="color: #0000ff;">&quot;also&quot;</span>, <span style="color: #0000ff;">&quot;am&quot;</span>, 
 <span style="color: #0000ff;">&quot;among&quot;</span>, <span style="color: #0000ff;">&quot;an&quot;</span>, <span style="color: #0000ff;">&quot;and&quot;</span>, <span style="color: #0000ff;">&quot;any&quot;</span>, <span style="color: #0000ff;">&quot;are&quot;</span>, <span style="color: #0000ff;">&quot;as&quot;</span>, <span style="color: #0000ff;">&quot;at&quot;</span>, <span style="color: #0000ff;">&quot;be&quot;</span>, <span style="color: #0000ff;">&quot;because&quot;</span>, <span style="color: #0000ff;">&quot;been&quot;</span>, <span style="color: #0000ff;">&quot;but&quot;</span>, <span style="color: #0000ff;">&quot;by&quot;</span>, <span style="color: #0000ff;">&quot;can&quot;</span>, <span style="color: #0000ff;">&quot;cannot&quot;</span>, 
 <span style="color: #0000ff;">&quot;could&quot;</span>, <span style="color: #0000ff;">&quot;dear&quot;</span>, <span style="color: #0000ff;">&quot;did&quot;</span>, <span style="color: #0000ff;">&quot;do&quot;</span>, <span style="color: #0000ff;">&quot;does&quot;</span>, <span style="color: #0000ff;">&quot;either&quot;</span>, <span style="color: #0000ff;">&quot;else&quot;</span>, <span style="color: #0000ff;">&quot;ever&quot;</span>, <span style="color: #0000ff;">&quot;every&quot;</span>, <span style="color: #0000ff;">&quot;for&quot;</span>, <span style="color: #0000ff;">&quot;from&quot;</span>, <span style="color: #0000ff;">&quot;get&quot;</span>, <span style="color: #0000ff;">&quot;got&quot;</span>, <span style="color: #0000ff;">&quot;had&quot;</span>, 
 <span style="color: #0000ff;">&quot;has&quot;</span>, <span style="color: #0000ff;">&quot;have&quot;</span>, <span style="color: #0000ff;">&quot;he&quot;</span>, <span style="color: #0000ff;">&quot;her&quot;</span>, <span style="color: #0000ff;">&quot;hers&quot;</span>, <span style="color: #0000ff;">&quot;him&quot;</span>, <span style="color: #0000ff;">&quot;his&quot;</span>, <span style="color: #0000ff;">&quot;how&quot;</span>, <span style="color: #0000ff;">&quot;however&quot;</span>, <span style="color: #0000ff;">&quot;i&quot;</span>, <span style="color: #0000ff;">&quot;if&quot;</span>, <span style="color: #0000ff;">&quot;in&quot;</span>, <span style="color: #0000ff;">&quot;into&quot;</span>, <span style="color: #0000ff;">&quot;is&quot;</span>, <span style="color: #0000ff;">&quot;it&quot;</span>, 
 <span style="color: #0000ff;">&quot;its&quot;</span>, <span style="color: #0000ff;">&quot;just&quot;</span>, <span style="color: #0000ff;">&quot;least&quot;</span>, <span style="color: #0000ff;">&quot;let&quot;</span>, <span style="color: #0000ff;">&quot;like&quot;</span>, <span style="color: #0000ff;">&quot;likely&quot;</span>, <span style="color: #0000ff;">&quot;may&quot;</span>, <span style="color: #0000ff;">&quot;me&quot;</span>, <span style="color: #0000ff;">&quot;might&quot;</span>, <span style="color: #0000ff;">&quot;most&quot;</span>, <span style="color: #0000ff;">&quot;must&quot;</span>, <span style="color: #0000ff;">&quot;my&quot;</span>, <span style="color: #0000ff;">&quot;neither&quot;</span>,
 <span style="color: #0000ff;">&quot;no&quot;</span>, <span style="color: #0000ff;">&quot;nor&quot;</span>, <span style="color: #0000ff;">&quot;not&quot;</span>, <span style="color: #0000ff;">&quot;of&quot;</span>, <span style="color: #0000ff;">&quot;off&quot;</span>, <span style="color: #0000ff;">&quot;often&quot;</span>, <span style="color: #0000ff;">&quot;on&quot;</span>, <span style="color: #0000ff;">&quot;only&quot;</span>, <span style="color: #0000ff;">&quot;or&quot;</span>, <span style="color: #0000ff;">&quot;other&quot;</span>, <span style="color: #0000ff;">&quot;our&quot;</span>, <span style="color: #0000ff;">&quot;own&quot;</span>, <span style="color: #0000ff;">&quot;rather&quot;</span>, <span style="color: #0000ff;">&quot;said&quot;</span>, 
 <span style="color: #0000ff;">&quot;say&quot;</span>, <span style="color: #0000ff;">&quot;says&quot;</span>, <span style="color: #0000ff;">&quot;she&quot;</span>, <span style="color: #0000ff;">&quot;should&quot;</span>, <span style="color: #0000ff;">&quot;since&quot;</span>, <span style="color: #0000ff;">&quot;so&quot;</span>, <span style="color: #0000ff;">&quot;some&quot;</span>, <span style="color: #0000ff;">&quot;than&quot;</span>, <span style="color: #0000ff;">&quot;that&quot;</span>, <span style="color: #0000ff;">&quot;the&quot;</span>, <span style="color: #0000ff;">&quot;their&quot;</span>, <span style="color: #0000ff;">&quot;them&quot;</span>, <span style="color: #0000ff;">&quot;then&quot;</span>, 
 <span style="color: #0000ff;">&quot;there&quot;</span>, <span style="color: #0000ff;">&quot;these&quot;</span>, <span style="color: #0000ff;">&quot;they&quot;</span>, <span style="color: #0000ff;">&quot;this&quot;</span>, <span style="color: #0000ff;">&quot;tis&quot;</span>, <span style="color: #0000ff;">&quot;to&quot;</span>, <span style="color: #0000ff;">&quot;too&quot;</span>, <span style="color: #0000ff;">&quot;twas&quot;</span>, <span style="color: #0000ff;">&quot;us&quot;</span>, <span style="color: #0000ff;">&quot;wants&quot;</span>, <span style="color: #0000ff;">&quot;was&quot;</span>, <span style="color: #0000ff;">&quot;we&quot;</span>, <span style="color: #0000ff;">&quot;were&quot;</span>, <span style="color: #0000ff;">&quot;what&quot;</span>, 
 <span style="color: #0000ff;">&quot;when&quot;</span>, <span style="color: #0000ff;">&quot;where&quot;</span>, <span style="color: #0000ff;">&quot;which&quot;</span>, <span style="color: #0000ff;">&quot;while&quot;</span>, <span style="color: #0000ff;">&quot;who&quot;</span>, <span style="color: #0000ff;">&quot;whom&quot;</span>, <span style="color: #0000ff;">&quot;why&quot;</span>, <span style="color: #0000ff;">&quot;will&quot;</span>, <span style="color: #0000ff;">&quot;with&quot;</span>, <span style="color: #0000ff;">&quot;would&quot;</span>, <span style="color: #0000ff;">&quot;yet&quot;</span>, <span style="color: #0000ff;">&quot;you&quot;</span>, <span style="color: #0000ff;">&quot;your&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 TokenizerFactory f1 <span style="color: #339933;">=</span> IndoEuropeanTokenizerFactory.<span style="color: #006633;">INSTANCE</span><span style="color: #339933;">;</span>
 TokenizerFactory f2 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> LowerCaseTokenizerFactory<span style="color: #009900;">&#40;</span>f1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 TokenizerFactory f3 <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> StopTokenizerFactory<span style="color: #009900;">&#40;</span>f2,stopSet<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #666666; font-style: italic;">//Upon trying the EnglishStopTokenizerFactory below, I received a poorer result set</span>
 <span style="color: #666666; font-style: italic;">//TokenizerFactory f3 = new EnglishStopTokenizerFactory(f2);</span>
&nbsp;
 DisplayTokens.<span style="color: #006633;">displayTokens</span><span style="color: #009900;">&#40;</span>text,f3<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=475</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Quest Processing Clone &#8211; v.000000001</title>
		<link>http://itp.nyu.edu/~db1060/wordpress/?p=469</link>
		<comments>http://itp.nyu.edu/~db1060/wordpress/?p=469#comments</comments>
		<pubDate>Wed, 16 Feb 2011 22:45:21 +0000</pubDate>
		<dc:creator>davidboyhan</dc:creator>
				<category><![CDATA[Digital Game Design]]></category>

		<guid isPermaLink="false">http://itp.nyu.edu/~db1060/wordpress/?p=469</guid>
		<description><![CDATA[My first game &#8211;&#62; http://itp.nyu.edu/~db1060/cgd/class04/index.html]]></description>
			<content:encoded><![CDATA[<p>My first game &#8211;&gt; <a href="http://itp.nyu.edu/~db1060/cgd/class04/index.html" target="_blank">http://itp.nyu.edu/~db1060/cgd/class04/index.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://itp.nyu.edu/~db1060/wordpress/?feed=rss2&#038;p=469</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
